/* Generated by Cython 3.2.3 */

/* BEGIN: Cython Metadata
{
    "distutils": {
        "define_macros": [
            [
                "NPY_NO_DEPRECATED_API",
                "NPY_1_7_API_VERSION"
            ],
            [
                "NC_COMPLEX_NO_EXPORT",
                "1"
            ]
        ],
        "depends": [
            "/usr/include/H5public.h",
            "/usr/include/netcdf.h",
            "/usr/include/stdlib.h",
            "/usr/lib/python3.14/site-packages/numpy/_core/include/numpy/arrayobject.h",
            "/usr/lib/python3.14/site-packages/numpy/_core/include/numpy/arrayscalars.h",
            "/usr/lib/python3.14/site-packages/numpy/_core/include/numpy/ndarrayobject.h",
            "/usr/lib/python3.14/site-packages/numpy/_core/include/numpy/ndarraytypes.h",
            "/usr/lib/python3.14/site-packages/numpy/_core/include/numpy/ufuncobject.h",
            "external/nc_complex/include/nc_complex/nc_complex.h",
            "include/mpi-compat.h",
            "include/netcdf-compat.h"
        ],
        "include_dirs": [
            "include",
            "/usr/include",
            "/usr/lib/python3.14/site-packages/numpy/_core/include",
            "/usr/lib/python3.14/site-packages/mpi4py/include",
            "external/nc_complex/include",
            "external/nc_complex/include/generated_fallbacks"
        ],
        "libraries": [
            "netcdf"
        ],
        "library_dirs": [
            "/usr/lib"
        ],
        "name": "netCDF4._netCDF4",
        "runtime_library_dirs": [
            "/usr/lib"
        ],
        "sources": [
            "src/netCDF4/_netCDF4.pyx",
            "external/nc_complex/src/nc_complex.c"
        ]
    },
    "module_name": "netCDF4._netCDF4"
}
END: Cython Metadata */

#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"
#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_3"
#define CYTHON_HEX_VERSION 0x030203F0
#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__netCDF4___netCDF4
#define __PYX_HAVE_API__netCDF4___netCDF4
/* Early includes */
#include <string.h>
#include <stdio.h>

    /* Using NumPy API declarations from "numpy/__init__.cython-30.pxd" */
    
#include "numpy/arrayobject.h"
#include "numpy/ndarrayobject.h"
#include "numpy/ndarraytypes.h"
#include "numpy/arrayscalars.h"
#include "numpy/ufuncobject.h"
#include <stdlib.h>
#include "stdlib.h"
#include "H5public.h"
#include "netcdf.h"
#include "mpi-compat.h"
#include <mpi.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
    
#include "netcdf-compat.h"
#include "nc_complex/nc_complex.h"
#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_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;

/* Header.proto */
#if !defined(CYTHON_CCOMPLEX)
  #if defined(__cplusplus)
    #define CYTHON_CCOMPLEX 1
  #elif (defined(_Complex_I) && !defined(_MSC_VER)) || ((defined (__STDC_VERSION__) && __STDC_VERSION__ >= 201112L) && !defined(__STDC_NO_COMPLEX__) && !defined(_MSC_VER))
    #define CYTHON_CCOMPLEX 1
  #else
    #define CYTHON_CCOMPLEX 0
  #endif
#endif
#if CYTHON_CCOMPLEX
  #ifdef __cplusplus
    #include <complex>
  #else
    #include <complex.h>
  #endif
#endif
#if CYTHON_CCOMPLEX && !defined(__cplusplus) && defined(__sun__) && defined(__GNUC__)
  #undef _Complex_I
  #define _Complex_I 1.0fj
#endif

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

static const char* const __pyx_f[] = {
  "src/netCDF4/_netCDF4.pyx",
  "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd",
  "include/membuf.pyx",
  "<stringsource>",
  "include/netCDF4.pxi",
  "cpython/type.pxd",
  "mpi4py/MPI.pxd",
};
/* #### Code section: utility_code_proto_before_types ### */
/* 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

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

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

/* ForceInitThreads.proto */
#ifndef __PYX_FORCE_INIT_THREADS
  #define __PYX_FORCE_INIT_THREADS 0
#endif

/* #### Code section: numeric_typedefs ### */

/* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":743
 * # in Cython to enable them only on the right systems.
 * 
 * ctypedef npy_int8       int8_t             # <<<<<<<<<<<<<<
 * ctypedef npy_int16      int16_t
 * ctypedef npy_int32      int32_t
*/
typedef npy_int8 __pyx_t_5numpy_int8_t;

/* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":744
 * 
 * ctypedef npy_int8       int8_t
 * ctypedef npy_int16      int16_t             # <<<<<<<<<<<<<<
 * ctypedef npy_int32      int32_t
 * ctypedef npy_int64      int64_t
*/
typedef npy_int16 __pyx_t_5numpy_int16_t;

/* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":745
 * ctypedef npy_int8       int8_t
 * ctypedef npy_int16      int16_t
 * ctypedef npy_int32      int32_t             # <<<<<<<<<<<<<<
 * ctypedef npy_int64      int64_t
 * 
*/
typedef npy_int32 __pyx_t_5numpy_int32_t;

/* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":746
 * ctypedef npy_int16      int16_t
 * ctypedef npy_int32      int32_t
 * ctypedef npy_int64      int64_t             # <<<<<<<<<<<<<<
 * 
 * ctypedef npy_uint8      uint8_t
*/
typedef npy_int64 __pyx_t_5numpy_int64_t;

/* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":748
 * ctypedef npy_int64      int64_t
 * 
 * ctypedef npy_uint8      uint8_t             # <<<<<<<<<<<<<<
 * ctypedef npy_uint16     uint16_t
 * ctypedef npy_uint32     uint32_t
*/
typedef npy_uint8 __pyx_t_5numpy_uint8_t;

/* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":749
 * 
 * ctypedef npy_uint8      uint8_t
 * ctypedef npy_uint16     uint16_t             # <<<<<<<<<<<<<<
 * ctypedef npy_uint32     uint32_t
 * ctypedef npy_uint64     uint64_t
*/
typedef npy_uint16 __pyx_t_5numpy_uint16_t;

/* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":750
 * ctypedef npy_uint8      uint8_t
 * ctypedef npy_uint16     uint16_t
 * ctypedef npy_uint32     uint32_t             # <<<<<<<<<<<<<<
 * ctypedef npy_uint64     uint64_t
 * 
*/
typedef npy_uint32 __pyx_t_5numpy_uint32_t;

/* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":751
 * ctypedef npy_uint16     uint16_t
 * ctypedef npy_uint32     uint32_t
 * ctypedef npy_uint64     uint64_t             # <<<<<<<<<<<<<<
 * 
 * ctypedef npy_float32    float32_t
*/
typedef npy_uint64 __pyx_t_5numpy_uint64_t;

/* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":753
 * ctypedef npy_uint64     uint64_t
 * 
 * ctypedef npy_float32    float32_t             # <<<<<<<<<<<<<<
 * ctypedef npy_float64    float64_t
 * #ctypedef npy_float80    float80_t
*/
typedef npy_float32 __pyx_t_5numpy_float32_t;

/* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":754
 * 
 * ctypedef npy_float32    float32_t
 * ctypedef npy_float64    float64_t             # <<<<<<<<<<<<<<
 * #ctypedef npy_float80    float80_t
 * #ctypedef npy_float128   float128_t
*/
typedef npy_float64 __pyx_t_5numpy_float64_t;

/* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":761
 * ctypedef double complex complex128_t
 * 
 * ctypedef npy_longlong   longlong_t             # <<<<<<<<<<<<<<
 * ctypedef npy_ulonglong  ulonglong_t
 * 
*/
typedef npy_longlong __pyx_t_5numpy_longlong_t;

/* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":762
 * 
 * ctypedef npy_longlong   longlong_t
 * ctypedef npy_ulonglong  ulonglong_t             # <<<<<<<<<<<<<<
 * 
 * ctypedef npy_intp       intp_t
*/
typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t;

/* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":764
 * ctypedef npy_ulonglong  ulonglong_t
 * 
 * ctypedef npy_intp       intp_t             # <<<<<<<<<<<<<<
 * ctypedef npy_uintp      uintp_t
 * 
*/
typedef npy_intp __pyx_t_5numpy_intp_t;

/* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":765
 * 
 * ctypedef npy_intp       intp_t
 * ctypedef npy_uintp      uintp_t             # <<<<<<<<<<<<<<
 * 
 * ctypedef npy_double     float_t
*/
typedef npy_uintp __pyx_t_5numpy_uintp_t;

/* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":767
 * ctypedef npy_uintp      uintp_t
 * 
 * ctypedef npy_double     float_t             # <<<<<<<<<<<<<<
 * ctypedef npy_double     double_t
 * ctypedef npy_longdouble longdouble_t
*/
typedef npy_double __pyx_t_5numpy_float_t;

/* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":768
 * 
 * ctypedef npy_double     float_t
 * ctypedef npy_double     double_t             # <<<<<<<<<<<<<<
 * ctypedef npy_longdouble longdouble_t
 * 
*/
typedef npy_double __pyx_t_5numpy_double_t;

/* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":769
 * ctypedef npy_double     float_t
 * ctypedef npy_double     double_t
 * ctypedef npy_longdouble longdouble_t             # <<<<<<<<<<<<<<
 * 
 * ctypedef float complex       cfloat_t
*/
typedef npy_longdouble __pyx_t_5numpy_longdouble_t;
/* #### Code section: complex_type_declarations ### */
/* Declarations.proto */
#if CYTHON_CCOMPLEX && (1) && (!0 || __cplusplus)
  #ifdef __cplusplus
    typedef ::std::complex< float > __pyx_t_float_complex;
  #else
    typedef float _Complex __pyx_t_float_complex;
  #endif
#else
    typedef struct { float real, imag; } __pyx_t_float_complex;
#endif
static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float, float);

/* Declarations.proto */
#if CYTHON_CCOMPLEX && (1) && (!0 || __cplusplus)
  #ifdef __cplusplus
    typedef ::std::complex< double > __pyx_t_double_complex;
  #else
    typedef double _Complex __pyx_t_double_complex;
  #endif
#else
    typedef struct { double real, imag; } __pyx_t_double_complex;
#endif
static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double, double);

/* Declarations.proto */
#if CYTHON_CCOMPLEX && (1) && (!0 || __cplusplus)
  #ifdef __cplusplus
    typedef ::std::complex< long double > __pyx_t_long_double_complex;
  #else
    typedef long double _Complex __pyx_t_long_double_complex;
  #endif
#else
    typedef struct { long double real, imag; } __pyx_t_long_double_complex;
#endif
static CYTHON_INLINE __pyx_t_long_double_complex __pyx_t_long_double_complex_from_parts(long double, long double);

/* #### 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_7netCDF4_8_netCDF4__MemBuf;
struct __pyx_obj_7netCDF4_8_netCDF4_Dataset;
struct __pyx_obj_7netCDF4_8_netCDF4_Group;
struct __pyx_obj_7netCDF4_8_netCDF4_Dimension;
struct __pyx_obj_7netCDF4_8_netCDF4_Variable;
struct __pyx_obj_7netCDF4_8_netCDF4_CompoundType;
struct __pyx_obj_7netCDF4_8_netCDF4_VLType;
struct __pyx_obj_7netCDF4_8_netCDF4_EnumType;
struct __pyx_defaults;
struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct__genexpr;
struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_1___pyx_f_7netCDF4_8_netCDF4__get_vars;
struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_2_genexpr;
struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_3___str__;
struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_4_genexpr;
struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_5_genexpr;
struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_6_createVariable;
struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_7_genexpr;
struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_8_genexpr;
struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_9_get_dims;
struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_10_genexpr;
struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_11_genexpr;
struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_12_genexpr;
struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_13_genexpr;
struct __pyx_opt_args_7netCDF4_8_netCDF4__get_att;
struct __pyx_opt_args_7netCDF4_8_netCDF4__set_att;
struct __pyx_opt_args_7netCDF4_8_netCDF4__get_vars;
struct __pyx_opt_args_7netCDF4_8_netCDF4__read_compound;
struct __pyx_opt_args_7netCDF4_8_netCDF4__read_vlen;
struct __pyx_opt_args_7netCDF4_8_netCDF4__read_enum;
struct __pyx_opt_args_7netCDF4_8_netCDF4__strencode;

/* "include/parallel_support_imports.pxi":15
 * )
 * 
 * ctypedef MPI.Comm Comm             # <<<<<<<<<<<<<<
 * ctypedef MPI.Info Info
*/
typedef struct PyMPICommObject *__pyx_t_7netCDF4_8_netCDF4_Comm;

/* "include/parallel_support_imports.pxi":16
 * 
 * ctypedef MPI.Comm Comm
 * ctypedef MPI.Info Info             # <<<<<<<<<<<<<<
*/
typedef struct PyMPIInfoObject *__pyx_t_7netCDF4_8_netCDF4_Info;

/* "netCDF4/_netCDF4.pyx":1654
 *     return attslist
 * 
 * cdef _get_att(grp, int varid, name, encoding='utf-8'):             # <<<<<<<<<<<<<<
 *     # Private function to get an attribute value given its name
 *     cdef int ierr, n, _grpid
*/
struct __pyx_opt_args_7netCDF4_8_netCDF4__get_att {
  int __pyx_n;
  PyObject *encoding;
};

/* "netCDF4/_netCDF4.pyx":1801
 * 
 * 
 * cdef _set_att(grp, int varid, name, value,\             # <<<<<<<<<<<<<<
 *               nc_type xtype=-99, force_ncstring=False):
 *     # Private function to set an attribute name/value pair
*/
struct __pyx_opt_args_7netCDF4_8_netCDF4__set_att {
  int __pyx_n;
  nc_type xtype;
  PyObject *force_ncstring;
};

/* "netCDF4/_netCDF4.pyx":2021
 *     return groups
 * 
 * cdef _get_vars(group, bint auto_complex=False):             # <<<<<<<<<<<<<<
 *     # Private function to create `Variable` instances for all the
 *     # variables in a `Group` or Dataset
*/
struct __pyx_opt_args_7netCDF4_8_netCDF4__get_vars {
  int __pyx_n;
  int auto_complex;
};

/* "netCDF4/_netCDF4.pyx":6412
 *     return xtype
 * 
 * cdef _read_compound(group, nc_type xtype, endian=None):             # <<<<<<<<<<<<<<
 *     # read a compound data type id from an existing file,
 *     # construct a corresponding numpy dtype instance,
*/
struct __pyx_opt_args_7netCDF4_8_netCDF4__read_compound {
  int __pyx_n;
  PyObject *endian;
};

/* "netCDF4/_netCDF4.pyx":6577
 *     return xtype, dt
 * 
 * cdef _read_vlen(group, nc_type xtype, endian=None):             # <<<<<<<<<<<<<<
 *     # read a VLEN data type id from an existing file,
 *     # construct a corresponding numpy dtype instance,
*/
struct __pyx_opt_args_7netCDF4_8_netCDF4__read_vlen {
  int __pyx_n;
  PyObject *endian;
};

/* "netCDF4/_netCDF4.pyx":6692
 *     return xtype, dt
 * 
 * cdef _read_enum(group, nc_type xtype, endian=None):             # <<<<<<<<<<<<<<
 *     # read a Enum data type id from an existing file,
 *     # construct a corresponding numpy dtype instance,
*/
struct __pyx_opt_args_7netCDF4_8_netCDF4__read_enum {
  int __pyx_n;
  PyObject *endian;
};

/* "netCDF4/_netCDF4.pyx":6727
 *     return EnumType(group, dt, enum_name, enum_dict, typeid=xtype)
 * 
 * cdef _strencode(pystr,encoding=None):             # <<<<<<<<<<<<<<
 *     # encode a string into bytes.  If already bytes, do nothing.
 *     # uses 'utf-8' for default encoding.
*/
struct __pyx_opt_args_7netCDF4_8_netCDF4__strencode {
  int __pyx_n;
  PyObject *encoding;
};

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


/* "include/membuf.pyx":16
 * 
 * # private extension type that implements buffer protocol.
 * cdef class _MemBuf:             # <<<<<<<<<<<<<<
 *     cdef const void *memory
 *     cdef size_t size
*/
struct __pyx_obj_7netCDF4_8_netCDF4__MemBuf {
  PyObject_HEAD
  void const *memory;
  size_t size;
};


/* "netCDF4/_netCDF4.pyx":2222
 * )
 * 
 * cdef class Dataset:             # <<<<<<<<<<<<<<
 *     """
 * A netCDF `Dataset` is a collection of dimensions, groups, variables and
*/
struct __pyx_obj_7netCDF4_8_netCDF4_Dataset {
  PyObject_HEAD
  PyObject *__weakref__;
  PyObject *_inmemory;
  int _grpid;
  int _isopen;
  Py_buffer _buffer;
  PyObject *groups;
  PyObject *dimensions;
  PyObject *variables;
  PyObject *disk_format;
  PyObject *path;
  PyObject *parent;
  PyObject *file_format;
  PyObject *data_model;
  PyObject *cmptypes;
  PyObject *vltypes;
  PyObject *enumtypes;
  PyObject *__pyx___orthogonal_indexing__;
  PyObject *keepweakref;
  PyObject *_ncstring_attrs__;
  PyObject *auto_complex;
};


/* "netCDF4/_netCDF4.pyx":3597
 * 
 * 
 * cdef class Group(Dataset):             # <<<<<<<<<<<<<<
 *     """
 * Groups define a hierarchical namespace within a netCDF file. They are
*/
struct __pyx_obj_7netCDF4_8_netCDF4_Group {
  struct __pyx_obj_7netCDF4_8_netCDF4_Dataset __pyx_base;
};


/* "netCDF4/_netCDF4.pyx":3678
 * 
 * 
 * cdef class Dimension:             # <<<<<<<<<<<<<<
 *     """
 * A netCDF `Dimension` is used to describe the coordinates of a `Variable`.
*/
struct __pyx_obj_7netCDF4_8_netCDF4_Dimension {
  PyObject_HEAD
  int _dimid;
  int _grpid;
  PyObject *_data_model;
  PyObject *_name;
  PyObject *_grp;
};


/* "netCDF4/_netCDF4.pyx":3832
 *                 return False
 * 
 * cdef class Variable:             # <<<<<<<<<<<<<<
 *     """
 * A netCDF `Variable` is used to read and write netCDF data.  They are
*/
struct __pyx_obj_7netCDF4_8_netCDF4_Variable {
  PyObject_HEAD
  int _varid;
  int _grpid;
  int _nunlimdim;
  PyObject *_name;
  PyObject *ndim;
  PyObject *dtype;
  PyObject *mask;
  PyObject *scale;
  PyObject *always_mask;
  PyObject *chartostring;
  PyObject *_isprimitive;
  PyObject *_iscompound;
  PyObject *_isvlen;
  PyObject *_isenum;
  PyObject *_grp;
  PyObject *_cmptype;
  PyObject *_vltype;
  PyObject *_enumtype;
  PyObject *__pyx___orthogonal_indexing__;
  PyObject *_has_lsd;
  PyObject *_use_get_vars;
  PyObject *_ncstring_attrs__;
  PyObject *auto_complex;
};


/* "netCDF4/_netCDF4.pyx":6181
 * # Compound datatype support.
 * 
 * cdef class CompoundType:             # <<<<<<<<<<<<<<
 *     """
 * A `CompoundType` instance is used to describe a compound data
*/
struct __pyx_obj_7netCDF4_8_netCDF4_CompoundType {
  PyObject_HEAD
  nc_type _nc_type;
  PyObject *dtype;
  PyObject *dtype_view;
  PyObject *name;
};


/* "netCDF4/_netCDF4.pyx":6493
 * # VLEN datatype support.
 * 
 * cdef class VLType:             # <<<<<<<<<<<<<<
 *     """
 * A `VLType` instance is used to describe a variable length (VLEN) data
*/
struct __pyx_obj_7netCDF4_8_netCDF4_VLType {
  PyObject_HEAD
  nc_type _nc_type;
  PyObject *dtype;
  PyObject *name;
};


/* "netCDF4/_netCDF4.pyx":6605
 * # Enum datatype support.
 * 
 * cdef class EnumType:             # <<<<<<<<<<<<<<
 *     """
 * A `EnumType` instance is used to describe an Enum data
*/
struct __pyx_obj_7netCDF4_8_netCDF4_EnumType {
  PyObject_HEAD
  nc_type _nc_type;
  PyObject *dtype;
  PyObject *name;
  PyObject *enum_dict;
};


/* "netCDF4/_netCDF4.pyx":2149
 * 
 * 
 * def _ensure_nc_success(ierr, err_cls=RuntimeError, filename=None, extra_msg=None):             # <<<<<<<<<<<<<<
 *     # print netcdf error message, raise error.
 *     if ierr == NC_NOERR:
*/
struct __pyx_defaults {
  PyObject_HEAD
  PyObject *arg0;
};


/* "netCDF4/_netCDF4.pyx":1561
 *     _cmode_dict['NETCDF3_64BIT'] = NC_64BIT_OFFSET
 * # invert dictionary mapping
 * _reverse_format_dict = dict((v, k) for k, v in _format_dict.iteritems())             # <<<<<<<<<<<<<<
 * # add duplicate entry (NETCDF3_64BIT == NETCDF3_64BIT_OFFSET)
 * if __has_cdf5_format__:
*/
struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct__genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_k;
  PyObject *__pyx_v_v;
};


/* "netCDF4/_netCDF4.pyx":2021
 *     return groups
 * 
 * cdef _get_vars(group, bint auto_complex=False):             # <<<<<<<<<<<<<<
 *     # Private function to create `Variable` instances for all the
 *     # variables in a `Group` or Dataset
*/
struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_1___pyx_f_7netCDF4_8_netCDF4__get_vars {
  PyObject_HEAD
  PyObject *__pyx_v_group;
};


/* "netCDF4/_netCDF4.pyx":2133
 * 
 *             # create new variable instance.
 *             dimensions = tuple(_find_dim(group, d) for d in dimensions)             # <<<<<<<<<<<<<<
 * 
 *             if auto_complex and <bint>pfnc_var_is_complex(_grpid, varid):
*/
struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_2_genexpr {
  PyObject_HEAD
  struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_1___pyx_f_7netCDF4_8_netCDF4__get_vars *__pyx_outer_scope;
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_d;
  PyObject *__pyx_t_0;
  Py_ssize_t __pyx_t_1;
  PyObject *(*__pyx_t_2)(PyObject *);
};


/* "netCDF4/_netCDF4.pyx":2609
 *         return self.__str__()
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         ncdump = [repr(type(self)).replace("._netCDF4", "")]
 *         dimnames = tuple(_tostr(dimname)+'(%s)'%len(self.dimensions[dimname])\
*/
struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_3___str__ {
  PyObject_HEAD
  struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self;
};


/* "netCDF4/_netCDF4.pyx":2611
 *     def __str__(self):
 *         ncdump = [repr(type(self)).replace("._netCDF4", "")]
 *         dimnames = tuple(_tostr(dimname)+'(%s)'%len(self.dimensions[dimname])\             # <<<<<<<<<<<<<<
 *         for dimname in self.dimensions.keys())
 *         varnames = tuple(\
*/
struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_4_genexpr {
  PyObject_HEAD
  struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_3___str__ *__pyx_outer_scope;
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_dimname;
  PyObject *__pyx_t_0;
  Py_ssize_t __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  int __pyx_t_3;
};


/* "netCDF4/_netCDF4.pyx":2617
 *          ((_tostr(self.variables[varname].dimensions)).replace(",)",")")).replace("'","")
 *          for varname in self.variables.keys()])
 *         grpnames = tuple(_tostr(grpname) for grpname in self.groups.keys())             # <<<<<<<<<<<<<<
 *         if self.path == '/':
 *             ncdump.append('root group (%s data model, file format %s):' %
*/
struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_5_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_grpname;
  PyObject *__pyx_t_0;
  Py_ssize_t __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  int __pyx_t_3;
};


/* "netCDF4/_netCDF4.pyx":2828
 *         return self.enumtypes[datatype_name]
 * 
 *     def createVariable(self, varname, datatype, dimensions=(),             # <<<<<<<<<<<<<<
 *             compression=None, zlib=False,
 *             complevel=4, shuffle=True,
*/
struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_6_createVariable {
  PyObject_HEAD
  PyObject *__pyx_v_group;
};


/* "netCDF4/_netCDF4.pyx":3005
 *         # found there, looks in parent (and it's parent, etc, back to root).
 *         dimensions =\
 *         tuple(_find_dim(group,d) if isinstance(d,(str,bytes)) else d for d in dimensions)             # <<<<<<<<<<<<<<
 *         # create variable.
 *         group.variables[varname] = Variable(group, varname, datatype,
*/
struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_7_genexpr {
  PyObject_HEAD
  struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_6_createVariable *__pyx_outer_scope;
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_d;
  PyObject *__pyx_t_0;
  Py_ssize_t __pyx_t_1;
  PyObject *(*__pyx_t_2)(PyObject *);
};


/* "netCDF4/_netCDF4.pyx":4532
 *             show_more_dtype = False
 *             kind = str(self.dtype)
 *         dimnames = tuple(_tostr(dimname) for dimname in self.dimensions)             # <<<<<<<<<<<<<<
 *         ncdump.append('%s %s(%s)' %\
 *             (kind, self._name, ', '.join(dimnames)))
*/
struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_8_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_dimname;
  PyObject *__pyx_t_0;
  Py_ssize_t __pyx_t_1;
  PyObject *(*__pyx_t_2)(PyObject *);
};


/* "netCDF4/_netCDF4.pyx":6166
 * 
 * 
 *     def get_dims(self):             # <<<<<<<<<<<<<<
 *         """
 * **`get_dims(self)`**
*/
struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_9_get_dims {
  PyObject_HEAD
  struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self;
};


/* "netCDF4/_netCDF4.pyx":6173
 * `Variable`.
 *         """
 *         return tuple(_find_dim(self._grp, dim) for dim in self.dimensions)             # <<<<<<<<<<<<<<
 * 
 *     def __reduce__(self):
*/
struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_10_genexpr {
  PyObject_HEAD
  struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_9_get_dims *__pyx_outer_scope;
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_dim;
  PyObject *__pyx_t_0;
  Py_ssize_t __pyx_t_1;
  PyObject *(*__pyx_t_2)(PyObject *);
};


/* "netCDF4/_netCDF4.pyx":7094
 *     def __repr__(self):
 *         ncdump = [repr(type(self)).replace("._netCDF4", "")]
 *         dimnames = tuple(str(dimname) for dimname in self.dimensions.keys())             # <<<<<<<<<<<<<<
 *         varnames = tuple(str(varname) for varname in self.variables.keys())
 *         grpnames = ()
*/
struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_11_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_dimname;
  PyObject *__pyx_t_0;
  Py_ssize_t __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  int __pyx_t_3;
};


/* "netCDF4/_netCDF4.pyx":7095
 *         ncdump = [repr(type(self)).replace("._netCDF4", "")]
 *         dimnames = tuple(str(dimname) for dimname in self.dimensions.keys())
 *         varnames = tuple(str(varname) for varname in self.variables.keys())             # <<<<<<<<<<<<<<
 *         grpnames = ()
 *         if self.path == '/':
*/
struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_12_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_varname;
  PyObject *__pyx_t_0;
  Py_ssize_t __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  int __pyx_t_3;
};


/* "netCDF4/_netCDF4.pyx":7159
 *     def __repr__(self):
 *         ncdump = [repr(type(self)).replace("._netCDF4", "")]
 *         dimnames = tuple(str(dimname) for dimname in self.dimensions)             # <<<<<<<<<<<<<<
 *         ncdump.append('%s %s%s' % (self.dtype, self._name, dimnames))
 *         for name in self.ncattrs():
*/
struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_13_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_dimname;
  PyObject *__pyx_t_0;
  Py_ssize_t __pyx_t_1;
  PyObject *(*__pyx_t_2)(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);

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

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

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

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

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

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

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

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

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

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

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

/* RaiseUnboundLocalError.proto */
static void __Pyx_RaiseUnboundLocalError(const char *varname);

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

/* pep479.proto */
static void __Pyx_Generator_Replace_StopIteration(int in_async_gen);

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

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

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

/* TupleAndListFromArray.proto (used by fastcall) */
#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 BytesEquals) */
#include <string.h>

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

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

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

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

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

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

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

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

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

/* decode_c_string_utf16.proto (used by decode_c_string) */
static CYTHON_INLINE PyObject *__Pyx_PyUnicode_DecodeUTF16(const char *s, Py_ssize_t size, const char *errors) {
    int byteorder = 0;
    return PyUnicode_DecodeUTF16(s, size, errors, &byteorder);
}
static CYTHON_INLINE PyObject *__Pyx_PyUnicode_DecodeUTF16LE(const char *s, Py_ssize_t size, const char *errors) {
    int byteorder = -1;
    return PyUnicode_DecodeUTF16(s, size, errors, &byteorder);
}
static CYTHON_INLINE PyObject *__Pyx_PyUnicode_DecodeUTF16BE(const char *s, Py_ssize_t size, const char *errors) {
    int byteorder = 1;
    return PyUnicode_DecodeUTF16(s, size, errors, &byteorder);
}

/* decode_c_string.proto */
static CYTHON_INLINE PyObject* __Pyx_decode_c_string(
         const char* cstring, Py_ssize_t start, Py_ssize_t stop,
         const char* encoding, const char* errors,
         PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors));

/* 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_unsigned_int(value, width, padding_char, format_char) (\
    ((format_char) == ('c')) ?\
        __Pyx_uchar___Pyx_PyUnicode_From_unsigned_int(value, width, padding_char) :\
        __Pyx____Pyx_PyUnicode_From_unsigned_int(value, width, padding_char, format_char)\
    )
static CYTHON_INLINE PyObject* __Pyx_uchar___Pyx_PyUnicode_From_unsigned_int(unsigned int value, Py_ssize_t width, char padding_char);
static CYTHON_INLINE PyObject* __Pyx____Pyx_PyUnicode_From_unsigned_int(unsigned 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);

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

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

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

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

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

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

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

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

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

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

/* GetItemInt.proto */
#define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck, 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);

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

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

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

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

/* PyFutureWarning_Check.proto */
#define __Pyx_PyExc_FutureWarning_Check(obj)  __Pyx_TypeCheck(obj, PyExc_FutureWarning)

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

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

/* PyOSError_Check.proto */
#define __Pyx_PyExc_OSError_Check(obj)  __Pyx_TypeCheck(obj, PyExc_OSError)

/* PyUnicodeError_Check.proto */
#define __Pyx_PyExc_UnicodeError_Check(obj)  __Pyx_TypeCheck(obj, PyExc_UnicodeError)

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

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

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

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

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

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

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

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

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

/* HasAttr.proto */
#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

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

/* CallableCheck.proto */
#if CYTHON_USE_TYPE_SLOTS && !CYTHON_COMPILING_IN_PYPY
#define __Pyx_PyCallable_Check(obj)   (Py_TYPE(obj)->tp_call != NULL)
#else
#define __Pyx_PyCallable_Check(obj)   PyCallable_Check(obj)
#endif

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

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

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

/* UnicodeConcatInPlace.proto */
# if CYTHON_COMPILING_IN_CPYTHON
    #if CYTHON_REFNANNY
        #define __Pyx_PyUnicode_ConcatInPlace(left, right, unsafe_shared) __Pyx_PyUnicode_ConcatInPlaceImpl(&left, right, unsafe_shared, __pyx_refnanny)
    #else
        #define __Pyx_PyUnicode_ConcatInPlace(left, right, unsafe_shared) __Pyx_PyUnicode_ConcatInPlaceImpl(&left, right, unsafe_shared)
    #endif
    #define __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_DefinitelyUniqueInPlace(left, right) __Pyx_PyUnicode_ConcatInPlace(left, right, __Pyx_ReferenceSharing_DefinitelyUnique)
    #define __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlace(left, right) __Pyx_PyUnicode_ConcatInPlace(left, right, __Pyx_ReferenceSharing_OwnStrongReference)
    #define __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_FunctionArgumentInPlace(left, right) __Pyx_PyUnicode_ConcatInPlace(left, right, __Pyx_ReferenceSharing_DefinitelyUnique)
    #define __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_SharedReferenceInPlace(left, right) __Pyx_PyUnicode_ConcatInPlace(left, right, __Pyx_ReferenceSharing_SharedReference)
    static CYTHON_INLINE PyObject *__Pyx_PyUnicode_ConcatInPlaceImpl(PyObject **p_left, PyObject *right, int unsafe_shared
        #if CYTHON_REFNANNY
        , void* __pyx_refnanny
        #endif
    );
#else
#define __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_DefinitelyUniqueInPlace __Pyx_PyUnicode_Concat
#define __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlace __Pyx_PyUnicode_Concat
#define __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_FunctionArgumentInPlace __Pyx_PyUnicode_Concat
#define __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_SharedReferenceInPlace __Pyx_PyUnicode_Concat
#endif
#define __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_DefinitelyUniqueInPlaceSafe(left, right)\
    ((unlikely((left) == Py_None) || unlikely((right) == Py_None)) ?\
    PyNumber_InPlaceAdd(left, right) : __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_DefinitelyUniqueInPlace(left, right))
#define __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlaceSafe(left, right)\
    ((unlikely((left) == Py_None) || unlikely((right) == Py_None)) ?\
    PyNumber_InPlaceAdd(left, right) : __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlace(left, right))
#define __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_FunctionArgumentInPlaceSafe(left, right)\
    ((unlikely((left) == Py_None) || unlikely((right) == Py_None)) ?\
    PyNumber_InPlaceAdd(left, right) : __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_FunctionArgumentInPlace(left, right))
#define __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_SharedReferenceInPlaceSafe(left, right)\
    ((unlikely((left) == Py_None) || unlikely((right) == Py_None)) ?\
    PyNumber_InPlaceAdd(left, right) : __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_SharedReferenceInPlace(left, right))

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

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

/* PyObjectDelAttr.proto (used by PyObjectSetAttrStr) */
#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030d0000
#define __Pyx_PyObject_DelAttr(o, n) PyObject_SetAttr(o, n, NULL)
#else
#define __Pyx_PyObject_DelAttr(o, n) PyObject_DelAttr(o, n)
#endif

/* PyObjectSetAttrStr.proto */
#if CYTHON_USE_TYPE_SLOTS
#define __Pyx_PyObject_DelAttrStr(o,n) __Pyx_PyObject_SetAttrStr(o, n, NULL)
static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value);
#else
#define __Pyx_PyObject_DelAttrStr(o,n)   __Pyx_PyObject_DelAttr(o,n)
#define __Pyx_PyObject_SetAttrStr(o,n,v) PyObject_SetAttr(o,n,v)
#endif

/* PyObject_Unicode.proto */
#define __Pyx_PyObject_Unicode(obj)\
    (likely(PyUnicode_CheckExact(obj)) ? __Pyx_NewRef(obj) : PyObject_Str(obj))

/* PyLongBinop.proto */
#if !CYTHON_COMPILING_IN_PYPY
static CYTHON_INLINE PyObject* __Pyx_PyLong_AddObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check);
#else
#define __Pyx_PyLong_AddObjC(op1, op2, intval, inplace, zerodivision_check)\
    (inplace ? PyNumber_InPlaceAdd(op1, op2) : PyNumber_Add(op1, op2))
#endif

/* PyLongCompare.proto */
static CYTHON_INLINE int __Pyx_PyLong_BoolEqObjC(PyObject *op1, PyObject *op2, long intval, long inplace);

/* PyLongCompare.proto */
static CYTHON_INLINE int __Pyx_PyLong_BoolNeObjC(PyObject *op1, PyObject *op2, long intval, long inplace);

/* pybytes_as_double.proto (used by pyobject_as_double) */
static double __Pyx_SlowPyString_AsDouble(PyObject *obj);
static double __Pyx__PyBytes_AsDouble(PyObject *obj, const char* start, Py_ssize_t length);
static CYTHON_INLINE double __Pyx_PyBytes_AsDouble(PyObject *obj) {
    char* as_c_string;
    Py_ssize_t size;
#if CYTHON_ASSUME_SAFE_MACROS && CYTHON_ASSUME_SAFE_SIZE
    as_c_string = PyBytes_AS_STRING(obj);
    size = PyBytes_GET_SIZE(obj);
#else
    if (PyBytes_AsStringAndSize(obj, &as_c_string, &size) < 0) {
        return (double)-1;
    }
#endif
    return __Pyx__PyBytes_AsDouble(obj, as_c_string, size);
}
static CYTHON_INLINE double __Pyx_PyByteArray_AsDouble(PyObject *obj) {
    char* as_c_string;
    Py_ssize_t size;
#if CYTHON_ASSUME_SAFE_MACROS && CYTHON_ASSUME_SAFE_SIZE
    as_c_string = PyByteArray_AS_STRING(obj);
    size = PyByteArray_GET_SIZE(obj);
#else
    as_c_string = PyByteArray_AsString(obj);
    if (as_c_string == NULL) {
        return (double)-1;
    }
    size = PyByteArray_Size(obj);
#endif
    return __Pyx__PyBytes_AsDouble(obj, as_c_string, size);
}

/* pyunicode_as_double.proto (used by pyobject_as_double) */
#if !CYTHON_COMPILING_IN_PYPY && CYTHON_ASSUME_SAFE_MACROS
static const char* __Pyx__PyUnicode_AsDouble_Copy(const void* data, const int kind, char* buffer, Py_ssize_t start, Py_ssize_t end) {
    int last_was_punctuation;
    Py_ssize_t i;
    last_was_punctuation = 1;
    for (i=start; i <= end; i++) {
        Py_UCS4 chr = PyUnicode_READ(kind, data, i);
        int is_punctuation = (chr == '_') | (chr == '.');
        *buffer = (char)chr;
        buffer += (chr != '_');
        if (unlikely(chr > 127)) goto parse_failure;
        if (unlikely(last_was_punctuation & is_punctuation)) goto parse_failure;
        last_was_punctuation = is_punctuation;
    }
    if (unlikely(last_was_punctuation)) goto parse_failure;
    *buffer = '\0';
    return buffer;
parse_failure:
    return NULL;
}
static double __Pyx__PyUnicode_AsDouble_inf_nan(const void* data, int kind, Py_ssize_t start, Py_ssize_t length) {
    int matches = 1;
    Py_UCS4 chr;
    Py_UCS4 sign = PyUnicode_READ(kind, data, start);
    int is_signed = (sign == '-') | (sign == '+');
    start += is_signed;
    length -= is_signed;
    switch (PyUnicode_READ(kind, data, start)) {
        #ifdef Py_NAN
        case 'n':
        case 'N':
            if (unlikely(length != 3)) goto parse_failure;
            chr = PyUnicode_READ(kind, data, start+1);
            matches &= (chr == 'a') | (chr == 'A');
            chr = PyUnicode_READ(kind, data, start+2);
            matches &= (chr == 'n') | (chr == 'N');
            if (unlikely(!matches)) goto parse_failure;
            return (sign == '-') ? -Py_NAN : Py_NAN;
        #endif
        case 'i':
        case 'I':
            if (unlikely(length < 3)) goto parse_failure;
            chr = PyUnicode_READ(kind, data, start+1);
            matches &= (chr == 'n') | (chr == 'N');
            chr = PyUnicode_READ(kind, data, start+2);
            matches &= (chr == 'f') | (chr == 'F');
            if (likely(length == 3 && matches))
                return (sign == '-') ? -Py_HUGE_VAL : Py_HUGE_VAL;
            if (unlikely(length != 8)) goto parse_failure;
            chr = PyUnicode_READ(kind, data, start+3);
            matches &= (chr == 'i') | (chr == 'I');
            chr = PyUnicode_READ(kind, data, start+4);
            matches &= (chr == 'n') | (chr == 'N');
            chr = PyUnicode_READ(kind, data, start+5);
            matches &= (chr == 'i') | (chr == 'I');
            chr = PyUnicode_READ(kind, data, start+6);
            matches &= (chr == 't') | (chr == 'T');
            chr = PyUnicode_READ(kind, data, start+7);
            matches &= (chr == 'y') | (chr == 'Y');
            if (unlikely(!matches)) goto parse_failure;
            return (sign == '-') ? -Py_HUGE_VAL : Py_HUGE_VAL;
        case '.': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9':
            break;
        default:
            goto parse_failure;
    }
    return 0.0;
parse_failure:
    return -1.0;
}
static double __Pyx_PyUnicode_AsDouble_WithSpaces(PyObject *obj) {
    double value;
    const char *last;
    char *end;
    Py_ssize_t start, length = PyUnicode_GET_LENGTH(obj);
    const int kind = PyUnicode_KIND(obj);
    const void* data = PyUnicode_DATA(obj);
    start = 0;
    while (Py_UNICODE_ISSPACE(PyUnicode_READ(kind, data, start)))
        start++;
    while (start < length - 1 && Py_UNICODE_ISSPACE(PyUnicode_READ(kind, data, length - 1)))
        length--;
    length -= start;
    if (unlikely(length <= 0)) goto fallback;
    value = __Pyx__PyUnicode_AsDouble_inf_nan(data, kind, start, length);
    if (unlikely(value == -1.0)) goto fallback;
    if (value != 0.0) return value;
    if (length < 40) {
        char number[40];
        last = __Pyx__PyUnicode_AsDouble_Copy(data, kind, number, start, start + length);
        if (unlikely(!last)) goto fallback;
        value = PyOS_string_to_double(number, &end, NULL);
    } else {
        char *number = (char*) PyMem_Malloc((length + 1) * sizeof(char));
        if (unlikely(!number)) goto fallback;
        last = __Pyx__PyUnicode_AsDouble_Copy(data, kind, number, start, start + length);
        if (unlikely(!last)) {
            PyMem_Free(number);
            goto fallback;
        }
        value = PyOS_string_to_double(number, &end, NULL);
        PyMem_Free(number);
    }
    if (likely(end == last) || (value == (double)-1 && PyErr_Occurred())) {
        return value;
    }
fallback:
    return __Pyx_SlowPyString_AsDouble(obj);
}
#endif
static CYTHON_INLINE double __Pyx_PyUnicode_AsDouble(PyObject *obj) {
#if !CYTHON_COMPILING_IN_PYPY && CYTHON_ASSUME_SAFE_MACROS
    if (unlikely(__Pyx_PyUnicode_READY(obj) == -1))
        return (double)-1;
    if (likely(PyUnicode_IS_ASCII(obj))) {
        const char *s;
        Py_ssize_t length;
        s = PyUnicode_AsUTF8AndSize(obj, &length);
        return __Pyx__PyBytes_AsDouble(obj, s, length);
    }
    return __Pyx_PyUnicode_AsDouble_WithSpaces(obj);
#else
    return __Pyx_SlowPyString_AsDouble(obj);
#endif
}

/* pyobject_as_double.proto */
static double __Pyx__PyObject_AsDouble(PyObject* obj);
#if CYTHON_COMPILING_IN_PYPY
#define __Pyx_PyObject_AsDouble(obj)\
(likely(PyFloat_CheckExact(obj)) ? PyFloat_AS_DOUBLE(obj) :\
 likely(PyLong_CheckExact(obj)) ?\
 PyFloat_AsDouble(obj) : __Pyx__PyObject_AsDouble(obj))
#else
#define __Pyx_PyObject_AsDouble(obj)\
((likely(PyFloat_CheckExact(obj))) ?  __Pyx_PyFloat_AS_DOUBLE(obj) :\
 likely(PyLong_CheckExact(obj)) ?\
 PyLong_AsDouble(obj) : __Pyx__PyObject_AsDouble(obj))
#endif

/* FloatExceptionCheck.proto */
#define __PYX_CHECK_FLOAT_EXCEPTION(value, error_value)\
    ((error_value) == (error_value) ?\
     (value) == (error_value) :\
     (value) != (value))

/* PyFloatBinop.proto */
#if !CYTHON_COMPILING_IN_PYPY
static int __Pyx_PyFloat_BoolNeObjC(PyObject *op1, PyObject *op2, double floatval, int inplace, int zerodivision_check);
#else
#define __Pyx_PyFloat_BoolNeObjC(op1, op2, floatval, inplace, zerodivision_check)\
    __Pyx_PyObject_IsTrueAndDecref(PyObject_RichCompare(op1, op2, Py_NE))
    #endif

/* PyUnicodeContains.proto */
static CYTHON_INLINE int __Pyx_PyUnicode_ContainsTF(PyObject* substring, PyObject* text, int eq) {
    int result = PyUnicode_Contains(text, substring);
    return unlikely(result < 0) ? result : (result == (eq == Py_EQ));
}

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

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

/* py_abs.proto */
#if CYTHON_USE_PYLONG_INTERNALS
static PyObject *__Pyx_PyLong_AbsNeg(PyObject *num);
#define __Pyx_PyNumber_Absolute(x)\
    ((likely(PyLong_CheckExact(x))) ?\
         (likely(__Pyx_PyLong_IsNonNeg(x)) ? __Pyx_NewRef(x) : __Pyx_PyLong_AbsNeg(x)) :\
         PyNumber_Absolute(x))
#else
#define __Pyx_PyNumber_Absolute(x)  PyNumber_Absolute(x)
#endif

/* PyLongBinop.proto */
#if !CYTHON_COMPILING_IN_PYPY
static CYTHON_INLINE PyObject* __Pyx_PyLong_SubtractObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check);
#else
#define __Pyx_PyLong_SubtractObjC(op1, op2, intval, inplace, zerodivision_check)\
    (inplace ? PyNumber_InPlaceSubtract(op1, op2) : PyNumber_Subtract(op1, op2))
#endif

/* PyUnicodeDecodeError_Check.proto */
#define __Pyx_PyExc_UnicodeDecodeError_Check(obj)  __Pyx_TypeCheck(obj, PyExc_UnicodeDecodeError)

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

/* pyint_simplify.proto */
static CYTHON_INLINE int __Pyx_PyInt_FromNumber(PyObject **number_var, const char *argname, int accept_none);

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

/* ListExtend.proto */
static CYTHON_INLINE int __Pyx_PyList_Extend(PyObject* L, PyObject* v) {
#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00a2
    return PyList_Extend(L, v);
#elif CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030d0000
    PyObject* none = _PyList_Extend((PyListObject*)L, v);
    if (unlikely(!none))
        return -1;
    Py_DECREF(none);
    return 0;
#else
    return PyList_SetSlice(L, PY_SSIZE_T_MAX, PY_SSIZE_T_MAX, v);
#endif
}

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

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

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

/* DelItemOnTypeDict.proto (used by SetupReduce) */
static int __Pyx__DelItemOnTypeDict(PyTypeObject *tp, PyObject *k);
#define __Pyx_DelItemOnTypeDict(tp, k) __Pyx__DelItemOnTypeDict((PyTypeObject*)tp, k)

/* SetupReduce.proto */
static int __Pyx_setup_reduce(PyObject* type_obj);

/* TypeImport.proto */
#ifndef __PYX_HAVE_RT_ImportType_proto_3_2_3
#define __PYX_HAVE_RT_ImportType_proto_3_2_3
#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 201112L
#include <stdalign.h>
#endif
#if (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 201112L) || __cplusplus >= 201103L
#define __PYX_GET_STRUCT_ALIGNMENT_3_2_3(s) alignof(s)
#else
#define __PYX_GET_STRUCT_ALIGNMENT_3_2_3(s) sizeof(void*)
#endif
enum __Pyx_ImportType_CheckSize_3_2_3 {
   __Pyx_ImportType_CheckSize_Error_3_2_3 = 0,
   __Pyx_ImportType_CheckSize_Warn_3_2_3 = 1,
   __Pyx_ImportType_CheckSize_Ignore_3_2_3 = 2
};
static PyTypeObject *__Pyx_ImportType_3_2_3(PyObject* module, const char *module_name, const char *class_name, size_t size, size_t alignment, enum __Pyx_ImportType_CheckSize_3_2_3 check_size);
#endif

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

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

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

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

/* CyFunctionClassCell.proto */
static int __Pyx_CyFunction_InitClassCell(PyObject *cyfunctions, PyObject *classobj);

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

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

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

/* CheckUnpickleChecksum.proto */
static CYTHON_INLINE int __Pyx_CheckUnpickleChecksum(long checksum, long checksum1, long checksum2, long checksum3, const char *members);

/* RealImag.proto */
#if CYTHON_CCOMPLEX
  #ifdef __cplusplus
    #define __Pyx_CREAL(z) ((z).real())
    #define __Pyx_CIMAG(z) ((z).imag())
  #else
    #define __Pyx_CREAL(z) (__real__(z))
    #define __Pyx_CIMAG(z) (__imag__(z))
  #endif
#else
    #define __Pyx_CREAL(z) ((z).real)
    #define __Pyx_CIMAG(z) ((z).imag)
#endif
#if defined(__cplusplus) && CYTHON_CCOMPLEX\
        && (defined(_WIN32) || defined(__clang__) || (defined(__GNUC__) && (__GNUC__ >= 5 || __GNUC__ == 4 && __GNUC_MINOR__ >= 4 )) || __cplusplus >= 201103)
    #define __Pyx_SET_CREAL(z,x) ((z).real(x))
    #define __Pyx_SET_CIMAG(z,y) ((z).imag(y))
#else
    #define __Pyx_SET_CREAL(z,x) __Pyx_CREAL(z) = (x)
    #define __Pyx_SET_CIMAG(z,y) __Pyx_CIMAG(z) = (y)
#endif

/* Arithmetic.proto */
#if CYTHON_CCOMPLEX && (1) && (!0 || __cplusplus)
    #define __Pyx_c_eq_float(a, b)   ((a)==(b))
    #define __Pyx_c_sum_float(a, b)  ((a)+(b))
    #define __Pyx_c_diff_float(a, b) ((a)-(b))
    #define __Pyx_c_prod_float(a, b) ((a)*(b))
    #define __Pyx_c_quot_float(a, b) ((a)/(b))
    #define __Pyx_c_neg_float(a)     (-(a))
  #ifdef __cplusplus
    #define __Pyx_c_is_zero_float(z) ((z)==(float)0)
    #define __Pyx_c_conj_float(z)    (::std::conj(z))
    #if 1
        #define __Pyx_c_abs_float(z)     (::std::abs(z))
        #define __Pyx_c_pow_float(a, b)  (::std::pow(a, b))
    #endif
  #else
    #define __Pyx_c_is_zero_float(z) ((z)==0)
    #define __Pyx_c_conj_float(z)    (conjf(z))
    #if 1
        #define __Pyx_c_abs_float(z)     (cabsf(z))
        #define __Pyx_c_pow_float(a, b)  (cpowf(a, b))
    #endif
 #endif
#else
    static CYTHON_INLINE int __Pyx_c_eq_float(__pyx_t_float_complex, __pyx_t_float_complex);
    static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_sum_float(__pyx_t_float_complex, __pyx_t_float_complex);
    static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_diff_float(__pyx_t_float_complex, __pyx_t_float_complex);
    static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_prod_float(__pyx_t_float_complex, __pyx_t_float_complex);
    static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_quot_float(__pyx_t_float_complex, __pyx_t_float_complex);
    static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_neg_float(__pyx_t_float_complex);
    static CYTHON_INLINE int __Pyx_c_is_zero_float(__pyx_t_float_complex);
    static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_conj_float(__pyx_t_float_complex);
    #if 1
        static CYTHON_INLINE float __Pyx_c_abs_float(__pyx_t_float_complex);
        static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_pow_float(__pyx_t_float_complex, __pyx_t_float_complex);
    #endif
#endif

/* Arithmetic.proto */
#if CYTHON_CCOMPLEX && (1) && (!0 || __cplusplus)
    #define __Pyx_c_eq_double(a, b)   ((a)==(b))
    #define __Pyx_c_sum_double(a, b)  ((a)+(b))
    #define __Pyx_c_diff_double(a, b) ((a)-(b))
    #define __Pyx_c_prod_double(a, b) ((a)*(b))
    #define __Pyx_c_quot_double(a, b) ((a)/(b))
    #define __Pyx_c_neg_double(a)     (-(a))
  #ifdef __cplusplus
    #define __Pyx_c_is_zero_double(z) ((z)==(double)0)
    #define __Pyx_c_conj_double(z)    (::std::conj(z))
    #if 1
        #define __Pyx_c_abs_double(z)     (::std::abs(z))
        #define __Pyx_c_pow_double(a, b)  (::std::pow(a, b))
    #endif
  #else
    #define __Pyx_c_is_zero_double(z) ((z)==0)
    #define __Pyx_c_conj_double(z)    (conj(z))
    #if 1
        #define __Pyx_c_abs_double(z)     (cabs(z))
        #define __Pyx_c_pow_double(a, b)  (cpow(a, b))
    #endif
 #endif
#else
    static CYTHON_INLINE int __Pyx_c_eq_double(__pyx_t_double_complex, __pyx_t_double_complex);
    static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_sum_double(__pyx_t_double_complex, __pyx_t_double_complex);
    static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_diff_double(__pyx_t_double_complex, __pyx_t_double_complex);
    static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_prod_double(__pyx_t_double_complex, __pyx_t_double_complex);
    static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_quot_double(__pyx_t_double_complex, __pyx_t_double_complex);
    static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_neg_double(__pyx_t_double_complex);
    static CYTHON_INLINE int __Pyx_c_is_zero_double(__pyx_t_double_complex);
    static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_conj_double(__pyx_t_double_complex);
    #if 1
        static CYTHON_INLINE double __Pyx_c_abs_double(__pyx_t_double_complex);
        static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_pow_double(__pyx_t_double_complex, __pyx_t_double_complex);
    #endif
#endif

/* Arithmetic.proto */
#if CYTHON_CCOMPLEX && (1) && (!0 || __cplusplus)
    #define __Pyx_c_eq_long__double(a, b)   ((a)==(b))
    #define __Pyx_c_sum_long__double(a, b)  ((a)+(b))
    #define __Pyx_c_diff_long__double(a, b) ((a)-(b))
    #define __Pyx_c_prod_long__double(a, b) ((a)*(b))
    #define __Pyx_c_quot_long__double(a, b) ((a)/(b))
    #define __Pyx_c_neg_long__double(a)     (-(a))
  #ifdef __cplusplus
    #define __Pyx_c_is_zero_long__double(z) ((z)==(long double)0)
    #define __Pyx_c_conj_long__double(z)    (::std::conj(z))
    #if 1
        #define __Pyx_c_abs_long__double(z)     (::std::abs(z))
        #define __Pyx_c_pow_long__double(a, b)  (::std::pow(a, b))
    #endif
  #else
    #define __Pyx_c_is_zero_long__double(z) ((z)==0)
    #define __Pyx_c_conj_long__double(z)    (conjl(z))
    #if 1
        #define __Pyx_c_abs_long__double(z)     (cabsl(z))
        #define __Pyx_c_pow_long__double(a, b)  (cpowl(a, b))
    #endif
 #endif
#else
    static CYTHON_INLINE int __Pyx_c_eq_long__double(__pyx_t_long_double_complex, __pyx_t_long_double_complex);
    static CYTHON_INLINE __pyx_t_long_double_complex __Pyx_c_sum_long__double(__pyx_t_long_double_complex, __pyx_t_long_double_complex);
    static CYTHON_INLINE __pyx_t_long_double_complex __Pyx_c_diff_long__double(__pyx_t_long_double_complex, __pyx_t_long_double_complex);
    static CYTHON_INLINE __pyx_t_long_double_complex __Pyx_c_prod_long__double(__pyx_t_long_double_complex, __pyx_t_long_double_complex);
    static CYTHON_INLINE __pyx_t_long_double_complex __Pyx_c_quot_long__double(__pyx_t_long_double_complex, __pyx_t_long_double_complex);
    static CYTHON_INLINE __pyx_t_long_double_complex __Pyx_c_neg_long__double(__pyx_t_long_double_complex);
    static CYTHON_INLINE int __Pyx_c_is_zero_long__double(__pyx_t_long_double_complex);
    static CYTHON_INLINE __pyx_t_long_double_complex __Pyx_c_conj_long__double(__pyx_t_long_double_complex);
    #if 1
        static CYTHON_INLINE long double __Pyx_c_abs_long__double(__pyx_t_long_double_complex);
        static CYTHON_INLINE __pyx_t_long_double_complex __Pyx_c_pow_long__double(__pyx_t_long_double_complex, __pyx_t_long_double_complex);
    #endif
#endif

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

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

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

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

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

/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyLong_From_PY_LONG_LONG(PY_LONG_LONG value);

/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyLong_From_unsigned_PY_LONG_LONG(unsigned PY_LONG_LONG value);

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

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

/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyLong_From_nc_type(nc_type value);

/* CIntFromPy.proto */
static CYTHON_INLINE nc_type __Pyx_PyLong_As_nc_type(PyObject *);

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

/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyLong_From_npy_intp(npy_intp value);

/* CIntFromPy.proto */
static CYTHON_INLINE npy_intp __Pyx_PyLong_As_npy_intp(PyObject *);

/* UpdateUnpickledDict.proto */
static int __Pyx_UpdateUnpickledDict(PyObject *obj, PyObject *state, Py_ssize_t index);

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

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

/* IterNextPlain.proto (used by CoroutineBase) */
static CYTHON_INLINE PyObject *__Pyx_PyIter_Next_Plain(PyObject *iterator);
#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030A0000
static PyObject *__Pyx_GetBuiltinNext_LimitedAPI(void);
#endif

/* ReturnWithStopIteration.proto (used by CoroutineBase) */
static CYTHON_INLINE void __Pyx_ReturnWithStopIteration(PyObject* value, int async, int iternext);

/* CoroutineBase.proto (used by Generator) */
struct __pyx_CoroutineObject;
typedef PyObject *(*__pyx_coroutine_body_t)(struct __pyx_CoroutineObject *, PyThreadState *, PyObject *);
#if CYTHON_USE_EXC_INFO_STACK
#define __Pyx_ExcInfoStruct  _PyErr_StackItem
#else
typedef struct {
    PyObject *exc_type;
    PyObject *exc_value;
    PyObject *exc_traceback;
} __Pyx_ExcInfoStruct;
#endif
typedef struct __pyx_CoroutineObject {
    PyObject_HEAD
    __pyx_coroutine_body_t body;
    PyObject *closure;
    __Pyx_ExcInfoStruct gi_exc_state;
#if PY_VERSION_HEX < 0x030C0000 || CYTHON_COMPILING_IN_LIMITED_API
    PyObject *gi_weakreflist;
#endif
    PyObject *classobj;
    PyObject *yieldfrom;
    __Pyx_pyiter_sendfunc yieldfrom_am_send;
    PyObject *gi_name;
    PyObject *gi_qualname;
    PyObject *gi_modulename;
    PyObject *gi_code;
    PyObject *gi_frame;
#if CYTHON_USE_SYS_MONITORING && (CYTHON_PROFILE || CYTHON_TRACE)
    PyMonitoringState __pyx_pymonitoring_state[__Pyx_MonitoringEventTypes_CyGen_count];
    uint64_t __pyx_pymonitoring_version;
#endif
    int resume_label;
    char is_running;
} __pyx_CoroutineObject;
static __pyx_CoroutineObject *__Pyx__Coroutine_New(
    PyTypeObject *type, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure,
    PyObject *name, PyObject *qualname, PyObject *module_name);
static __pyx_CoroutineObject *__Pyx__Coroutine_NewInit(
            __pyx_CoroutineObject *gen, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure,
            PyObject *name, PyObject *qualname, PyObject *module_name);
static CYTHON_INLINE void __Pyx_Coroutine_ExceptionClear(__Pyx_ExcInfoStruct *self);
static int __Pyx_Coroutine_clear(PyObject *self);
static __Pyx_PySendResult __Pyx_Coroutine_AmSend(PyObject *self, PyObject *value, PyObject **retval);
static PyObject *__Pyx_Coroutine_Send(PyObject *self, PyObject *value);
static __Pyx_PySendResult __Pyx_Coroutine_Close(PyObject *self, PyObject **retval);
static PyObject *__Pyx_Coroutine_Throw(PyObject *gen, PyObject *args);
#if CYTHON_USE_EXC_INFO_STACK
#define __Pyx_Coroutine_SwapException(self)
#define __Pyx_Coroutine_ResetAndClearException(self)  __Pyx_Coroutine_ExceptionClear(&(self)->gi_exc_state)
#else
#define __Pyx_Coroutine_SwapException(self) {\
    __Pyx_ExceptionSwap(&(self)->gi_exc_state.exc_type, &(self)->gi_exc_state.exc_value, &(self)->gi_exc_state.exc_traceback);\
    __Pyx_Coroutine_ResetFrameBackpointer(&(self)->gi_exc_state);\
    }
#define __Pyx_Coroutine_ResetAndClearException(self) {\
    __Pyx_ExceptionReset((self)->gi_exc_state.exc_type, (self)->gi_exc_state.exc_value, (self)->gi_exc_state.exc_traceback);\
    (self)->gi_exc_state.exc_type = (self)->gi_exc_state.exc_value = (self)->gi_exc_state.exc_traceback = NULL;\
    }
#endif
#if CYTHON_FAST_THREAD_STATE
#define __Pyx_PyGen_FetchStopIterationValue(pvalue)\
    __Pyx_PyGen__FetchStopIterationValue(__pyx_tstate, pvalue)
#else
#define __Pyx_PyGen_FetchStopIterationValue(pvalue)\
    __Pyx_PyGen__FetchStopIterationValue(__Pyx_PyThreadState_Current, pvalue)
#endif
static int __Pyx_PyGen__FetchStopIterationValue(PyThreadState *tstate, PyObject **pvalue);
static CYTHON_INLINE void __Pyx_Coroutine_ResetFrameBackpointer(__Pyx_ExcInfoStruct *exc_state);
static char __Pyx_Coroutine_test_and_set_is_running(__pyx_CoroutineObject *gen);
static void __Pyx_Coroutine_unset_is_running(__pyx_CoroutineObject *gen);
static char __Pyx_Coroutine_get_is_running(__pyx_CoroutineObject *gen);
static PyObject *__Pyx_Coroutine_get_is_running_getter(PyObject *gen, void *closure);
#if __PYX_HAS_PY_AM_SEND == 2
static void __Pyx_SetBackportTypeAmSend(PyTypeObject *type, __Pyx_PyAsyncMethodsStruct *static_amsend_methods, __Pyx_pyiter_sendfunc am_send);
#endif
static PyObject *__Pyx_Coroutine_fail_reduce_ex(PyObject *self, PyObject *arg);

/* Generator.proto */
#define __Pyx_Generator_USED
#define __Pyx_Generator_CheckExact(obj) __Pyx_IS_TYPE(obj, __pyx_mstate_global->__pyx_GeneratorType)
#define __Pyx_Generator_New(body, code, closure, name, qualname, module_name)\
    __Pyx__Coroutine_New(__pyx_mstate_global->__pyx_GeneratorType, body, code, closure, name, qualname, module_name)
static PyObject *__Pyx_Generator_Next(PyObject *self);
static int __pyx_Generator_init(PyObject *module);
static CYTHON_INLINE PyObject *__Pyx_Generator_GetInlinedResult(PyObject *self);

/* 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 npy_intp __pyx_f_5numpy_5dtype_8itemsize_itemsize(PyArray_Descr *__pyx_v_self); /* proto*/
static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_9alignment_alignment(PyArray_Descr *__pyx_v_self); /* proto*/
static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_6fields_fields(PyArray_Descr *__pyx_v_self); /* proto*/
static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_5names_names(PyArray_Descr *__pyx_v_self); /* proto*/
static CYTHON_INLINE PyArray_ArrayDescr *__pyx_f_5numpy_5dtype_8subarray_subarray(PyArray_Descr *__pyx_v_self); /* proto*/
static CYTHON_INLINE npy_uint64 __pyx_f_5numpy_5dtype_5flags_flags(PyArray_Descr *__pyx_v_self); /* proto*/
static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_7numiter_numiter(PyArrayMultiIterObject *__pyx_v_self); /* proto*/
static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_4size_size(PyArrayMultiIterObject *__pyx_v_self); /* proto*/
static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_5index_index(PyArrayMultiIterObject *__pyx_v_self); /* proto*/
static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_2nd_nd(PyArrayMultiIterObject *__pyx_v_self); /* proto*/
static CYTHON_INLINE npy_intp *__pyx_f_5numpy_9broadcast_10dimensions_dimensions(PyArrayMultiIterObject *__pyx_v_self); /* proto*/
static CYTHON_INLINE void **__pyx_f_5numpy_9broadcast_5iters_iters(PyArrayMultiIterObject *__pyx_v_self); /* proto*/
static CYTHON_INLINE PyObject *__pyx_f_5numpy_7ndarray_4base_base(PyArrayObject *__pyx_v_self); /* proto*/
static CYTHON_INLINE PyArray_Descr *__pyx_f_5numpy_7ndarray_5descr_descr(PyArrayObject *__pyx_v_self); /* proto*/
static CYTHON_INLINE int __pyx_f_5numpy_7ndarray_4ndim_ndim(PyArrayObject *__pyx_v_self); /* proto*/
static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_5shape_shape(PyArrayObject *__pyx_v_self); /* proto*/
static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_7strides_strides(PyArrayObject *__pyx_v_self); /* proto*/
static CYTHON_INLINE npy_intp __pyx_f_5numpy_7ndarray_4size_size(PyArrayObject *__pyx_v_self); /* proto*/
static CYTHON_INLINE char *__pyx_f_5numpy_7ndarray_4data_data(PyArrayObject *__pyx_v_self); /* proto*/

/* Module declarations from "cpython.mem" */

/* Module declarations from "cpython.buffer" */

/* Module declarations from "libc.string" */

/* Module declarations from "libc.stdio" */

/* Module declarations from "__builtin__" */

/* Module declarations from "cpython.type" */

/* Module declarations from "cpython" */

/* Module declarations from "cpython.object" */

/* Module declarations from "cpython.bytes" */

/* Module declarations from "cpython.ref" */

/* Module declarations from "numpy" */

/* Module declarations from "numpy" */
static CYTHON_INLINE int __pyx_f_5numpy_import_array(void); /*proto*/

/* Module declarations from "libc.stdlib" */

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

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

/* Module declarations from "netCDF4._netCDF4" */
static PyObject *__pyx_7genexpr__pyx_v_7netCDF4_8_netCDF4_k;
static PyObject *__pyx_7genexpr__pyx_v_7netCDF4_8_netCDF4_v;
static PyObject *__pyx_8genexpr1__pyx_v_7netCDF4_8_netCDF4_k;
static PyObject *__pyx_8genexpr1__pyx_v_7netCDF4_8_netCDF4_v;
static PyObject *__pyx_f_7netCDF4_8_netCDF4_memview_fromptr(void *, size_t); /*proto*/
static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_att_names(int, int); /*proto*/
static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_att(PyObject *, int, PyObject *, struct __pyx_opt_args_7netCDF4_8_netCDF4__get_att *__pyx_optional_args); /*proto*/
static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_format(int); /*proto*/
static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_full_format(int); /*proto*/
static PyObject *__pyx_f_7netCDF4_8_netCDF4_issue485_workaround(int, int, char *); /*proto*/
static PyObject *__pyx_f_7netCDF4_8_netCDF4__set_att(PyObject *, int, PyObject *, PyObject *, struct __pyx_opt_args_7netCDF4_8_netCDF4__set_att *__pyx_optional_args); /*proto*/
static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_types(PyObject *); /*proto*/
static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_dims(PyObject *); /*proto*/
static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_grps(PyObject *); /*proto*/
static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *, struct __pyx_opt_args_7netCDF4_8_netCDF4__get_vars *__pyx_optional_args); /*proto*/
static int __pyx_f_7netCDF4_8_netCDF4__inq_varndims(int, int, int); /*proto*/
static PyObject *__pyx_f_7netCDF4_8_netCDF4__inq_vardimid(int, int, int); /*proto*/
static PyObject *__pyx_f_7netCDF4_8_netCDF4__def_compound(PyObject *, PyObject *, PyObject *); /*proto*/
static PyObject *__pyx_f_7netCDF4_8_netCDF4__find_cmptype(PyObject *, PyObject *); /*proto*/
static PyObject *__pyx_f_7netCDF4_8_netCDF4__read_compound(PyObject *, nc_type, struct __pyx_opt_args_7netCDF4_8_netCDF4__read_compound *__pyx_optional_args); /*proto*/
static PyObject *__pyx_f_7netCDF4_8_netCDF4__def_vlen(PyObject *, PyObject *, PyObject *); /*proto*/
static PyObject *__pyx_f_7netCDF4_8_netCDF4__read_vlen(PyObject *, nc_type, struct __pyx_opt_args_7netCDF4_8_netCDF4__read_vlen *__pyx_optional_args); /*proto*/
static PyObject *__pyx_f_7netCDF4_8_netCDF4__def_enum(PyObject *, PyObject *, PyObject *, PyObject *); /*proto*/
static PyObject *__pyx_f_7netCDF4_8_netCDF4__read_enum(PyObject *, nc_type, struct __pyx_opt_args_7netCDF4_8_netCDF4__read_enum *__pyx_optional_args); /*proto*/
static PyObject *__pyx_f_7netCDF4_8_netCDF4__strencode(PyObject *, struct __pyx_opt_args_7netCDF4_8_netCDF4__strencode *__pyx_optional_args); /*proto*/
static PyObject *__pyx_f_7netCDF4_8_netCDF4___pyx_unpickle_Dimension__set_state(struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *, PyObject *); /*proto*/
/* #### Code section: typeinfo ### */
/* #### Code section: before_global_var ### */
#define __Pyx_MODULE_NAME "netCDF4._netCDF4"
extern int __pyx_module_is_main_netCDF4___netCDF4;
int __pyx_module_is_main_netCDF4___netCDF4 = 0;

/* Implementation of "netCDF4._netCDF4" */
/* #### Code section: global_var ### */
static PyObject *__pyx_builtin_staticmethod;
static PyObject *__pyx_builtin_super;
static PyObject *__pyx_builtin_zip;
static PyObject *__pyx_builtin_open;
static PyObject *__pyx_builtin_enumerate;
static PyObject *__pyx_builtin_Ellipsis;
static PyObject *__pyx_builtin_object;
static PyObject *__pyx_builtin_sum;
static PyObject *__pyx_builtin_all;
static PyObject *__pyx_builtin_map;
/* #### Code section: string_decls ### */
static const char __pyx_k_data_model__dimid__grp__grpid[] = "_data_model, _dimid, _grp, _grpid, _name";
static const char __pyx_k_Version_1_7_2_Introduction_netcd[] = "Version 1.7.2\n-------------\n\n# Introduction\n\nnetcdf4-python is a Python interface to the netCDF C library.\n\n[netCDF](http://www.unidata.ucar.edu/software/netcdf/) version 4 has many features\nnot found in earlier versions of the library and is implemented on top of\n[HDF5](http://www.hdfgroup.org/HDF5). This module can read and write\nfiles in both the new netCDF 4 and the old netCDF 3 format, and can create\nfiles that are readable by HDF5 clients. The API modelled after\n[Scientific.IO.NetCDF](http://dirac.cnrs-orleans.fr/ScientificPython/),\nand should be familiar to users of that module.\n\nMost new features of netCDF 4 are implemented, such as multiple\nunlimited dimensions, groups and data compression.  All the new\nnumeric data types (such as 64 bit and unsigned integer types) are\nimplemented. Compound (struct), variable length (vlen) and\nenumerated (enum) data types are supported, but not the opaque data type.\nMixtures of compound, vlen and enum data types (such as\ncompound types containing enums, or vlens containing compound\ntypes) are not supported.\n\n## Quick Install\n\n - the easiest way to get going is to install via `pip install netCDF4`.\n   (or if you use the [conda](http://conda.io) package manager `conda install -c conda-forge netCDF4`).\n\n## Developer Install\n\n - Clone the [github repository](http://github.com/Unidata/netcdf4-python). Make\n   sure you either clone recursively, or run `git submodule update --init` to\n   ensure all the submodules are also checked out.\n - Make sure the dependencies are satisfied (Python 3.8 or later,\n   [numpy](http://numpy.scipy.org),\n   [Cython](http://cython.org),\n   [cftime](https://github.com/Unidata/cftime),\n   [setuptools](https://pypi.python.org/pypi/setuptools),\n   the [HDF5 C library](https://www.hdfgroup.org/solutions/hdf5/),\n   and the [netCDF C library](https://www.unidata.ucar.edu/software/netcdf/)).\n   For MPI parallel IO support, an MPI-enabled versions of the netcdf library""\n   is required, as is [mpi4py](http://mpi4py.scipy.org).\n   Parallel IO further depends on the existence of MPI-enabled HDF5 or the\n   [PnetCDF](https://parallel-netcdf.github.io/) library.\n - By default, the utility `nc-config` (installed with netcdf-c)\n   will be run used to determine where all the dependencies live.\n - If `nc-config` is not in your default `PATH`, you can set the `NETCDF4_DIR`\n   environment variable and `setup.py` will look in `$NETCDF4_DIR/bin`.\n   You can also use the file `setup.cfg` to set the path to `nc-config`, or\n   enter the paths to the libraries and include files manually. Just  edit the `setup.cfg` file\n   in a text editor and follow the instructions in the comments.\n   To disable the use of `nc-config`, set the env var `USE_NCCONFIG` to 0.\n   To disable the use of `setup.cfg`, set `USE_SETUPCFG` to 0.\n   As a last resort, the library and include paths can be set via environment variables.\n   If you go this route, set `USE_NCCONFIG` and `USE_SETUPCFG` to 0, and specify\n   `NETCDF4_LIBDIR`, `NETCDF4_INCDIR`, `HDF5_LIBDIR` and `HDF5_INCDIR`.\n   If the dependencies are not found\n   in any of the paths specified by environment variables, then standard locations\n   (such as `/usr` and `/usr/local`) are searched.\n - if the env var `NETCDF_PLUGIN_DIR` is set to point to the location of the netcdf-c compression\n   plugins built by netcdf >= 4.9.0, they will be installed inside the package.  In this\n   case `HDF5_PLUGIN_PATH` will be set to the package installation path on import,\n   so the extra compression algorithms available in netcdf-c >= 4.9.0 will automatically\n   be available.  Otherwise, the user will have to set `HDF5_PLUGIN_PATH` explicitly\n   to have access to the extra compression plugins.\n - run `pip install -v .` (as root if necessary)\n - run the tests in the 'test' directory by running `python run_all.py`.\n\n# Tutorial\n\n- [Creating/Opening/Closing a netCDF file](#creatingopeningclosing-a-netcdf-fi""le)\n- [Groups in a netCDF file](#groups-in-a-netcdf-file)\n- [Dimensions in a netCDF file](#dimensions-in-a-netcdf-file)\n- [Variables in a netCDF file](#variables-in-a-netcdf-file)\n- [Attributes in a netCDF file](#attributes-in-a-netcdf-file)\n- [Dealing with time coordinates](#dealing-with-time-coordinates)\n- [Writing data to and retrieving data from a netCDF variable](#writing-data-to-and-retrieving-data-from-a-netcdf-variable)\n- [Reading data from a multi-file netCDF dataset](#reading-data-from-a-multi-file-netcdf-dataset)\n- [Efficient compression of netCDF variables](#efficient-compression-of-netcdf-variables)\n- [Beyond homogeneous arrays of a fixed type - compound data types](#beyond-homogeneous-arrays-of-a-fixed-type-compound-data-types)\n- [Variable-length (vlen) data types](#variable-length-vlen-data-types)\n- [Enum data type](#enum-data-type)\n- [Parallel IO](#parallel-io)\n- [Dealing with strings](#dealing-with-strings)\n- [In-memory (diskless) Datasets](#in-memory-diskless-datasets)\n\nAll of the code in this tutorial is available in `examples/tutorial.py`, except\nthe parallel IO example, which is in `examples/mpi_example.py`.\nUnit tests are in the `test` directory.\n\n## Creating/Opening/Closing a netCDF file\n\nTo create a netCDF file from python, you simply call the `Dataset`\nconstructor. This is also the method used to open an existing netCDF\nfile.  If the file is open for write access (`mode='w', 'r+'` or `'a'`), you may\nwrite any type of data including new dimensions, groups, variables and\nattributes.  netCDF files come in five flavors (`NETCDF3_CLASSIC`,\n`NETCDF3_64BIT_OFFSET`, `NETCDF3_64BIT_DATA`, `NETCDF4_CLASSIC`, and `NETCDF4`).\n`NETCDF3_CLASSIC` was the original netcdf binary format, and was limited\nto file sizes less than 2 Gb. `NETCDF3_64BIT_OFFSET` was introduced\nin version 3.6.0 of the library, and extended the original binary format\nto allow for file sizes greater than 2 Gb.\n`NETCDF3_64BIT_DATA` is a new format that re""quires version 4.4.0 of\nthe C library - it extends the `NETCDF3_64BIT_OFFSET` binary format to\nallow for unsigned/64 bit integer data types and 64-bit dimension sizes.\n`NETCDF3_64BIT` is an alias for `NETCDF3_64BIT_OFFSET`.\n`NETCDF4_CLASSIC` files use the version 4 disk format (HDF5), but omits features\nnot found in the version 3 API. They can be read by netCDF 3 clients\nonly if they have been relinked against the netCDF 4 library. They can\nalso be read by HDF5 clients. `NETCDF4` files use the version 4 disk\nformat (HDF5) and use the new features of the version 4 API.  The\nnetCDF4 module can read and write files in any of these formats. When\ncreating a new file, the format may be specified using the `format`\nkeyword in the `Dataset` constructor.  The default format is\n`NETCDF4`. To see how a given file is formatted, you can examine the\n`data_model` attribute.  Closing the netCDF file is\naccomplished via the `Dataset.close` method of the `Dataset`\ninstance.\n\nHere's an example:\n\n```python\n>>> from netCDF4 import Dataset\n>>> rootgrp = Dataset(\"test.nc\", \"w\", format=\"NETCDF4\")\n>>> print(rootgrp.data_model)\nNETCDF4\n>>> rootgrp.close()\n```\n\nRemote [OPeNDAP](http://opendap.org)-hosted datasets can be accessed for\nreading over http if a URL is provided to the `Dataset` constructor instead of a\nfilename.  However, this requires that the netCDF library be built with\nOPenDAP support, via the `--enable-dap` configure option (added in\nversion 4.0.1).\n\n\n## Groups in a netCDF file\n\nnetCDF version 4 added support for organizing data in hierarchical\ngroups, which are analogous to directories in a filesystem. Groups serve\nas containers for variables, dimensions and attributes, as well as other\ngroups.  A `Dataset` creates a special group, called\nthe 'root group', which is similar to the root directory in a unix\nfilesystem.  To create `Group` instances, use the\n`Dataset.createGroup` method of a `Dataset` or `Group`\ninstance. `Dataset.cr""eateGroup` takes a single argument, a\npython string containing the name of the new group. The new `Group`\ninstances contained within the root group can be accessed by name using\nthe `groups` dictionary attribute of the `Dataset` instance.  Only\n`NETCDF4` formatted files support Groups, if you try to create a Group\nin a netCDF 3 file you will get an error message.\n\n```python\n>>> rootgrp = Dataset(\"test.nc\", \"a\")\n>>> fcstgrp = rootgrp.createGroup(\"forecasts\")\n>>> analgrp = rootgrp.createGroup(\"analyses\")\n>>> print(rootgrp.groups)\n{'forecasts': <class 'netCDF4._netCDF4.Group'>\ngroup /forecasts:\n    dimensions(sizes):\n    variables(dimensions):\n    groups: , 'analyses': <class 'netCDF4._netCDF4.Group'>\ngroup /analyses:\n    dimensions(sizes):\n    variables(dimensions):\n    groups: }\n>>>\n```\n\nGroups can exist within groups in a `Dataset`, just as directories\nexist within directories in a unix filesystem. Each `Group` instance\nhas a `groups` attribute dictionary containing all of the group\ninstances contained within that group. Each `Group` instance also has a\n`path` attribute that contains a simulated unix directory path to\nthat group.  To simplify the creation of nested groups, you can\nuse a unix-like path as an argument to `Dataset.createGroup`.\n\n```python\n>>> fcstgrp1 = rootgrp.createGroup(\"/forecasts/model1\")\n>>> fcstgrp2 = rootgrp.createGroup(\"/forecasts/model2\")\n```\n\nIf any of the intermediate elements of the path do not exist, they are created,\njust as with the unix command `'mkdir -p'`. If you try to create a group\nthat already exists, no error will be raised, and the existing group will be\nreturned.\n\nHere's an example that shows how to navigate all the groups in a\n`Dataset`. The function `walktree` is a Python generator that is used\nto walk the directory tree. Note that printing the `Dataset` or `Group`\nobject yields summary information about it's contents.\n\n```python\n>>> def walktree(top):\n...     yiel""d top.groups.values()\n...     for value in top.groups.values():\n...         yield from walktree(value)\n>>> print(rootgrp)\n<class 'netCDF4._netCDF4.Dataset'>\nroot group (NETCDF4 data model, file format HDF5):\n    dimensions(sizes):\n    variables(dimensions):\n    groups: forecasts, analyses\n>>> for children in walktree(rootgrp):\n...     for child in children:\n...         print(child)\n<class 'netCDF4._netCDF4.Group'>\ngroup /forecasts:\n    dimensions(sizes):\n    variables(dimensions):\n    groups: model1, model2\n<class 'netCDF4._netCDF4.Group'>\ngroup /analyses:\n    dimensions(sizes):\n    variables(dimensions):\n    groups:\n<class 'netCDF4._netCDF4.Group'>\ngroup /forecasts/model1:\n    dimensions(sizes):\n    variables(dimensions):\n    groups:\n<class 'netCDF4._netCDF4.Group'>\ngroup /forecasts/model2:\n    dimensions(sizes):\n    variables(dimensions):\n    groups:\n```\n\n## Dimensions in a netCDF file\n\nnetCDF defines the sizes of all variables in terms of dimensions, so\nbefore any variables can be created the dimensions they use must be\ncreated first. A special case, not often used in practice, is that of a\nscalar variable, which has no dimensions. A dimension is created using\nthe `Dataset.createDimension` method of a `Dataset`\nor `Group` instance. A Python string is used to set the name of the\ndimension, and an integer value is used to set the size. To create an\nunlimited dimension (a dimension that can be appended to), the size\nvalue is set to `None` or 0. In this example, there both the `time` and\n`level` dimensions are unlimited.  Having more than one unlimited\ndimension is a new netCDF 4 feature, in netCDF 3 files there may be only\none, and it must be the first (leftmost) dimension of the variable.\n\n```python\n>>> level = rootgrp.createDimension(\"level\", None)\n>>> time = rootgrp.createDimension(\"time\", None)\n>>> lat = rootgrp.createDimension(\"lat\", 73)\n>>> lon = rootgrp.createDimension(\"lon\", 144)\n```\n\n\nAll of t""he `Dimension` instances are stored in a python dictionary.\n\n```python\n>>> print(rootgrp.dimensions)\n{'level': <class 'netCDF4._netCDF4.Dimension'> (unlimited): name = 'level', size = 0, 'time': <class 'netCDF4._netCDF4.Dimension'> (unlimited): name = 'time', size = 0, 'lat': <class 'netCDF4._netCDF4.Dimension'>: name = 'lat', size = 73, 'lon': <class 'netCDF4._netCDF4.Dimension'>: name = 'lon', size = 144}\n```\n\nUsing the python `len` function with a `Dimension` instance returns\ncurrent size of that dimension.\n`Dimension.isunlimited` method of a `Dimension` instance\nbe used to determine if the dimensions is unlimited, or appendable.\n\n```python\n>>> print(len(lon))\n144\n>>> print(lon.isunlimited())\nFalse\n>>> print(time.isunlimited())\nTrue\n```\n\nPrinting the `Dimension` object\nprovides useful summary info, including the name and length of the dimension,\nand whether it is unlimited.\n\n```python\n>>> for dimobj in rootgrp.dimensions.values():\n...     print(dimobj)\n<class 'netCDF4._netCDF4.Dimension'> (unlimited): name = 'level', size = 0\n<class 'netCDF4._netCDF4.Dimension'> (unlimited): name = 'time', size = 0\n<class 'netCDF4._netCDF4.Dimension'>: name = 'lat', size = 73\n<class 'netCDF4._netCDF4.Dimension'>: name = 'lon', size = 144\n```\n\n`Dimension` names can be changed using the\n`Dataset.renameDimension` method of a `Dataset` or\n`Group` instance.\n\n## Variables in a netCDF file\n\nnetCDF variables behave much like python multidimensional array objects\nsupplied by the [numpy module](http://numpy.scipy.org). However,\nunlike numpy arrays, netCDF4 variables can be appended to along one or\nmore 'unlimited' dimensions. To create a netCDF variable, use the\n`Dataset.createVariable` method of a `Dataset` or\n`Group` instance. The `Dataset.createVariable`j method\nhas two mandatory arguments, the variable name (a Python string), and\nthe variable datatype. The variable's dimensions are given by a tuple\ncontaining the dimension names (defined ""previously with\n`Dataset.createDimension`). To create a scalar\nvariable, simply leave out the dimensions keyword. The variable\nprimitive datatypes correspond to the dtype attribute of a numpy array.\nYou can specify the datatype as a numpy dtype object, or anything that\ncan be converted to a numpy dtype object.  Valid datatype specifiers\ninclude: `'f4'` (32-bit floating point), `'f8'` (64-bit floating\npoint), `'i4'` (32-bit signed integer), `'i2'` (16-bit signed\ninteger), `'i8'` (64-bit signed integer), `'i1'` (8-bit signed\ninteger), `'u1'` (8-bit unsigned integer), `'u2'` (16-bit unsigned\ninteger), `'u4'` (32-bit unsigned integer), `'u8'` (64-bit unsigned\ninteger), or `'S1'` (single-character string).  The old Numeric\nsingle-character typecodes (`'f'`,`'d'`,`'h'`,\n`'s'`,`'b'`,`'B'`,`'c'`,`'i'`,`'l'`), corresponding to\n(`'f4'`,`'f8'`,`'i2'`,`'i2'`,`'i1'`,`'i1'`,`'S1'`,`'i4'`,`'i4'`),\nwill also work. The unsigned integer types and the 64-bit integer type\ncan only be used if the file format is `NETCDF4`.\n\nThe dimensions themselves are usually also defined as variables, called\ncoordinate variables. The `Dataset.createVariable`\nmethod returns an instance of the `Variable` class whose methods can be\nused later to access and set variable data and attributes.\n\n```python\n>>> times = rootgrp.createVariable(\"time\",\"f8\",(\"time\",))\n>>> levels = rootgrp.createVariable(\"level\",\"i4\",(\"level\",))\n>>> latitudes = rootgrp.createVariable(\"lat\",\"f4\",(\"lat\",))\n>>> longitudes = rootgrp.createVariable(\"lon\",\"f4\",(\"lon\",))\n>>> # two dimensions unlimited\n>>> temp = rootgrp.createVariable(\"temp\",\"f4\",(\"time\",\"level\",\"lat\",\"lon\",))\n>>> temp.units = \"K\"\n```\n\nTo get summary info on a `Variable` instance in an interactive session,\njust print it.\n\n```python\n>>> print(temp)\n<class 'netCDF4._netCDF4.Variable'>\nfloat32 temp(time, level, lat, lon)\n    units: K\nunlimited dimensions: time, level\ncurrent shape = (0, 0, 73, 144"")\nfilling on, default _FillValue of 9.969209968386869e+36 used\n```\n\nYou can use a path to create a Variable inside a hierarchy of groups.\n\n```python\n>>> ftemp = rootgrp.createVariable(\"/forecasts/model1/temp\",\"f4\",(\"time\",\"level\",\"lat\",\"lon\",))\n```\n\nIf the intermediate groups do not yet exist, they will be created.\n\nYou can also query a `Dataset` or `Group` instance directly to obtain `Group` or\n`Variable` instances using paths.\n\n```python\n>>> print(rootgrp[\"/forecasts/model1\"])  # a Group instance\n<class 'netCDF4._netCDF4.Group'>\ngroup /forecasts/model1:\n    dimensions(sizes):\n    variables(dimensions): float32 temp(time,level,lat,lon)\n    groups:\n>>> print(rootgrp[\"/forecasts/model1/temp\"])  # a Variable instance\n<class 'netCDF4._netCDF4.Variable'>\nfloat32 temp(time, level, lat, lon)\npath = /forecasts/model1\nunlimited dimensions: time, level\ncurrent shape = (0, 0, 73, 144)\nfilling on, default _FillValue of 9.969209968386869e+36 used\n```\n\n\nAll of the variables in the `Dataset` or `Group` are stored in a\nPython dictionary, in the same way as the dimensions:\n\n```python\n>>> print(rootgrp.variables)\n{'time': <class 'netCDF4._netCDF4.Variable'>\nfloat64 time(time)\nunlimited dimensions: time\ncurrent shape = (0,)\nfilling on, default _FillValue of 9.969209968386869e+36 used, 'level': <class 'netCDF4._netCDF4.Variable'>\nint32 level(level)\nunlimited dimensions: level\ncurrent shape = (0,)\nfilling on, default _FillValue of -2147483647 used, 'lat': <class 'netCDF4._netCDF4.Variable'>\nfloat32 lat(lat)\nunlimited dimensions:\ncurrent shape = (73,)\nfilling on, default _FillValue of 9.969209968386869e+36 used, 'lon': <class 'netCDF4._netCDF4.Variable'>\nfloat32 lon(lon)\nunlimited dimensions:\ncurrent shape = (144,)\nfilling on, default _FillValue of 9.969209968386869e+36 used, 'temp': <class 'netCDF4._netCDF4.Variable'>\nfloat32 temp(time, level, lat, lon)\n    units: K\nunlimited dimensions: time, level\ncurrent shape ""= (0, 0, 73, 144)\nfilling on, default _FillValue of 9.969209968386869e+36 used}\n```\n\n`Variable` names can be changed using the\n`Dataset.renameVariable` method of a `Dataset`\ninstance.\n\nVariables can be sliced similar to numpy arrays, but there are some differences.  See\n[Writing data to and retrieving data from a netCDF variable](#writing-data-to-and-retrieving-data-from-a-netcdf-variable) for more details.\n\n\n## Attributes in a netCDF file\n\nThere are two types of attributes in a netCDF file, global and variable.\nGlobal attributes provide information about a group, or the entire\ndataset, as a whole. `Variable` attributes provide information about\none of the variables in a group. Global attributes are set by assigning\nvalues to `Dataset` or `Group` instance variables. `Variable`\nattributes are set by assigning values to `Variable` instances\nvariables. Attributes can be strings, numbers or sequences. Returning to\nour example,\n\n```python\n>>> import time\n>>> rootgrp.description = \"bogus example script\"\n>>> rootgrp.history = \"Created \" + time.ctime(time.time())\n>>> rootgrp.source = \"netCDF4 python module tutorial\"\n>>> latitudes.units = \"degrees north\"\n>>> longitudes.units = \"degrees east\"\n>>> levels.units = \"hPa\"\n>>> temp.units = \"K\"\n>>> times.units = \"hours since 0001-01-01 00:00:00.0\"\n>>> times.calendar = \"gregorian\"\n```\n\nThe `Dataset.ncattrs` method of a `Dataset`, `Group` or\n`Variable` instance can be used to retrieve the names of all the netCDF\nattributes. This method is provided as a convenience, since using the\nbuilt-in `dir` Python function will return a bunch of private methods\nand attributes that cannot (or should not) be modified by the user.\n\n```python\n>>> for name in rootgrp.ncattrs():\n...     print(\"Global attr {} = {}\".format(name, getattr(rootgrp, name)))\nGlobal attr description = bogus example script\nGlobal attr history = Created Mon Jul  8 14:19:41 2019\nGlobal attr source = netCDF4 python"" module tutorial\n```\n\nThe `__dict__` attribute of a `Dataset`, `Group` or `Variable`\ninstance provides all the netCDF attribute name/value pairs in a python\ndictionary:\n\n```python\n>>> print(rootgrp.__dict__)\n{'description': 'bogus example script', 'history': 'Created Mon Jul  8 14:19:41 2019', 'source': 'netCDF4 python module tutorial'}\n```\n\nAttributes can be deleted from a netCDF `Dataset`, `Group` or\n`Variable` using the python `del` statement (i.e. `del grp.foo`\nremoves the attribute `foo` the the group `grp`).\n\n## Writing data to and retrieving data from a netCDF variable\n\nNow that you have a netCDF `Variable` instance, how do you put data\ninto it? You can just treat it like an array and assign data to a slice.\n\n```python\n>>> import numpy as np\n>>> lats =  np.arange(-90,91,2.5)\n>>> lons =  np.arange(-180,180,2.5)\n>>> latitudes[:] = lats\n>>> longitudes[:] = lons\n>>> print(\"latitudes =\\n{}\".format(latitudes[:]))\nlatitudes =\n[-90.  -87.5 -85.  -82.5 -80.  -77.5 -75.  -72.5 -70.  -67.5 -65.  -62.5\n -60.  -57.5 -55.  -52.5 -50.  -47.5 -45.  -42.5 -40.  -37.5 -35.  -32.5\n -30.  -27.5 -25.  -22.5 -20.  -17.5 -15.  -12.5 -10.   -7.5  -5.   -2.5\n   0.    2.5   5.    7.5  10.   12.5  15.   17.5  20.   22.5  25.   27.5\n  30.   32.5  35.   37.5  40.   42.5  45.   47.5  50.   52.5  55.   57.5\n  60.   62.5  65.   67.5  70.   72.5  75.   77.5  80.   82.5  85.   87.5\n  90. ]\n```\n\nUnlike NumPy's array objects, netCDF `Variable`\nobjects with unlimited dimensions will grow along those dimensions if you\nassign data outside the currently defined range of indices.\n\n```python\n>>> # append along two unlimited dimensions by assigning to slice.\n>>> nlats = len(rootgrp.dimensions[\"lat\"])\n>>> nlons = len(rootgrp.dimensions[\"lon\"])\n>>> print(\"temp shape before adding data = {}\".format(temp.shape))\ntemp shape before adding data = (0, 0, 73, 144)\n>>>\n>>> from numpy.random import uniform\n>>> temp[0:5, 0:10, :, :] = uniform(size=(5, 10,"" nlats, nlons))\n>>> print(\"temp shape after adding data = {}\".format(temp.shape))\ntemp shape after adding data = (5, 10, 73, 144)\n>>>\n>>> # levels have grown, but no values yet assigned.\n>>> print(\"levels shape after adding pressure data = {}\".format(levels.shape))\nlevels shape after adding pressure data = (10,)\n```\n\nNote that the size of the levels variable grows when data is appended\nalong the `level` dimension of the variable `temp`, even though no\ndata has yet been assigned to levels.\n\n```python\n>>> # now, assign data to levels dimension variable.\n>>> levels[:] =  [1000.,850.,700.,500.,300.,250.,200.,150.,100.,50.]\n```\n\nHowever, that there are some differences between NumPy and netCDF\nvariable slicing rules. Slices behave as usual, being specified as a\n`start:stop:step` triplet. Using a scalar integer index `i` takes the ith\nelement and reduces the rank of the output array by one. Boolean array and\ninteger sequence indexing behaves differently for netCDF variables\nthan for numpy arrays.  Only 1-d boolean arrays and integer sequences are\nallowed, and these indices work independently along each dimension (similar\nto the way vector subscripts work in fortran).  This means that\n\n```python\n>>> temp[0, 0, [0,1,2,3], [0,1,2,3]].shape\n(4, 4)\n```\n\nreturns an array of shape (4,4) when slicing a netCDF variable, but for a\nnumpy array it returns an array of shape (4,).\nSimilarly, a netCDF variable of shape `(2,3,4,5)` indexed\nwith `[0, array([True, False, True]), array([False, True, True, True]), :]`\nwould return a `(2, 3, 5)` array. In NumPy, this would raise an error since\nit would be equivalent to `[0, [0,1], [1,2,3], :]`. When slicing with integer\nsequences, the indices ***need not be sorted*** and ***may contain\nduplicates*** (both of these are new features in version 1.2.1).\nWhile this behaviour may cause some confusion for those used to NumPy's 'fancy indexing' rules,\nit provides a very powerful way to extract data from mu""ltidimensional netCDF\nvariables by using logical operations on the dimension arrays to create slices.\n\nFor example,\n\n```python\n>>> tempdat = temp[::2, [1,3,6], lats>0, lons>0]\n```\n\nwill extract time indices 0,2 and 4, pressure levels\n850, 500 and 200 hPa, all Northern Hemisphere latitudes and Eastern\nHemisphere longitudes, resulting in a numpy array of shape  (3, 3, 36, 71).\n\n```python\n>>> print(\"shape of fancy temp slice = {}\".format(tempdat.shape))\nshape of fancy temp slice = (3, 3, 36, 71)\n```\n\n***Special note for scalar variables***: To extract data from a scalar variable\n`v` with no associated dimensions, use `numpy.asarray(v)` or `v[...]`.\nThe result will be a numpy scalar array.\n\nBy default, netcdf4-python returns numpy masked arrays with values equal to the\n`missing_value` or `_FillValue` variable attributes masked for primitive and\nenum data types.\nThe `Dataset.set_auto_mask` `Dataset` and `Variable` methods\ncan be used to disable this feature so that\nnumpy arrays are always returned, with the missing values included. Prior to\nversion 1.4.0 the default behavior was to only return masked arrays when the\nrequested slice contained missing values.  This behavior can be recovered\nusing the `Dataset.set_always_mask` method. If a masked array is\nwritten to a netCDF variable, the masked elements are filled with the\nvalue specified by the `missing_value` attribute.  If the variable has\nno `missing_value`, the `_FillValue` is used instead.\n\n## Dealing with time coordinates\n\nTime coordinate values pose a special challenge to netCDF users.  Most\nmetadata standards (such as CF) specify that time should be\nmeasure relative to a fixed date using a certain calendar, with units\nspecified like `hours since YY-MM-DD hh:mm:ss`.  These units can be\nawkward to deal with, without a utility to convert the values to and\nfrom calendar dates.  The functions [num2date](https://unidata.github.io/cftime/api.html)\nand [date2num](https://unidat""a.github.io/cftime/api.html) are\nprovided by [cftime](https://unidata.github.io/cftime) to do just that.\nHere's an example of how they can be used:\n\n```python\n>>> # fill in times.\n>>> from datetime import datetime, timedelta\n>>> from cftime import num2date, date2num\n>>> dates = [datetime(2001,3,1)+n*timedelta(hours=12) for n in range(temp.shape[0])]\n>>> times[:] = date2num(dates,units=times.units,calendar=times.calendar)\n>>> print(\"time values (in units {}):\\n{}\".format(times.units, times[:]))\ntime values (in units hours since 0001-01-01 00:00:00.0):\n[17533104. 17533116. 17533128. 17533140. 17533152.]\n>>> dates = num2date(times[:],units=times.units,calendar=times.calendar)\n>>> print(\"dates corresponding to time values:\\n{}\".format(dates))\n [cftime.DatetimeGregorian(2001, 3, 1, 0, 0, 0, 0, has_year_zero=False)\n  cftime.DatetimeGregorian(2001, 3, 1, 12, 0, 0, 0, has_year_zero=False)\n  cftime.DatetimeGregorian(2001, 3, 2, 0, 0, 0, 0, has_year_zero=False)\n  cftime.DatetimeGregorian(2001, 3, 2, 12, 0, 0, 0, has_year_zero=False)\n  cftime.DatetimeGregorian(2001, 3, 3, 0, 0, 0, 0, has_year_zero=False)]\n```\n\n`num2date` converts numeric values of time in the specified `units`\nand `calendar` to datetime objects, and `date2num` does the reverse.\nAll the calendars currently defined in the\n[CF metadata convention](http://cfconventions.org) are supported.\nA function called `date2index` is also provided which returns the indices\nof a netCDF time variable corresponding to a sequence of datetime instances.\n\n\n## Reading data from a multi-file netCDF dataset\n\nIf you want to read data from a variable that spans multiple netCDF files,\nyou can use the `MFDataset` class to read the data as if it were\ncontained in a single file. Instead of using a single filename to create\na `Dataset` instance, create a `MFDataset` instance with either a list\nof filenames, or a string with a wildcard (which is then converted to\na sorted list of files using the pyth""on glob module).\nVariables in the list of files that share the same unlimited\ndimension are aggregated together, and can be sliced across multiple\nfiles.  To illustrate this, let's first create a bunch of netCDF files with\nthe same variable (with the same unlimited dimension).  The files\nmust in be in `NETCDF3_64BIT_OFFSET`, `NETCDF3_64BIT_DATA`, `NETCDF3_CLASSIC` or\n`NETCDF4_CLASSIC` format (`NETCDF4` formatted multi-file\ndatasets are not supported).\n\n```python\n>>> for nf in range(10):\n...     with Dataset(\"mftest%s.nc\" % nf, \"w\", format=\"NETCDF4_CLASSIC\") as f:\n...         _ = f.createDimension(\"x\",None)\n...         x = f.createVariable(\"x\",\"i\",(\"x\",))\n...         x[0:10] = np.arange(nf*10,10*(nf+1))\n```\n\nNow read all the files back in at once with `MFDataset`\n\n```python\n>>> from netCDF4 import MFDataset\n>>> f = MFDataset(\"mftest*nc\")\n>>> print(f.variables[\"x\"][:])\n[ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23\n 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47\n 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71\n 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95\n 96 97 98 99]\n```\n\nNote that `MFDataset` can only be used to read, not write, multi-file\ndatasets.\n\n## Efficient compression of netCDF variables\n\nData stored in netCDF `Variable` objects can be compressed and\ndecompressed on the fly. The compression algorithm used is determined\nby the `compression` keyword argument to the `Dataset.createVariable` method.\n`zlib` compression is always available, `szip` is available if the linked HDF5\nlibrary supports it, and `zstd`, `bzip2`, `blosc_lz`,`blosc_lz4`,`blosc_lz4hc`,\n`blosc_zlib` and `blosc_zstd` are available via optional external plugins.\nThe `complevel` keyword regulates the\nspeed and efficiency of the compression for `zlib`, `bzip` and `zstd` (1 being fastest, but lowest\ncompression ratio, 9 being slowest but ""best compression ratio). The\ndefault value of `complevel` is 4. Setting `shuffle=False` will turn\noff the HDF5 shuffle filter, which de-interlaces a block of data before\n`zlib` compression by reordering the bytes.  The shuffle filter can\nsignificantly improve compression ratios, and is on by default if `compression=zlib`.  Setting\n`fletcher32` keyword argument to\n`Dataset.createVariable` to `True` (it's `False` by\ndefault) enables the Fletcher32 checksum algorithm for error detection.\nIt's also possible to set the HDF5 chunking parameters and endian-ness\nof the binary data stored in the HDF5 file with the `chunksizes`\nand `endian` keyword arguments to\n`Dataset.createVariable`.  These keyword arguments only\nare relevant for `NETCDF4` and `NETCDF4_CLASSIC` files (where the\nunderlying file format is HDF5) and are silently ignored if the file\nformat is `NETCDF3_CLASSIC`, `NETCDF3_64BIT_OFFSET` or `NETCDF3_64BIT_DATA`.\nIf the HDF5 library is built with szip support, compression=`szip` can also\nbe used (in conjunction with the `szip_coding` and `szip_pixels_per_block` keyword\narguments).\n\nIf your data only has a certain number of digits of precision (say for\nexample, it is temperature data that was measured with a precision of\n0.1 degrees), you can dramatically improve compression by\nquantizing (or truncating) the data. There are two methods supplied for\ndoing this.  You can use the `least_significant_digit`\nkeyword argument to `Dataset.createVariable` to specify\nthe power of ten of the smallest decimal place in\nthe data that is a reliable value. For example if the data has a\nprecision of 0.1, then setting `least_significant_digit=1` will cause\ndata the data to be quantized using `numpy.around(scale*data)/scale`, where\nscale = 2**bits, and bits is determined so that a precision of 0.1 is\nretained (in this case bits=4).  This is done at the python level and is\nnot a part of the underlying C library.  Starting with netcdf-c version 4.9.0,\na q""uantization capability is provided in the library.  This can be\nused via the `significant_digits` `Dataset.createVariable` kwarg (new in\nversion 1.6.0).\nThe interpretation of `significant_digits` is different than `least_signficant_digit`\nin that it specifies the absolute number of significant digits independent\nof the magnitude of the variable (the floating point exponent).\nEither of these approaches makes the compression\n'lossy' instead of 'lossless', that is some precision in the data is\nsacrificed for the sake of disk space.\n\nIn our example, try replacing the line\n\n```python\n>>> temp = rootgrp.createVariable(\"temp\",\"f4\",(\"time\",\"level\",\"lat\",\"lon\",))\n```\n\nwith\n\n```python\n>>> temp = rootgrp.createVariable(\"temp\",\"f4\",(\"time\",\"level\",\"lat\",\"lon\",),compression='zlib')\n```\n\nand then\n\n```python\n>>> temp = rootgrp.createVariable(\"temp\",\"f4\",(\"time\",\"level\",\"lat\",\"lon\",),compression='zlib',least_significant_digit=3)\n```\n\nor with netcdf-c >= 4.9.0\n\n```python\n>>> temp = rootgrp.createVariable(\"temp\",\"f4\",(\"time\",\"level\",\"lat\",\"lon\",),compression='zlib',significant_digits=4)\n```\n\nand see how much smaller the resulting files are.\n\n## Beyond homogeneous arrays of a fixed type - compound data types\n\nCompound data types map directly to numpy structured (a.k.a 'record')\narrays.  Structured arrays are akin to C structs, or derived types\nin Fortran. They allow for the construction of table-like structures\ncomposed of combinations of other data types, including other\ncompound types. Compound types might be useful for representing multiple\nparameter values at each point on a grid, or at each time and space\nlocation for scattered (point) data. You can then access all the\ninformation for a point by reading one variable, instead of reading\ndifferent parameters from different variables.  Compound data types\nare created from the corresponding numpy data type using the\n`Dataset.createCompound""Type` method of a `Dataset` or `Group` instance.\nSince there is no native complex data type in netcdf (but see\n[Support for complex numbers](#support-for-complex-numbers)), compound\ntypes are handy for storing numpy complex arrays. Here's an example:\n\n```python\n>>> f = Dataset(\"complex.nc\",\"w\")\n>>> size = 3 # length of 1-d complex array\n>>> # create sample complex data.\n>>> datac = np.exp(1j*(1.+np.linspace(0, np.pi, size)))\n>>> # create complex128 compound data type.\n>>> complex128 = np.dtype([(\"real\",np.float64),(\"imag\",np.float64)])\n>>> complex128_t = f.createCompoundType(complex128,\"complex128\")\n>>> # create a variable with this data type, write some data to it.\n>>> x_dim = f.createDimension(\"x_dim\",None)\n>>> v = f.createVariable(\"cmplx_var\",complex128_t,\"x_dim\")\n>>> data = np.empty(size,complex128) # numpy structured array\n>>> data[\"real\"] = datac.real; data[\"imag\"] = datac.imag\n>>> v[:] = data # write numpy structured array to netcdf compound var\n>>> # close and reopen the file, check the contents.\n>>> f.close(); f = Dataset(\"complex.nc\")\n>>> v = f.variables[\"cmplx_var\"]\n>>> datain = v[:] # read in all the data into a numpy structured array\n>>> # create an empty numpy complex array\n>>> datac2 = np.empty(datain.shape,np.complex128)\n>>> # .. fill it with contents of structured array.\n>>> datac2.real = datain[\"real\"]; datac2.imag = datain[\"imag\"]\n>>> print('{}: {}'.format(datac.dtype, datac)) # original data\ncomplex128: [ 0.54030231+0.84147098j -0.84147098+0.54030231j -0.54030231-0.84147098j]\n>>>\n>>> print('{}: {}'.format(datac2.dtype, datac2)) # data from file\ncomplex128: [ 0.54030231+0.84147098j -0.84147098+0.54030231j -0.54030231-0.84147098j]\n```\n\nCompound types can be nested, but you must create the 'inner'\nones first. All possible numpy structured arrays cannot be\nrepresented as Compound variables - an error message will be\nraise if you try to create one that is not supported.\nAll of the compo""und types defined for a `Dataset` or `Group` are stored\nin a Python dictionary, just like variables and dimensions. As always, printing\nobjects gives useful summary information in an interactive session:\n\n```python\n>>> print(f)\n<class 'netCDF4._netCDF4.Dataset'>\nroot group (NETCDF4 data model, file format HDF5):\n    dimensions(sizes): x_dim(3)\n    variables(dimensions): {'names':['real','imag'], 'formats':['<f8','<f8'], 'offsets':[0,8], 'itemsize':16, 'aligned':True} cmplx_var(x_dim)\n    groups:\n>>> print(f.variables[\"cmplx_var\"])\n<class 'netCDF4._netCDF4.Variable'>\ncompound cmplx_var(x_dim)\ncompound data type: {'names':['real','imag'], 'formats':['<f8','<f8'], 'offsets':[0,8], 'itemsize':16, 'aligned':True}\nunlimited dimensions: x_dim\ncurrent shape = (3,)\n>>> print(f.cmptypes)\n{'complex128': <class 'netCDF4._netCDF4.CompoundType'>: name = 'complex128', numpy dtype = {'names':['real','imag'], 'formats':['<f8','<f8'], 'offsets':[0,8], 'itemsize':16, 'aligned':True}}\n>>> print(f.cmptypes[\"complex128\"])\n<class 'netCDF4._netCDF4.CompoundType'>: name = 'complex128', numpy dtype = {'names':['real','imag'], 'formats':['<f8','<f8'], 'offsets':[0,8], 'itemsize':16, 'aligned':True}\n```\n\n## Variable-length (vlen) data types\n\nNetCDF 4 has support for variable-length or \"ragged\" arrays.  These are arrays\nof variable length sequences having the same type. To create a variable-length\ndata type, use the `Dataset.createVLType` method\nmethod of a `Dataset` or `Group` instance.\n\n```python\n>>> f = Dataset(\"tst_vlen.nc\",\"w\")\n>>> vlen_t = f.createVLType(np.int32, \"phony_vlen\")\n```\n\nThe numpy datatype of the variable-length sequences and the name of the\nnew datatype must be specified. Any of the primitive datatypes can be\nused (signed and unsigned integers, 32 and 64 bit floats, and characters),\nbut compound data types cannot.\nA new variable can then be created using this datatype.\n\n```python\n>>> x = f.createDimension(\"x\",3)\n>>> y ="" f.createDimension(\"y\",4)\n>>> vlvar = f.createVariable(\"phony_vlen_var\", vlen_t, (\"y\",\"x\"))\n```\n\nSince there is no native vlen datatype in numpy, vlen arrays are represented\nin python as object arrays (arrays of dtype `object`). These are arrays whose\nelements are Python object pointers, and can contain any type of python object.\nFor this application, they must contain 1-D numpy arrays all of the same type\nbut of varying length.\nIn this case, they contain 1-D numpy `int32` arrays of random length between\n1 and 10.\n\n```python\n>>> import random\n>>> random.seed(54321)\n>>> data = np.empty(len(y)*len(x),object)\n>>> for n in range(len(y)*len(x)):\n...     data[n] = np.arange(random.randint(1,10),dtype=\"int32\")+1\n>>> data = np.reshape(data,(len(y),len(x)))\n>>> vlvar[:] = data\n>>> print(\"vlen variable =\\n{}\".format(vlvar[:]))\nvlen variable =\n[[array([1, 2, 3, 4, 5, 6, 7, 8], dtype=int32) array([1, 2], dtype=int32)\n  array([1, 2, 3, 4], dtype=int32)]\n [array([1, 2, 3], dtype=int32)\n  array([1, 2, 3, 4, 5, 6, 7, 8, 9], dtype=int32)\n  array([1, 2, 3, 4, 5, 6, 7, 8, 9], dtype=int32)]\n [array([1, 2, 3, 4, 5, 6, 7], dtype=int32) array([1, 2, 3], dtype=int32)\n  array([1, 2, 3, 4, 5, 6], dtype=int32)]\n [array([1, 2, 3, 4, 5, 6, 7, 8, 9], dtype=int32)\n  array([1, 2, 3, 4, 5], dtype=int32) array([1, 2], dtype=int32)]]\n>>> print(f)\n<class 'netCDF4._netCDF4.Dataset'>\nroot group (NETCDF4 data model, file format HDF5):\n    dimensions(sizes): x(3), y(4)\n    variables(dimensions): int32 phony_vlen_var(y,x)\n    groups:\n>>> print(f.variables[\"phony_vlen_var\"])\n<class 'netCDF4._netCDF4.Variable'>\nvlen phony_vlen_var(y, x)\nvlen data type: int32\nunlimited dimensions:\ncurrent shape = (4, 3)\n>>> print(f.vltypes[\"phony_vlen\"])\n<class 'netCDF4._netCDF4.VLType'>: name = 'phony_vlen', numpy dtype = int32\n```\n\nNumpy object arrays containing python strings can also be written as vlen\nvariables,  For vlen strings, you don't need to create a"" vlen data type.\nInstead, simply use the python `str` builtin (or a numpy string datatype\nwith fixed length greater than 1) when calling the\n`Dataset.createVariable` method.\n\n```python\n>>> z = f.createDimension(\"z\",10)\n>>> strvar = f.createVariable(\"strvar\", str, \"z\")\n```\n\nIn this example, an object array is filled with random python strings with\nrandom lengths between 2 and 12 characters, and the data in the object\narray is assigned to the vlen string variable.\n\n```python\n>>> chars = \"1234567890aabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\"\n>>> data = np.empty(10,\"O\")\n>>> for n in range(10):\n...     stringlen = random.randint(2,12)\n...     data[n] = \"\".join([random.choice(chars) for i in range(stringlen)])\n>>> strvar[:] = data\n>>> print(\"variable-length string variable:\\n{}\".format(strvar[:]))\nvariable-length string variable:\n['Lh' '25F8wBbMI' '53rmM' 'vvjnb3t63ao' 'qjRBQk6w' 'aJh' 'QF'\n 'jtIJbJACaQk4' '3Z5' 'bftIIq']\n>>> print(f)\n<class 'netCDF4._netCDF4.Dataset'>\nroot group (NETCDF4 data model, file format HDF5):\n    dimensions(sizes): x(3), y(4), z(10)\n    variables(dimensions): int32 phony_vlen_var(y,x), <class 'str'> strvar(z)\n    groups:\n>>> print(f.variables[\"strvar\"])\n<class 'netCDF4._netCDF4.Variable'>\nvlen strvar(z)\nvlen data type: <class 'str'>\nunlimited dimensions:\ncurrent shape = (10,)\n```\n\nIt is also possible to set contents of vlen string variables with numpy arrays\nof any string or unicode data type. Note, however, that accessing the contents\nof such variables will always return numpy arrays with dtype `object`.\n\n## Enum data type\n\nnetCDF4 has an enumerated data type, which is an integer datatype that is\nrestricted to certain named values. Since Enums don't map directly to\na numpy data type, they are read and written as integer arrays.\n\nHere's an example of using an Enum type to hold cloud type data.\nThe base integer data type and a python dictionary describing the allowed""\nvalues and their names are used to define an Enum data type using\n`Dataset.createEnumType`.\n\n```python\n>>> nc = Dataset('clouds.nc','w')\n>>> # python dict with allowed values and their names.\n>>> enum_dict = {'Altocumulus': 7, 'Missing': 255,\n... 'Stratus': 2, 'Clear': 0,\n... 'Nimbostratus': 6, 'Cumulus': 4, 'Altostratus': 5,\n... 'Cumulonimbus': 1, 'Stratocumulus': 3}\n>>> # create the Enum type called 'cloud_t'.\n>>> cloud_type = nc.createEnumType(np.uint8,'cloud_t',enum_dict)\n>>> print(cloud_type)\n<class 'netCDF4._netCDF4.EnumType'>: name = 'cloud_t', numpy dtype = uint8, fields/values ={'Altocumulus': 7, 'Missing': 255, 'Stratus': 2, 'Clear': 0, 'Nimbostratus': 6, 'Cumulus': 4, 'Altostratus': 5, 'Cumulonimbus': 1, 'Stratocumulus': 3}\n```\n\nA new variable can be created in the usual way using this data type.\nInteger data is written to the variable that represents the named\ncloud types in enum_dict. A `ValueError` will be raised if an attempt\nis made to write an integer value not associated with one of the\nspecified names.\n\n```python\n>>> time = nc.createDimension('time',None)\n>>> # create a 1d variable of type 'cloud_type'.\n>>> # The fill_value is set to the 'Missing' named value.\n>>> cloud_var = nc.createVariable('primary_cloud',cloud_type,'time',\n...                               fill_value=enum_dict['Missing'])\n>>> # write some data to the variable.\n>>> cloud_var[:] = [enum_dict[k] for k in ['Clear', 'Stratus', 'Cumulus',\n...                                        'Missing', 'Cumulonimbus']]\n>>> nc.close()\n>>> # reopen the file, read the data.\n>>> nc = Dataset('clouds.nc')\n>>> cloud_var = nc.variables['primary_cloud']\n>>> print(cloud_var)\n<class 'netCDF4._netCDF4.Variable'>\nenum primary_cloud(time)\n    _FillValue: 255\nenum data type: uint8\nunlimited dimensions: time\ncurrent shape = (5,)\n>>> print(cloud_var.datatype.enum_dict)\n{'Altocumulus': 7, 'Missing': 255, 'Stratus': 2, 'Clear': 0, 'Nimbostratus': 6, 'Cumulus': 4, 'A""ltostratus': 5, 'Cumulonimbus': 1, 'Stratocumulus': 3}\n>>> print(cloud_var[:])\n[0 2 4 -- 1]\n>>> nc.close()\n```\n\n## Parallel IO\n\nIf MPI parallel enabled versions of netcdf and hdf5 or pnetcdf are detected,\nand [mpi4py](https://mpi4py.scipy.org) is installed, netcdf4-python will\nbe built with parallel IO capabilities enabled. Parallel IO of NETCDF4 or\nNETCDF4_CLASSIC formatted files is only available if the MPI parallel HDF5\nlibrary is available. Parallel IO of classic netcdf-3 file formats is only\navailable if the [PnetCDF](https://parallel-netcdf.github.io/) library is\navailable. To use parallel IO, your program must be running in an MPI\nenvironment using [mpi4py](https://mpi4py.scipy.org).\n\n```python\n>>> from mpi4py import MPI\n>>> import numpy as np\n>>> from netCDF4 import Dataset\n>>> rank = MPI.COMM_WORLD.rank  # The process ID (integer 0-3 for 4-process run)\n```\n\nTo run an MPI-based parallel program like this, you must use `mpiexec` to launch several\nparallel instances of Python (for example, using `mpiexec -np 4 python mpi_example.py`).\nThe parallel features of netcdf4-python are mostly transparent -\nwhen a new dataset is created or an existing dataset is opened,\nuse the `parallel` keyword to enable parallel access.\n\n```python\n>>> nc = Dataset('parallel_test.nc','w',parallel=True)\n```\n\nThe optional `comm` keyword may be used to specify a particular\nMPI communicator (`MPI_COMM_WORLD` is used by default).  Each process (or rank)\ncan now write to the file independently.  In this example the process rank is\nwritten to a different variable index on each task\n\n```python\n>>> d = nc.createDimension('dim',4)\n>>> v = nc.createVariable('var', np.int64, 'dim')\n>>> v[rank] = rank\n>>> nc.close()\n\n% ncdump parallel_test.nc\nnetcdf parallel_test {\ndimensions:\n    dim = 4 ;\nvariables:\n    int64 var(dim) ;\ndata:\n\n    var = 0, 1, 2, 3 ;\n}\n```\n\nThere are two types of parallel IO, independent (the default) and collective.\nInde""pendent IO means that each process can do IO independently. It should not\ndepend on or be affected by other processes. Collective IO is a way of doing\nIO defined in the MPI-IO standard; unlike independent IO, all processes must\nparticipate in doing IO. To toggle back and forth between\nthe two types of IO, use the `Variable.set_collective`\n`Variable` method. All metadata\noperations (such as creation of groups, types, variables, dimensions, or attributes)\nare collective.  There are a couple of important limitations of parallel IO:\n\n - parallel IO for NETCDF4 or NETCDF4_CLASSIC formatted files is only available\n   if the netcdf library was compiled with MPI enabled HDF5.\n - parallel IO for all classic netcdf-3 file formats is only available if the\n   netcdf library was compiled with [PnetCDF](https://parallel-netcdf.github.io).\n - If a variable has an unlimited dimension, appending data must be done in collective mode.\n   If the write is done in independent mode, the operation will fail with a\n   a generic \"HDF Error\".\n - You can write compressed data in parallel only with netcdf-c >= 4.7.4\n   and hdf5 >= 1.10.3 (although you can read in parallel with earlier versions). To write\n   compressed data in parallel, the variable must be in 'collective IO mode'.  This is done\n   automatically on variable creation if compression is turned on, but if you are appending\n   to a variable in an existing file, you must use `Variable.set_collective(True)` before attempting\n   to write to it.\n - You cannot use variable-length (VLEN) data types.\n\n## Dealing with strings\n\nThe most flexible way to store arrays of strings is with the\n[Variable-length (vlen) string data type](#variable-length-vlen-data-type). However, this requires\nthe use of the NETCDF4 data model, and the vlen type does not map very well\nnumpy arrays (you have to use numpy arrays of dtype=`object`, which are arrays of\narbitrary python objects). numpy does have a fixed-width string array""\ndata type, but unfortunately the netCDF data model does not.\nInstead fixed-width byte strings are typically stored as [arrays of 8-bit\ncharacters](https://www.unidata.ucar.edu/software/netcdf/docs/BestPractices.html#bp_Strings-and-Variables-of-type-char).\nTo perform the conversion to and from character arrays to fixed-width numpy string arrays, the\nfollowing convention is followed by the python interface.\nIf the `_Encoding` special attribute is set for a character array\n(dtype `S1`) variable, the `chartostring` utility function is used to convert the array of\ncharacters to an array of strings with one less dimension (the last dimension is\ninterpreted as the length of each string) when reading the data. The character\nset (usually ascii) is specified by the `_Encoding` attribute. If `_Encoding`\nis 'none' or 'bytes', then the character array is converted to a numpy\nfixed-width byte string array (dtype `S#`), otherwise a numpy unicode (dtype\n`U#`) array is created.  When writing the data,\n`stringtochar` is used to convert the numpy string array to an array of\ncharacters with one more dimension. For example,\n\n```python\n>>> from netCDF4 import stringtochar\n>>> nc = Dataset('stringtest.nc','w',format='NETCDF4_CLASSIC')\n>>> _ = nc.createDimension('nchars',3)\n>>> _ = nc.createDimension('nstrings',None)\n>>> v = nc.createVariable('strings','S1',('nstrings','nchars'))\n>>> datain = np.array(['foo','bar'],dtype='S3')\n>>> v[:] = stringtochar(datain) # manual conversion to char array\n>>> print(v[:]) # data returned as char array\n[[b'f' b'o' b'o']\n [b'b' b'a' b'r']]\n>>> v._Encoding = 'ascii' # this enables automatic conversion\n>>> v[:] = datain # conversion to char array done internally\n>>> print(v[:])  # data returned in numpy string array\n['foo' 'bar']\n>>> nc.close()\n```\n\nEven if the `_Encoding` attribute is set, the automatic conversion of char\narrays to/from string arrays can be disabled with\n`Variable.set_auto_chartostring`.\n\nA similar si""tuation is often encountered with numpy structured arrays with subdtypes\ncontaining fixed-wdith byte strings (dtype=`S#`). Since there is no native fixed-length string\nnetCDF datatype, these numpy structure arrays are mapped onto netCDF compound\ntypes with character array elements.  In this case the string <-> char array\nconversion is handled automatically (without the need to set the `_Encoding`\nattribute) using [numpy\nviews](https://docs.scipy.org/doc/numpy/reference/generated/numpy.ndarray.view.html).\nThe structured array dtype (including the string elements) can even be used to\ndefine the compound data type - the string dtype will be converted to\ncharacter array dtype under the hood when creating the netcdf compound type.\nHere's an example:\n\n```python\n>>> nc = Dataset('compoundstring_example.nc','w')\n>>> dtype = np.dtype([('observation', 'f4'),\n...                      ('station_name','S10')])\n>>> station_data_t = nc.createCompoundType(dtype,'station_data')\n>>> _ = nc.createDimension('station',None)\n>>> statdat = nc.createVariable('station_obs', station_data_t, ('station',))\n>>> data = np.empty(2,dtype)\n>>> data['observation'][:] = (123.,3.14)\n>>> data['station_name'][:] = ('Boulder','New York')\n>>> print(statdat.dtype) # strings actually stored as character arrays\n{'names':['observation','station_name'], 'formats':['<f4',('S1', (10,))], 'offsets':[0,4], 'itemsize':16, 'aligned':True}\n>>> statdat[:] = data # strings converted to character arrays internally\n>>> print(statdat[:])  # character arrays converted back to strings\n[(123.  , b'Boulder') (  3.14, b'New York')]\n>>> print(statdat[:].dtype)\n{'names':['observation','station_name'], 'formats':['<f4','S10'], 'offsets':[0,4], 'itemsize':16, 'aligned':True}\n>>> statdat.set_auto_chartostring(False) # turn off auto-conversion\n>>> statdat[:] = data.view(dtype=[('observation', 'f4'),('station_name','S1',10)])\n>>> print(statdat[:])  # now structured array with char array subtype is retur""ned\n[(123.  , [b'B', b'o', b'u', b'l', b'd', b'e', b'r', b'', b'', b''])\n (  3.14, [b'N', b'e', b'w', b' ', b'Y', b'o', b'r', b'k', b'', b''])]\n>>> nc.close()\n```\n\nNote that there is currently no support for mapping numpy structured arrays with\nunicode elements (dtype `U#`) onto netCDF compound types, nor is there support\nfor netCDF compound types with vlen string components.\n\n## In-memory (diskless) Datasets\n\nYou can create netCDF Datasets whose content is held in memory\ninstead of in a disk file.  There are two ways to do this.  If you\ndon't need access to the memory buffer containing the Dataset from\nwithin python, the best way is to use the `diskless=True` keyword\nargument when creating the Dataset.  If you want to save the Dataset\nto disk when you close it, also set `persist=True`.  If you want to\ncreate a new read-only Dataset from an existing python memory buffer, use the\n`memory` keyword argument to pass the memory buffer when creating the Dataset.\nIf you want to create a new in-memory Dataset, and then access the memory buffer\ndirectly from Python, use the `memory` keyword argument to specify the\nestimated size of the Dataset in bytes when creating the Dataset with\n`mode='w'`.  Then, the `Dataset.close` method will return a python memoryview\nobject representing the Dataset. Below are examples illustrating both\napproaches.\n\n```python\n>>> # create a diskless (in-memory) Dataset,\n>>> # and persist the file to disk when it is closed.\n>>> nc = Dataset('diskless_example.nc','w',diskless=True,persist=True)\n>>> d = nc.createDimension('x',None)\n>>> v = nc.createVariable('v',np.int32,'x')\n>>> v[0:5] = np.arange(5)\n>>> print(nc)\n<class 'netCDF4._netCDF4.Dataset'>\nroot group (NETCDF4 data model, file format HDF5):\n    dimensions(sizes): x(5)\n    variables(dimensions): int32 v(x)\n    groups:\n>>> print(nc['v'][:])\n[0 1 2 3 4]\n>>> nc.close() # file saved to disk\n>>> # create an in-memory dataset from an existing python\n>>> # pyt""hon memory buffer.\n>>> # read the newly created netcdf file into a python\n>>> # bytes object.\n>>> with open('diskless_example.nc', 'rb') as f:\n...     nc_bytes = f.read()\n>>> # create a netCDF in-memory dataset from the bytes object.\n>>> nc = Dataset('inmemory.nc', memory=nc_bytes)\n>>> print(nc)\n<class 'netCDF4._netCDF4.Dataset'>\nroot group (NETCDF4 data model, file format HDF5):\n    dimensions(sizes): x(5)\n    variables(dimensions): int32 v(x)\n    groups:\n>>> print(nc['v'][:])\n[0 1 2 3 4]\n>>> nc.close()\n>>> # create an in-memory Dataset and retrieve memory buffer\n>>> # estimated size is 1028 bytes - this is actually only\n>>> # used if format is NETCDF3\n>>> # (ignored for NETCDF4/HDF5 files).\n>>> nc = Dataset('inmemory.nc', mode='w',memory=1028)\n>>> d = nc.createDimension('x',None)\n>>> v = nc.createVariable('v',np.int32,'x')\n>>> v[0:5] = np.arange(5)\n>>> nc_buf = nc.close() # close returns memoryview\n>>> print(type(nc_buf))\n<class 'memoryview'>\n>>> # save nc_buf to disk, read it back in and check.\n>>> with open('inmemory.nc', 'wb') as f:\n...     f.write(nc_buf)\n>>> nc = Dataset('inmemory.nc')\n>>> print(nc)\n<class 'netCDF4._netCDF4.Dataset'>\nroot group (NETCDF4 data model, file format HDF5):\n    dimensions(sizes): x(5)\n    variables(dimensions): int32 v(x)\n    groups:\n>>> print(nc['v'][:])\n[0 1 2 3 4]\n>>> nc.close()\n```\n\n## Support for complex numbers\n\nAlthough there is no native support for complex numbers in netCDF, there are\nsome common conventions for storing them. Two of the most common are to either\nuse a compound datatype for the real and imaginary components, or a separate\ndimension. `netCDF4` supports reading several of these conventions, as well as\nwriting using one of two conventions (depending on file format). This support\nfor complex numbers is enabled by setting `auto_complex=True` when opening a\n`Dataset`:\n\n```python\n>>> complex_array = np.array([0 + 0j, 1 + 0j, 0 + 1j, 1 + 1j, 0.25 + 0.75j])\n>>> wi""th netCDF4.Dataset(\"complex.nc\", \"w\", auto_complex=True) as nc:\n...     nc.createDimension(\"x\", size=len(complex_array))\n...     var = nc.createVariable(\"data\", \"c16\", (\"x\",))\n...     var[:] = complex_array\n...     print(var)\n<class 'netCDF4._netCDF4.Variable'>\ncompound data(x)\ncompound data type: complex128\nunlimited dimensions:\ncurrent shape = (5,)\n```\n\nWhen reading files using `auto_complex=True`, `netCDF4` will interpret variables\nstored using the following conventions as complex numbers:\n\n- compound datatypes with two `float` or `double` members who names begin with\n  `r` and `i` (case insensitive)\n- a dimension of length 2 named `complex` or `ri`\n\nWhen writing files using `auto_complex=True`, `netCDF4` will use:\n\n- a compound datatype named `_PFNC_DOUBLE_COMPLEX_TYPE` (or `*FLOAT*` as\n  appropriate) with members `r` and `i` for netCDF4 formats;\n- or a dimension of length 2 named `_pfnc_complex` for netCDF3 or classic\n  formats.\n\nSupport for complex numbers is handled via the\n[`nc-complex`](https://github.com/PlasmaFAIR/nc-complex) library. See there for\nfurther details.\n\n\n**contact**: Jeffrey Whitaker <jeffrey.s.whitaker@noaa.gov>\n\n**copyright**: 2008 by Jeffrey Whitaker.\n\n**license**: Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR"" PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n";
/* #### Code section: decls ### */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_34genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_7_MemBuf___getbuffer__(struct __pyx_obj_7netCDF4_8_netCDF4__MemBuf *__pyx_v_self, Py_buffer *__pyx_v_buf, int __pyx_v_flags); /* proto */
static void __pyx_pf_7netCDF4_8_netCDF4_7_MemBuf_2__releasebuffer__(CYTHON_UNUSED struct __pyx_obj_7netCDF4_8_netCDF4__MemBuf *__pyx_v_self, CYTHON_UNUSED Py_buffer *__pyx_v_buf); /* proto */
static void __pyx_pf_7netCDF4_8_netCDF4_7_MemBuf_4__dealloc__(struct __pyx_obj_7netCDF4_8_netCDF4__MemBuf *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7_MemBuf_6__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7netCDF4_8_netCDF4__MemBuf *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7_MemBuf_8__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7netCDF4_8_netCDF4__MemBuf *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_rc_get(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_key); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_2rc_set(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_key, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_4_gethdf5libversion(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6getlibversion(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8get_chunk_cache(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_10set_chunk_cache(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_size, PyObject *__pyx_v_nelems, PyObject *__pyx_v_preemption); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_12get_alignment(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_14set_alignment(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_threshold, PyObject *__pyx_v_alignment); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_30NetCDF4MissingFeatureException___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_feature, PyObject *__pyx_v_version); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_16_set_default_format(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_format); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_get_vars_genexpr(PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_39__defaults__(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_18_ensure_nc_success(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_ierr, PyObject *__pyx_v_err_cls, PyObject *__pyx_v_filename, PyObject *__pyx_v_extra_msg); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_20dtype_is_complex(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_dtype); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset___init__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_filename, PyObject *__pyx_v_mode, PyObject *__pyx_v_clobber, PyObject *__pyx_v_format, PyObject *__pyx_v_diskless, PyObject *__pyx_v_persist, PyObject *__pyx_v_keepweakref, PyObject *__pyx_v_memory, PyObject *__pyx_v_encoding, PyObject *__pyx_v_parallel, PyObject *__pyx_v_comm, PyObject *__pyx_v_info, PyObject *__pyx_v_auto_complex, CYTHON_UNUSED PyObject *__pyx_v_kwargs); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_2__enter__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_4__exit__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_atype, CYTHON_UNUSED PyObject *__pyx_v_value, CYTHON_UNUSED PyObject *__pyx_v_traceback); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_6__getitem__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_elem); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_8filepath(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_encoding); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_10__repr__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_7__str___genexpr(PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_7__str___3genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_12__str__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_14_close(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_check_err); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_16_close_mem(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_check_err); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_18close(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_20isopen(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self); /* proto */
static void __pyx_pf_7netCDF4_8_netCDF4_7Dataset_22__dealloc__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_24__reduce__(CYTHON_UNUSED struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_26sync(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_28_redef(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_30_enddef(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_32set_fill_on(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_34set_fill_off(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_36createDimension(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_dimname, PyObject *__pyx_v_size); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_38renameDimension(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_oldname, PyObject *__pyx_v_newname); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_40createCompoundType(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_datatype, PyObject *__pyx_v_datatype_name); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_42createVLType(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_datatype, PyObject *__pyx_v_datatype_name); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_44createEnumType(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_datatype, PyObject *__pyx_v_datatype_name, PyObject *__pyx_v_enum_dict); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_14createVariable_genexpr(PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_46createVariable(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_varname, PyObject *__pyx_v_datatype, PyObject *__pyx_v_dimensions, PyObject *__pyx_v_compression, PyObject *__pyx_v_zlib, PyObject *__pyx_v_complevel, PyObject *__pyx_v_shuffle, PyObject *__pyx_v_szip_coding, PyObject *__pyx_v_szip_pixels_per_block, PyObject *__pyx_v_blosc_shuffle, PyObject *__pyx_v_fletcher32, PyObject *__pyx_v_contiguous, PyObject *__pyx_v_chunksizes, PyObject *__pyx_v_endian, PyObject *__pyx_v_least_significant_digit, PyObject *__pyx_v_significant_digits, PyObject *__pyx_v_quantize_mode, PyObject *__pyx_v_fill_value, PyObject *__pyx_v_chunk_cache); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_48renameVariable(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_oldname, PyObject *__pyx_v_newname); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_50createGroup(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_groupname); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_52ncattrs(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_54setncattr(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_56setncattr_string(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_58setncatts(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_attdict); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_60getncattr(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_encoding); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_62__delattr__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_name); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_64delncattr(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_name); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_66__setattr__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_68__getattr__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_name); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_70renameAttribute(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_oldname, PyObject *__pyx_v_newname); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_72renameGroup(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_oldname, PyObject *__pyx_v_newname); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_74set_auto_chartostring(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_76set_auto_maskandscale(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_78set_auto_mask(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_80set_auto_scale(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_82set_always_mask(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_84set_ncstring_attrs(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_86get_variables_by_attributes(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_kwargs); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_88_getname(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_4name___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_4name_2__set__(CYTHON_UNUSED struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_90fromcdl(PyObject *__pyx_v_cdlfilename, PyObject *__pyx_v_ncfilename, PyObject *__pyx_v_mode, PyObject *__pyx_v_format); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_92tocdl(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_coordvars, PyObject *__pyx_v_data, PyObject *__pyx_v_outfile); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_94has_blosc_filter(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_96has_zstd_filter(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_98has_bzip2_filter(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_100has_szip_filter(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_6_grpid___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_6_grpid_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_7_isopen___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_7_isopen_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_6groups___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_6groups_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_6groups_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_10dimensions___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_10dimensions_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_10dimensions_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_9variables___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_9variables_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_9variables_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_11disk_format___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_11disk_format_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_11disk_format_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_4path___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_4path_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_4path_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_6parent___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_6parent_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_6parent_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_11file_format___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_11file_format_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_11file_format_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_10data_model___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_10data_model_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_10data_model_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_8cmptypes___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_8cmptypes_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_8cmptypes_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_7vltypes___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_7vltypes_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_7vltypes_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_9enumtypes___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_9enumtypes_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_9enumtypes_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_23__orthogonal_indexing_____get__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_23__orthogonal_indexing___2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_23__orthogonal_indexing___4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_11keepweakref___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_11keepweakref_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_11keepweakref_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_17_ncstring_attrs_____get__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_17_ncstring_attrs___2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_17_ncstring_attrs___4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_12auto_complex___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_12auto_complex_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_12auto_complex_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_5Group___init__(struct __pyx_obj_7netCDF4_8_netCDF4_Group *__pyx_v_self, PyObject *__pyx_v_parent, PyObject *__pyx_v_name, PyObject *__pyx_v_kwargs); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_5Group_2close(CYTHON_UNUSED struct __pyx_obj_7netCDF4_8_netCDF4_Group *__pyx_v_self); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_9Dimension___init__(struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *__pyx_v_self, PyObject *__pyx_v_grp, PyObject *__pyx_v_name, PyObject *__pyx_v_size, PyObject *__pyx_v_kwargs); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_2_getname(struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_4name___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *__pyx_v_self); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_9Dimension_4name_2__set__(CYTHON_UNUSED struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_4size___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *__pyx_v_self); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_9Dimension_4size_2__set__(CYTHON_UNUSED struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_4__repr__(struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_6__str__(struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *__pyx_v_self); /* proto */
static Py_ssize_t __pyx_pf_7netCDF4_8_netCDF4_9Dimension_8__len__(struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_10group(struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_12isunlimited(struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_6_dimid___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *__pyx_v_self); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_9Dimension_6_dimid_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_6_grpid___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *__pyx_v_self); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_9Dimension_6_grpid_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_11_data_model___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *__pyx_v_self); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_9Dimension_11_data_model_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_9Dimension_11_data_model_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_5_name___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *__pyx_v_self); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_9Dimension_5_name_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_9Dimension_5_name_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_4_grp___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *__pyx_v_self); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_9Dimension_4_grp_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_9Dimension_4_grp_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_14__reduce_cython__(struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_16__setstate_cython__(struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, PyObject *__pyx_v_grp, PyObject *__pyx_v_name, PyObject *__pyx_v_datatype, PyObject *__pyx_v_dimensions, PyObject *__pyx_v_compression, PyObject *__pyx_v_zlib, PyObject *__pyx_v_complevel, PyObject *__pyx_v_shuffle, PyObject *__pyx_v_szip_coding, PyObject *__pyx_v_szip_pixels_per_block, PyObject *__pyx_v_blosc_shuffle, PyObject *__pyx_v_fletcher32, PyObject *__pyx_v_contiguous, PyObject *__pyx_v_chunksizes, PyObject *__pyx_v_endian, PyObject *__pyx_v_least_significant_digit, PyObject *__pyx_v_significant_digits, PyObject *__pyx_v_quantize_mode, PyObject *__pyx_v_fill_value, PyObject *__pyx_v_chunk_cache, PyObject *__pyx_v_kwargs); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_2_fix_complex_numbers(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_4__array__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_6__repr__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_7__str___genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_8__str__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_10_getdims(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_12_getname(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_4name___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_4name_2__set__(CYTHON_UNUSED struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_8datatype___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_5shape___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_5shape_2__set__(CYTHON_UNUSED struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_4size___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_10dimensions___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_10dimensions_2__set__(CYTHON_UNUSED struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_14group(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_16get_fill_value(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_18ncattrs(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_20setncattr(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_22setncattr_string(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_24setncatts(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, PyObject *__pyx_v_attdict); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_26getncattr(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_encoding); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_28delncattr(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, PyObject *__pyx_v_name); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_30filters(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_32quantization(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_34endian(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_36chunking(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_38get_var_chunk_cache(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_40set_var_chunk_cache(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, PyObject *__pyx_v_size, PyObject *__pyx_v_nelems, PyObject *__pyx_v_preemption); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_42__delattr__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, PyObject *__pyx_v_name); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_44__setattr__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_46__getattr__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, PyObject *__pyx_v_name); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_48renameAttribute(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, PyObject *__pyx_v_oldname, PyObject *__pyx_v_newname); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_50__getitem__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, PyObject *__pyx_v_elem); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_52_toma(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, PyObject *__pyx_v_data); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_54_pack(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, PyObject *__pyx_v_data); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_56_assign_vlen(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, PyObject *__pyx_v_elem, PyObject *__pyx_v_data); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_58_check_safecast(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, PyObject *__pyx_v_attname); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_60__setitem__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, PyObject *__pyx_v_elem, PyObject *__pyx_v_data); /* proto */
static Py_ssize_t __pyx_pf_7netCDF4_8_netCDF4_8Variable_62__len__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_64assignValue(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, PyObject *__pyx_v_val); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_66getValue(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_68set_auto_chartostring(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, PyObject *__pyx_v_chartostring); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_70use_nc_get_vars(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, PyObject *__pyx_v_use_nc_get_vars); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_72set_auto_maskandscale(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, PyObject *__pyx_v_maskandscale); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_74set_auto_scale(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, PyObject *__pyx_v_scale); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_76set_auto_mask(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, PyObject *__pyx_v_mask); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_78set_always_mask(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, PyObject *__pyx_v_always_mask); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_80set_ncstring_attrs(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, PyObject *__pyx_v_ncstring_attrs); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_82_put(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, PyArrayObject *__pyx_v_data, PyObject *__pyx_v_start, PyObject *__pyx_v_count, PyObject *__pyx_v_stride); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_84_get(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, PyObject *__pyx_v_start, PyObject *__pyx_v_count, PyObject *__pyx_v_stride); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_86set_collective(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_8get_dims_genexpr(PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_88get_dims(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_90__reduce__(CYTHON_UNUSED struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_6_varid___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_6_varid_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_6_grpid___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_6_grpid_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_10_nunlimdim___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_10_nunlimdim_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_5_name___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_5_name_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_5_name_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_4ndim___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_4ndim_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_4ndim_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_5dtype___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_5dtype_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_5dtype_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_4mask___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_4mask_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_4mask_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_5scale___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_5scale_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_5scale_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_11always_mask___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_11always_mask_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_11always_mask_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_12chartostring___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_12chartostring_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_12chartostring_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_12_isprimitive___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_12_isprimitive_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_12_isprimitive_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_11_iscompound___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_11_iscompound_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_11_iscompound_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_7_isvlen___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_7_isvlen_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_7_isvlen_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_7_isenum___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_7_isenum_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_7_isenum_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_4_grp___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_4_grp_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_4_grp_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_8_cmptype___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_8_cmptype_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_8_cmptype_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_7_vltype___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_7_vltype_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_7_vltype_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_9_enumtype___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_9_enumtype_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_9_enumtype_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_23__orthogonal_indexing_____get__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_23__orthogonal_indexing___2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_23__orthogonal_indexing___4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_8_has_lsd___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_8_has_lsd_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_8_has_lsd_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_13_use_get_vars___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_13_use_get_vars_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_13_use_get_vars_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_17_ncstring_attrs_____get__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_17_ncstring_attrs___2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_17_ncstring_attrs___4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_12auto_complex___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_12auto_complex_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_12auto_complex_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_12CompoundType___init__(struct __pyx_obj_7netCDF4_8_netCDF4_CompoundType *__pyx_v_self, PyObject *__pyx_v_grp, PyObject *__pyx_v_dt, PyObject *__pyx_v_dtype_name, PyObject *__pyx_v_kwargs); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_12CompoundType_2__repr__(struct __pyx_obj_7netCDF4_8_netCDF4_CompoundType *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_12CompoundType_4__str__(struct __pyx_obj_7netCDF4_8_netCDF4_CompoundType *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_12CompoundType_6__reduce__(CYTHON_UNUSED struct __pyx_obj_7netCDF4_8_netCDF4_CompoundType *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_12CompoundType_8_nc_type___get__(struct __pyx_obj_7netCDF4_8_netCDF4_CompoundType *__pyx_v_self); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_12CompoundType_8_nc_type_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_CompoundType *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_12CompoundType_5dtype___get__(struct __pyx_obj_7netCDF4_8_netCDF4_CompoundType *__pyx_v_self); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_12CompoundType_5dtype_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_CompoundType *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_12CompoundType_5dtype_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_CompoundType *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_12CompoundType_10dtype_view___get__(struct __pyx_obj_7netCDF4_8_netCDF4_CompoundType *__pyx_v_self); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_12CompoundType_10dtype_view_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_CompoundType *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_12CompoundType_10dtype_view_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_CompoundType *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_12CompoundType_4name___get__(struct __pyx_obj_7netCDF4_8_netCDF4_CompoundType *__pyx_v_self); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_12CompoundType_4name_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_CompoundType *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_12CompoundType_4name_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_CompoundType *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_22_set_alignment(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_dt); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_24_set_viewdtype(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_dt); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_6VLType___init__(struct __pyx_obj_7netCDF4_8_netCDF4_VLType *__pyx_v_self, PyObject *__pyx_v_grp, PyObject *__pyx_v_dt, PyObject *__pyx_v_dtype_name, PyObject *__pyx_v_kwargs); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6VLType_2__repr__(struct __pyx_obj_7netCDF4_8_netCDF4_VLType *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6VLType_4__str__(struct __pyx_obj_7netCDF4_8_netCDF4_VLType *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6VLType_6__reduce__(CYTHON_UNUSED struct __pyx_obj_7netCDF4_8_netCDF4_VLType *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6VLType_8_nc_type___get__(struct __pyx_obj_7netCDF4_8_netCDF4_VLType *__pyx_v_self); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_6VLType_8_nc_type_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_VLType *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6VLType_5dtype___get__(struct __pyx_obj_7netCDF4_8_netCDF4_VLType *__pyx_v_self); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_6VLType_5dtype_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_VLType *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_6VLType_5dtype_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_VLType *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6VLType_4name___get__(struct __pyx_obj_7netCDF4_8_netCDF4_VLType *__pyx_v_self); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_6VLType_4name_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_VLType *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_6VLType_4name_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_VLType *__pyx_v_self); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_8EnumType___init__(struct __pyx_obj_7netCDF4_8_netCDF4_EnumType *__pyx_v_self, PyObject *__pyx_v_grp, PyObject *__pyx_v_dt, PyObject *__pyx_v_dtype_name, PyObject *__pyx_v_enum_dict, PyObject *__pyx_v_kwargs); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8EnumType_2__repr__(struct __pyx_obj_7netCDF4_8_netCDF4_EnumType *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8EnumType_4__str__(struct __pyx_obj_7netCDF4_8_netCDF4_EnumType *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8EnumType_6__reduce__(CYTHON_UNUSED struct __pyx_obj_7netCDF4_8_netCDF4_EnumType *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8EnumType_8_nc_type___get__(struct __pyx_obj_7netCDF4_8_netCDF4_EnumType *__pyx_v_self); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_8EnumType_8_nc_type_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_EnumType *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8EnumType_5dtype___get__(struct __pyx_obj_7netCDF4_8_netCDF4_EnumType *__pyx_v_self); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_8EnumType_5dtype_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_EnumType *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_8EnumType_5dtype_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_EnumType *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8EnumType_4name___get__(struct __pyx_obj_7netCDF4_8_netCDF4_EnumType *__pyx_v_self); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_8EnumType_4name_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_EnumType *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_8EnumType_4name_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_EnumType *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8EnumType_9enum_dict___get__(struct __pyx_obj_7netCDF4_8_netCDF4_EnumType *__pyx_v_self); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_8EnumType_9enum_dict_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_EnumType *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_7netCDF4_8_netCDF4_8EnumType_9enum_dict_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_EnumType *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_26_to_ascii(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_bytestr); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_28stringtoarr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_string, PyObject *__pyx_v_NUMCHARS, PyObject *__pyx_v_dtype); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_30stringtochar(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_a, PyObject *__pyx_v_encoding); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_32chartostring(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_b, PyObject *__pyx_v_encoding); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_41__defaults__(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_files, PyObject *__pyx_v_check, PyObject *__pyx_v_aggdim, PyObject *__pyx_v_exclude, PyObject *__pyx_v_master_file); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset_2__setattr__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset_4__getattribute__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_name); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset_6ncattrs(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset_8close(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_lambda_funcdef_lambda7(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_dset); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset_10isopen(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset_8__repr___genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset_8__repr___3genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset_12__repr__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset_14__reduce__(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_10_Dimension___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_dimname, CYTHON_UNUSED PyObject *__pyx_v_dim, PyObject *__pyx_v_dimlens, PyObject *__pyx_v_dimtotlen); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_10_Dimension_2__len__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_10_Dimension_4isunlimited(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_10_Dimension_6__repr__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_dset, PyObject *__pyx_v_varname, PyObject *__pyx_v_var, PyObject *__pyx_v_recdimname); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_2typecode(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_4ncattrs(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_6__getattr__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_name); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_8__repr___genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_8__repr__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_10__len__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_12_shape(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_14set_auto_chartostring(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_val); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16set_auto_maskandscale(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_val); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_18set_auto_mask(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_val); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_20set_auto_scale(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_val); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_22set_always_mask(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_val); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_24__getitem__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_elem); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6MFTime___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_time, PyObject *__pyx_v_units, PyObject *__pyx_v_calendar); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6MFTime_2__getitem__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_elem); /* proto */
static PyObject *__pyx_pf_7netCDF4_8_netCDF4_37__pyx_unpickle_Dimension(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_tp_new_7netCDF4_8_netCDF4__MemBuf(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7netCDF4_8_netCDF4_Dataset(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7netCDF4_8_netCDF4_Dimension(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7netCDF4_8_netCDF4_Variable(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7netCDF4_8_netCDF4_CompoundType(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7netCDF4_8_netCDF4_VLType(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7netCDF4_8_netCDF4_EnumType(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7netCDF4_8_netCDF4___pyx_defaults(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7netCDF4_8_netCDF4___pyx_scope_struct__genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7netCDF4_8_netCDF4___pyx_scope_struct_1___pyx_f_7netCDF4_8_netCDF4__get_vars(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7netCDF4_8_netCDF4___pyx_scope_struct_2_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7netCDF4_8_netCDF4___pyx_scope_struct_3___str__(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7netCDF4_8_netCDF4___pyx_scope_struct_4_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7netCDF4_8_netCDF4___pyx_scope_struct_5_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7netCDF4_8_netCDF4___pyx_scope_struct_6_createVariable(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7netCDF4_8_netCDF4___pyx_scope_struct_7_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7netCDF4_8_netCDF4___pyx_scope_struct_8_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7netCDF4_8_netCDF4___pyx_scope_struct_9_get_dims(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7netCDF4_8_netCDF4___pyx_scope_struct_10_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7netCDF4_8_netCDF4___pyx_scope_struct_11_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7netCDF4_8_netCDF4___pyx_scope_struct_12_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7netCDF4_8_netCDF4___pyx_scope_struct_13_genexpr(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;
  PyTypeObject *__pyx_ptype_7cpython_4type_type;
  PyTypeObject *__pyx_ptype_5numpy_dtype;
  PyTypeObject *__pyx_ptype_5numpy_flatiter;
  PyTypeObject *__pyx_ptype_5numpy_broadcast;
  PyTypeObject *__pyx_ptype_5numpy_ndarray;
  PyTypeObject *__pyx_ptype_5numpy_generic;
  PyTypeObject *__pyx_ptype_5numpy_number;
  PyTypeObject *__pyx_ptype_5numpy_integer;
  PyTypeObject *__pyx_ptype_5numpy_signedinteger;
  PyTypeObject *__pyx_ptype_5numpy_unsignedinteger;
  PyTypeObject *__pyx_ptype_5numpy_inexact;
  PyTypeObject *__pyx_ptype_5numpy_floating;
  PyTypeObject *__pyx_ptype_5numpy_complexfloating;
  PyTypeObject *__pyx_ptype_5numpy_flexible;
  PyTypeObject *__pyx_ptype_5numpy_character;
  PyTypeObject *__pyx_ptype_5numpy_ufunc;
  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;
  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;
  PyObject *__pyx_type_7netCDF4_8_netCDF4__MemBuf;
  PyObject *__pyx_type_7netCDF4_8_netCDF4_Dataset;
  PyObject *__pyx_type_7netCDF4_8_netCDF4_Group;
  PyObject *__pyx_type_7netCDF4_8_netCDF4_Dimension;
  PyObject *__pyx_type_7netCDF4_8_netCDF4_Variable;
  PyObject *__pyx_type_7netCDF4_8_netCDF4_CompoundType;
  PyObject *__pyx_type_7netCDF4_8_netCDF4_VLType;
  PyObject *__pyx_type_7netCDF4_8_netCDF4_EnumType;
  PyObject *__pyx_type_7netCDF4_8_netCDF4___pyx_defaults;
  PyObject *__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct__genexpr;
  PyObject *__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_1___pyx_f_7netCDF4_8_netCDF4__get_vars;
  PyObject *__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_2_genexpr;
  PyObject *__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_3___str__;
  PyObject *__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_4_genexpr;
  PyObject *__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_5_genexpr;
  PyObject *__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_6_createVariable;
  PyObject *__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_7_genexpr;
  PyObject *__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_8_genexpr;
  PyObject *__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_9_get_dims;
  PyObject *__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_10_genexpr;
  PyObject *__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_11_genexpr;
  PyObject *__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_12_genexpr;
  PyObject *__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_13_genexpr;
  PyTypeObject *__pyx_ptype_7netCDF4_8_netCDF4__MemBuf;
  PyTypeObject *__pyx_ptype_7netCDF4_8_netCDF4_ndarray;
  PyTypeObject *__pyx_ptype_7netCDF4_8_netCDF4_Dataset;
  PyTypeObject *__pyx_ptype_7netCDF4_8_netCDF4_Group;
  PyTypeObject *__pyx_ptype_7netCDF4_8_netCDF4_Dimension;
  PyTypeObject *__pyx_ptype_7netCDF4_8_netCDF4_Variable;
  PyTypeObject *__pyx_ptype_7netCDF4_8_netCDF4_CompoundType;
  PyTypeObject *__pyx_ptype_7netCDF4_8_netCDF4_VLType;
  PyTypeObject *__pyx_ptype_7netCDF4_8_netCDF4_EnumType;
  PyTypeObject *__pyx_ptype_7netCDF4_8_netCDF4___pyx_defaults;
  PyTypeObject *__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct__genexpr;
  PyTypeObject *__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_1___pyx_f_7netCDF4_8_netCDF4__get_vars;
  PyTypeObject *__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_2_genexpr;
  PyTypeObject *__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_3___str__;
  PyTypeObject *__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_4_genexpr;
  PyTypeObject *__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_5_genexpr;
  PyTypeObject *__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_6_createVariable;
  PyTypeObject *__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_7_genexpr;
  PyTypeObject *__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_8_genexpr;
  PyTypeObject *__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_9_get_dims;
  PyTypeObject *__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_10_genexpr;
  PyTypeObject *__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_11_genexpr;
  PyTypeObject *__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_12_genexpr;
  PyTypeObject *__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_13_genexpr;
  __Pyx_CachedCFunction __pyx_umethod_PyDict_Type_items;
  __Pyx_CachedCFunction __pyx_umethod_PyDict_Type_pop;
  __Pyx_CachedCFunction __pyx_umethod_PyDict_Type_values;
  PyObject *__pyx_slice[7];
  PyObject *__pyx_tuple[24];
  PyObject *__pyx_codeobj_tab[148];
  PyObject *__pyx_string_tab[1198];
  PyObject *__pyx_number_tab[17];
/* #### 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_7netCDF4_8_netCDF4___pyx_scope_struct__genexpr *__pyx_freelist_7netCDF4_8_netCDF4___pyx_scope_struct__genexpr[8];
int __pyx_freecount_7netCDF4_8_netCDF4___pyx_scope_struct__genexpr;
#endif

#if CYTHON_USE_FREELISTS
struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_1___pyx_f_7netCDF4_8_netCDF4__get_vars *__pyx_freelist_7netCDF4_8_netCDF4___pyx_scope_struct_1___pyx_f_7netCDF4_8_netCDF4__get_vars[8];
int __pyx_freecount_7netCDF4_8_netCDF4___pyx_scope_struct_1___pyx_f_7netCDF4_8_netCDF4__get_vars;
#endif

#if CYTHON_USE_FREELISTS
struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_2_genexpr *__pyx_freelist_7netCDF4_8_netCDF4___pyx_scope_struct_2_genexpr[8];
int __pyx_freecount_7netCDF4_8_netCDF4___pyx_scope_struct_2_genexpr;
#endif

#if CYTHON_USE_FREELISTS
struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_3___str__ *__pyx_freelist_7netCDF4_8_netCDF4___pyx_scope_struct_3___str__[8];
int __pyx_freecount_7netCDF4_8_netCDF4___pyx_scope_struct_3___str__;
#endif

#if CYTHON_USE_FREELISTS
struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_4_genexpr *__pyx_freelist_7netCDF4_8_netCDF4___pyx_scope_struct_4_genexpr[8];
int __pyx_freecount_7netCDF4_8_netCDF4___pyx_scope_struct_4_genexpr;
#endif

#if CYTHON_USE_FREELISTS
struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_5_genexpr *__pyx_freelist_7netCDF4_8_netCDF4___pyx_scope_struct_5_genexpr[8];
int __pyx_freecount_7netCDF4_8_netCDF4___pyx_scope_struct_5_genexpr;
#endif

#if CYTHON_USE_FREELISTS
struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_6_createVariable *__pyx_freelist_7netCDF4_8_netCDF4___pyx_scope_struct_6_createVariable[8];
int __pyx_freecount_7netCDF4_8_netCDF4___pyx_scope_struct_6_createVariable;
#endif

#if CYTHON_USE_FREELISTS
struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_7_genexpr *__pyx_freelist_7netCDF4_8_netCDF4___pyx_scope_struct_7_genexpr[8];
int __pyx_freecount_7netCDF4_8_netCDF4___pyx_scope_struct_7_genexpr;
#endif

#if CYTHON_USE_FREELISTS
struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_8_genexpr *__pyx_freelist_7netCDF4_8_netCDF4___pyx_scope_struct_8_genexpr[8];
int __pyx_freecount_7netCDF4_8_netCDF4___pyx_scope_struct_8_genexpr;
#endif

#if CYTHON_USE_FREELISTS
struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_9_get_dims *__pyx_freelist_7netCDF4_8_netCDF4___pyx_scope_struct_9_get_dims[8];
int __pyx_freecount_7netCDF4_8_netCDF4___pyx_scope_struct_9_get_dims;
#endif

#if CYTHON_USE_FREELISTS
struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_10_genexpr *__pyx_freelist_7netCDF4_8_netCDF4___pyx_scope_struct_10_genexpr[8];
int __pyx_freecount_7netCDF4_8_netCDF4___pyx_scope_struct_10_genexpr;
#endif

#if CYTHON_USE_FREELISTS
struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_11_genexpr *__pyx_freelist_7netCDF4_8_netCDF4___pyx_scope_struct_11_genexpr[8];
int __pyx_freecount_7netCDF4_8_netCDF4___pyx_scope_struct_11_genexpr;
#endif

#if CYTHON_USE_FREELISTS
struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_12_genexpr *__pyx_freelist_7netCDF4_8_netCDF4___pyx_scope_struct_12_genexpr[8];
int __pyx_freecount_7netCDF4_8_netCDF4___pyx_scope_struct_12_genexpr;
#endif

#if CYTHON_USE_FREELISTS
struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_13_genexpr *__pyx_freelist_7netCDF4_8_netCDF4___pyx_scope_struct_13_genexpr[8];
int __pyx_freecount_7netCDF4_8_netCDF4___pyx_scope_struct_13_genexpr;
#endif
/* CodeObjectCache.module_state_decls */
struct __Pyx_CodeObjectCache __pyx_code_cache;

/* IterNextPlain.module_state_decls */
#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030A0000
PyObject *__Pyx_GetBuiltinNext_LimitedAPI_cache;
#endif

/* Generator.module_state_decls */
PyTypeObject *__pyx_GeneratorType;

/* #### 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_1 __pyx_string_tab[1]
#define __pyx_kp_u_1_10 __pyx_string_tab[2]
#define __pyx_kp_u_1_4_2 __pyx_string_tab[3]
#define __pyx_kp_u_1_7_2 __pyx_string_tab[4]
#define __pyx_kp_u_4_1_2 __pyx_string_tab[5]
#define __pyx_kp_u_4_2_1 __pyx_string_tab[6]
#define __pyx_kp_u_4_4_0 __pyx_string_tab[7]
#define __pyx_kp_u_4_4_1 __pyx_string_tab[8]
#define __pyx_kp_u_4_5_1 __pyx_string_tab[9]
#define __pyx_kp_u_4_6_2 __pyx_string_tab[10]
#define __pyx_kp_u_4_9_0 __pyx_string_tab[11]
#define __pyx_kp_u_Class_for_reading_multi_file_ne __pyx_string_tab[12]
#define __pyx_kp_u_Class_providing_an_interface_to __pyx_string_tab[13]
#define __pyx_kp_u_CompoundType_is_not_picklable __pyx_string_tab[14]
#define __pyx_kp_u_Custom_exception_when_trying_to __pyx_string_tab[15]
#define __pyx_kp_u_Dataset_get_variables_by_attribu_2 __pyx_string_tab[16]
#define __pyx_kp_u_Dataset_is_not_picklable __pyx_string_tab[17]
#define __pyx_kp_u_Dimension_object_no_longer_valid __pyx_string_tab[18]
#define __pyx_kp_u_EnumType_is_not_picklable __pyx_string_tab[19]
#define __pyx_kp_u_FillValue_attribute_must_be_set __pyx_string_tab[20]
#define __pyx_kp_u_Illegal_index __pyx_string_tab[21]
#define __pyx_kp_u_Illegal_primitive_data_type_must __pyx_string_tab[22]
#define __pyx_kp_u_MFDataset_is_not_picklable __pyx_string_tab[23]
#define __pyx_kp_u_MFNetCDF4_only_works_with_NETCDF __pyx_string_tab[24]
#define __pyx_kp_u_MFTime_requires_that_the_same_ti __pyx_string_tab[25]
#define __pyx_kp_u_MFTime_requires_that_the_time_va __pyx_string_tab[26]
#define __pyx_kp_u_Multi_dimensional_array_attribu __pyx_string_tab[27]
#define __pyx_kp_u_Note_that_Cython_is_deliberately __pyx_string_tab[28]
#define __pyx_kp_u_S_s __pyx_string_tab[29]
#define __pyx_kp_u_This_function_requires_netcdf_c __pyx_string_tab[30]
#define __pyx_kp_u_To_enable_rebuild_netcdf4_pytho __pyx_string_tab[31]
#define __pyx_kp_u_Unable_to_retrieve_Buffer_from __pyx_string_tab[32]
#define __pyx_kp_u_Unsupported_compound_type_elemen __pyx_string_tab[33]
#define __pyx_kp_u_Unsupported_value_for_compressio __pyx_string_tab[34]
#define __pyx_kp_u_VLType_is_not_picklable __pyx_string_tab[35]
#define __pyx_kp_u_Variable_is_not_picklable __pyx_string_tab[36]
#define __pyx_kp_u_Variable_length_strings_are_only __pyx_string_tab[37]
#define __pyx_kp_u_Variable_object_no_longer_valid __pyx_string_tab[38]
#define __pyx_kp_u_WARNING_Backwards_incompatible __pyx_string_tab[39]
#define __pyx_kp_u_WARNING_s_cannot_be_safely_cast __pyx_string_tab[40]
#define __pyx_kp_u_WARNING_s_not_used_since_it_cann __pyx_string_tab[41]
#define __pyx_kp_u_WARNING_there_is_no_default_fil __pyx_string_tab[42]
#define __pyx_kp_u_WARNING_unsupported_Compound_typ __pyx_string_tab[43]
#define __pyx_kp_u_WARNING_unsupported_Enum_type_sk __pyx_string_tab[44]
#define __pyx_kp_u_WARNING_unsupported_VLEN_type_sk __pyx_string_tab[45]
#define __pyx_kp_u_WARNING_variable_s_has_unsupport __pyx_string_tab[46]
#define __pyx_kp_u_WARNING_variable_s_has_unsupport_2 __pyx_string_tab[47]
#define __pyx_kp_u_WARNING_variable_s_has_unsupport_3 __pyx_string_tab[48]
#define __pyx_kp_u_WARNING_variable_s_has_unsupport_4 __pyx_string_tab[49]
#define __pyx_kp_u__10 __pyx_string_tab[50]
#define __pyx_kp_u__11 __pyx_string_tab[51]
#define __pyx_kp_u__12 __pyx_string_tab[52]
#define __pyx_kp_u__13 __pyx_string_tab[53]
#define __pyx_kp_u__14 __pyx_string_tab[54]
#define __pyx_kp_u__15 __pyx_string_tab[55]
#define __pyx_kp_u__17 __pyx_string_tab[56]
#define __pyx_kp_u__18 __pyx_string_tab[57]
#define __pyx_kp_u__19 __pyx_string_tab[58]
#define __pyx_kp_u__2 __pyx_string_tab[59]
#define __pyx_kp_u__20 __pyx_string_tab[60]
#define __pyx_kp_u__21 __pyx_string_tab[61]
#define __pyx_kp_u__22 __pyx_string_tab[62]
#define __pyx_kp_u__23 __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__7 __pyx_string_tab[68]
#define __pyx_kp_u__8 __pyx_string_tab[69]
#define __pyx_kp_u__9 __pyx_string_tab[70]
#define __pyx_kp_u_add_note __pyx_string_tab[71]
#define __pyx_kp_u_aggregation_variable __pyx_string_tab[72]
#define __pyx_kp_u_and_extension __pyx_string_tab[73]
#define __pyx_kp_u_are_only_supported_with_auto_co __pyx_string_tab[74]
#define __pyx_kp_u_array_string_attributes_can_only __pyx_string_tab[75]
#define __pyx_kp_u_assign_vlen_method_only_for_use __pyx_string_tab[76]
#define __pyx_kp_u_attribute_s_has_unsupported_data __pyx_string_tab[77]
#define __pyx_kp_u_cannot_assign_fill_value_for_mas __pyx_string_tab[78]
#define __pyx_kp_u_cannot_close_a_Group_only_applie __pyx_string_tab[79]
#define __pyx_kp_u_cannot_delete_Use_delncattr_ins __pyx_string_tab[80]
#define __pyx_kp_u_cannot_find_compound_type_in_thi __pyx_string_tab[81]
#define __pyx_kp_u_cannot_rebind_Use_setncattr_ins __pyx_string_tab[82]
#define __pyx_kp_u_cannot_set__FillValue_attribute __pyx_string_tab[83]
#define __pyx_kp_u_cannot_specify_chunksizes_for_a __pyx_string_tab[84]
#define __pyx_kp_u_cannot_using_file_globbing_for_r __pyx_string_tab[85]
#define __pyx_kp_u_chunksize_cannot_exceed_dimensio __pyx_string_tab[86]
#define __pyx_kp_u_chunksizes_must_be_a_sequence_wi __pyx_string_tab[87]
#define __pyx_kp_u_complex_datatypes __pyx_string_tab[88]
#define __pyx_kp_u_compound_field_of_an_unsupported __pyx_string_tab[89]
#define __pyx_kp_u_compression_blosc __pyx_string_tab[90]
#define __pyx_kp_u_compression_bzip2 __pyx_string_tab[91]
#define __pyx_kp_u_compression_szip_only_works_if_l __pyx_string_tab[92]
#define __pyx_kp_u_compression_zstd __pyx_string_tab[93]
#define __pyx_kp_u_cs __pyx_string_tab[94]
#define __pyx_kp_u_current_shape __pyx_string_tab[95]
#define __pyx_kp_u_current_size __pyx_string_tab[96]
#define __pyx_kp_u_data_can_only_be_assigned_to_VLE __pyx_string_tab[97]
#define __pyx_kp_u_data_model_file_format __pyx_string_tab[98]
#define __pyx_kp_u_data_to_put_in_string_variable_m __pyx_string_tab[99]
#define __pyx_kp_u_data_type __pyx_string_tab[100]
#define __pyx_kp_u_data_type_mismatch_between_mast __pyx_string_tab[101]
#define __pyx_kp_u_development __pyx_string_tab[102]
#define __pyx_kp_u_dimensions_cannot_be_altered __pyx_string_tab[103]
#define __pyx_kp_u_dimensions_mismatch_between_mas __pyx_string_tab[104]
#define __pyx_kp_u_dimensions_s __pyx_string_tab[105]
#define __pyx_kp_u_dimensions_sizes_s __pyx_string_tab[106]
#define __pyx_kp_u_disable __pyx_string_tab[107]
#define __pyx_kp_u_diskless_mode_requires_netcdf_li __pyx_string_tab[108]
#define __pyx_kp_u_dtype_must_string_or_unicode_S_o __pyx_string_tab[109]
#define __pyx_kp_u_enable __pyx_string_tab[110]
#define __pyx_kp_u_endian_keyword_argument_must_be __pyx_string_tab[111]
#define __pyx_kp_u_endian_ness_of_dtype_and_endian __pyx_string_tab[112]
#define __pyx_kp_u_error_getting_HDF5_library_versi __pyx_string_tab[113]
#define __pyx_kp_u_error_setting_path_to_SSL_certif __pyx_string_tab[114]
#define __pyx_kp_u_f4_2 __pyx_string_tab[115]
#define __pyx_kp_u_f4_3 __pyx_string_tab[116]
#define __pyx_kp_u_fields_values __pyx_string_tab[117]
#define __pyx_kp_u_file_format_does_not_support_NC __pyx_string_tab[118]
#define __pyx_kp_u_filepath_method __pyx_string_tab[119]
#define __pyx_kp_u_filling_off __pyx_string_tab[120]
#define __pyx_kp_u_filling_on __pyx_string_tab[121]
#define __pyx_kp_u_filling_on_default__FillValue_of __pyx_string_tab[122]
#define __pyx_kp_u_filling_on_default__FillValue_of_2 __pyx_string_tab[123]
#define __pyx_kp_u_format_not_supported_by_python_i __pyx_string_tab[124]
#define __pyx_kp_u_gc __pyx_string_tab[125]
#define __pyx_kp_u_get_variables_by_attributes_sel __pyx_string_tab[126]
#define __pyx_kp_u_got __pyx_string_tab[127]
#define __pyx_kp_u_group __pyx_string_tab[128]
#define __pyx_kp_u_group_s __pyx_string_tab[129]
#define __pyx_kp_u_groups_s __pyx_string_tab[130]
#define __pyx_kp_u_groups_s_2 __pyx_string_tab[131]
#define __pyx_kp_u_if_memory_kwarg_specified_mode_m __pyx_string_tab[132]
#define __pyx_kp_u_illegal_data_type_for_attribute __pyx_string_tab[133]
#define __pyx_kp_u_illegal_format_requested __pyx_string_tab[134]
#define __pyx_kp_u_index_exceeds_dimension_bounds __pyx_string_tab[135]
#define __pyx_kp_u_invalid_scale_factor_or_add_offs __pyx_string_tab[136]
#define __pyx_kp_u_is_one_of_the_reserved_attribut __pyx_string_tab[137]
#define __pyx_kp_u_isenabled __pyx_string_tab[138]
#define __pyx_kp_u_knc_s __pyx_string_tab[139]
#define __pyx_kp_u_len_of_unsized_object __pyx_string_tab[140]
#define __pyx_kp_u_masked_arrays_cannot_be_assigned __pyx_string_tab[141]
#define __pyx_kp_u_master_dataset_s_does_not_have_a __pyx_string_tab[142]
#define __pyx_kp_u_master_dataset_s_does_not_have_a_2 __pyx_string_tab[143]
#define __pyx_kp_u_master_file_not_in_files_list __pyx_string_tab[144]
#define __pyx_kp_u_mode_must_be_w_x_r_a_or_r_got __pyx_string_tab[145]
#define __pyx_kp_u_multi_dimensional_array_attribut __pyx_string_tab[146]
#define __pyx_kp_u_must_be_one_of __pyx_string_tab[147]
#define __pyx_kp_u_name_2 __pyx_string_tab[148]
#define __pyx_kp_u_name_cannot_be_altered __pyx_string_tab[149]
#define __pyx_kp_u_nc __pyx_string_tab[150]
#define __pyx_kp_u_negative_strides_not_allowed_whe __pyx_string_tab[151]
#define __pyx_kp_u_nested_structured_dtype_arrays_n __pyx_string_tab[152]
#define __pyx_kp_u_netCDF4 __pyx_string_tab[153]
#define __pyx_kp_u_netCDF4_utils __pyx_string_tab[154]
#define __pyx_kp_u_no_files_specified_file_list_is __pyx_string_tab[155]
#define __pyx_kp_u_not_defined_in __pyx_string_tab[156]
#define __pyx_kp_u_not_found_in __pyx_string_tab[157]
#define __pyx_kp_u_numpy__core_multiarray_failed_to __pyx_string_tab[158]
#define __pyx_kp_u_numpy__core_umath_failed_to_impo __pyx_string_tab[159]
#define __pyx_kp_u_numpy_dtype __pyx_string_tab[160]
#define __pyx_kp_u_o __pyx_string_tab[161]
#define __pyx_kp_u_only_endian_native_allowed_for_N __pyx_string_tab[162]
#define __pyx_kp_u_only_numpy_string_unicode_or_obj __pyx_string_tab[163]
#define __pyx_kp_u_or_higher_and_possibly_enable __pyx_string_tab[164]
#define __pyx_kp_u_parallel_mode_only_works_with_th __pyx_string_tab[165]
#define __pyx_kp_u_parallel_mode_requires_MPI_enabl __pyx_string_tab[166]
#define __pyx_kp_u_path_s __pyx_string_tab[167]
#define __pyx_kp_u_quantize_mode_keyword_argument __pyx_string_tab[168]
#define __pyx_kp_u_r_2 __pyx_string_tab[169]
#define __pyx_kp_u_rank_mismatch_between_master __pyx_string_tab[170]
#define __pyx_kp_u_renameGroup_method_not_enabled_T __pyx_string_tab[171]
#define __pyx_kp_u_requires_netCDF_lib __pyx_string_tab[172]
#define __pyx_kp_u_root_group __pyx_string_tab[173]
#define __pyx_kp_u_s_2 __pyx_string_tab[174]
#define __pyx_kp_u_s_3 __pyx_string_tab[175]
#define __pyx_kp_u_s_S1 __pyx_string_tab[176]
#define __pyx_kp_u_s_not_a_valid_dimension_name __pyx_string_tab[177]
#define __pyx_kp_u_s_not_a_valid_group_name __pyx_string_tab[178]
#define __pyx_kp_u_s_not_a_valid_variable_name __pyx_string_tab[179]
#define __pyx_kp_u_self__data_model_is_not_None_or __pyx_string_tab[180]
#define __pyx_kp_u_self_memory_cannot_be_converted __pyx_string_tab[181]
#define __pyx_kp_u_shape_cannot_be_altered __pyx_string_tab[182]
#define __pyx_kp_u_shape_mismatch_between_master __pyx_string_tab[183]
#define __pyx_kp_u_significant_digits_kwarg_only_wo __pyx_string_tab[184]
#define __pyx_kp_u_size_2 __pyx_string_tab[185]
#define __pyx_kp_u_size_cannot_be_altered __pyx_string_tab[186]
#define __pyx_kp_u_size_of_data_array_does_not_conf __pyx_string_tab[187]
#define __pyx_kp_u_src_netCDF4__netCDF4_pyx __pyx_string_tab[188]
#define __pyx_kp_u_strides_must_all_be_1_for_string __pyx_string_tab[189]
#define __pyx_kp_u_strides_must_all_be_1_for_vlen_v __pyx_string_tab[190]
#define __pyx_kp_u_string_type __pyx_string_tab[191]
#define __pyx_kp_u_stringsource __pyx_string_tab[192]
#define __pyx_kp_u_to_assign_values_to_a_non_scalar __pyx_string_tab[193]
#define __pyx_kp_u_to_retrieve_values_from_a_non_sc __pyx_string_tab[194]
#define __pyx_kp_u_trying_to_assign_illegal_value_t __pyx_string_tab[195]
#define __pyx_kp_u_type_must_be_string_or_unicode_S __pyx_string_tab[196]
#define __pyx_kp_u_type_must_string_or_unicode_S_or __pyx_string_tab[197]
#define __pyx_kp_u_unknown_szip_coding_ec_or_nn_sup __pyx_string_tab[198]
#define __pyx_kp_u_unlimited_dimensions __pyx_string_tab[199]
#define __pyx_kp_u_unlimited_dimensions_s __pyx_string_tab[200]
#define __pyx_kp_u_unlimited_name __pyx_string_tab[201]
#define __pyx_kp_u_unrecognized_format_requested __pyx_string_tab[202]
#define __pyx_kp_u_unsupported_component_type_for_E __pyx_string_tab[203]
#define __pyx_kp_u_unsupported_component_type_for_V __pyx_string_tab[204]
#define __pyx_kp_u_unsupported_datatype_specified_f __pyx_string_tab[205]
#define __pyx_kp_u_unsupported_datatype_specified_f_2 __pyx_string_tab[206]
#define __pyx_kp_u_using __pyx_string_tab[207]
#define __pyx_kp_u_utf_8 __pyx_string_tab[208]
#define __pyx_kp_u_variable __pyx_string_tab[209]
#define __pyx_kp_u_variable_2 __pyx_string_tab[210]
#define __pyx_kp_u_variables_dimensions_s __pyx_string_tab[211]
#define __pyx_kp_u_variables_s __pyx_string_tab[212]
#define __pyx_kp_u_wrong_data_type_in_object_array __pyx_string_tab[213]
#define __pyx_kp_u_wrong_data_type_should_be __pyx_string_tab[214]
#define __pyx_n_u_BitGroom __pyx_string_tab[215]
#define __pyx_n_u_BitRound __pyx_string_tab[216]
#define __pyx_n_u_CompoundType __pyx_string_tab[217]
#define __pyx_n_u_CompoundType___reduce __pyx_string_tab[218]
#define __pyx_n_u_DAP2 __pyx_string_tab[219]
#define __pyx_n_u_DAP4 __pyx_string_tab[220]
#define __pyx_n_u_Dataset __pyx_string_tab[221]
#define __pyx_n_u_Dataset___enter __pyx_string_tab[222]
#define __pyx_n_u_Dataset___exit __pyx_string_tab[223]
#define __pyx_n_u_Dataset___reduce __pyx_string_tab[224]
#define __pyx_n_u_Dataset__close __pyx_string_tab[225]
#define __pyx_n_u_Dataset__close_mem __pyx_string_tab[226]
#define __pyx_n_u_Dataset__enddef __pyx_string_tab[227]
#define __pyx_n_u_Dataset__getname __pyx_string_tab[228]
#define __pyx_n_u_Dataset__redef __pyx_string_tab[229]
#define __pyx_n_u_Dataset_close __pyx_string_tab[230]
#define __pyx_n_u_Dataset_createCompoundType __pyx_string_tab[231]
#define __pyx_n_u_Dataset_createDimension __pyx_string_tab[232]
#define __pyx_n_u_Dataset_createEnumType __pyx_string_tab[233]
#define __pyx_n_u_Dataset_createGroup __pyx_string_tab[234]
#define __pyx_n_u_Dataset_createVLType __pyx_string_tab[235]
#define __pyx_n_u_Dataset_createVariable __pyx_string_tab[236]
#define __pyx_n_u_Dataset_delncattr __pyx_string_tab[237]
#define __pyx_n_u_Dataset_filepath __pyx_string_tab[238]
#define __pyx_n_u_Dataset_fromcdl __pyx_string_tab[239]
#define __pyx_n_u_Dataset_get_variables_by_attribu __pyx_string_tab[240]
#define __pyx_n_u_Dataset_getncattr __pyx_string_tab[241]
#define __pyx_n_u_Dataset_has_blosc_filter __pyx_string_tab[242]
#define __pyx_n_u_Dataset_has_bzip2_filter __pyx_string_tab[243]
#define __pyx_n_u_Dataset_has_szip_filter __pyx_string_tab[244]
#define __pyx_n_u_Dataset_has_zstd_filter __pyx_string_tab[245]
#define __pyx_n_u_Dataset_isopen __pyx_string_tab[246]
#define __pyx_n_u_Dataset_ncattrs __pyx_string_tab[247]
#define __pyx_n_u_Dataset_renameAttribute __pyx_string_tab[248]
#define __pyx_n_u_Dataset_renameDimension __pyx_string_tab[249]
#define __pyx_n_u_Dataset_renameGroup __pyx_string_tab[250]
#define __pyx_n_u_Dataset_renameVariable __pyx_string_tab[251]
#define __pyx_n_u_Dataset_set_always_mask __pyx_string_tab[252]
#define __pyx_n_u_Dataset_set_auto_chartostring __pyx_string_tab[253]
#define __pyx_n_u_Dataset_set_auto_mask __pyx_string_tab[254]
#define __pyx_n_u_Dataset_set_auto_maskandscale __pyx_string_tab[255]
#define __pyx_n_u_Dataset_set_auto_scale __pyx_string_tab[256]
#define __pyx_n_u_Dataset_set_fill_off __pyx_string_tab[257]
#define __pyx_n_u_Dataset_set_fill_on __pyx_string_tab[258]
#define __pyx_n_u_Dataset_set_ncstring_attrs __pyx_string_tab[259]
#define __pyx_n_u_Dataset_setncattr __pyx_string_tab[260]
#define __pyx_n_u_Dataset_setncattr_string __pyx_string_tab[261]
#define __pyx_n_u_Dataset_setncatts __pyx_string_tab[262]
#define __pyx_n_u_Dataset_sync __pyx_string_tab[263]
#define __pyx_n_u_Dataset_tocdl __pyx_string_tab[264]
#define __pyx_n_u_Dimension __pyx_string_tab[265]
#define __pyx_n_u_Dimension_2 __pyx_string_tab[266]
#define __pyx_n_u_Dimension___init __pyx_string_tab[267]
#define __pyx_n_u_Dimension___len __pyx_string_tab[268]
#define __pyx_n_u_Dimension___reduce_cython __pyx_string_tab[269]
#define __pyx_n_u_Dimension___repr __pyx_string_tab[270]
#define __pyx_n_u_Dimension___setstate_cython __pyx_string_tab[271]
#define __pyx_n_u_Dimension__getname __pyx_string_tab[272]
#define __pyx_n_u_Dimension_group __pyx_string_tab[273]
#define __pyx_n_u_Dimension_isunlimited __pyx_string_tab[274]
#define __pyx_n_u_Dimension_isunlimited_2 __pyx_string_tab[275]
#define __pyx_n_u_Ellipsis __pyx_string_tab[276]
#define __pyx_n_u_Encoding __pyx_string_tab[277]
#define __pyx_n_u_EnumType __pyx_string_tab[278]
#define __pyx_n_u_EnumType___reduce __pyx_string_tab[279]
#define __pyx_n_u_FillValue __pyx_string_tab[280]
#define __pyx_n_u_GranularBitRound __pyx_string_tab[281]
#define __pyx_n_u_Group __pyx_string_tab[282]
#define __pyx_n_u_Group_close __pyx_string_tab[283]
#define __pyx_n_u_HDF4 __pyx_string_tab[284]
#define __pyx_n_u_HDF5 __pyx_string_tab[285]
#define __pyx_n_u_MFDataset __pyx_string_tab[286]
#define __pyx_n_u_MFDataset___getattribute __pyx_string_tab[287]
#define __pyx_n_u_MFDataset___init __pyx_string_tab[288]
#define __pyx_n_u_MFDataset___reduce __pyx_string_tab[289]
#define __pyx_n_u_MFDataset___repr __pyx_string_tab[290]
#define __pyx_n_u_MFDataset___repr___locals_genexp __pyx_string_tab[291]
#define __pyx_n_u_MFDataset___setattr __pyx_string_tab[292]
#define __pyx_n_u_MFDataset_close __pyx_string_tab[293]
#define __pyx_n_u_MFDataset_isopen __pyx_string_tab[294]
#define __pyx_n_u_MFDataset_isopen_locals_lambda __pyx_string_tab[295]
#define __pyx_n_u_MFDataset_ncattrs __pyx_string_tab[296]
#define __pyx_n_u_MFTime __pyx_string_tab[297]
#define __pyx_n_u_MFTime___getitem __pyx_string_tab[298]
#define __pyx_n_u_MFTime___init __pyx_string_tab[299]
#define __pyx_n_u_MFTime__delta __pyx_string_tab[300]
#define __pyx_n_u_MFTime__time __pyx_string_tab[301]
#define __pyx_n_u_MemBuf __pyx_string_tab[302]
#define __pyx_n_u_MemBuf___reduce_cython __pyx_string_tab[303]
#define __pyx_n_u_MemBuf___setstate_cython __pyx_string_tab[304]
#define __pyx_n_u_NC_DISKLESS __pyx_string_tab[305]
#define __pyx_n_u_NC_PERSIST __pyx_string_tab[306]
#define __pyx_n_u_NETCDF3 __pyx_string_tab[307]
#define __pyx_n_u_NETCDF3_64BIT __pyx_string_tab[308]
#define __pyx_n_u_NETCDF3_64BIT_DATA __pyx_string_tab[309]
#define __pyx_n_u_NETCDF3_64BIT_OFFSET __pyx_string_tab[310]
#define __pyx_n_u_NETCDF3_CLASSIC __pyx_string_tab[311]
#define __pyx_n_u_NETCDF4 __pyx_string_tab[312]
#define __pyx_n_u_NETCDF4_CLASSIC __pyx_string_tab[313]
#define __pyx_n_u_NUMCHARS __pyx_string_tab[314]
#define __pyx_n_u_NetCDF4MissingFeatureException __pyx_string_tab[315]
#define __pyx_n_u_NetCDF4MissingFeatureException_2 __pyx_string_tab[316]
#define __pyx_n_u_None __pyx_string_tab[317]
#define __pyx_n_u_O __pyx_string_tab[318]
#define __pyx_n_u_PIPE __pyx_string_tab[319]
#define __pyx_n_u_PNETCDF __pyx_string_tab[320]
#define __pyx_n_u_Path __pyx_string_tab[321]
#define __pyx_n_u_Pyx_PyDict_NextRef __pyx_string_tab[322]
#define __pyx_n_u_S __pyx_string_tab[323]
#define __pyx_n_u_S1 __pyx_string_tab[324]
#define __pyx_n_u_StartCountStride __pyx_string_tab[325]
#define __pyx_n_u_True __pyx_string_tab[326]
#define __pyx_n_u_U __pyx_string_tab[327]
#define __pyx_n_u_UNDEFINED __pyx_string_tab[328]
#define __pyx_n_u_Union __pyx_string_tab[329]
#define __pyx_n_u_Unsigned __pyx_string_tab[330]
#define __pyx_n_u_V __pyx_string_tab[331]
#define __pyx_n_u_VLType __pyx_string_tab[332]
#define __pyx_n_u_VLType___reduce __pyx_string_tab[333]
#define __pyx_n_u_Variable __pyx_string_tab[334]
#define __pyx_n_u_Variable_2 __pyx_string_tab[335]
#define __pyx_n_u_Variable___array __pyx_string_tab[336]
#define __pyx_n_u_Variable___getattr __pyx_string_tab[337]
#define __pyx_n_u_Variable___getitem __pyx_string_tab[338]
#define __pyx_n_u_Variable___init __pyx_string_tab[339]
#define __pyx_n_u_Variable___len __pyx_string_tab[340]
#define __pyx_n_u_Variable___reduce __pyx_string_tab[341]
#define __pyx_n_u_Variable___repr __pyx_string_tab[342]
#define __pyx_n_u_Variable___repr___locals_genexp __pyx_string_tab[343]
#define __pyx_n_u_Variable__assign_vlen __pyx_string_tab[344]
#define __pyx_n_u_Variable__check_safecast __pyx_string_tab[345]
#define __pyx_n_u_Variable__fix_complex_numbers __pyx_string_tab[346]
#define __pyx_n_u_Variable__get __pyx_string_tab[347]
#define __pyx_n_u_Variable__getdims __pyx_string_tab[348]
#define __pyx_n_u_Variable__getname __pyx_string_tab[349]
#define __pyx_n_u_Variable__pack __pyx_string_tab[350]
#define __pyx_n_u_Variable__put __pyx_string_tab[351]
#define __pyx_n_u_Variable__shape __pyx_string_tab[352]
#define __pyx_n_u_Variable__toma __pyx_string_tab[353]
#define __pyx_n_u_Variable_assignValue __pyx_string_tab[354]
#define __pyx_n_u_Variable_chunking __pyx_string_tab[355]
#define __pyx_n_u_Variable_delncattr __pyx_string_tab[356]
#define __pyx_n_u_Variable_endian __pyx_string_tab[357]
#define __pyx_n_u_Variable_filters __pyx_string_tab[358]
#define __pyx_n_u_Variable_getValue __pyx_string_tab[359]
#define __pyx_n_u_Variable_get_dims __pyx_string_tab[360]
#define __pyx_n_u_Variable_get_fill_value __pyx_string_tab[361]
#define __pyx_n_u_Variable_get_var_chunk_cache __pyx_string_tab[362]
#define __pyx_n_u_Variable_getncattr __pyx_string_tab[363]
#define __pyx_n_u_Variable_group __pyx_string_tab[364]
#define __pyx_n_u_Variable_ncattrs __pyx_string_tab[365]
#define __pyx_n_u_Variable_ncattrs_2 __pyx_string_tab[366]
#define __pyx_n_u_Variable_quantization __pyx_string_tab[367]
#define __pyx_n_u_Variable_renameAttribute __pyx_string_tab[368]
#define __pyx_n_u_Variable_set_always_mask __pyx_string_tab[369]
#define __pyx_n_u_Variable_set_always_mask_2 __pyx_string_tab[370]
#define __pyx_n_u_Variable_set_auto_chartostring __pyx_string_tab[371]
#define __pyx_n_u_Variable_set_auto_chartostring_2 __pyx_string_tab[372]
#define __pyx_n_u_Variable_set_auto_mask __pyx_string_tab[373]
#define __pyx_n_u_Variable_set_auto_mask_2 __pyx_string_tab[374]
#define __pyx_n_u_Variable_set_auto_maskandscale __pyx_string_tab[375]
#define __pyx_n_u_Variable_set_auto_maskandscale_2 __pyx_string_tab[376]
#define __pyx_n_u_Variable_set_auto_scale __pyx_string_tab[377]
#define __pyx_n_u_Variable_set_auto_scale_2 __pyx_string_tab[378]
#define __pyx_n_u_Variable_set_collective __pyx_string_tab[379]
#define __pyx_n_u_Variable_set_ncstring_attrs __pyx_string_tab[380]
#define __pyx_n_u_Variable_set_var_chunk_cache __pyx_string_tab[381]
#define __pyx_n_u_Variable_setncattr __pyx_string_tab[382]
#define __pyx_n_u_Variable_setncattr_string __pyx_string_tab[383]
#define __pyx_n_u_Variable_setncatts __pyx_string_tab[384]
#define __pyx_n_u_Variable_typecode __pyx_string_tab[385]
#define __pyx_n_u_Variable_use_nc_get_vars __pyx_string_tab[386]
#define __pyx_n_u__16 __pyx_string_tab[387]
#define __pyx_n_u_a __pyx_string_tab[388]
#define __pyx_n_u_add_offset __pyx_string_tab[389]
#define __pyx_n_u_aggDimId __pyx_string_tab[390]
#define __pyx_n_u_aggDimName __pyx_string_tab[391]
#define __pyx_n_u_aggdim __pyx_string_tab[392]
#define __pyx_n_u_align __pyx_string_tab[393]
#define __pyx_n_u_alignment __pyx_string_tab[394]
#define __pyx_n_u_alignmentp __pyx_string_tab[395]
#define __pyx_n_u_all __pyx_string_tab[396]
#define __pyx_n_u_always_mask __pyx_string_tab[397]
#define __pyx_n_u_any __pyx_string_tab[398]
#define __pyx_n_u_append __pyx_string_tab[399]
#define __pyx_n_u_around __pyx_string_tab[400]
#define __pyx_n_u_arr __pyx_string_tab[401]
#define __pyx_n_u_array __pyx_string_tab[402]
#define __pyx_n_u_array_2 __pyx_string_tab[403]
#define __pyx_n_u_arrlen __pyx_string_tab[404]
#define __pyx_n_u_as __pyx_string_tab[405]
#define __pyx_n_u_asarray __pyx_string_tab[406]
#define __pyx_n_u_ascii __pyx_string_tab[407]
#define __pyx_n_u_assignValue __pyx_string_tab[408]
#define __pyx_n_u_assign_vlen __pyx_string_tab[409]
#define __pyx_n_u_astype __pyx_string_tab[410]
#define __pyx_n_u_asyncio_coroutines __pyx_string_tab[411]
#define __pyx_n_u_att __pyx_string_tab[412]
#define __pyx_n_u_atta __pyx_string_tab[413]
#define __pyx_n_u_attdict __pyx_string_tab[414]
#define __pyx_n_u_attname __pyx_string_tab[415]
#define __pyx_n_u_atype __pyx_string_tab[416]
#define __pyx_n_u_auto_complex __pyx_string_tab[417]
#define __pyx_n_u_b __pyx_string_tab[418]
#define __pyx_n_u_big __pyx_string_tab[419]
#define __pyx_n_u_blosc __pyx_string_tab[420]
#define __pyx_n_u_blosc_compressor __pyx_string_tab[421]
#define __pyx_n_u_blosc_dict __pyx_string_tab[422]
#define __pyx_n_u_blosc_dict_inv __pyx_string_tab[423]
#define __pyx_n_u_blosc_lz __pyx_string_tab[424]
#define __pyx_n_u_blosc_lz4 __pyx_string_tab[425]
#define __pyx_n_u_blosc_lz4hc __pyx_string_tab[426]
#define __pyx_n_u_blosc_shuffle __pyx_string_tab[427]
#define __pyx_n_u_blosc_snappy __pyx_string_tab[428]
#define __pyx_n_u_blosc_zlib __pyx_string_tab[429]
#define __pyx_n_u_blosc_zstd __pyx_string_tab[430]
#define __pyx_n_u_bool __pyx_string_tab[431]
#define __pyx_n_u_broadcast_to __pyx_string_tab[432]
#define __pyx_n_u_bs __pyx_string_tab[433]
#define __pyx_n_u_buffer __pyx_string_tab[434]
#define __pyx_n_u_byte_type __pyx_string_tab[435]
#define __pyx_n_u_byteorder __pyx_string_tab[436]
#define __pyx_n_u_bytes __pyx_string_tab[437]
#define __pyx_n_u_bytestr __pyx_string_tab[438]
#define __pyx_n_u_byteswap __pyx_string_tab[439]
#define __pyx_n_u_bzip2 __pyx_string_tab[440]
#define __pyx_n_u_c16 __pyx_string_tab[441]
#define __pyx_n_u_c8 __pyx_string_tab[442]
#define __pyx_n_u_c_path __pyx_string_tab[443]
#define __pyx_n_u_cache_clear __pyx_string_tab[444]
#define __pyx_n_u_calendar __pyx_string_tab[445]
#define __pyx_n_u_calendars __pyx_string_tab[446]
#define __pyx_n_u_cdf __pyx_string_tab[447]
#define __pyx_n_u_cdfRecVar __pyx_string_tab[448]
#define __pyx_n_u_cdfRecVar_2 __pyx_string_tab[449]
#define __pyx_n_u_cdfTLen __pyx_string_tab[450]
#define __pyx_n_u_cdfVLen __pyx_string_tab[451]
#define __pyx_n_u_cdfVLen_2 __pyx_string_tab[452]
#define __pyx_n_u_cdf_2 __pyx_string_tab[453]
#define __pyx_n_u_cdfm __pyx_string_tab[454]
#define __pyx_n_u_cdlfilename __pyx_string_tab[455]
#define __pyx_n_u_certifi __pyx_string_tab[456]
#define __pyx_n_u_cftime __pyx_string_tab[457]
#define __pyx_n_u_char __pyx_string_tab[458]
#define __pyx_n_u_chartostring __pyx_string_tab[459]
#define __pyx_n_u_check __pyx_string_tab[460]
#define __pyx_n_u_check_err __pyx_string_tab[461]
#define __pyx_n_u_check_safecast __pyx_string_tab[462]
#define __pyx_n_u_chunk_cache __pyx_string_tab[463]
#define __pyx_n_u_chunking __pyx_string_tab[464]
#define __pyx_n_u_chunksizes __pyx_string_tab[465]
#define __pyx_n_u_chunksizesp __pyx_string_tab[466]
#define __pyx_n_u_class_getitem __pyx_string_tab[467]
#define __pyx_n_u_cline_in_traceback __pyx_string_tab[468]
#define __pyx_n_u_clobber __pyx_string_tab[469]
#define __pyx_n_u_close __pyx_string_tab[470]
#define __pyx_n_u_close_2 __pyx_string_tab[471]
#define __pyx_n_u_close_mem __pyx_string_tab[472]
#define __pyx_n_u_cmode_dict __pyx_string_tab[473]
#define __pyx_n_u_cmptype __pyx_string_tab[474]
#define __pyx_n_u_cmptypes __pyx_string_tab[475]
#define __pyx_n_u_cnt __pyx_string_tab[476]
#define __pyx_n_u_coding __pyx_string_tab[477]
#define __pyx_n_u_comm __pyx_string_tab[478]
#define __pyx_n_u_complevel __pyx_string_tab[479]
#define __pyx_n_u_complex __pyx_string_tab[480]
#define __pyx_n_u_complex_dim_id __pyx_string_tab[481]
#define __pyx_n_u_complex_typeid __pyx_string_tab[482]
#define __pyx_n_u_complex_types __pyx_string_tab[483]
#define __pyx_n_u_compound __pyx_string_tab[484]
#define __pyx_n_u_compound_complex_type __pyx_string_tab[485]
#define __pyx_n_u_compression __pyx_string_tab[486]
#define __pyx_n_u_compressor __pyx_string_tab[487]
#define __pyx_n_u_concatenate __pyx_string_tab[488]
#define __pyx_n_u_contiguous __pyx_string_tab[489]
#define __pyx_n_u_coordvars __pyx_string_tab[490]
#define __pyx_n_u_copy __pyx_string_tab[491]
#define __pyx_n_u_count __pyx_string_tab[492]
#define __pyx_n_u_countp __pyx_string_tab[493]
#define __pyx_n_u_createCompoundType __pyx_string_tab[494]
#define __pyx_n_u_createDimension __pyx_string_tab[495]
#define __pyx_n_u_createEnumType __pyx_string_tab[496]
#define __pyx_n_u_createGroup __pyx_string_tab[497]
#define __pyx_n_u_createVLType __pyx_string_tab[498]
#define __pyx_n_u_createVariable __pyx_string_tab[499]
#define __pyx_n_u_createVariable_locals_genexpr __pyx_string_tab[500]
#define __pyx_n_u_d __pyx_string_tab[501]
#define __pyx_n_u_dat __pyx_string_tab[502]
#define __pyx_n_u_data __pyx_string_tab[503]
#define __pyx_n_u_data2 __pyx_string_tab[504]
#define __pyx_n_u_data_model __pyx_string_tab[505]
#define __pyx_n_u_data_model_2 __pyx_string_tab[506]
#define __pyx_n_u_dataarr __pyx_string_tab[507]
#define __pyx_n_u_databuff __pyx_string_tab[508]
#define __pyx_n_u_dataelem __pyx_string_tab[509]
#define __pyx_n_u_datashape __pyx_string_tab[510]
#define __pyx_n_u_datatype __pyx_string_tab[511]
#define __pyx_n_u_datatype_name __pyx_string_tab[512]
#define __pyx_n_u_date2index __pyx_string_tab[513]
#define __pyx_n_u_date2num __pyx_string_tab[514]
#define __pyx_n_u_datetime __pyx_string_tab[515]
#define __pyx_n_u_decode __pyx_string_tab[516]
#define __pyx_n_u_default __pyx_string_tab[517]
#define __pyx_n_u_default_encoding __pyx_string_tab[518]
#define __pyx_n_u_default_fillvals __pyx_string_tab[519]
#define __pyx_n_u_delncattr __pyx_string_tab[520]
#define __pyx_n_u_dict __pyx_string_tab[521]
#define __pyx_n_u_dict_2 __pyx_string_tab[522]
#define __pyx_n_u_dim __pyx_string_tab[523]
#define __pyx_n_u_dimensions __pyx_string_tab[524]
#define __pyx_n_u_dimid __pyx_string_tab[525]
#define __pyx_n_u_dimid_2 __pyx_string_tab[526]
#define __pyx_n_u_dimids __pyx_string_tab[527]
#define __pyx_n_u_dimlens __pyx_string_tab[528]
#define __pyx_n_u_dimname __pyx_string_tab[529]
#define __pyx_n_u_dimnames __pyx_string_tab[530]
#define __pyx_n_u_dims __pyx_string_tab[531]
#define __pyx_n_u_dims_2 __pyx_string_tab[532]
#define __pyx_n_u_dimtotlen __pyx_string_tab[533]
#define __pyx_n_u_dirname __pyx_string_tab[534]
#define __pyx_n_u_disk_format __pyx_string_tab[535]
#define __pyx_n_u_disk_format_2 __pyx_string_tab[536]
#define __pyx_n_u_diskless __pyx_string_tab[537]
#define __pyx_n_u_doc __pyx_string_tab[538]
#define __pyx_n_u_dset __pyx_string_tab[539]
#define __pyx_n_u_dset_2 __pyx_string_tab[540]
#define __pyx_n_u_dt __pyx_string_tab[541]
#define __pyx_n_u_dtx __pyx_string_tab[542]
#define __pyx_n_u_dtype __pyx_string_tab[543]
#define __pyx_n_u_dtype_dict __pyx_string_tab[544]
#define __pyx_n_u_dtype_endian_lookup __pyx_string_tab[545]
#define __pyx_n_u_dtype_is_complex __pyx_string_tab[546]
#define __pyx_n_u_dtype_name __pyx_string_tab[547]
#define __pyx_n_u_dtype_unsigned_int __pyx_string_tab[548]
#define __pyx_n_u_dtype_view __pyx_string_tab[549]
#define __pyx_n_u_e __pyx_string_tab[550]
#define __pyx_n_u_ec __pyx_string_tab[551]
#define __pyx_n_u_elem __pyx_string_tab[552]
#define __pyx_n_u_elemnew __pyx_string_tab[553]
#define __pyx_n_u_elptr __pyx_string_tab[554]
#define __pyx_n_u_empty __pyx_string_tab[555]
#define __pyx_n_u_empty_cdfRecVar __pyx_string_tab[556]
#define __pyx_n_u_encode __pyx_string_tab[557]
#define __pyx_n_u_encoding __pyx_string_tab[558]
#define __pyx_n_u_enddef __pyx_string_tab[559]
#define __pyx_n_u_endian __pyx_string_tab[560]
#define __pyx_n_u_endswith __pyx_string_tab[561]
#define __pyx_n_u_enew __pyx_string_tab[562]
#define __pyx_n_u_ensure_nc_success __pyx_string_tab[563]
#define __pyx_n_u_enter __pyx_string_tab[564]
#define __pyx_n_u_enum __pyx_string_tab[565]
#define __pyx_n_u_enum_dict __pyx_string_tab[566]
#define __pyx_n_u_enumerate __pyx_string_tab[567]
#define __pyx_n_u_enumtype __pyx_string_tab[568]
#define __pyx_n_u_enumtypes __pyx_string_tab[569]
#define __pyx_n_u_err __pyx_string_tab[570]
#define __pyx_n_u_err_cls __pyx_string_tab[571]
#define __pyx_n_u_err_str __pyx_string_tab[572]
#define __pyx_n_u_error_info __pyx_string_tab[573]
#define __pyx_n_u_errors __pyx_string_tab[574]
#define __pyx_n_u_exclude __pyx_string_tab[575]
#define __pyx_n_u_exists __pyx_string_tab[576]
#define __pyx_n_u_exit __pyx_string_tab[577]
#define __pyx_n_u_extDims __pyx_string_tab[578]
#define __pyx_n_u_extShape __pyx_string_tab[579]
#define __pyx_n_u_extType __pyx_string_tab[580]
#define __pyx_n_u_extra_msg __pyx_string_tab[581]
#define __pyx_n_u_f __pyx_string_tab[582]
#define __pyx_n_u_f4 __pyx_string_tab[583]
#define __pyx_n_u_f8 __pyx_string_tab[584]
#define __pyx_n_u_feature __pyx_string_tab[585]
#define __pyx_n_u_fields __pyx_string_tab[586]
#define __pyx_n_u_file_format __pyx_string_tab[587]
#define __pyx_n_u_file_format_2 __pyx_string_tab[588]
#define __pyx_n_u_filename __pyx_string_tab[589]
#define __pyx_n_u_filepath __pyx_string_tab[590]
#define __pyx_n_u_files __pyx_string_tab[591]
#define __pyx_n_u_files_2 __pyx_string_tab[592]
#define __pyx_n_u_fill_value __pyx_string_tab[593]
#define __pyx_n_u_filled __pyx_string_tab[594]
#define __pyx_n_u_fillval __pyx_string_tab[595]
#define __pyx_n_u_filtdict __pyx_string_tab[596]
#define __pyx_n_u_filters __pyx_string_tab[597]
#define __pyx_n_u_find_dim __pyx_string_tab[598]
#define __pyx_n_u_fix_complex_numbers __pyx_string_tab[599]
#define __pyx_n_u_flat __pyx_string_tab[600]
#define __pyx_n_u_flatten __pyx_string_tab[601]
#define __pyx_n_u_fletcher32 __pyx_string_tab[602]
#define __pyx_n_u_float64 __pyx_string_tab[603]
#define __pyx_n_u_fmt __pyx_string_tab[604]
#define __pyx_n_u_format __pyx_string_tab[605]
#define __pyx_n_u_format_dict __pyx_string_tab[606]
#define __pyx_n_u_formatcodes __pyx_string_tab[607]
#define __pyx_n_u_formatid __pyx_string_tab[608]
#define __pyx_n_u_formats __pyx_string_tab[609]
#define __pyx_n_u_fromcdl __pyx_string_tab[610]
#define __pyx_n_u_func __pyx_string_tab[611]
#define __pyx_n_u_functools __pyx_string_tab[612]
#define __pyx_n_u_fval __pyx_string_tab[613]
#define __pyx_n_u_fvalisnan __pyx_string_tab[614]
#define __pyx_n_u_g __pyx_string_tab[615]
#define __pyx_n_u_genexpr __pyx_string_tab[616]
#define __pyx_n_u_get __pyx_string_tab[617]
#define __pyx_n_u_getValue __pyx_string_tab[618]
#define __pyx_n_u_get_alignment __pyx_string_tab[619]
#define __pyx_n_u_get_chunk_cache __pyx_string_tab[620]
#define __pyx_n_u_get_dims __pyx_string_tab[621]
#define __pyx_n_u_get_dims_locals_genexpr __pyx_string_tab[622]
#define __pyx_n_u_get_fill_value __pyx_string_tab[623]
#define __pyx_n_u_get_var_chunk_cache __pyx_string_tab[624]
#define __pyx_n_u_get_variables_by_attributes __pyx_string_tab[625]
#define __pyx_n_u_get_vars_locals_genexpr __pyx_string_tab[626]
#define __pyx_n_u_getattr __pyx_string_tab[627]
#define __pyx_n_u_getattribute __pyx_string_tab[628]
#define __pyx_n_u_getdims __pyx_string_tab[629]
#define __pyx_n_u_getfilesystemencoding __pyx_string_tab[630]
#define __pyx_n_u_gethdf5libversion __pyx_string_tab[631]
#define __pyx_n_u_getitem __pyx_string_tab[632]
#define __pyx_n_u_getlibversion __pyx_string_tab[633]
#define __pyx_n_u_getname __pyx_string_tab[634]
#define __pyx_n_u_getncattr __pyx_string_tab[635]
#define __pyx_n_u_getstate __pyx_string_tab[636]
#define __pyx_n_u_glob __pyx_string_tab[637]
#define __pyx_n_u_group_2 __pyx_string_tab[638]
#define __pyx_n_u_groupname __pyx_string_tab[639]
#define __pyx_n_u_groups __pyx_string_tab[640]
#define __pyx_n_u_grp __pyx_string_tab[641]
#define __pyx_n_u_grp_2 __pyx_string_tab[642]
#define __pyx_n_u_grpid __pyx_string_tab[643]
#define __pyx_n_u_grpid_2 __pyx_string_tab[644]
#define __pyx_n_u_grpname __pyx_string_tab[645]
#define __pyx_n_u_grpnames __pyx_string_tab[646]
#define __pyx_n_u_grps __pyx_string_tab[647]
#define __pyx_n_u_h __pyx_string_tab[648]
#define __pyx_n_u_has_blosc_filter __pyx_string_tab[649]
#define __pyx_n_u_has_blosc_support __pyx_string_tab[650]
#define __pyx_n_u_has_bzip2_filter __pyx_string_tab[651]
#define __pyx_n_u_has_bzip2_support __pyx_string_tab[652]
#define __pyx_n_u_has_cdf5_format __pyx_string_tab[653]
#define __pyx_n_u_has_fillval __pyx_string_tab[654]
#define __pyx_n_u_has_lsd __pyx_string_tab[655]
#define __pyx_n_u_has_nc_create_mem __pyx_string_tab[656]
#define __pyx_n_u_has_nc_inq_format_extended __pyx_string_tab[657]
#define __pyx_n_u_has_nc_inq_path __pyx_string_tab[658]
#define __pyx_n_u_has_nc_open_mem __pyx_string_tab[659]
#define __pyx_n_u_has_nc_rc_set __pyx_string_tab[660]
#define __pyx_n_u_has_ncfilter __pyx_string_tab[661]
#define __pyx_n_u_has_parallel4_support __pyx_string_tab[662]
#define __pyx_n_u_has_parallel_support __pyx_string_tab[663]
#define __pyx_n_u_has_pnetcdf_support __pyx_string_tab[664]
#define __pyx_n_u_has_quantization_support __pyx_string_tab[665]
#define __pyx_n_u_has_rename_grp __pyx_string_tab[666]
#define __pyx_n_u_has_set_alignment __pyx_string_tab[667]
#define __pyx_n_u_has_szip_filter __pyx_string_tab[668]
#define __pyx_n_u_has_szip_support __pyx_string_tab[669]
#define __pyx_n_u_has_value_flag __pyx_string_tab[670]
#define __pyx_n_u_has_zstandard_support __pyx_string_tab[671]
#define __pyx_n_u_has_zstd_filter __pyx_string_tab[672]
#define __pyx_n_u_hdf5libversion __pyx_string_tab[673]
#define __pyx_n_u_http __pyx_string_tab[674]
#define __pyx_n_u_i __pyx_string_tab[675]
#define __pyx_n_u_i0 __pyx_string_tab[676]
#define __pyx_n_u_i1 __pyx_string_tab[677]
#define __pyx_n_u_i2 __pyx_string_tab[678]
#define __pyx_n_u_i4 __pyx_string_tab[679]
#define __pyx_n_u_i8 __pyx_string_tab[680]
#define __pyx_n_u_iblosc __pyx_string_tab[681]
#define __pyx_n_u_iblosc_blocksize __pyx_string_tab[682]
#define __pyx_n_u_iblosc_complevel __pyx_string_tab[683]
#define __pyx_n_u_iblosc_compressor __pyx_string_tab[684]
#define __pyx_n_u_iblosc_shuffle __pyx_string_tab[685]
#define __pyx_n_u_ibzip2 __pyx_string_tab[686]
#define __pyx_n_u_icomplevel __pyx_string_tab[687]
#define __pyx_n_u_icomplevel_bzip2 __pyx_string_tab[688]
#define __pyx_n_u_icomplevel_zstd __pyx_string_tab[689]
#define __pyx_n_u_icontiguous __pyx_string_tab[690]
#define __pyx_n_u_id __pyx_string_tab[691]
#define __pyx_n_u_ideflate __pyx_string_tab[692]
#define __pyx_n_u_idx __pyx_string_tab[693]
#define __pyx_n_u_iendian __pyx_string_tab[694]
#define __pyx_n_u_ierr __pyx_string_tab[695]
#define __pyx_n_u_ifletcher32 __pyx_string_tab[696]
#define __pyx_n_u_ind __pyx_string_tab[697]
#define __pyx_n_u_info __pyx_string_tab[698]
#define __pyx_n_u_init __pyx_string_tab[699]
#define __pyx_n_u_intnptonctype __pyx_string_tab[700]
#define __pyx_n_u_isMA __pyx_string_tab[701]
#define __pyx_n_u_is_coroutine __pyx_string_tab[702]
#define __pyx_n_u_is_int __pyx_string_tab[703]
#define __pyx_n_u_is_native_big __pyx_string_tab[704]
#define __pyx_n_u_is_native_little __pyx_string_tab[705]
#define __pyx_n_u_is_safe __pyx_string_tab[706]
#define __pyx_n_u_is_unsigned __pyx_string_tab[707]
#define __pyx_n_u_is_unsigned_int __pyx_string_tab[708]
#define __pyx_n_u_iscompound __pyx_string_tab[709]
#define __pyx_n_u_isenum __pyx_string_tab[710]
#define __pyx_n_u_ishuffle __pyx_string_tab[711]
#define __pyx_n_u_isin __pyx_string_tab[712]
#define __pyx_n_u_ismasked __pyx_string_tab[713]
#define __pyx_n_u_isnan __pyx_string_tab[714]
#define __pyx_n_u_isnative __pyx_string_tab[715]
#define __pyx_n_u_isopen __pyx_string_tab[716]
#define __pyx_n_u_isprimitive __pyx_string_tab[717]
#define __pyx_n_u_isunlimited __pyx_string_tab[718]
#define __pyx_n_u_isvlen __pyx_string_tab[719]
#define __pyx_n_u_iszip __pyx_string_tab[720]
#define __pyx_n_u_iszip_coding __pyx_string_tab[721]
#define __pyx_n_u_iszip_pixels_per_block __pyx_string_tab[722]
#define __pyx_n_u_item __pyx_string_tab[723]
#define __pyx_n_u_items __pyx_string_tab[724]
#define __pyx_n_u_itemsize __pyx_string_tab[725]
#define __pyx_n_u_iteritems __pyx_string_tab[726]
#define __pyx_n_u_iu __pyx_string_tab[727]
#define __pyx_n_u_izstd __pyx_string_tab[728]
#define __pyx_n_u_join __pyx_string_tab[729]
#define __pyx_n_u_k __pyx_string_tab[730]
#define __pyx_n_u_keepweakref __pyx_string_tab[731]
#define __pyx_n_u_key __pyx_string_tab[732]
#define __pyx_n_u_key_2 __pyx_string_tab[733]
#define __pyx_n_u_key_bytestr __pyx_string_tab[734]
#define __pyx_n_u_keyc __pyx_string_tab[735]
#define __pyx_n_u_keys __pyx_string_tab[736]
#define __pyx_n_u_kind __pyx_string_tab[737]
#define __pyx_n_u_kwargs __pyx_string_tab[738]
#define __pyx_n_u_lambda __pyx_string_tab[739]
#define __pyx_n_u_least_significant_digit __pyx_string_tab[740]
#define __pyx_n_u_len __pyx_string_tab[741]
#define __pyx_n_u_lenchar __pyx_string_tab[742]
#define __pyx_n_u_lendim __pyx_string_tab[743]
#define __pyx_n_u_little __pyx_string_tab[744]
#define __pyx_n_u_lru_cache __pyx_string_tab[745]
#define __pyx_n_u_lst __pyx_string_tab[746]
#define __pyx_n_u_lstArr __pyx_string_tab[747]
#define __pyx_n_u_m __pyx_string_tab[748]
#define __pyx_n_u_ma __pyx_string_tab[749]
#define __pyx_n_u_main __pyx_string_tab[750]
#define __pyx_n_u_majorvers __pyx_string_tab[751]
#define __pyx_n_u_map __pyx_string_tab[752]
#define __pyx_n_u_mask __pyx_string_tab[753]
#define __pyx_n_u_maskandscale __pyx_string_tab[754]
#define __pyx_n_u_masked_array __pyx_string_tab[755]
#define __pyx_n_u_masked_values __pyx_string_tab[756]
#define __pyx_n_u_master __pyx_string_tab[757]
#define __pyx_n_u_masterDims __pyx_string_tab[758]
#define __pyx_n_u_masterRecVar __pyx_string_tab[759]
#define __pyx_n_u_masterShape __pyx_string_tab[760]
#define __pyx_n_u_masterType __pyx_string_tab[761]
#define __pyx_n_u_master_file __pyx_string_tab[762]
#define __pyx_n_u_mastervar __pyx_string_tab[763]
#define __pyx_n_u_maxsize __pyx_string_tab[764]
#define __pyx_n_u_memio __pyx_string_tab[765]
#define __pyx_n_u_memory __pyx_string_tab[766]
#define __pyx_n_u_metaclass __pyx_string_tab[767]
#define __pyx_n_u_minorvers __pyx_string_tab[768]
#define __pyx_n_u_missing_value __pyx_string_tab[769]
#define __pyx_n_u_mode __pyx_string_tab[770]
#define __pyx_n_u_module __pyx_string_tab[771]
#define __pyx_n_u_mro_entries __pyx_string_tab[772]
#define __pyx_n_u_msg __pyx_string_tab[773]
#define __pyx_n_u_mval __pyx_string_tab[774]
#define __pyx_n_u_mvalisnan __pyx_string_tab[775]
#define __pyx_n_u_mvalmask __pyx_string_tab[776]
#define __pyx_n_u_n __pyx_string_tab[777]
#define __pyx_n_u_n1 __pyx_string_tab[778]
#define __pyx_n_u_name __pyx_string_tab[779]
#define __pyx_n_u_name_3 __pyx_string_tab[780]
#define __pyx_n_u_name_4 __pyx_string_tab[781]
#define __pyx_n_u_names __pyx_string_tab[782]
#define __pyx_n_u_namstring __pyx_string_tab[783]
#define __pyx_n_u_native __pyx_string_tab[784]
#define __pyx_n_u_nbytes __pyx_string_tab[785]
#define __pyx_n_u_nc_create_mem __pyx_string_tab[786]
#define __pyx_n_u_nc_open_mem __pyx_string_tab[787]
#define __pyx_n_u_nc_type __pyx_string_tab[788]
#define __pyx_n_u_ncattrs __pyx_string_tab[789]
#define __pyx_n_u_ncdump __pyx_string_tab[790]
#define __pyx_n_u_ncdumpargs __pyx_string_tab[791]
#define __pyx_n_u_ncfilename __pyx_string_tab[792]
#define __pyx_n_u_ncgen __pyx_string_tab[793]
#define __pyx_n_u_ncgenargs __pyx_string_tab[794]
#define __pyx_n_u_ncstring_attrs __pyx_string_tab[795]
#define __pyx_n_u_ncstring_attrs_2 __pyx_string_tab[796]
#define __pyx_n_u_nctonptype __pyx_string_tab[797]
#define __pyx_n_u_ndim __pyx_string_tab[798]
#define __pyx_n_u_ndims __pyx_string_tab[799]
#define __pyx_n_u_needsworkaround_issue485 __pyx_string_tab[800]
#define __pyx_n_u_negstride __pyx_string_tab[801]
#define __pyx_n_u_nelems __pyx_string_tab[802]
#define __pyx_n_u_nelems_orig __pyx_string_tab[803]
#define __pyx_n_u_nelemsp __pyx_string_tab[804]
#define __pyx_n_u_nestedgroups __pyx_string_tab[805]
#define __pyx_n_u_netCDF4__netCDF4 __pyx_string_tab[806]
#define __pyx_n_u_netcdf4libversion __pyx_string_tab[807]
#define __pyx_n_u_new __pyx_string_tab[808]
#define __pyx_n_u_newSlice __pyx_string_tab[809]
#define __pyx_n_u_newname __pyx_string_tab[810]
#define __pyx_n_u_newnamec __pyx_string_tab[811]
#define __pyx_n_u_next __pyx_string_tab[812]
#define __pyx_n_u_ngatts __pyx_string_tab[813]
#define __pyx_n_u_nn __pyx_string_tab[814]
#define __pyx_n_u_no_fill __pyx_string_tab[815]
#define __pyx_n_u_none __pyx_string_tab[816]
#define __pyx_n_u_normpath __pyx_string_tab[817]
#define __pyx_n_u_np_complex_type __pyx_string_tab[818]
#define __pyx_n_u_nptonctype __pyx_string_tab[819]
#define __pyx_n_u_nsd __pyx_string_tab[820]
#define __pyx_n_u_num __pyx_string_tab[821]
#define __pyx_n_u_num2date __pyx_string_tab[822]
#define __pyx_n_u_numpy __pyx_string_tab[823]
#define __pyx_n_u_numunlimdims __pyx_string_tab[824]
#define __pyx_n_u_numv __pyx_string_tab[825]
#define __pyx_n_u_nunlimdim __pyx_string_tab[826]
#define __pyx_n_u_nv __pyx_string_tab[827]
#define __pyx_n_u_nvars __pyx_string_tab[828]
#define __pyx_n_u_object __pyx_string_tab[829]
#define __pyx_n_u_offsets __pyx_string_tab[830]
#define __pyx_n_u_oldmode __pyx_string_tab[831]
#define __pyx_n_u_oldname __pyx_string_tab[832]
#define __pyx_n_u_oldnamec __pyx_string_tab[833]
#define __pyx_n_u_open __pyx_string_tab[834]
#define __pyx_n_u_orthogoral_indexing __pyx_string_tab[835]
#define __pyx_n_u_os __pyx_string_tab[836]
#define __pyx_n_u_out_array_shape __pyx_string_tab[837]
#define __pyx_n_u_outfile __pyx_string_tab[838]
#define __pyx_n_u_pack __pyx_string_tab[839]
#define __pyx_n_u_parallel __pyx_string_tab[840]
#define __pyx_n_u_parallel_formats __pyx_string_tab[841]
#define __pyx_n_u_parent __pyx_string_tab[842]
#define __pyx_n_u_part __pyx_string_tab[843]
#define __pyx_n_u_path __pyx_string_tab[844]
#define __pyx_n_u_path_2 __pyx_string_tab[845]
#define __pyx_n_u_pathlen __pyx_string_tab[846]
#define __pyx_n_u_pathlib __pyx_string_tab[847]
#define __pyx_n_u_persist __pyx_string_tab[848]
#define __pyx_n_u_pixels_per_block __pyx_string_tab[849]
#define __pyx_n_u_pop __pyx_string_tab[850]
#define __pyx_n_u_posixpath __pyx_string_tab[851]
#define __pyx_n_u_preemption __pyx_string_tab[852]
#define __pyx_n_u_preemption_orig __pyx_string_tab[853]
#define __pyx_n_u_preemptionp __pyx_string_tab[854]
#define __pyx_n_u_prepare __pyx_string_tab[855]
#define __pyx_n_u_private_atts __pyx_string_tab[856]
#define __pyx_n_u_prod __pyx_string_tab[857]
#define __pyx_n_u_proxy __pyx_string_tab[858]
#define __pyx_n_u_put __pyx_string_tab[859]
#define __pyx_n_u_put_2 __pyx_string_tab[860]
#define __pyx_n_u_put_ind __pyx_string_tab[861]
#define __pyx_n_u_py_path __pyx_string_tab[862]
#define __pyx_n_u_pyx_checksum __pyx_string_tab[863]
#define __pyx_n_u_pyx_result __pyx_string_tab[864]
#define __pyx_n_u_pyx_state __pyx_string_tab[865]
#define __pyx_n_u_pyx_type __pyx_string_tab[866]
#define __pyx_n_u_pyx_unpickle_Dimension __pyx_string_tab[867]
#define __pyx_n_u_qualname __pyx_string_tab[868]
#define __pyx_n_u_quant_mode __pyx_string_tab[869]
#define __pyx_n_u_quantization __pyx_string_tab[870]
#define __pyx_n_u_quantize __pyx_string_tab[871]
#define __pyx_n_u_quantize_mode __pyx_string_tab[872]
#define __pyx_n_u_r __pyx_string_tab[873]
#define __pyx_n_u_ravel __pyx_string_tab[874]
#define __pyx_n_u_rc_get __pyx_string_tab[875]
#define __pyx_n_u_rc_set __pyx_string_tab[876]
#define __pyx_n_u_recLen __pyx_string_tab[877]
#define __pyx_n_u_recVar __pyx_string_tab[878]
#define __pyx_n_u_recdimlen __pyx_string_tab[879]
#define __pyx_n_u_recdimname __pyx_string_tab[880]
#define __pyx_n_u_recdimname_2 __pyx_string_tab[881]
#define __pyx_n_u_redef __pyx_string_tab[882]
#define __pyx_n_u_reduce __pyx_string_tab[883]
#define __pyx_n_u_reduce_cython __pyx_string_tab[884]
#define __pyx_n_u_reduce_ex __pyx_string_tab[885]
#define __pyx_n_u_ref_date __pyx_string_tab[886]
#define __pyx_n_u_ref_num __pyx_string_tab[887]
#define __pyx_n_u_releasevers __pyx_string_tab[888]
#define __pyx_n_u_renameAttribute __pyx_string_tab[889]
#define __pyx_n_u_renameDimension __pyx_string_tab[890]
#define __pyx_n_u_renameGroup __pyx_string_tab[891]
#define __pyx_n_u_renameVariable __pyx_string_tab[892]
#define __pyx_n_u_replace __pyx_string_tab[893]
#define __pyx_n_u_repr __pyx_string_tab[894]
#define __pyx_n_u_reshape __pyx_string_tab[895]
#define __pyx_n_u_result __pyx_string_tab[896]
#define __pyx_n_u_reverse_format_dict __pyx_string_tab[897]
#define __pyx_n_u_rs __pyx_string_tab[898]
#define __pyx_n_u_run __pyx_string_tab[899]
#define __pyx_n_u_s __pyx_string_tab[900]
#define __pyx_n_u_safe_fillval __pyx_string_tab[901]
#define __pyx_n_u_safe_missval __pyx_string_tab[902]
#define __pyx_n_u_safe_validmax __pyx_string_tab[903]
#define __pyx_n_u_safe_validmin __pyx_string_tab[904]
#define __pyx_n_u_safe_validrange __pyx_string_tab[905]
#define __pyx_n_u_safecast __pyx_string_tab[906]
#define __pyx_n_u_scale __pyx_string_tab[907]
#define __pyx_n_u_scale_factor __pyx_string_tab[908]
#define __pyx_n_u_self __pyx_string_tab[909]
#define __pyx_n_u_send __pyx_string_tab[910]
#define __pyx_n_u_set_alignment __pyx_string_tab[911]
#define __pyx_n_u_set_alignment_2 __pyx_string_tab[912]
#define __pyx_n_u_set_always_mask __pyx_string_tab[913]
#define __pyx_n_u_set_auto_chartostring __pyx_string_tab[914]
#define __pyx_n_u_set_auto_mask __pyx_string_tab[915]
#define __pyx_n_u_set_auto_maskandscale __pyx_string_tab[916]
#define __pyx_n_u_set_auto_scale __pyx_string_tab[917]
#define __pyx_n_u_set_chunk_cache __pyx_string_tab[918]
#define __pyx_n_u_set_collective __pyx_string_tab[919]
#define __pyx_n_u_set_default_format __pyx_string_tab[920]
#define __pyx_n_u_set_fill_off __pyx_string_tab[921]
#define __pyx_n_u_set_fill_on __pyx_string_tab[922]
#define __pyx_n_u_set_name __pyx_string_tab[923]
#define __pyx_n_u_set_ncstring_attrs __pyx_string_tab[924]
#define __pyx_n_u_set_var_chunk_cache __pyx_string_tab[925]
#define __pyx_n_u_set_viewdtype __pyx_string_tab[926]
#define __pyx_n_u_setattr __pyx_string_tab[927]
#define __pyx_n_u_setdefault __pyx_string_tab[928]
#define __pyx_n_u_setncattr __pyx_string_tab[929]
#define __pyx_n_u_setncattr_string __pyx_string_tab[930]
#define __pyx_n_u_setncatts __pyx_string_tab[931]
#define __pyx_n_u_setstate __pyx_string_tab[932]
#define __pyx_n_u_setstate_cython __pyx_string_tab[933]
#define __pyx_n_u_shape __pyx_string_tab[934]
#define __pyx_n_u_shape_2 __pyx_string_tab[935]
#define __pyx_n_u_shapeout __pyx_string_tab[936]
#define __pyx_n_u_shuffle __pyx_string_tab[937]
#define __pyx_n_u_sig_digits __pyx_string_tab[938]
#define __pyx_n_u_significant_digits __pyx_string_tab[939]
#define __pyx_n_u_size __pyx_string_tab[940]
#define __pyx_n_u_size_orig __pyx_string_tab[941]
#define __pyx_n_u_sizep __pyx_string_tab[942]
#define __pyx_n_u_sl __pyx_string_tab[943]
#define __pyx_n_u_slen __pyx_string_tab[944]
#define __pyx_n_u_sortbylist __pyx_string_tab[945]
#define __pyx_n_u_split __pyx_string_tab[946]
#define __pyx_n_u_squeeze __pyx_string_tab[947]
#define __pyx_n_u_squeeze_out __pyx_string_tab[948]
#define __pyx_n_u_sta __pyx_string_tab[949]
#define __pyx_n_u_start __pyx_string_tab[950]
#define __pyx_n_u_startp __pyx_string_tab[951]
#define __pyx_n_u_startswith __pyx_string_tab[952]
#define __pyx_n_u_state __pyx_string_tab[953]
#define __pyx_n_u_staticmethod __pyx_string_tab[954]
#define __pyx_n_u_stderr __pyx_string_tab[955]
#define __pyx_n_u_stdout __pyx_string_tab[956]
#define __pyx_n_u_step __pyx_string_tab[957]
#define __pyx_n_u_stop __pyx_string_tab[958]
#define __pyx_n_u_str __pyx_string_tab[959]
#define __pyx_n_u_str_2 __pyx_string_tab[960]
#define __pyx_n_u_str___locals_genexpr __pyx_string_tab[961]
#define __pyx_n_u_strd __pyx_string_tab[962]
#define __pyx_n_u_strdata __pyx_string_tab[963]
#define __pyx_n_u_stride __pyx_string_tab[964]
#define __pyx_n_u_stridep __pyx_string_tab[965]
#define __pyx_n_u_string __pyx_string_tab[966]
#define __pyx_n_u_stringtoarr __pyx_string_tab[967]
#define __pyx_n_u_stringtochar __pyx_string_tab[968]
#define __pyx_n_u_strt __pyx_string_tab[969]
#define __pyx_n_u_subdtype __pyx_string_tab[970]
#define __pyx_n_u_subprocess __pyx_string_tab[971]
#define __pyx_n_u_sum __pyx_string_tab[972]
#define __pyx_n_u_super __pyx_string_tab[973]
#define __pyx_n_u_supportedtypes __pyx_string_tab[974]
#define __pyx_n_u_sync __pyx_string_tab[975]
#define __pyx_n_u_sys __pyx_string_tab[976]
#define __pyx_n_u_szip __pyx_string_tab[977]
#define __pyx_n_u_szip_coding __pyx_string_tab[978]
#define __pyx_n_u_szip_dict __pyx_string_tab[979]
#define __pyx_n_u_szip_dict_inv __pyx_string_tab[980]
#define __pyx_n_u_szip_pixels_per_block __pyx_string_tab[981]
#define __pyx_n_u_t __pyx_string_tab[982]
#define __pyx_n_u_test __pyx_string_tab[983]
#define __pyx_n_u_threshold __pyx_string_tab[984]
#define __pyx_n_u_thresholdp __pyx_string_tab[985]
#define __pyx_n_u_throw __pyx_string_tab[986]
#define __pyx_n_u_tile __pyx_string_tab[987]
#define __pyx_n_u_time __pyx_string_tab[988]
#define __pyx_n_u_to_ascii __pyx_string_tab[989]
#define __pyx_n_u_tobytes __pyx_string_tab[990]
#define __pyx_n_u_tocdl __pyx_string_tab[991]
#define __pyx_n_u_tolist __pyx_string_tab[992]
#define __pyx_n_u_toma __pyx_string_tab[993]
#define __pyx_n_u_tostr __pyx_string_tab[994]
#define __pyx_n_u_totalmask __pyx_string_tab[995]
#define __pyx_n_u_totelem __pyx_string_tab[996]
#define __pyx_n_u_traceback __pyx_string_tab[997]
#define __pyx_n_u_true __pyx_string_tab[998]
#define __pyx_n_u_typ __pyx_string_tab[999]
#define __pyx_n_u_typecode __pyx_string_tab[1000]
#define __pyx_n_u_typeid __pyx_string_tab[1001]
#define __pyx_n_u_typing __pyx_string_tab[1002]
#define __pyx_n_u_u __pyx_string_tab[1003]
#define __pyx_n_u_u1 __pyx_string_tab[1004]
#define __pyx_n_u_u2 __pyx_string_tab[1005]
#define __pyx_n_u_u4 __pyx_string_tab[1006]
#define __pyx_n_u_u8 __pyx_string_tab[1007]
#define __pyx_n_u_unicode_error __pyx_string_tab[1008]
#define __pyx_n_u_units __pyx_string_tab[1009]
#define __pyx_n_u_unlimdim_ids __pyx_string_tab[1010]
#define __pyx_n_u_unlimdimids __pyx_string_tab[1011]
#define __pyx_n_u_unlimdims __pyx_string_tab[1012]
#define __pyx_n_u_update __pyx_string_tab[1013]
#define __pyx_n_u_use_get_vars __pyx_string_tab[1014]
#define __pyx_n_u_use_get_vars_2 __pyx_string_tab[1015]
#define __pyx_n_u_use_nc_get_vars __pyx_string_tab[1016]
#define __pyx_n_u_use_setstate __pyx_string_tab[1017]
#define __pyx_n_u_utils __pyx_string_tab[1018]
#define __pyx_n_u_v __pyx_string_tab[1019]
#define __pyx_n_u_vName __pyx_string_tab[1020]
#define __pyx_n_u_val __pyx_string_tab[1021]
#define __pyx_n_u_val_bytestr __pyx_string_tab[1022]
#define __pyx_n_u_valc __pyx_string_tab[1023]
#define __pyx_n_u_valid_max __pyx_string_tab[1024]
#define __pyx_n_u_valid_min __pyx_string_tab[1025]
#define __pyx_n_u_valid_range __pyx_string_tab[1026]
#define __pyx_n_u_validmax __pyx_string_tab[1027]
#define __pyx_n_u_validmin __pyx_string_tab[1028]
#define __pyx_n_u_value __pyx_string_tab[1029]
#define __pyx_n_u_value_2 __pyx_string_tab[1030]
#define __pyx_n_u_valuec __pyx_string_tab[1031]
#define __pyx_n_u_values __pyx_string_tab[1032]
#define __pyx_n_u_var __pyx_string_tab[1033]
#define __pyx_n_u_varInfo __pyx_string_tab[1034]
#define __pyx_n_u_variables __pyx_string_tab[1035]
#define __pyx_n_u_varid __pyx_string_tab[1036]
#define __pyx_n_u_varname __pyx_string_tab[1037]
#define __pyx_n_u_varnames __pyx_string_tab[1038]
#define __pyx_n_u_vars __pyx_string_tab[1039]
#define __pyx_n_u_version __pyx_string_tab[1040]
#define __pyx_n_u_version_2 __pyx_string_tab[1041]
#define __pyx_n_u_vid __pyx_string_tab[1042]
#define __pyx_n_u_view __pyx_string_tab[1043]
#define __pyx_n_u_vldata __pyx_string_tab[1044]
#define __pyx_n_u_vlen __pyx_string_tab[1045]
#define __pyx_n_u_vltype __pyx_string_tab[1046]
#define __pyx_n_u_vltypes __pyx_string_tab[1047]
#define __pyx_n_u_vname __pyx_string_tab[1048]
#define __pyx_n_u_vs __pyx_string_tab[1049]
#define __pyx_n_u_w __pyx_string_tab[1050]
#define __pyx_n_u_walk_grps __pyx_string_tab[1051]
#define __pyx_n_u_warn __pyx_string_tab[1052]
#define __pyx_n_u_warnings __pyx_string_tab[1053]
#define __pyx_n_u_weakref __pyx_string_tab[1054]
#define __pyx_n_u_where __pyx_string_tab[1055]
#define __pyx_n_u_with_suffix __pyx_string_tab[1056]
#define __pyx_n_u_write __pyx_string_tab[1057]
#define __pyx_n_u_ws __pyx_string_tab[1058]
#define __pyx_n_u_x __pyx_string_tab[1059]
#define __pyx_n_u_xdimid __pyx_string_tab[1060]
#define __pyx_n_u_xtype __pyx_string_tab[1061]
#define __pyx_n_u_zeros __pyx_string_tab[1062]
#define __pyx_n_u_zip __pyx_string_tab[1063]
#define __pyx_n_u_zlib __pyx_string_tab[1064]
#define __pyx_n_u_zstd __pyx_string_tab[1065]
#define __pyx_kp_b_iso88591_1_1_31_9_Fa_22HHZZ_r_9AQ_9F_1_4 __pyx_string_tab[1066]
#define __pyx_kp_b_iso88591_1_AV1_vXT_j_y_G7_E_q_Qaxt1_E_q __pyx_string_tab[1067]
#define __pyx_kp_b_iso88591_1_AV1_vXT_j_y_G7_Qha_Qhb_q_3aq __pyx_string_tab[1068]
#define __pyx_kp_b_iso88591_3axy __pyx_string_tab[1069]
#define __pyx_kp_b_iso88591_6_V1 __pyx_string_tab[1070]
#define __pyx_kp_b_iso88591_7_9AQ_aq_7_9M_E __pyx_string_tab[1071]
#define __pyx_kp_b_iso88591_A __pyx_string_tab[1072]
#define __pyx_kp_b_iso88591_A2_HD __pyx_string_tab[1073]
#define __pyx_kp_b_iso88591_AJ_IT __pyx_string_tab[1074]
#define __pyx_kp_b_iso88591_A_1D_4_1A_4uA_A_Q_6_1_6_1_vQ_8_E __pyx_string_tab[1075]
#define __pyx_kp_b_iso88591_A_1_1_at9A_uCq __pyx_string_tab[1076]
#define __pyx_kp_b_iso88591_A_1_1_at9A_uCq_2 __pyx_string_tab[1077]
#define __pyx_kp_b_iso88591_A_1_A_c_we1A_Qa_q_Q_7_AQ_2_aq_F __pyx_string_tab[1078]
#define __pyx_kp_b_iso88591_A_1_a_Ja_wd_9Cq_a_9Cq_1D_A_Q_6_1 __pyx_string_tab[1079]
#define __pyx_kp_b_iso88591_A_2 __pyx_string_tab[1080]
#define __pyx_kp_b_iso88591_A_3at1_AQ_D __pyx_string_tab[1081]
#define __pyx_kp_b_iso88591_A_3at1_AQ_t6 __pyx_string_tab[1082]
#define __pyx_kp_b_iso88591_A_4_3k_WA_F_7_AV_fA_4_3k_XQ __pyx_string_tab[1083]
#define __pyx_kp_b_iso88591_A_4_Cq_q_IQnA_aq_Cq_q_gV1L_A_1D __pyx_string_tab[1084]
#define __pyx_kp_b_iso88591_A_4q_1_4q_1_at9A_uCq __pyx_string_tab[1085]
#define __pyx_kp_b_iso88591_A_4q_1_4uL_1_at9D_QRRS_1_A_1_A_3 __pyx_string_tab[1086]
#define __pyx_kp_b_iso88591_A_4q_1_AT_a_1 __pyx_string_tab[1087]
#define __pyx_kp_b_iso88591_A_4q_A_AQ_1_gQa_Cq_7r_1_G4q_G1Kq __pyx_string_tab[1088]
#define __pyx_kp_b_iso88591_A_4t1_1A_4wb __pyx_string_tab[1089]
#define __pyx_kp_b_iso88591_A_4t1_1A_A_A_7_1_vRq_j_uBa_4vQb __pyx_string_tab[1090]
#define __pyx_kp_b_iso88591_A_4uA_it1_q_5Qd_4yPQQR_avZq_k_Ba __pyx_string_tab[1091]
#define __pyx_kp_b_iso88591_A_4uL_1_AT_iq_1_83a_1_S_1_1 __pyx_string_tab[1092]
#define __pyx_kp_b_iso88591_A_4uL_d_wa_F_7_AT_IV1_4uL_d_xq __pyx_string_tab[1093]
#define __pyx_kp_b_iso88591_A_4uL_gQ_A_j_a_b_at9D_q_1_1_E_aq __pyx_string_tab[1094]
#define __pyx_kp_b_iso88591_A_4xt81HA_1_83a_1_a_q_4q_e6_T_XT __pyx_string_tab[1095]
#define __pyx_kp_b_iso88591_A_5_9G4wa_5_87_Qd_5_9G4q_4y __pyx_string_tab[1096]
#define __pyx_kp_b_iso88591_A_5_L_1_q_uC_WD_uC_G4q_uC_gT_uC __pyx_string_tab[1097]
#define __pyx_kp_b_iso88591_A_7_4q_1 __pyx_string_tab[1098]
#define __pyx_kp_b_iso88591_A_7_6_WAV1_E_4_1D_t6_s_uG1A_AV1 __pyx_string_tab[1099]
#define __pyx_kp_b_iso88591_A_81D __pyx_string_tab[1100]
#define __pyx_kp_b_iso88591_A_81D_1_aq_Kq_a __pyx_string_tab[1101]
#define __pyx_kp_b_iso88591_A_9AT __pyx_string_tab[1102]
#define __pyx_kp_b_iso88591_A_AQ_1_AQ_1_Yd_Q_1 __pyx_string_tab[1103]
#define __pyx_kp_b_iso88591_A_AQ_1_AQ_1_Yk_1_1 __pyx_string_tab[1104]
#define __pyx_kp_b_iso88591_A_AQ_4_3k_WA_Qd_a_4_3k_XQ_1 __pyx_string_tab[1105]
#define __pyx_kp_b_iso88591_A_AQ_4uL_d_wa_Qd_4y_4uL_d_xq_1 __pyx_string_tab[1106]
#define __pyx_kp_b_iso88591_A_AQ_A_4_3k_WA_k_2Q_Yc_4_3k_XQ_1 __pyx_string_tab[1107]
#define __pyx_kp_b_iso88591_A_A_1_7_6_vQd_AQ_1_5_auD_a_E_1_1 __pyx_string_tab[1108]
#define __pyx_kp_b_iso88591_A_A_6_F_a_G5_q_Qa_Jj_G5_Qa __pyx_string_tab[1109]
#define __pyx_kp_b_iso88591_A_A_6_F_a_G5_q_Qa_Jj_G5_Qa_2 __pyx_string_tab[1110]
#define __pyx_kp_b_iso88591_A_A_6_F_a_G5_q_Qa_Jj_G5_Qa_3 __pyx_string_tab[1111]
#define __pyx_kp_b_iso88591_A_A_6_F_a_G5_q_aq_Jj_G5_aq __pyx_string_tab[1112]
#define __pyx_kp_b_iso88591_A_A_6_F_a_G5_q_q_Jj_G5_q __pyx_string_tab[1113]
#define __pyx_kp_b_iso88591_A_Cq_F_Qd_Bd_V1A __pyx_string_tab[1114]
#define __pyx_kp_b_iso88591_A_D __pyx_string_tab[1115]
#define __pyx_kp_b_iso88591_A_E_Q_1A __pyx_string_tab[1116]
#define __pyx_kp_b_iso88591_A_E_Q_1A_2 __pyx_string_tab[1117]
#define __pyx_kp_b_iso88591_A_E_Q_Qa __pyx_string_tab[1118]
#define __pyx_kp_b_iso88591_A_E_Q__AQ __pyx_string_tab[1119]
#define __pyx_kp_b_iso88591_A_F __pyx_string_tab[1120]
#define __pyx_kp_b_iso88591_A_HA_fAV_Q_t81A __pyx_string_tab[1121]
#define __pyx_kp_b_iso88591_A_HD_a __pyx_string_tab[1122]
#define __pyx_kp_b_iso88591_A_IQ_1F_t9AQ __pyx_string_tab[1123]
#define __pyx_kp_b_iso88591_A_IQha __pyx_string_tab[1124]
#define __pyx_kp_b_iso88591_A_IYaq_y_aq_E_t3a_r_Q_WAU_q_q_E __pyx_string_tab[1125]
#define __pyx_kp_b_iso88591_A_Ja_z_t_Qa __pyx_string_tab[1126]
#define __pyx_kp_b_iso88591_A_Kq_9AV9E_t_aq __pyx_string_tab[1127]
#define __pyx_kp_b_iso88591_A_Kq_M_IQ __pyx_string_tab[1128]
#define __pyx_kp_b_iso88591_A_N_Q_IQ_HA_N_Kt_aq_O1_Kt1_IS_IS __pyx_string_tab[1129]
#define __pyx_kp_b_iso88591_A_O4q __pyx_string_tab[1130]
#define __pyx_kp_b_iso88591_A_Q_A_6_F_a_IQ_q_5_fA_81A_QawauC __pyx_string_tab[1131]
#define __pyx_kp_b_iso88591_A_Qa __pyx_string_tab[1132]
#define __pyx_kp_b_iso88591_A_Qa_A_6_A_D_G5_q_1_Jj __pyx_string_tab[1133]
#define __pyx_kp_b_iso88591_A_Qd_1 __pyx_string_tab[1134]
#define __pyx_kp_b_iso88591_A_Qd_4q __pyx_string_tab[1135]
#define __pyx_kp_b_iso88591_A_T __pyx_string_tab[1136]
#define __pyx_kp_b_iso88591_A_T_4_1_G1A __pyx_string_tab[1137]
#define __pyx_kp_b_iso88591_A_U_iq_1_y_q __pyx_string_tab[1138]
#define __pyx_kp_b_iso88591_A_at1F_5_A_5_A_1_4vS_AT_b_A_HD_I __pyx_string_tab[1139]
#define __pyx_kp_b_iso88591_A_at1F_5_A_gQm4xt81_HD_IQa_A_Kt1 __pyx_string_tab[1140]
#define __pyx_kp_b_iso88591_A_at9D_U_Q_IQ_Qd_7_aq_9G1A_Cq_q __pyx_string_tab[1141]
#define __pyx_kp_b_iso88591_A_at9IQa_1 __pyx_string_tab[1142]
#define __pyx_kp_b_iso88591_A_at9Kq_1 __pyx_string_tab[1143]
#define __pyx_kp_b_iso88591_A_d_4q_ha_A_4_1_1_d_Qa_1_d_Qa __pyx_string_tab[1144]
#define __pyx_kp_b_iso88591_A_gQa __pyx_string_tab[1145]
#define __pyx_kp_b_iso88591_A_gQfM_G1_d_fF_Q_4wd_xs_fKt6_4uA __pyx_string_tab[1146]
#define __pyx_kp_b_iso88591_A_iq_1_aq_Kq_a_axuIU __pyx_string_tab[1147]
#define __pyx_kp_b_iso88591_A_iq_1_y_q __pyx_string_tab[1148]
#define __pyx_kp_b_iso88591_A_it9AQ_IQa_1_wiy_Q_WA __pyx_string_tab[1149]
#define __pyx_kp_b_iso88591_A_j_A_AQ_A_4_3k_WA_Yc_4_3k_XQ_1 __pyx_string_tab[1150]
#define __pyx_kp_b_iso88591_A_q __pyx_string_tab[1151]
#define __pyx_kp_b_iso88591_A_q_4_3a_5K1 __pyx_string_tab[1152]
#define __pyx_kp_b_iso88591_A_q_4_3k_WA_5K4q_4_4_ha __pyx_string_tab[1153]
#define __pyx_kp_b_iso88591_A_q_4uL_1_WD_RRS __pyx_string_tab[1154]
#define __pyx_kp_b_iso88591_A_q_5_1_DA_4uL_d_wa_WD_RRVVW_4uL __pyx_string_tab[1155]
#define __pyx_kp_b_iso88591_A_q_q_a_A_1_1_G6_gV86_QWWaaggssu __pyx_string_tab[1156]
#define __pyx_kp_b_iso88591_A_s_3a_34q __pyx_string_tab[1157]
#define __pyx_kp_b_iso88591_A_t1 __pyx_string_tab[1158]
#define __pyx_kp_b_iso88591_A_t1A __pyx_string_tab[1159]
#define __pyx_kp_b_iso88591_A_t1D __pyx_string_tab[1160]
#define __pyx_kp_b_iso88591_A_t1D_9E __pyx_string_tab[1161]
#define __pyx_kp_b_iso88591_A_t1D_Qb __pyx_string_tab[1162]
#define __pyx_kp_b_iso88591_A_t1_2 __pyx_string_tab[1163]
#define __pyx_kp_b_iso88591_A_t7_6_4xq __pyx_string_tab[1164]
#define __pyx_kp_b_iso88591_A_uJa __pyx_string_tab[1165]
#define __pyx_kp_b_iso88591_A_wha_A_AQ_r_q_6_Q_fBfAQ_Be9AWF __pyx_string_tab[1166]
#define __pyx_kp_b_iso88591_Ah_IT_Qa __pyx_string_tab[1167]
#define __pyx_kp_b_iso88591_Bhj_b_q_Qa_3fCq_s_A_nARwauAQ_3i __pyx_string_tab[1168]
#define __pyx_kp_b_iso88591_Bhj_b_q_Qa_3fCq_s_A_nARwauAQ_3i_2 __pyx_string_tab[1169]
#define __pyx_kp_b_iso88591_D_q __pyx_string_tab[1170]
#define __pyx_kp_b_iso88591_HN_WAQ __pyx_string_tab[1171]
#define __pyx_kp_b_iso88591_Ja_F_4y_a_9Cq_r_AT_U_1D_4was_AQ __pyx_string_tab[1172]
#define __pyx_kp_b_iso88591_Jl_oQ_uG1_wgQ_a_a_aq __pyx_string_tab[1173]
#define __pyx_kp_b_iso88591_Q __pyx_string_tab[1174]
#define __pyx_kp_b_iso88591_Q_2 __pyx_string_tab[1175]
#define __pyx_kp_b_iso88591_Q_xq_G4y_q __pyx_string_tab[1176]
#define __pyx_kp_b_iso88591_Q_xq_k __pyx_string_tab[1177]
#define __pyx_kp_b_iso88591_T_t9D_t9D_G1F_a_vWE_Q_q_q_awk_a __pyx_string_tab[1178]
#define __pyx_kp_b_iso88591__24 __pyx_string_tab[1179]
#define __pyx_kp_b_iso88591_a_2 __pyx_string_tab[1180]
#define __pyx_kp_b_iso88591_a_3 __pyx_string_tab[1181]
#define __pyx_kp_b_iso88591_a_E_1_4v_1_z_Qaz_T_V7_G7_A_83a __pyx_string_tab[1182]
#define __pyx_kp_b_iso88591_a_Ry_00_a_A __pyx_string_tab[1183]
#define __pyx_kp_b_iso88591_l2B_2_6J_5_q_A_A_7_a_a_gQ_it9A __pyx_string_tab[1184]
#define __pyx_kp_b_iso88591_m_L_QgQ_uKq_A_j_at1A_4q_q_wa_7 __pyx_string_tab[1185]
#define __pyx_kp_b_iso88591_q __pyx_string_tab[1186]
#define __pyx_kp_b_iso88591_q_0_kQR_9HAQ_7_1L_a_1 __pyx_string_tab[1187]
#define __pyx_kp_b_iso88591_q_4q_0_1DA_9Cq_s_0_at9AYa_1_q_S __pyx_string_tab[1188]
#define __pyx_kp_b_iso88591_q_AV1A_q_xy_5_1_1_4waq_l __pyx_string_tab[1189]
#define __pyx_kp_b_iso88591_q_a __pyx_string_tab[1190]
#define __pyx_kp_b_iso88591_q_j_q_q_j_q_9AU_1_l __pyx_string_tab[1191]
#define __pyx_kp_b_iso88591_r_Qk_uCq_l_1_Q __pyx_string_tab[1192]
#define __pyx_kp_b_iso88591_t1_l_1A_aq_Kq __pyx_string_tab[1193]
#define __pyx_kp_b_iso88591_t1_l_1L_aq __pyx_string_tab[1194]
#define __pyx_kp_b_iso88591_uCq_x_6_z_1_Qj_xwa_gQfIQ_q_Qk_A __pyx_string_tab[1195]
#define __pyx_kp_b_iso88591_vXT_j_vQiuAQ_q_Qk_aq_1 __pyx_string_tab[1196]
#define __pyx_kp_b_iso88591_wgQ_j_1A_AZq_aq __pyx_string_tab[1197]
#define __pyx_float_0_0 __pyx_number_tab[0]
#define __pyx_float_1_0 __pyx_number_tab[1]
#define __pyx_int_0 __pyx_number_tab[2]
#define __pyx_int_neg_1 __pyx_number_tab[3]
#define __pyx_int_1 __pyx_number_tab[4]
#define __pyx_int_2 __pyx_number_tab[5]
#define __pyx_int_3 __pyx_number_tab[6]
#define __pyx_int_4 __pyx_number_tab[7]
#define __pyx_int_5 __pyx_number_tab[8]
#define __pyx_int_6 __pyx_number_tab[9]
#define __pyx_int_7 __pyx_number_tab[10]
#define __pyx_int_8 __pyx_number_tab[11]
#define __pyx_int_32 __pyx_number_tab[12]
#define __pyx_int_128 __pyx_number_tab[13]
#define __pyx_int_1900 __pyx_number_tab[14]
#define __pyx_int_16384 __pyx_number_tab[15]
#define __pyx_int_14814860 __pyx_number_tab[16]
/* #### 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_7cpython_4type_type);
  Py_CLEAR(clear_module_state->__pyx_ptype_5numpy_dtype);
  Py_CLEAR(clear_module_state->__pyx_ptype_5numpy_flatiter);
  Py_CLEAR(clear_module_state->__pyx_ptype_5numpy_broadcast);
  Py_CLEAR(clear_module_state->__pyx_ptype_5numpy_ndarray);
  Py_CLEAR(clear_module_state->__pyx_ptype_5numpy_generic);
  Py_CLEAR(clear_module_state->__pyx_ptype_5numpy_number);
  Py_CLEAR(clear_module_state->__pyx_ptype_5numpy_integer);
  Py_CLEAR(clear_module_state->__pyx_ptype_5numpy_signedinteger);
  Py_CLEAR(clear_module_state->__pyx_ptype_5numpy_unsignedinteger);
  Py_CLEAR(clear_module_state->__pyx_ptype_5numpy_inexact);
  Py_CLEAR(clear_module_state->__pyx_ptype_5numpy_floating);
  Py_CLEAR(clear_module_state->__pyx_ptype_5numpy_complexfloating);
  Py_CLEAR(clear_module_state->__pyx_ptype_5numpy_flexible);
  Py_CLEAR(clear_module_state->__pyx_ptype_5numpy_character);
  Py_CLEAR(clear_module_state->__pyx_ptype_5numpy_ufunc);
  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_7netCDF4_8_netCDF4__MemBuf);
  Py_CLEAR(clear_module_state->__pyx_type_7netCDF4_8_netCDF4__MemBuf);
  Py_CLEAR(clear_module_state->__pyx_ptype_7netCDF4_8_netCDF4_ndarray);
  Py_CLEAR(clear_module_state->__pyx_ptype_7netCDF4_8_netCDF4_Dataset);
  Py_CLEAR(clear_module_state->__pyx_type_7netCDF4_8_netCDF4_Dataset);
  Py_CLEAR(clear_module_state->__pyx_ptype_7netCDF4_8_netCDF4_Group);
  Py_CLEAR(clear_module_state->__pyx_type_7netCDF4_8_netCDF4_Group);
  Py_CLEAR(clear_module_state->__pyx_ptype_7netCDF4_8_netCDF4_Dimension);
  Py_CLEAR(clear_module_state->__pyx_type_7netCDF4_8_netCDF4_Dimension);
  Py_CLEAR(clear_module_state->__pyx_ptype_7netCDF4_8_netCDF4_Variable);
  Py_CLEAR(clear_module_state->__pyx_type_7netCDF4_8_netCDF4_Variable);
  Py_CLEAR(clear_module_state->__pyx_ptype_7netCDF4_8_netCDF4_CompoundType);
  Py_CLEAR(clear_module_state->__pyx_type_7netCDF4_8_netCDF4_CompoundType);
  Py_CLEAR(clear_module_state->__pyx_ptype_7netCDF4_8_netCDF4_VLType);
  Py_CLEAR(clear_module_state->__pyx_type_7netCDF4_8_netCDF4_VLType);
  Py_CLEAR(clear_module_state->__pyx_ptype_7netCDF4_8_netCDF4_EnumType);
  Py_CLEAR(clear_module_state->__pyx_type_7netCDF4_8_netCDF4_EnumType);
  Py_CLEAR(clear_module_state->__pyx_ptype_7netCDF4_8_netCDF4___pyx_defaults);
  Py_CLEAR(clear_module_state->__pyx_type_7netCDF4_8_netCDF4___pyx_defaults);
  Py_CLEAR(clear_module_state->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct__genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct__genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_1___pyx_f_7netCDF4_8_netCDF4__get_vars);
  Py_CLEAR(clear_module_state->__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_1___pyx_f_7netCDF4_8_netCDF4__get_vars);
  Py_CLEAR(clear_module_state->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_2_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_2_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_3___str__);
  Py_CLEAR(clear_module_state->__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_3___str__);
  Py_CLEAR(clear_module_state->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_4_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_4_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_5_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_5_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_6_createVariable);
  Py_CLEAR(clear_module_state->__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_6_createVariable);
  Py_CLEAR(clear_module_state->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_7_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_7_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_8_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_8_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_9_get_dims);
  Py_CLEAR(clear_module_state->__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_9_get_dims);
  Py_CLEAR(clear_module_state->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_10_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_10_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_11_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_11_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_12_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_12_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_13_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_13_genexpr);
  for (int i=0; i<7; ++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<148; ++i) { Py_CLEAR(clear_module_state->__pyx_codeobj_tab[i]); }
  for (int i=0; i<1198; ++i) { Py_CLEAR(clear_module_state->__pyx_string_tab[i]); }
  for (int i=0; i<17; ++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);

/* Generator.module_state_clear */
Py_CLEAR(clear_module_state->__pyx_GeneratorType);

/* #### 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_7cpython_4type_type);
  Py_VISIT(traverse_module_state->__pyx_ptype_5numpy_dtype);
  Py_VISIT(traverse_module_state->__pyx_ptype_5numpy_flatiter);
  Py_VISIT(traverse_module_state->__pyx_ptype_5numpy_broadcast);
  Py_VISIT(traverse_module_state->__pyx_ptype_5numpy_ndarray);
  Py_VISIT(traverse_module_state->__pyx_ptype_5numpy_generic);
  Py_VISIT(traverse_module_state->__pyx_ptype_5numpy_number);
  Py_VISIT(traverse_module_state->__pyx_ptype_5numpy_integer);
  Py_VISIT(traverse_module_state->__pyx_ptype_5numpy_signedinteger);
  Py_VISIT(traverse_module_state->__pyx_ptype_5numpy_unsignedinteger);
  Py_VISIT(traverse_module_state->__pyx_ptype_5numpy_inexact);
  Py_VISIT(traverse_module_state->__pyx_ptype_5numpy_floating);
  Py_VISIT(traverse_module_state->__pyx_ptype_5numpy_complexfloating);
  Py_VISIT(traverse_module_state->__pyx_ptype_5numpy_flexible);
  Py_VISIT(traverse_module_state->__pyx_ptype_5numpy_character);
  Py_VISIT(traverse_module_state->__pyx_ptype_5numpy_ufunc);
  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_7netCDF4_8_netCDF4__MemBuf);
  Py_VISIT(traverse_module_state->__pyx_type_7netCDF4_8_netCDF4__MemBuf);
  Py_VISIT(traverse_module_state->__pyx_ptype_7netCDF4_8_netCDF4_ndarray);
  Py_VISIT(traverse_module_state->__pyx_ptype_7netCDF4_8_netCDF4_Dataset);
  Py_VISIT(traverse_module_state->__pyx_type_7netCDF4_8_netCDF4_Dataset);
  Py_VISIT(traverse_module_state->__pyx_ptype_7netCDF4_8_netCDF4_Group);
  Py_VISIT(traverse_module_state->__pyx_type_7netCDF4_8_netCDF4_Group);
  Py_VISIT(traverse_module_state->__pyx_ptype_7netCDF4_8_netCDF4_Dimension);
  Py_VISIT(traverse_module_state->__pyx_type_7netCDF4_8_netCDF4_Dimension);
  Py_VISIT(traverse_module_state->__pyx_ptype_7netCDF4_8_netCDF4_Variable);
  Py_VISIT(traverse_module_state->__pyx_type_7netCDF4_8_netCDF4_Variable);
  Py_VISIT(traverse_module_state->__pyx_ptype_7netCDF4_8_netCDF4_CompoundType);
  Py_VISIT(traverse_module_state->__pyx_type_7netCDF4_8_netCDF4_CompoundType);
  Py_VISIT(traverse_module_state->__pyx_ptype_7netCDF4_8_netCDF4_VLType);
  Py_VISIT(traverse_module_state->__pyx_type_7netCDF4_8_netCDF4_VLType);
  Py_VISIT(traverse_module_state->__pyx_ptype_7netCDF4_8_netCDF4_EnumType);
  Py_VISIT(traverse_module_state->__pyx_type_7netCDF4_8_netCDF4_EnumType);
  Py_VISIT(traverse_module_state->__pyx_ptype_7netCDF4_8_netCDF4___pyx_defaults);
  Py_VISIT(traverse_module_state->__pyx_type_7netCDF4_8_netCDF4___pyx_defaults);
  Py_VISIT(traverse_module_state->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct__genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct__genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_1___pyx_f_7netCDF4_8_netCDF4__get_vars);
  Py_VISIT(traverse_module_state->__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_1___pyx_f_7netCDF4_8_netCDF4__get_vars);
  Py_VISIT(traverse_module_state->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_2_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_2_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_3___str__);
  Py_VISIT(traverse_module_state->__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_3___str__);
  Py_VISIT(traverse_module_state->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_4_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_4_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_5_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_5_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_6_createVariable);
  Py_VISIT(traverse_module_state->__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_6_createVariable);
  Py_VISIT(traverse_module_state->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_7_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_7_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_8_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_8_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_9_get_dims);
  Py_VISIT(traverse_module_state->__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_9_get_dims);
  Py_VISIT(traverse_module_state->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_10_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_10_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_11_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_11_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_12_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_12_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_13_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_13_genexpr);
  for (int i=0; i<7; ++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<148; ++i) { __Pyx_VISIT_CONST(traverse_module_state->__pyx_codeobj_tab[i]); }
  for (int i=0; i<1198; ++i) { __Pyx_VISIT_CONST(traverse_module_state->__pyx_string_tab[i]); }
  for (int i=0; i<17; ++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);

/* Generator.module_state_traverse */
Py_VISIT(traverse_module_state->__pyx_GeneratorType);

/* #### Code section: module_state_traverse_end ### */
return 0;
}
#endif
/* #### Code section: module_code ### */
static PyObject *__pyx_gb_7netCDF4_8_netCDF4_36generator(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "netCDF4/_netCDF4.pyx":1561
 *     _cmode_dict['NETCDF3_64BIT'] = NC_64BIT_OFFSET
 * # invert dictionary mapping
 * _reverse_format_dict = dict((v, k) for k, v in _format_dict.iteritems())             # <<<<<<<<<<<<<<
 * # add duplicate entry (NETCDF3_64BIT == NETCDF3_64BIT_OFFSET)
 * if __has_cdf5_format__:
*/

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_34genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct__genexpr *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("genexpr", 0);
  __pyx_cur_scope = (struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct__genexpr *)__pyx_tp_new_7netCDF4_8_netCDF4___pyx_scope_struct__genexpr(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct__genexpr, __pyx_mstate_global->__pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct__genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(0, 1561, __pyx_L1_error)
  } else {
    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_genexpr_arg_0 = __pyx_genexpr_arg_0;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_genexpr_arg_0);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_genexpr_arg_0);
  {
    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_7netCDF4_8_netCDF4_36generator, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[0]), (PyObject *) __pyx_cur_scope, __pyx_mstate_global->__pyx_n_u_genexpr, __pyx_mstate_global->__pyx_n_u_genexpr, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4); if (unlikely(!gen)) __PYX_ERR(0, 1561, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("netCDF4._netCDF4.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_7netCDF4_8_netCDF4_36generator(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct__genexpr *__pyx_cur_scope = ((struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct__genexpr *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  int __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_RefNannyDeclarations
  __Pyx_RefNannySetupContext("genexpr", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 1561, __pyx_L1_error)
  __pyx_r = PyDict_New(); if (unlikely(!__pyx_r)) __PYX_ERR(0, 1561, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  __pyx_t_2 = 0;
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(0, 1561, __pyx_L1_error) }
  if (unlikely(__pyx_cur_scope->__pyx_genexpr_arg_0 == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "iteritems");
    __PYX_ERR(0, 1561, __pyx_L1_error)
  }
  __pyx_t_5 = __Pyx_dict_iterator(__pyx_cur_scope->__pyx_genexpr_arg_0, 0, __pyx_mstate_global->__pyx_n_u_iteritems, (&__pyx_t_3), (&__pyx_t_4)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1561, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_1);
  __pyx_t_1 = __pyx_t_5;
  __pyx_t_5 = 0;
  while (1) {
    __pyx_t_7 = __Pyx_dict_iter_next(__pyx_t_1, __pyx_t_3, &__pyx_t_2, &__pyx_t_5, &__pyx_t_6, NULL, __pyx_t_4);
    if (unlikely(__pyx_t_7 == 0)) break;
    if (unlikely(__pyx_t_7 == -1)) __PYX_ERR(0, 1561, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_k);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_k, __pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_5);
    __pyx_t_5 = 0;
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_v);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_v, __pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_6);
    __pyx_t_6 = 0;
    if (unlikely(PyDict_SetItem(__pyx_r, (PyObject*)__pyx_cur_scope->__pyx_v_v, (PyObject*)__pyx_cur_scope->__pyx_v_k))) __PYX_ERR(0, 1561, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  if (__Pyx_PyErr_Occurred()) {
    __Pyx_Generator_Replace_StopIteration(0);
    __Pyx_AddTraceback("genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  }
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  #if !CYTHON_USE_EXC_INFO_STACK
  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
  #endif
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":242
 *         cdef int type_num
 * 
 *         @property             # <<<<<<<<<<<<<<
 *         cdef inline npy_intp itemsize(self) noexcept nogil:
 *             return PyDataType_ELSIZE(self)
*/

static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_8itemsize_itemsize(PyArray_Descr *__pyx_v_self) {
  npy_intp __pyx_r;

  /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":244
 *         @property
 *         cdef inline npy_intp itemsize(self) noexcept nogil:
 *             return PyDataType_ELSIZE(self)             # <<<<<<<<<<<<<<
 * 
 *         @property
*/
  __pyx_r = PyDataType_ELSIZE(__pyx_v_self);
  goto __pyx_L0;

  /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":242
 *         cdef int type_num
 * 
 *         @property             # <<<<<<<<<<<<<<
 *         cdef inline npy_intp itemsize(self) noexcept nogil:
 *             return PyDataType_ELSIZE(self)
*/

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

/* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":246
 *             return PyDataType_ELSIZE(self)
 * 
 *         @property             # <<<<<<<<<<<<<<
 *         cdef inline npy_intp alignment(self) noexcept nogil:
 *             return PyDataType_ALIGNMENT(self)
*/

static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_9alignment_alignment(PyArray_Descr *__pyx_v_self) {
  npy_intp __pyx_r;

  /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":248
 *         @property
 *         cdef inline npy_intp alignment(self) noexcept nogil:
 *             return PyDataType_ALIGNMENT(self)             # <<<<<<<<<<<<<<
 * 
 *         # Use fields/names with care as they may be NULL.  You must check
*/
  __pyx_r = PyDataType_ALIGNMENT(__pyx_v_self);
  goto __pyx_L0;

  /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":246
 *             return PyDataType_ELSIZE(self)
 * 
 *         @property             # <<<<<<<<<<<<<<
 *         cdef inline npy_intp alignment(self) noexcept nogil:
 *             return PyDataType_ALIGNMENT(self)
*/

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

/* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":252
 *         # Use fields/names with care as they may be NULL.  You must check
 *         # for this using PyDataType_HASFIELDS.
 *         @property             # <<<<<<<<<<<<<<
 *         cdef inline object fields(self):
 *             return <object>PyDataType_FIELDS(self)
*/

static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_6fields_fields(PyArray_Descr *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1;
  __Pyx_RefNannySetupContext("fields", 0);

  /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":254
 *         @property
 *         cdef inline object fields(self):
 *             return <object>PyDataType_FIELDS(self)             # <<<<<<<<<<<<<<
 * 
 *         @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyDataType_FIELDS(__pyx_v_self);
  __Pyx_INCREF(((PyObject *)__pyx_t_1));
  __pyx_r = ((PyObject *)__pyx_t_1);
  goto __pyx_L0;

  /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":252
 *         # Use fields/names with care as they may be NULL.  You must check
 *         # for this using PyDataType_HASFIELDS.
 *         @property             # <<<<<<<<<<<<<<
 *         cdef inline object fields(self):
 *             return <object>PyDataType_FIELDS(self)
*/

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

/* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":256
 *             return <object>PyDataType_FIELDS(self)
 * 
 *         @property             # <<<<<<<<<<<<<<
 *         cdef inline tuple names(self):
 *             return <tuple>PyDataType_NAMES(self)
*/

static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_5names_names(PyArray_Descr *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1;
  __Pyx_RefNannySetupContext("names", 0);

  /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":258
 *         @property
 *         cdef inline tuple names(self):
 *             return <tuple>PyDataType_NAMES(self)             # <<<<<<<<<<<<<<
 * 
 *         # Use PyDataType_HASSUBARRAY to test whether this field is
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyDataType_NAMES(__pyx_v_self);
  __Pyx_INCREF(((PyObject*)__pyx_t_1));
  __pyx_r = ((PyObject*)__pyx_t_1);
  goto __pyx_L0;

  /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":256
 *             return <object>PyDataType_FIELDS(self)
 * 
 *         @property             # <<<<<<<<<<<<<<
 *         cdef inline tuple names(self):
 *             return <tuple>PyDataType_NAMES(self)
*/

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

/* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":263
 *         # valid (the pointer can be NULL). Most users should access
 *         # this field via the inline helper method PyDataType_SHAPE.
 *         @property             # <<<<<<<<<<<<<<
 *         cdef inline PyArray_ArrayDescr* subarray(self) noexcept nogil:
 *             return PyDataType_SUBARRAY(self)
*/

static CYTHON_INLINE PyArray_ArrayDescr *__pyx_f_5numpy_5dtype_8subarray_subarray(PyArray_Descr *__pyx_v_self) {
  PyArray_ArrayDescr *__pyx_r;

  /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":265
 *         @property
 *         cdef inline PyArray_ArrayDescr* subarray(self) noexcept nogil:
 *             return PyDataType_SUBARRAY(self)             # <<<<<<<<<<<<<<
 * 
 *         @property
*/
  __pyx_r = PyDataType_SUBARRAY(__pyx_v_self);
  goto __pyx_L0;

  /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":263
 *         # valid (the pointer can be NULL). Most users should access
 *         # this field via the inline helper method PyDataType_SHAPE.
 *         @property             # <<<<<<<<<<<<<<
 *         cdef inline PyArray_ArrayDescr* subarray(self) noexcept nogil:
 *             return PyDataType_SUBARRAY(self)
*/

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

/* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":267
 *             return PyDataType_SUBARRAY(self)
 * 
 *         @property             # <<<<<<<<<<<<<<
 *         cdef inline npy_uint64 flags(self) noexcept nogil:
 *             """The data types flags."""
*/

static CYTHON_INLINE npy_uint64 __pyx_f_5numpy_5dtype_5flags_flags(PyArray_Descr *__pyx_v_self) {
  npy_uint64 __pyx_r;

  /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":270
 *         cdef inline npy_uint64 flags(self) noexcept nogil:
 *             """The data types flags."""
 *             return PyDataType_FLAGS(self)             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_r = PyDataType_FLAGS(__pyx_v_self);
  goto __pyx_L0;

  /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":267
 *             return PyDataType_SUBARRAY(self)
 * 
 *         @property             # <<<<<<<<<<<<<<
 *         cdef inline npy_uint64 flags(self) noexcept nogil:
 *             """The data types flags."""
*/

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

/* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":279
 *     ctypedef class numpy.broadcast [object PyArrayMultiIterObject, check_size ignore]:
 * 
 *         @property             # <<<<<<<<<<<<<<
 *         cdef inline int numiter(self) noexcept nogil:
 *             """The number of arrays that need to be broadcast to the same shape."""
*/

static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_7numiter_numiter(PyArrayMultiIterObject *__pyx_v_self) {
  int __pyx_r;

  /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":282
 *         cdef inline int numiter(self) noexcept nogil:
 *             """The number of arrays that need to be broadcast to the same shape."""
 *             return PyArray_MultiIter_NUMITER(self)             # <<<<<<<<<<<<<<
 * 
 *         @property
*/
  __pyx_r = PyArray_MultiIter_NUMITER(__pyx_v_self);
  goto __pyx_L0;

  /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":279
 *     ctypedef class numpy.broadcast [object PyArrayMultiIterObject, check_size ignore]:
 * 
 *         @property             # <<<<<<<<<<<<<<
 *         cdef inline int numiter(self) noexcept nogil:
 *             """The number of arrays that need to be broadcast to the same shape."""
*/

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

/* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":284
 *             return PyArray_MultiIter_NUMITER(self)
 * 
 *         @property             # <<<<<<<<<<<<<<
 *         cdef inline npy_intp size(self) noexcept nogil:
 *             """The total broadcasted size."""
*/

static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_4size_size(PyArrayMultiIterObject *__pyx_v_self) {
  npy_intp __pyx_r;

  /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":287
 *         cdef inline npy_intp size(self) noexcept nogil:
 *             """The total broadcasted size."""
 *             return PyArray_MultiIter_SIZE(self)             # <<<<<<<<<<<<<<
 * 
 *         @property
*/
  __pyx_r = PyArray_MultiIter_SIZE(__pyx_v_self);
  goto __pyx_L0;

  /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":284
 *             return PyArray_MultiIter_NUMITER(self)
 * 
 *         @property             # <<<<<<<<<<<<<<
 *         cdef inline npy_intp size(self) noexcept nogil:
 *             """The total broadcasted size."""
*/

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

/* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":289
 *             return PyArray_MultiIter_SIZE(self)
 * 
 *         @property             # <<<<<<<<<<<<<<
 *         cdef inline npy_intp index(self) noexcept nogil:
 *             """The current (1-d) index into the broadcasted result."""
*/

static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_5index_index(PyArrayMultiIterObject *__pyx_v_self) {
  npy_intp __pyx_r;

  /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":292
 *         cdef inline npy_intp index(self) noexcept nogil:
 *             """The current (1-d) index into the broadcasted result."""
 *             return PyArray_MultiIter_INDEX(self)             # <<<<<<<<<<<<<<
 * 
 *         @property
*/
  __pyx_r = PyArray_MultiIter_INDEX(__pyx_v_self);
  goto __pyx_L0;

  /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":289
 *             return PyArray_MultiIter_SIZE(self)
 * 
 *         @property             # <<<<<<<<<<<<<<
 *         cdef inline npy_intp index(self) noexcept nogil:
 *             """The current (1-d) index into the broadcasted result."""
*/

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

/* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":294
 *             return PyArray_MultiIter_INDEX(self)
 * 
 *         @property             # <<<<<<<<<<<<<<
 *         cdef inline int nd(self) noexcept nogil:
 *             """The number of dimensions in the broadcasted result."""
*/

static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_2nd_nd(PyArrayMultiIterObject *__pyx_v_self) {
  int __pyx_r;

  /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":297
 *         cdef inline int nd(self) noexcept nogil:
 *             """The number of dimensions in the broadcasted result."""
 *             return PyArray_MultiIter_NDIM(self)             # <<<<<<<<<<<<<<
 * 
 *         @property
*/
  __pyx_r = PyArray_MultiIter_NDIM(__pyx_v_self);
  goto __pyx_L0;

  /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":294
 *             return PyArray_MultiIter_INDEX(self)
 * 
 *         @property             # <<<<<<<<<<<<<<
 *         cdef inline int nd(self) noexcept nogil:
 *             """The number of dimensions in the broadcasted result."""
*/

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

/* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":299
 *             return PyArray_MultiIter_NDIM(self)
 * 
 *         @property             # <<<<<<<<<<<<<<
 *         cdef inline npy_intp* dimensions(self) noexcept nogil:
 *             """The shape of the broadcasted result."""
*/

static CYTHON_INLINE npy_intp *__pyx_f_5numpy_9broadcast_10dimensions_dimensions(PyArrayMultiIterObject *__pyx_v_self) {
  npy_intp *__pyx_r;

  /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":302
 *         cdef inline npy_intp* dimensions(self) noexcept nogil:
 *             """The shape of the broadcasted result."""
 *             return PyArray_MultiIter_DIMS(self)             # <<<<<<<<<<<<<<
 * 
 *         @property
*/
  __pyx_r = PyArray_MultiIter_DIMS(__pyx_v_self);
  goto __pyx_L0;

  /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":299
 *             return PyArray_MultiIter_NDIM(self)
 * 
 *         @property             # <<<<<<<<<<<<<<
 *         cdef inline npy_intp* dimensions(self) noexcept nogil:
 *             """The shape of the broadcasted result."""
*/

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

/* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":304
 *             return PyArray_MultiIter_DIMS(self)
 * 
 *         @property             # <<<<<<<<<<<<<<
 *         cdef inline void** iters(self) noexcept nogil:
 *             """An array of iterator objects that holds the iterators for the arrays to be broadcast together.
*/

static CYTHON_INLINE void **__pyx_f_5numpy_9broadcast_5iters_iters(PyArrayMultiIterObject *__pyx_v_self) {
  void **__pyx_r;

  /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":308
 *             """An array of iterator objects that holds the iterators for the arrays to be broadcast together.
 *             On return, the iterators are adjusted for broadcasting."""
 *             return PyArray_MultiIter_ITERS(self)             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_r = PyArray_MultiIter_ITERS(__pyx_v_self);
  goto __pyx_L0;

  /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":304
 *             return PyArray_MultiIter_DIMS(self)
 * 
 *         @property             # <<<<<<<<<<<<<<
 *         cdef inline void** iters(self) noexcept nogil:
 *             """An array of iterator objects that holds the iterators for the arrays to be broadcast together.
*/

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

/* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":322
 *         # Instead, we use properties that map to the corresponding C-API functions.
 * 
 *         @property             # <<<<<<<<<<<<<<
 *         cdef inline PyObject* base(self) noexcept nogil:
 *             """Returns a borrowed reference to the object owning the data/memory.
*/

static CYTHON_INLINE PyObject *__pyx_f_5numpy_7ndarray_4base_base(PyArrayObject *__pyx_v_self) {
  PyObject *__pyx_r;

  /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":326
 *             """Returns a borrowed reference to the object owning the data/memory.
 *             """
 *             return PyArray_BASE(self)             # <<<<<<<<<<<<<<
 * 
 *         @property
*/
  __pyx_r = PyArray_BASE(__pyx_v_self);
  goto __pyx_L0;

  /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":322
 *         # Instead, we use properties that map to the corresponding C-API functions.
 * 
 *         @property             # <<<<<<<<<<<<<<
 *         cdef inline PyObject* base(self) noexcept nogil:
 *             """Returns a borrowed reference to the object owning the data/memory.
*/

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

/* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":328
 *             return PyArray_BASE(self)
 * 
 *         @property             # <<<<<<<<<<<<<<
 *         cdef inline dtype descr(self):
 *             """Returns an owned reference to the dtype of the array.
*/

static CYTHON_INLINE PyArray_Descr *__pyx_f_5numpy_7ndarray_5descr_descr(PyArrayObject *__pyx_v_self) {
  PyArray_Descr *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyArray_Descr *__pyx_t_1;
  __Pyx_RefNannySetupContext("descr", 0);

  /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":332
 *             """Returns an owned reference to the dtype of the array.
 *             """
 *             return <dtype>PyArray_DESCR(self)             # <<<<<<<<<<<<<<
 * 
 *         @property
*/
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __pyx_t_1 = PyArray_DESCR(__pyx_v_self);
  __Pyx_INCREF((PyObject *)((PyArray_Descr *)__pyx_t_1));
  __pyx_r = ((PyArray_Descr *)__pyx_t_1);
  goto __pyx_L0;

  /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":328
 *             return PyArray_BASE(self)
 * 
 *         @property             # <<<<<<<<<<<<<<
 *         cdef inline dtype descr(self):
 *             """Returns an owned reference to the dtype of the array.
*/

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

/* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":334
 *             return <dtype>PyArray_DESCR(self)
 * 
 *         @property             # <<<<<<<<<<<<<<
 *         cdef inline int ndim(self) noexcept nogil:
 *             """Returns the number of dimensions in the array.
*/

static CYTHON_INLINE int __pyx_f_5numpy_7ndarray_4ndim_ndim(PyArrayObject *__pyx_v_self) {
  int __pyx_r;

  /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":338
 *             """Returns the number of dimensions in the array.
 *             """
 *             return PyArray_NDIM(self)             # <<<<<<<<<<<<<<
 * 
 *         @property
*/
  __pyx_r = PyArray_NDIM(__pyx_v_self);
  goto __pyx_L0;

  /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":334
 *             return <dtype>PyArray_DESCR(self)
 * 
 *         @property             # <<<<<<<<<<<<<<
 *         cdef inline int ndim(self) noexcept nogil:
 *             """Returns the number of dimensions in the array.
*/

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

/* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":340
 *             return PyArray_NDIM(self)
 * 
 *         @property             # <<<<<<<<<<<<<<
 *         cdef inline npy_intp *shape(self) noexcept nogil:
 *             """Returns a pointer to the dimensions/shape of the array.
*/

static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_5shape_shape(PyArrayObject *__pyx_v_self) {
  npy_intp *__pyx_r;

  /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":346
 *             Can return NULL for 0-dimensional arrays.
 *             """
 *             return PyArray_DIMS(self)             # <<<<<<<<<<<<<<
 * 
 *         @property
*/
  __pyx_r = PyArray_DIMS(__pyx_v_self);
  goto __pyx_L0;

  /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":340
 *             return PyArray_NDIM(self)
 * 
 *         @property             # <<<<<<<<<<<<<<
 *         cdef inline npy_intp *shape(self) noexcept nogil:
 *             """Returns a pointer to the dimensions/shape of the array.
*/

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

/* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":348
 *             return PyArray_DIMS(self)
 * 
 *         @property             # <<<<<<<<<<<<<<
 *         cdef inline npy_intp *strides(self) noexcept nogil:
 *             """Returns a pointer to the strides of the array.
*/

static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_7strides_strides(PyArrayObject *__pyx_v_self) {
  npy_intp *__pyx_r;

  /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":353
 *             The number of elements matches the number of dimensions of the array (ndim).
 *             """
 *             return PyArray_STRIDES(self)             # <<<<<<<<<<<<<<
 * 
 *         @property
*/
  __pyx_r = PyArray_STRIDES(__pyx_v_self);
  goto __pyx_L0;

  /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":348
 *             return PyArray_DIMS(self)
 * 
 *         @property             # <<<<<<<<<<<<<<
 *         cdef inline npy_intp *strides(self) noexcept nogil:
 *             """Returns a pointer to the strides of the array.
*/

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

/* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":355
 *             return PyArray_STRIDES(self)
 * 
 *         @property             # <<<<<<<<<<<<<<
 *         cdef inline npy_intp size(self) noexcept nogil:
 *             """Returns the total size (in number of elements) of the array.
*/

static CYTHON_INLINE npy_intp __pyx_f_5numpy_7ndarray_4size_size(PyArrayObject *__pyx_v_self) {
  npy_intp __pyx_r;

  /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":359
 *             """Returns the total size (in number of elements) of the array.
 *             """
 *             return PyArray_SIZE(self)             # <<<<<<<<<<<<<<
 * 
 *         @property
*/
  __pyx_r = PyArray_SIZE(__pyx_v_self);
  goto __pyx_L0;

  /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":355
 *             return PyArray_STRIDES(self)
 * 
 *         @property             # <<<<<<<<<<<<<<
 *         cdef inline npy_intp size(self) noexcept nogil:
 *             """Returns the total size (in number of elements) of the array.
*/

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

/* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":361
 *             return PyArray_SIZE(self)
 * 
 *         @property             # <<<<<<<<<<<<<<
 *         cdef inline char* data(self) noexcept nogil:
 *             """The pointer to the data buffer as a char*.
*/

static CYTHON_INLINE char *__pyx_f_5numpy_7ndarray_4data_data(PyArrayObject *__pyx_v_self) {
  char *__pyx_r;

  /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":368
 *             of `PyArray_DATA()` instead, which returns a 'void*'.
 *             """
 *             return PyArray_BYTES(self)             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_r = PyArray_BYTES(__pyx_v_self);
  goto __pyx_L0;

  /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":361
 *             return PyArray_SIZE(self)
 * 
 *         @property             # <<<<<<<<<<<<<<
 *         cdef inline char* data(self) noexcept nogil:
 *             """The pointer to the data buffer as a char*.
*/

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

/* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":776
 * ctypedef long double complex clongdouble_t
 * 
 * cdef inline object PyArray_MultiIterNew1(a):             # <<<<<<<<<<<<<<
 *     return PyArray_MultiIterNew(1, <void*>a)
 * 
*/

static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__pyx_v_a) {
  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("PyArray_MultiIterNew1", 0);

  /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":777
 * 
 * cdef inline object PyArray_MultiIterNew1(a):
 *     return PyArray_MultiIterNew(1, <void*>a)             # <<<<<<<<<<<<<<
 * 
 * cdef inline object PyArray_MultiIterNew2(a, b):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyArray_MultiIterNew(1, ((void *)__pyx_v_a)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 777, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":776
 * ctypedef long double complex clongdouble_t
 * 
 * cdef inline object PyArray_MultiIterNew1(a):             # <<<<<<<<<<<<<<
 *     return PyArray_MultiIterNew(1, <void*>a)
 * 
*/

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

/* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":779
 *     return PyArray_MultiIterNew(1, <void*>a)
 * 
 * cdef inline object PyArray_MultiIterNew2(a, b):             # <<<<<<<<<<<<<<
 *     return PyArray_MultiIterNew(2, <void*>a, <void*>b)
 * 
*/

static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__pyx_v_a, PyObject *__pyx_v_b) {
  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("PyArray_MultiIterNew2", 0);

  /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":780
 * 
 * cdef inline object PyArray_MultiIterNew2(a, b):
 *     return PyArray_MultiIterNew(2, <void*>a, <void*>b)             # <<<<<<<<<<<<<<
 * 
 * cdef inline object PyArray_MultiIterNew3(a, b, c):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyArray_MultiIterNew(2, ((void *)__pyx_v_a), ((void *)__pyx_v_b)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 780, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":779
 *     return PyArray_MultiIterNew(1, <void*>a)
 * 
 * cdef inline object PyArray_MultiIterNew2(a, b):             # <<<<<<<<<<<<<<
 *     return PyArray_MultiIterNew(2, <void*>a, <void*>b)
 * 
*/

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

/* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":782
 *     return PyArray_MultiIterNew(2, <void*>a, <void*>b)
 * 
 * cdef inline object PyArray_MultiIterNew3(a, b, c):             # <<<<<<<<<<<<<<
 *     return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)
 * 
*/

static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__pyx_v_a, PyObject *__pyx_v_b, PyObject *__pyx_v_c) {
  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("PyArray_MultiIterNew3", 0);

  /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":783
 * 
 * cdef inline object PyArray_MultiIterNew3(a, b, c):
 *     return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)             # <<<<<<<<<<<<<<
 * 
 * cdef inline object PyArray_MultiIterNew4(a, b, c, d):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyArray_MultiIterNew(3, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 783, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":782
 *     return PyArray_MultiIterNew(2, <void*>a, <void*>b)
 * 
 * cdef inline object PyArray_MultiIterNew3(a, b, c):             # <<<<<<<<<<<<<<
 *     return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)
 * 
*/

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

/* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":785
 *     return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)
 * 
 * cdef inline object PyArray_MultiIterNew4(a, b, c, d):             # <<<<<<<<<<<<<<
 *     return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)
 * 
*/

static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__pyx_v_a, PyObject *__pyx_v_b, PyObject *__pyx_v_c, PyObject *__pyx_v_d) {
  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("PyArray_MultiIterNew4", 0);

  /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":786
 * 
 * cdef inline object PyArray_MultiIterNew4(a, b, c, d):
 *     return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)             # <<<<<<<<<<<<<<
 * 
 * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyArray_MultiIterNew(4, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 786, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":785
 *     return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)
 * 
 * cdef inline object PyArray_MultiIterNew4(a, b, c, d):             # <<<<<<<<<<<<<<
 *     return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)
 * 
*/

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

/* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":788
 *     return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)
 * 
 * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e):             # <<<<<<<<<<<<<<
 *     return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)
 * 
*/

static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__pyx_v_a, PyObject *__pyx_v_b, PyObject *__pyx_v_c, PyObject *__pyx_v_d, PyObject *__pyx_v_e) {
  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("PyArray_MultiIterNew5", 0);

  /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":789
 * 
 * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e):
 *     return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)             # <<<<<<<<<<<<<<
 * 
 * cdef inline tuple PyDataType_SHAPE(dtype d):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyArray_MultiIterNew(5, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d), ((void *)__pyx_v_e)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 789, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":788
 *     return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)
 * 
 * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e):             # <<<<<<<<<<<<<<
 *     return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)
 * 
*/

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

/* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":791
 *     return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)
 * 
 * cdef inline tuple PyDataType_SHAPE(dtype d):             # <<<<<<<<<<<<<<
 *     if PyDataType_HASSUBARRAY(d):
 *         return <tuple>d.subarray.shape
*/

static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__pyx_v_d) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2;
  __Pyx_RefNannySetupContext("PyDataType_SHAPE", 0);

  /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":792
 * 
 * cdef inline tuple PyDataType_SHAPE(dtype d):
 *     if PyDataType_HASSUBARRAY(d):             # <<<<<<<<<<<<<<
 *         return <tuple>d.subarray.shape
 *     else:
*/
  __pyx_t_1 = PyDataType_HASSUBARRAY(__pyx_v_d);
  if (__pyx_t_1) {

    /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":793
 * cdef inline tuple PyDataType_SHAPE(dtype d):
 *     if PyDataType_HASSUBARRAY(d):
 *         return <tuple>d.subarray.shape             # <<<<<<<<<<<<<<
 *     else:
 *         return ()
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_5numpy_5dtype_8subarray_subarray(__pyx_v_d)->shape;
    __Pyx_INCREF(((PyObject*)__pyx_t_2));
    __pyx_r = ((PyObject*)__pyx_t_2);
    goto __pyx_L0;

    /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":792
 * 
 * cdef inline tuple PyDataType_SHAPE(dtype d):
 *     if PyDataType_HASSUBARRAY(d):             # <<<<<<<<<<<<<<
 *         return <tuple>d.subarray.shape
 *     else:
*/
  }

  /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":795
 *         return <tuple>d.subarray.shape
 *     else:
 *         return ()             # <<<<<<<<<<<<<<
 * 
 * 
*/
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_mstate_global->__pyx_empty_tuple);
    __pyx_r = __pyx_mstate_global->__pyx_empty_tuple;
    goto __pyx_L0;
  }

  /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":791
 *     return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)
 * 
 * cdef inline tuple PyDataType_SHAPE(dtype d):             # <<<<<<<<<<<<<<
 *     if PyDataType_HASSUBARRAY(d):
 *         return <tuple>d.subarray.shape
*/

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

/* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":994
 *     int _import_umath() except -1
 * 
 * cdef inline void set_array_base(ndarray arr, object base) except *:             # <<<<<<<<<<<<<<
 *     Py_INCREF(base) # important to do this before stealing the reference below!
 *     PyArray_SetBaseObject(arr, base)
*/

static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_arr, PyObject *__pyx_v_base) {
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":995
 * 
 * cdef inline void set_array_base(ndarray arr, object base) except *:
 *     Py_INCREF(base) # important to do this before stealing the reference below!             # <<<<<<<<<<<<<<
 *     PyArray_SetBaseObject(arr, base)
 * 
*/
  Py_INCREF(__pyx_v_base);

  /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":996
 * cdef inline void set_array_base(ndarray arr, object base) except *:
 *     Py_INCREF(base) # important to do this before stealing the reference below!
 *     PyArray_SetBaseObject(arr, base)             # <<<<<<<<<<<<<<
 * 
 * cdef inline object get_array_base(ndarray arr):
*/
  __pyx_t_1 = PyArray_SetBaseObject(__pyx_v_arr, __pyx_v_base); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(1, 996, __pyx_L1_error)

  /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":994
 *     int _import_umath() except -1
 * 
 * cdef inline void set_array_base(ndarray arr, object base) except *:             # <<<<<<<<<<<<<<
 *     Py_INCREF(base) # important to do this before stealing the reference below!
 *     PyArray_SetBaseObject(arr, base)
*/

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("numpy.set_array_base", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
}

/* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":998
 *     PyArray_SetBaseObject(arr, base)
 * 
 * cdef inline object get_array_base(ndarray arr):             # <<<<<<<<<<<<<<
 *     base = PyArray_BASE(arr)
 *     if base is NULL:
*/

static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__pyx_v_arr) {
  PyObject *__pyx_v_base;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("get_array_base", 0);

  /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":999
 * 
 * cdef inline object get_array_base(ndarray arr):
 *     base = PyArray_BASE(arr)             # <<<<<<<<<<<<<<
 *     if base is NULL:
 *         return None
*/
  __pyx_v_base = PyArray_BASE(__pyx_v_arr);

  /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1000
 * cdef inline object get_array_base(ndarray arr):
 *     base = PyArray_BASE(arr)
 *     if base is NULL:             # <<<<<<<<<<<<<<
 *         return None
 *     return <object>base
*/
  __pyx_t_1 = (__pyx_v_base == NULL);
  if (__pyx_t_1) {

    /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1001
 *     base = PyArray_BASE(arr)
 *     if base is NULL:
 *         return None             # <<<<<<<<<<<<<<
 *     return <object>base
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1000
 * cdef inline object get_array_base(ndarray arr):
 *     base = PyArray_BASE(arr)
 *     if base is NULL:             # <<<<<<<<<<<<<<
 *         return None
 *     return <object>base
*/
  }

  /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1002
 *     if base is NULL:
 *         return None
 *     return <object>base             # <<<<<<<<<<<<<<
 * 
 * # Versions of the import_* functions which are more suitable for
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_base));
  __pyx_r = ((PyObject *)__pyx_v_base);
  goto __pyx_L0;

  /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":998
 *     PyArray_SetBaseObject(arr, base)
 * 
 * cdef inline object get_array_base(ndarray arr):             # <<<<<<<<<<<<<<
 *     base = PyArray_BASE(arr)
 *     if base is NULL:
*/

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

/* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1006
 * # Versions of the import_* functions which are more suitable for
 * # Cython code.
 * cdef inline int import_array() except -1:             # <<<<<<<<<<<<<<
 *     try:
 *         __pyx_import_array()
*/

static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) {
  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;
  size_t __pyx_t_10;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("import_array", 0);

  /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1007
 * # Cython code.
 * cdef inline int import_array() except -1:
 *     try:             # <<<<<<<<<<<<<<
 *         __pyx_import_array()
 *     except Exception:
*/
  {
    __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:*/ {

      /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1008
 * cdef inline int import_array() except -1:
 *     try:
 *         __pyx_import_array()             # <<<<<<<<<<<<<<
 *     except Exception:
 *         raise ImportError("numpy._core.multiarray failed to import")
*/
      __pyx_t_4 = _import_array(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 1008, __pyx_L3_error)

      /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1007
 * # Cython code.
 * cdef inline int import_array() except -1:
 *     try:             # <<<<<<<<<<<<<<
 *         __pyx_import_array()
 *     except Exception:
*/
    }
    __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:;

    /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1009
 *     try:
 *         __pyx_import_array()
 *     except Exception:             # <<<<<<<<<<<<<<
 *         raise ImportError("numpy._core.multiarray failed to import")
 * 
*/
    __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_Exception))));
    if (__pyx_t_4) {
      __Pyx_AddTraceback("numpy.import_array", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(1, 1009, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);

      /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1010
 *         __pyx_import_array()
 *     except Exception:
 *         raise ImportError("numpy._core.multiarray failed to import")             # <<<<<<<<<<<<<<
 * 
 * cdef inline int import_umath() except -1:
*/
      __pyx_t_9 = NULL;
      __pyx_t_10 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_mstate_global->__pyx_kp_u_numpy__core_multiarray_failed_to};
        __pyx_t_8 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ImportError)), __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(1, 1010, __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(1, 1010, __pyx_L5_except_error)
    }
    goto __pyx_L5_except_error;

    /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1007
 * # Cython code.
 * cdef inline int import_array() except -1:
 *     try:             # <<<<<<<<<<<<<<
 *         __pyx_import_array()
 *     except Exception:
*/
    __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:;
  }

  /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1006
 * # Versions of the import_* functions which are more suitable for
 * # Cython code.
 * cdef inline int import_array() except -1:             # <<<<<<<<<<<<<<
 *     try:
 *         __pyx_import_array()
*/

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("numpy.import_array", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1012
 *         raise ImportError("numpy._core.multiarray failed to import")
 * 
 * cdef inline int import_umath() except -1:             # <<<<<<<<<<<<<<
 *     try:
 *         _import_umath()
*/

static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) {
  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;
  size_t __pyx_t_10;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("import_umath", 0);

  /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1013
 * 
 * cdef inline int import_umath() except -1:
 *     try:             # <<<<<<<<<<<<<<
 *         _import_umath()
 *     except Exception:
*/
  {
    __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:*/ {

      /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1014
 * cdef inline int import_umath() except -1:
 *     try:
 *         _import_umath()             # <<<<<<<<<<<<<<
 *     except Exception:
 *         raise ImportError("numpy._core.umath failed to import")
*/
      __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 1014, __pyx_L3_error)

      /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1013
 * 
 * cdef inline int import_umath() except -1:
 *     try:             # <<<<<<<<<<<<<<
 *         _import_umath()
 *     except Exception:
*/
    }
    __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:;

    /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1015
 *     try:
 *         _import_umath()
 *     except Exception:             # <<<<<<<<<<<<<<
 *         raise ImportError("numpy._core.umath failed to import")
 * 
*/
    __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_Exception))));
    if (__pyx_t_4) {
      __Pyx_AddTraceback("numpy.import_umath", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(1, 1015, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);

      /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1016
 *         _import_umath()
 *     except Exception:
 *         raise ImportError("numpy._core.umath failed to import")             # <<<<<<<<<<<<<<
 * 
 * cdef inline int import_ufunc() except -1:
*/
      __pyx_t_9 = NULL;
      __pyx_t_10 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_mstate_global->__pyx_kp_u_numpy__core_umath_failed_to_impo};
        __pyx_t_8 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ImportError)), __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(1, 1016, __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(1, 1016, __pyx_L5_except_error)
    }
    goto __pyx_L5_except_error;

    /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1013
 * 
 * cdef inline int import_umath() except -1:
 *     try:             # <<<<<<<<<<<<<<
 *         _import_umath()
 *     except Exception:
*/
    __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:;
  }

  /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1012
 *         raise ImportError("numpy._core.multiarray failed to import")
 * 
 * cdef inline int import_umath() except -1:             # <<<<<<<<<<<<<<
 *     try:
 *         _import_umath()
*/

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("numpy.import_umath", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1018
 *         raise ImportError("numpy._core.umath failed to import")
 * 
 * cdef inline int import_ufunc() except -1:             # <<<<<<<<<<<<<<
 *     try:
 *         _import_umath()
*/

static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) {
  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;
  size_t __pyx_t_10;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("import_ufunc", 0);

  /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1019
 * 
 * cdef inline int import_ufunc() except -1:
 *     try:             # <<<<<<<<<<<<<<
 *         _import_umath()
 *     except Exception:
*/
  {
    __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:*/ {

      /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1020
 * cdef inline int import_ufunc() except -1:
 *     try:
 *         _import_umath()             # <<<<<<<<<<<<<<
 *     except Exception:
 *         raise ImportError("numpy._core.umath failed to import")
*/
      __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 1020, __pyx_L3_error)

      /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1019
 * 
 * cdef inline int import_ufunc() except -1:
 *     try:             # <<<<<<<<<<<<<<
 *         _import_umath()
 *     except Exception:
*/
    }
    __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:;

    /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1021
 *     try:
 *         _import_umath()
 *     except Exception:             # <<<<<<<<<<<<<<
 *         raise ImportError("numpy._core.umath failed to import")
 * 
*/
    __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_Exception))));
    if (__pyx_t_4) {
      __Pyx_AddTraceback("numpy.import_ufunc", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(1, 1021, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);

      /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1022
 *         _import_umath()
 *     except Exception:
 *         raise ImportError("numpy._core.umath failed to import")             # <<<<<<<<<<<<<<
 * 
 * 
*/
      __pyx_t_9 = NULL;
      __pyx_t_10 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_mstate_global->__pyx_kp_u_numpy__core_umath_failed_to_impo};
        __pyx_t_8 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ImportError)), __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(1, 1022, __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(1, 1022, __pyx_L5_except_error)
    }
    goto __pyx_L5_except_error;

    /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1019
 * 
 * cdef inline int import_ufunc() except -1:
 *     try:             # <<<<<<<<<<<<<<
 *         _import_umath()
 *     except Exception:
*/
    __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:;
  }

  /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1018
 *         raise ImportError("numpy._core.umath failed to import")
 * 
 * cdef inline int import_ufunc() except -1:             # <<<<<<<<<<<<<<
 *     try:
 *         _import_umath()
*/

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("numpy.import_ufunc", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1025
 * 
 * 
 * cdef inline bint is_timedelta64_object(object obj) noexcept:             # <<<<<<<<<<<<<<
 *     """
 *     Cython equivalent of `isinstance(obj, np.timedelta64)`
*/

static CYTHON_INLINE int __pyx_f_5numpy_is_timedelta64_object(PyObject *__pyx_v_obj) {
  int __pyx_r;

  /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1037
 *     bool
 *     """
 *     return PyObject_TypeCheck(obj, &PyTimedeltaArrType_Type)             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_r = PyObject_TypeCheck(__pyx_v_obj, (&PyTimedeltaArrType_Type));
  goto __pyx_L0;

  /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1025
 * 
 * 
 * cdef inline bint is_timedelta64_object(object obj) noexcept:             # <<<<<<<<<<<<<<
 *     """
 *     Cython equivalent of `isinstance(obj, np.timedelta64)`
*/

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

/* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1040
 * 
 * 
 * cdef inline bint is_datetime64_object(object obj) noexcept:             # <<<<<<<<<<<<<<
 *     """
 *     Cython equivalent of `isinstance(obj, np.datetime64)`
*/

static CYTHON_INLINE int __pyx_f_5numpy_is_datetime64_object(PyObject *__pyx_v_obj) {
  int __pyx_r;

  /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1052
 *     bool
 *     """
 *     return PyObject_TypeCheck(obj, &PyDatetimeArrType_Type)             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_r = PyObject_TypeCheck(__pyx_v_obj, (&PyDatetimeArrType_Type));
  goto __pyx_L0;

  /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1040
 * 
 * 
 * cdef inline bint is_datetime64_object(object obj) noexcept:             # <<<<<<<<<<<<<<
 *     """
 *     Cython equivalent of `isinstance(obj, np.datetime64)`
*/

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

/* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1055
 * 
 * 
 * cdef inline npy_datetime get_datetime64_value(object obj) noexcept nogil:             # <<<<<<<<<<<<<<
 *     """
 *     returns the int64 value underlying scalar numpy datetime64 object
*/

static CYTHON_INLINE npy_datetime __pyx_f_5numpy_get_datetime64_value(PyObject *__pyx_v_obj) {
  npy_datetime __pyx_r;

  /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1062
 *     also needed.  That can be found using `get_datetime64_unit`.
 *     """
 *     return (<PyDatetimeScalarObject*>obj).obval             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_r = ((PyDatetimeScalarObject *)__pyx_v_obj)->obval;
  goto __pyx_L0;

  /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1055
 * 
 * 
 * cdef inline npy_datetime get_datetime64_value(object obj) noexcept nogil:             # <<<<<<<<<<<<<<
 *     """
 *     returns the int64 value underlying scalar numpy datetime64 object
*/

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

/* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1065
 * 
 * 
 * cdef inline npy_timedelta get_timedelta64_value(object obj) noexcept nogil:             # <<<<<<<<<<<<<<
 *     """
 *     returns the int64 value underlying scalar numpy timedelta64 object
*/

static CYTHON_INLINE npy_timedelta __pyx_f_5numpy_get_timedelta64_value(PyObject *__pyx_v_obj) {
  npy_timedelta __pyx_r;

  /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1069
 *     returns the int64 value underlying scalar numpy timedelta64 object
 *     """
 *     return (<PyTimedeltaScalarObject*>obj).obval             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_r = ((PyTimedeltaScalarObject *)__pyx_v_obj)->obval;
  goto __pyx_L0;

  /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1065
 * 
 * 
 * cdef inline npy_timedelta get_timedelta64_value(object obj) noexcept nogil:             # <<<<<<<<<<<<<<
 *     """
 *     returns the int64 value underlying scalar numpy timedelta64 object
*/

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

/* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1072
 * 
 * 
 * cdef inline NPY_DATETIMEUNIT get_datetime64_unit(object obj) noexcept nogil:             # <<<<<<<<<<<<<<
 *     """
 *     returns the unit part of the dtype for a numpy datetime64 object.
*/

static CYTHON_INLINE NPY_DATETIMEUNIT __pyx_f_5numpy_get_datetime64_unit(PyObject *__pyx_v_obj) {
  NPY_DATETIMEUNIT __pyx_r;

  /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1076
 *     returns the unit part of the dtype for a numpy datetime64 object.
 *     """
 *     return <NPY_DATETIMEUNIT>(<PyDatetimeScalarObject*>obj).obmeta.base             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_r = ((NPY_DATETIMEUNIT)((PyDatetimeScalarObject *)__pyx_v_obj)->obmeta.base);
  goto __pyx_L0;

  /* "../../../../usr/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1072
 * 
 * 
 * cdef inline NPY_DATETIMEUNIT get_datetime64_unit(object obj) noexcept nogil:             # <<<<<<<<<<<<<<
 *     """
 *     returns the unit part of the dtype for a numpy datetime64 object.
*/

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

/* "include/membuf.pyx":9
 * 
 * # create a python memoryview object from a raw pointer.
 * cdef memview_fromptr(void *memory, size_t size):             # <<<<<<<<<<<<<<
 *     cdef _MemBuf buf = _MemBuf()
 *     buf.memory = memory # malloced void pointer
*/

static PyObject *__pyx_f_7netCDF4_8_netCDF4_memview_fromptr(void *__pyx_v_memory, size_t __pyx_v_size) {
  struct __pyx_obj_7netCDF4_8_netCDF4__MemBuf *__pyx_v_buf = 0;
  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("memview_fromptr", 0);

  /* "include/membuf.pyx":10
 * # create a python memoryview object from a raw pointer.
 * cdef memview_fromptr(void *memory, size_t size):
 *     cdef _MemBuf buf = _MemBuf()             # <<<<<<<<<<<<<<
 *     buf.memory = memory # malloced void pointer
 *     buf.size = size # size of pointer in bytes
*/
  __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_7netCDF4_8_netCDF4__MemBuf, __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(2, 10, __pyx_L1_error)
    __Pyx_GOTREF((PyObject *)__pyx_t_1);
  }
  __pyx_v_buf = ((struct __pyx_obj_7netCDF4_8_netCDF4__MemBuf *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "include/membuf.pyx":11
 * cdef memview_fromptr(void *memory, size_t size):
 *     cdef _MemBuf buf = _MemBuf()
 *     buf.memory = memory # malloced void pointer             # <<<<<<<<<<<<<<
 *     buf.size = size # size of pointer in bytes
 *     return memoryview(buf)
*/
  __pyx_v_buf->memory = __pyx_v_memory;

  /* "include/membuf.pyx":12
 *     cdef _MemBuf buf = _MemBuf()
 *     buf.memory = memory # malloced void pointer
 *     buf.size = size # size of pointer in bytes             # <<<<<<<<<<<<<<
 *     return memoryview(buf)
 * 
*/
  __pyx_v_buf->size = __pyx_v_size;

  /* "include/membuf.pyx":13
 *     buf.memory = memory # malloced void pointer
 *     buf.size = size # size of pointer in bytes
 *     return memoryview(buf)             # <<<<<<<<<<<<<<
 * 
 * # private extension type that implements buffer protocol.
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyMemoryView_FromObject(((PyObject *)__pyx_v_buf)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 13, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/membuf.pyx":9
 * 
 * # create a python memoryview object from a raw pointer.
 * cdef memview_fromptr(void *memory, size_t size):             # <<<<<<<<<<<<<<
 *     cdef _MemBuf buf = _MemBuf()
 *     buf.memory = memory # malloced void pointer
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("netCDF4._netCDF4.memview_fromptr", __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;
}

/* "include/membuf.pyx":19
 *     cdef const void *memory
 *     cdef size_t size
 *     def __getbuffer__(self, Py_buffer *buf, int flags):             # <<<<<<<<<<<<<<
 *         PyBuffer_FillInfo(buf, self, <void *>self.memory, self.size, 1, flags)
 *     def __releasebuffer__(self, Py_buffer *buf):
*/

/* Python wrapper */
CYTHON_UNUSED static int __pyx_pw_7netCDF4_8_netCDF4_7_MemBuf_1__getbuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_buf, int __pyx_v_flags); /*proto*/
CYTHON_UNUSED static int __pyx_pw_7netCDF4_8_netCDF4_7_MemBuf_1__getbuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_buf, 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_7netCDF4_8_netCDF4_7_MemBuf___getbuffer__(((struct __pyx_obj_7netCDF4_8_netCDF4__MemBuf *)__pyx_v_self), ((Py_buffer *)__pyx_v_buf), ((int)__pyx_v_flags));

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

static int __pyx_pf_7netCDF4_8_netCDF4_7_MemBuf___getbuffer__(struct __pyx_obj_7netCDF4_8_netCDF4__MemBuf *__pyx_v_self, Py_buffer *__pyx_v_buf, int __pyx_v_flags) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  if (unlikely(__pyx_v_buf == NULL)) {
    PyErr_SetString(PyExc_BufferError, "PyObject_GetBuffer: view==NULL argument is obsolete");
    return -1;
  }
  __Pyx_RefNannySetupContext("__getbuffer__", 0);
  __pyx_v_buf->obj = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(__pyx_v_buf->obj);

  /* "include/membuf.pyx":20
 *     cdef size_t size
 *     def __getbuffer__(self, Py_buffer *buf, int flags):
 *         PyBuffer_FillInfo(buf, self, <void *>self.memory, self.size, 1, flags)             # <<<<<<<<<<<<<<
 *     def __releasebuffer__(self, Py_buffer *buf):
 *         # why doesn't this do anything??
*/
  __pyx_t_1 = PyBuffer_FillInfo(__pyx_v_buf, ((PyObject *)__pyx_v_self), ((void *)__pyx_v_self->memory), __pyx_v_self->size, 1, __pyx_v_flags); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(2, 20, __pyx_L1_error)

  /* "include/membuf.pyx":19
 *     cdef const void *memory
 *     cdef size_t size
 *     def __getbuffer__(self, Py_buffer *buf, int flags):             # <<<<<<<<<<<<<<
 *         PyBuffer_FillInfo(buf, self, <void *>self.memory, self.size, 1, flags)
 *     def __releasebuffer__(self, Py_buffer *buf):
*/

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("netCDF4._netCDF4._MemBuf.__getbuffer__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  if (__pyx_v_buf->obj != NULL) {
    __Pyx_GOTREF(__pyx_v_buf->obj);
    __Pyx_DECREF(__pyx_v_buf->obj); __pyx_v_buf->obj = 0;
  }
  goto __pyx_L2;
  __pyx_L0:;
  if (__pyx_v_buf->obj == Py_None) {
    __Pyx_GOTREF(__pyx_v_buf->obj);
    __Pyx_DECREF(__pyx_v_buf->obj); __pyx_v_buf->obj = 0;
  }
  __pyx_L2:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/membuf.pyx":21
 *     def __getbuffer__(self, Py_buffer *buf, int flags):
 *         PyBuffer_FillInfo(buf, self, <void *>self.memory, self.size, 1, flags)
 *     def __releasebuffer__(self, Py_buffer *buf):             # <<<<<<<<<<<<<<
 *         # why doesn't this do anything??
 *         pass
*/

/* Python wrapper */
CYTHON_UNUSED static void __pyx_pw_7netCDF4_8_netCDF4_7_MemBuf_3__releasebuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_buf); /*proto*/
CYTHON_UNUSED static void __pyx_pw_7netCDF4_8_netCDF4_7_MemBuf_3__releasebuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_buf) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__releasebuffer__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_pf_7netCDF4_8_netCDF4_7_MemBuf_2__releasebuffer__(((struct __pyx_obj_7netCDF4_8_netCDF4__MemBuf *)__pyx_v_self), ((Py_buffer *)__pyx_v_buf));

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

static void __pyx_pf_7netCDF4_8_netCDF4_7_MemBuf_2__releasebuffer__(CYTHON_UNUSED struct __pyx_obj_7netCDF4_8_netCDF4__MemBuf *__pyx_v_self, CYTHON_UNUSED Py_buffer *__pyx_v_buf) {

  /* function exit code */
}

/* "include/membuf.pyx":24
 *         # why doesn't this do anything??
 *         pass
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         free(self.memory)
*/

/* Python wrapper */
static void __pyx_pw_7netCDF4_8_netCDF4_7_MemBuf_5__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_7netCDF4_8_netCDF4_7_MemBuf_5__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_7netCDF4_8_netCDF4_7_MemBuf_4__dealloc__(((struct __pyx_obj_7netCDF4_8_netCDF4__MemBuf *)__pyx_v_self));

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

static void __pyx_pf_7netCDF4_8_netCDF4_7_MemBuf_4__dealloc__(struct __pyx_obj_7netCDF4_8_netCDF4__MemBuf *__pyx_v_self) {

  /* "include/membuf.pyx":25
 *         pass
 *     def __dealloc__(self):
 *         free(self.memory)             # <<<<<<<<<<<<<<
*/
  free(__pyx_v_self->memory);

  /* "include/membuf.pyx":24
 *         # why doesn't this do anything??
 *         pass
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         free(self.memory)
*/

  /* function exit code */
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.memory cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7_MemBuf_7__reduce_cython__(PyObject *__pyx_v_self, 
#if 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_7netCDF4_8_netCDF4_7_MemBuf_7__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7_MemBuf_7__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7_MemBuf_7__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_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_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (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_cython__", 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_cython__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_7_MemBuf_6__reduce_cython__(((struct __pyx_obj_7netCDF4_8_netCDF4__MemBuf *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7_MemBuf_6__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7netCDF4_8_netCDF4__MemBuf *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self.memory cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self.memory cannot be converted to a Python object for pickling"
*/
  __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_self_memory_cannot_be_converted, 0, 0);
  __PYX_ERR(3, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.memory cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("netCDF4._netCDF4._MemBuf.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self.memory cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.memory cannot be converted to a Python object for pickling"
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7_MemBuf_9__setstate_cython__(PyObject *__pyx_v_self, 
#if 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_7netCDF4_8_netCDF4_7_MemBuf_9__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7_MemBuf_9__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7_MemBuf_9__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_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_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_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(3, 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(3, 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, "__setstate_cython__", 0) < (0)) __PYX_ERR(3, 3, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(3, 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(3, 3, __pyx_L3_error)
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(3, 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("netCDF4._netCDF4._MemBuf.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_7_MemBuf_8__setstate_cython__(((struct __pyx_obj_7netCDF4_8_netCDF4__MemBuf *)__pyx_v_self), __pyx_v___pyx_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_7netCDF4_8_netCDF4_7_MemBuf_8__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7netCDF4_8_netCDF4__MemBuf *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self.memory cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self.memory cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
*/
  __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_self_memory_cannot_be_converted, 0, 0);
  __PYX_ERR(3, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self.memory cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.memory cannot be converted to a Python object for pickling"
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("netCDF4._netCDF4._MemBuf.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":1321
 *         raise RuntimeError('error setting path to SSL certificates')
 * 
 * def rc_get(key):             # <<<<<<<<<<<<<<
 *     """
 * **```rc_get(key)```**
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_1rc_get(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_7netCDF4_8_netCDF4_rc_get, "\n**```rc_get(key)```**\n\nReturns the internal netcdf-c rc table value corresponding to key.\nSee <https://docs.unidata.ucar.edu/netcdf-c/current/md_auth.html>\nfor more information on rc files and values.\n    ");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_1rc_get = {"rc_get", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_1rc_get, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_rc_get};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_1rc_get(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_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("rc_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(0, 1321, __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(0, 1321, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "rc_get", 0) < (0)) __PYX_ERR(0, 1321, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("rc_get", 1, 1, 1, i); __PYX_ERR(0, 1321, __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(0, 1321, __pyx_L3_error)
    }
    __pyx_v_key = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("rc_get", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 1321, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4.rc_get", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_rc_get(__pyx_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_7netCDF4_8_netCDF4_rc_get(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_key) {
  char *__pyx_v_keyc;
  char *__pyx_v_valc;
  PyObject *__pyx_v_bytestr = NULL;
  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;
  char *__pyx_t_6;
  Py_ssize_t __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("rc_get", 0);

  /* "netCDF4/_netCDF4.pyx":1332
 *     cdef char *keyc
 *     cdef char *valc
 *     if __has_nc_rc_set__:             # <<<<<<<<<<<<<<
 *         bytestr = _strencode(_tostr(key))
 *         keyc = bytestr
*/
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_has_nc_rc_set); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1332, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 1332, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (likely(__pyx_t_2)) {

    /* "netCDF4/_netCDF4.pyx":1333
 *     cdef char *valc
 *     if __has_nc_rc_set__:
 *         bytestr = _strencode(_tostr(key))             # <<<<<<<<<<<<<<
 *         keyc = bytestr
 *         valc = <char *>nc_rc_get(keyc)
*/
    __pyx_t_3 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_tostr); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1333, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __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, __pyx_v_key};
      __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_5, (2-__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(0, 1333, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __pyx_t_4 = __pyx_f_7netCDF4_8_netCDF4__strencode(__pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1333, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_v_bytestr = __pyx_t_4;
    __pyx_t_4 = 0;

    /* "netCDF4/_netCDF4.pyx":1334
 *     if __has_nc_rc_set__:
 *         bytestr = _strencode(_tostr(key))
 *         keyc = bytestr             # <<<<<<<<<<<<<<
 *         valc = <char *>nc_rc_get(keyc)
 *         if valc is NULL:
*/
    __pyx_t_6 = __Pyx_PyObject_AsWritableString(__pyx_v_bytestr); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(0, 1334, __pyx_L1_error)
    __pyx_v_keyc = __pyx_t_6;

    /* "netCDF4/_netCDF4.pyx":1335
 *         bytestr = _strencode(_tostr(key))
 *         keyc = bytestr
 *         valc = <char *>nc_rc_get(keyc)             # <<<<<<<<<<<<<<
 *         if valc is NULL:
 *             return None
*/
    __pyx_v_valc = ((char *)nc_rc_get(__pyx_v_keyc));

    /* "netCDF4/_netCDF4.pyx":1336
 *         keyc = bytestr
 *         valc = <char *>nc_rc_get(keyc)
 *         if valc is NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         else:
*/
    __pyx_t_2 = (__pyx_v_valc == NULL);
    if (__pyx_t_2) {

      /* "netCDF4/_netCDF4.pyx":1337
 *         valc = <char *>nc_rc_get(keyc)
 *         if valc is NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         else:
 *             return valc.decode('utf-8')
*/
      __Pyx_XDECREF(__pyx_r);
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;

      /* "netCDF4/_netCDF4.pyx":1336
 *         keyc = bytestr
 *         valc = <char *>nc_rc_get(keyc)
 *         if valc is NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         else:
*/
    }

    /* "netCDF4/_netCDF4.pyx":1339
 *             return None
 *         else:
 *             return valc.decode('utf-8')             # <<<<<<<<<<<<<<
 *     else:
 *         raise RuntimeError(
*/
    /*else*/ {
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_7 = __Pyx_ssize_strlen(__pyx_v_valc); if (unlikely(__pyx_t_7 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1339, __pyx_L1_error)
      __pyx_t_4 = __Pyx_decode_c_string(__pyx_v_valc, 0, __pyx_t_7, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1339, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_r = __pyx_t_4;
      __pyx_t_4 = 0;
      goto __pyx_L0;
    }

    /* "netCDF4/_netCDF4.pyx":1332
 *     cdef char *keyc
 *     cdef char *valc
 *     if __has_nc_rc_set__:             # <<<<<<<<<<<<<<
 *         bytestr = _strencode(_tostr(key))
 *         keyc = bytestr
*/
  }

  /* "netCDF4/_netCDF4.pyx":1341
 *             return valc.decode('utf-8')
 *     else:
 *         raise RuntimeError(             # <<<<<<<<<<<<<<
 *             "This function requires netcdf-c 4.9.0+ to be used at compile time"
 *         )
*/
  /*else*/ {
    __pyx_t_1 = NULL;
    __pyx_t_5 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_mstate_global->__pyx_kp_u_This_function_requires_netcdf_c};
      __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_RuntimeError)), __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1341, __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(0, 1341, __pyx_L1_error)
  }

  /* "netCDF4/_netCDF4.pyx":1321
 *         raise RuntimeError('error setting path to SSL certificates')
 * 
 * def rc_get(key):             # <<<<<<<<<<<<<<
 *     """
 * **```rc_get(key)```**
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("netCDF4._netCDF4.rc_get", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_bytestr);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":1345
 *         )
 * 
 * def rc_set(key, value):             # <<<<<<<<<<<<<<
 *     """
 * **```rc_set(key, value)```**
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_3rc_set(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_7netCDF4_8_netCDF4_2rc_set, "\n**```rc_set(key, value)```**\n\nSets the internal netcdf-c rc table value corresponding to key.\nSee <https://docs.unidata.ucar.edu/netcdf-c/current/md_auth.html>\nfor more information on rc files and values.\n    ");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_3rc_set = {"rc_set", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_3rc_set, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_2rc_set};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_3rc_set(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_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("rc_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(0, 1345, __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(0, 1345, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1345, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "rc_set", 0) < (0)) __PYX_ERR(0, 1345, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("rc_set", 1, 2, 2, i); __PYX_ERR(0, 1345, __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(0, 1345, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 1345, __pyx_L3_error)
    }
    __pyx_v_key = values[0];
    __pyx_v_value = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("rc_set", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 1345, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4.rc_set", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_2rc_set(__pyx_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_7netCDF4_8_netCDF4_2rc_set(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_key, PyObject *__pyx_v_value) {
  int __pyx_v_ierr;
  char *__pyx_v_keyc;
  char *__pyx_v_valuec;
  PyObject *__pyx_v_key_bytestr = NULL;
  PyObject *__pyx_v_val_bytestr = NULL;
  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;
  char *__pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("rc_set", 0);

  /* "netCDF4/_netCDF4.pyx":1356
 *     cdef char *keyc
 *     cdef char *valuec
 *     if __has_nc_rc_set__:             # <<<<<<<<<<<<<<
 *         key_bytestr = _strencode(_tostr(key))
 *         keyc = key_bytestr
*/
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_has_nc_rc_set); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1356, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 1356, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (likely(__pyx_t_2)) {

    /* "netCDF4/_netCDF4.pyx":1357
 *     cdef char *valuec
 *     if __has_nc_rc_set__:
 *         key_bytestr = _strencode(_tostr(key))             # <<<<<<<<<<<<<<
 *         keyc = key_bytestr
 *         val_bytestr = _strencode(_tostr(value))
*/
    __pyx_t_3 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_tostr); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1357, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __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, __pyx_v_key};
      __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_5, (2-__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(0, 1357, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __pyx_t_4 = __pyx_f_7netCDF4_8_netCDF4__strencode(__pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1357, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_v_key_bytestr = __pyx_t_4;
    __pyx_t_4 = 0;

    /* "netCDF4/_netCDF4.pyx":1358
 *     if __has_nc_rc_set__:
 *         key_bytestr = _strencode(_tostr(key))
 *         keyc = key_bytestr             # <<<<<<<<<<<<<<
 *         val_bytestr = _strencode(_tostr(value))
 *         valuec = val_bytestr
*/
    __pyx_t_6 = __Pyx_PyObject_AsWritableString(__pyx_v_key_bytestr); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(0, 1358, __pyx_L1_error)
    __pyx_v_keyc = __pyx_t_6;

    /* "netCDF4/_netCDF4.pyx":1359
 *         key_bytestr = _strencode(_tostr(key))
 *         keyc = key_bytestr
 *         val_bytestr = _strencode(_tostr(value))             # <<<<<<<<<<<<<<
 *         valuec = val_bytestr
 *         with nogil:
*/
    __pyx_t_1 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_tostr); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1359, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_5 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(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_5 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_v_value};
      __pyx_t_4 = __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_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1359, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
    }
    __pyx_t_3 = __pyx_f_7netCDF4_8_netCDF4__strencode(__pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1359, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_val_bytestr = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "netCDF4/_netCDF4.pyx":1360
 *         keyc = key_bytestr
 *         val_bytestr = _strencode(_tostr(value))
 *         valuec = val_bytestr             # <<<<<<<<<<<<<<
 *         with nogil:
 *             ierr = nc_rc_set(keyc,valuec)
*/
    __pyx_t_6 = __Pyx_PyObject_AsWritableString(__pyx_v_val_bytestr); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(0, 1360, __pyx_L1_error)
    __pyx_v_valuec = __pyx_t_6;

    /* "netCDF4/_netCDF4.pyx":1361
 *         val_bytestr = _strencode(_tostr(value))
 *         valuec = val_bytestr
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_rc_set(keyc,valuec)
 *         _ensure_nc_success(ierr)
*/
    {
        PyThreadState * _save;
        _save = PyEval_SaveThread();
        __Pyx_FastGIL_Remember();
        /*try:*/ {

          /* "netCDF4/_netCDF4.pyx":1362
 *         valuec = val_bytestr
 *         with nogil:
 *             ierr = nc_rc_set(keyc,valuec)             # <<<<<<<<<<<<<<
 *         _ensure_nc_success(ierr)
 *     else:
*/
          __pyx_v_ierr = nc_rc_set(__pyx_v_keyc, __pyx_v_valuec);
        }

        /* "netCDF4/_netCDF4.pyx":1361
 *         val_bytestr = _strencode(_tostr(value))
 *         valuec = val_bytestr
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_rc_set(keyc,valuec)
 *         _ensure_nc_success(ierr)
*/
        /*finally:*/ {
          /*normal exit:*/{
            __Pyx_FastGIL_Forget();
            PyEval_RestoreThread(_save);
            goto __pyx_L6;
          }
          __pyx_L6:;
        }
    }

    /* "netCDF4/_netCDF4.pyx":1363
 *         with nogil:
 *             ierr = nc_rc_set(keyc,valuec)
 *         _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 *     else:
 *         raise RuntimeError(
*/
    __pyx_t_4 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1363, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_7 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1363, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_5 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_1))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1);
      assert(__pyx_t_4);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_1, __pyx__function);
      __pyx_t_5 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_7};
      __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_1, __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_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1363, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "netCDF4/_netCDF4.pyx":1356
 *     cdef char *keyc
 *     cdef char *valuec
 *     if __has_nc_rc_set__:             # <<<<<<<<<<<<<<
 *         key_bytestr = _strencode(_tostr(key))
 *         keyc = key_bytestr
*/
    goto __pyx_L3;
  }

  /* "netCDF4/_netCDF4.pyx":1365
 *         _ensure_nc_success(ierr)
 *     else:
 *         raise RuntimeError(             # <<<<<<<<<<<<<<
 *             "This function requires netcdf-c 4.9.0+ to be used at compile time"
 *         )
*/
  /*else*/ {
    __pyx_t_1 = NULL;
    __pyx_t_5 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_mstate_global->__pyx_kp_u_This_function_requires_netcdf_c};
      __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_RuntimeError)), __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1365, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(0, 1365, __pyx_L1_error)
  }
  __pyx_L3:;

  /* "netCDF4/_netCDF4.pyx":1345
 *         )
 * 
 * def rc_set(key, value):             # <<<<<<<<<<<<<<
 *     """
 * **```rc_set(key, value)```**
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("netCDF4._netCDF4.rc_set", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_key_bytestr);
  __Pyx_XDECREF(__pyx_v_val_bytestr);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":1372
 * 
 * # check for required version of netcdf-4 and hdf5.
 * def _gethdf5libversion():             # <<<<<<<<<<<<<<
 *     cdef unsigned int majorvers, minorvers, releasevers
 *     cdef herr_t ierr
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_5_gethdf5libversion(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_5_gethdf5libversion = {"_gethdf5libversion", (PyCFunction)__pyx_pw_7netCDF4_8_netCDF4_5_gethdf5libversion, METH_NOARGS, 0};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_5_gethdf5libversion(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_gethdf5libversion (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_4_gethdf5libversion(__pyx_self);

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_4_gethdf5libversion(CYTHON_UNUSED PyObject *__pyx_self) {
  unsigned int __pyx_v_majorvers;
  unsigned int __pyx_v_minorvers;
  unsigned int __pyx_v_releasevers;
  herr_t __pyx_v_ierr;
  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;
  PyObject *__pyx_t_6[5];
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_gethdf5libversion", 0);

  /* "netCDF4/_netCDF4.pyx":1375
 *     cdef unsigned int majorvers, minorvers, releasevers
 *     cdef herr_t ierr
 *     with nogil:             # <<<<<<<<<<<<<<
 *         ierr = H5get_libversion( &majorvers, &minorvers, &releasevers)
 *     if ierr != 0:
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "netCDF4/_netCDF4.pyx":1376
 *     cdef herr_t ierr
 *     with nogil:
 *         ierr = H5get_libversion( &majorvers, &minorvers, &releasevers)             # <<<<<<<<<<<<<<
 *     if ierr != 0:
 *         raise RuntimeError('error getting HDF5 library version info')
*/
        __pyx_v_ierr = H5get_libversion((&__pyx_v_majorvers), (&__pyx_v_minorvers), (&__pyx_v_releasevers));
      }

      /* "netCDF4/_netCDF4.pyx":1375
 *     cdef unsigned int majorvers, minorvers, releasevers
 *     cdef herr_t ierr
 *     with nogil:             # <<<<<<<<<<<<<<
 *         ierr = H5get_libversion( &majorvers, &minorvers, &releasevers)
 *     if ierr != 0:
*/
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "netCDF4/_netCDF4.pyx":1377
 *     with nogil:
 *         ierr = H5get_libversion( &majorvers, &minorvers, &releasevers)
 *     if ierr != 0:             # <<<<<<<<<<<<<<
 *         raise RuntimeError('error getting HDF5 library version info')
 *     return '%d.%d.%d' % (majorvers,minorvers,releasevers)
*/
  __pyx_t_1 = (__pyx_v_ierr != 0);
  if (unlikely(__pyx_t_1)) {

    /* "netCDF4/_netCDF4.pyx":1378
 *         ierr = H5get_libversion( &majorvers, &minorvers, &releasevers)
 *     if ierr != 0:
 *         raise RuntimeError('error getting HDF5 library version info')             # <<<<<<<<<<<<<<
 *     return '%d.%d.%d' % (majorvers,minorvers,releasevers)
 * 
*/
    __pyx_t_3 = NULL;
    __pyx_t_4 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_error_getting_HDF5_library_versi};
      __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(0, 1378, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(0, 1378, __pyx_L1_error)

    /* "netCDF4/_netCDF4.pyx":1377
 *     with nogil:
 *         ierr = H5get_libversion( &majorvers, &minorvers, &releasevers)
 *     if ierr != 0:             # <<<<<<<<<<<<<<
 *         raise RuntimeError('error getting HDF5 library version info')
 *     return '%d.%d.%d' % (majorvers,minorvers,releasevers)
*/
  }

  /* "netCDF4/_netCDF4.pyx":1379
 *     if ierr != 0:
 *         raise RuntimeError('error getting HDF5 library version info')
 *     return '%d.%d.%d' % (majorvers,minorvers,releasevers)             # <<<<<<<<<<<<<<
 * 
 * def getlibversion():
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyUnicode_From_unsigned_int(__pyx_v_majorvers, 0, ' ', 'd'); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1379, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyUnicode_From_unsigned_int(__pyx_v_minorvers, 0, ' ', 'd'); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1379, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyUnicode_From_unsigned_int(__pyx_v_releasevers, 0, ' ', 'd'); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1379, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6[0] = __pyx_t_2;
  __pyx_t_6[1] = __pyx_mstate_global->__pyx_kp_u_;
  __pyx_t_6[2] = __pyx_t_3;
  __pyx_t_6[3] = __pyx_mstate_global->__pyx_kp_u_;
  __pyx_t_6[4] = __pyx_t_5;
  __pyx_t_7 = __Pyx_PyUnicode_Join(__pyx_t_6, 5, __Pyx_PyUnicode_GET_LENGTH(__pyx_t_2) + 1 * 2 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5), 127);
  if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1379, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_r = __pyx_t_7;
  __pyx_t_7 = 0;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":1372
 * 
 * # check for required version of netcdf-4 and hdf5.
 * def _gethdf5libversion():             # <<<<<<<<<<<<<<
 *     cdef unsigned int majorvers, minorvers, releasevers
 *     cdef herr_t ierr
*/

  /* 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_7);
  __Pyx_AddTraceback("netCDF4._netCDF4._gethdf5libversion", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":1381
 *     return '%d.%d.%d' % (majorvers,minorvers,releasevers)
 * 
 * def getlibversion():             # <<<<<<<<<<<<<<
 *     """
 * **```getlibversion()```**
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7getlibversion(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
PyDoc_STRVAR(__pyx_doc_7netCDF4_8_netCDF4_6getlibversion, "\n**```getlibversion()```**\n\nreturns a string describing the version of the netcdf library\nused to build the module, and when it was built.\n    ");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_7getlibversion = {"getlibversion", (PyCFunction)__pyx_pw_7netCDF4_8_netCDF4_7getlibversion, METH_NOARGS, __pyx_doc_7netCDF4_8_netCDF4_6getlibversion};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7getlibversion(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getlibversion (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_6getlibversion(__pyx_self);

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6getlibversion(CYTHON_UNUSED PyObject *__pyx_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  char *__pyx_t_1;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getlibversion", 0);

  /* "netCDF4/_netCDF4.pyx":1388
 * used to build the module, and when it was built.
 *     """
 *     return (<char *>nc_inq_libvers()).decode('ascii')             # <<<<<<<<<<<<<<
 * 
 * def get_chunk_cache():
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((char *)nc_inq_libvers());
  __pyx_t_2 = __Pyx_ssize_strlen(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1388, __pyx_L1_error)
  __pyx_t_3 = __Pyx_decode_c_string(__pyx_t_1, 0, __pyx_t_2, NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1388, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":1381
 *     return '%d.%d.%d' % (majorvers,minorvers,releasevers)
 * 
 * def getlibversion():             # <<<<<<<<<<<<<<
 *     """
 * **```getlibversion()```**
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("netCDF4._netCDF4.getlibversion", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":1390
 *     return (<char *>nc_inq_libvers()).decode('ascii')
 * 
 * def get_chunk_cache():             # <<<<<<<<<<<<<<
 *     """
 * **```get_chunk_cache()```**
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9get_chunk_cache(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
PyDoc_STRVAR(__pyx_doc_7netCDF4_8_netCDF4_8get_chunk_cache, "\n**```get_chunk_cache()```**\n\nreturn current netCDF chunk cache information in a tuple (size,nelems,preemption).\nSee netcdf C library documentation for `nc_get_chunk_cache` for\ndetails. Values can be reset with `set_chunk_cache`.");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_9get_chunk_cache = {"get_chunk_cache", (PyCFunction)__pyx_pw_7netCDF4_8_netCDF4_9get_chunk_cache, METH_NOARGS, __pyx_doc_7netCDF4_8_netCDF4_8get_chunk_cache};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9get_chunk_cache(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_chunk_cache (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_8get_chunk_cache(__pyx_self);

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8get_chunk_cache(CYTHON_UNUSED PyObject *__pyx_self) {
  int __pyx_v_ierr;
  size_t __pyx_v_sizep;
  size_t __pyx_v_nelemsp;
  float __pyx_v_preemptionp;
  size_t __pyx_v_size;
  size_t __pyx_v_nelems;
  float __pyx_v_preemption;
  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_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("get_chunk_cache", 0);

  /* "netCDF4/_netCDF4.pyx":1400
 *     cdef size_t sizep, nelemsp
 *     cdef float preemptionp
 *     with nogil:             # <<<<<<<<<<<<<<
 *         ierr = nc_get_chunk_cache(&sizep, &nelemsp, &preemptionp)
 *     _ensure_nc_success(ierr)
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "netCDF4/_netCDF4.pyx":1401
 *     cdef float preemptionp
 *     with nogil:
 *         ierr = nc_get_chunk_cache(&sizep, &nelemsp, &preemptionp)             # <<<<<<<<<<<<<<
 *     _ensure_nc_success(ierr)
 *     size = sizep; nelems = nelemsp; preemption = preemptionp
*/
        __pyx_v_ierr = nc_get_chunk_cache((&__pyx_v_sizep), (&__pyx_v_nelemsp), (&__pyx_v_preemptionp));
      }

      /* "netCDF4/_netCDF4.pyx":1400
 *     cdef size_t sizep, nelemsp
 *     cdef float preemptionp
 *     with nogil:             # <<<<<<<<<<<<<<
 *         ierr = nc_get_chunk_cache(&sizep, &nelemsp, &preemptionp)
 *     _ensure_nc_success(ierr)
*/
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "netCDF4/_netCDF4.pyx":1402
 *     with nogil:
 *         ierr = nc_get_chunk_cache(&sizep, &nelemsp, &preemptionp)
 *     _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 *     size = sizep; nelems = nelemsp; preemption = preemptionp
 *     return (size,nelems,preemption)
*/
  __pyx_t_2 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1402, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1402, __pyx_L1_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[2] = {__pyx_t_2, __pyx_t_4};
    __pyx_t_1 = __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_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(0, 1402, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":1403
 *         ierr = nc_get_chunk_cache(&sizep, &nelemsp, &preemptionp)
 *     _ensure_nc_success(ierr)
 *     size = sizep; nelems = nelemsp; preemption = preemptionp             # <<<<<<<<<<<<<<
 *     return (size,nelems,preemption)
 * 
*/
  __pyx_v_size = __pyx_v_sizep;
  __pyx_v_nelems = __pyx_v_nelemsp;
  __pyx_v_preemption = __pyx_v_preemptionp;

  /* "netCDF4/_netCDF4.pyx":1404
 *     _ensure_nc_success(ierr)
 *     size = sizep; nelems = nelemsp; preemption = preemptionp
 *     return (size,nelems,preemption)             # <<<<<<<<<<<<<<
 * 
 * def set_chunk_cache(size=None,nelems=None,preemption=None):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_FromSize_t(__pyx_v_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1404, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyLong_FromSize_t(__pyx_v_nelems); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1404, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyFloat_FromDouble(__pyx_v_preemption); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1404, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1404, __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(0, 1404, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_3) != (0)) __PYX_ERR(0, 1404, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_4);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_t_4) != (0)) __PYX_ERR(0, 1404, __pyx_L1_error);
  __pyx_t_1 = 0;
  __pyx_t_3 = 0;
  __pyx_t_4 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":1390
 *     return (<char *>nc_inq_libvers()).decode('ascii')
 * 
 * def get_chunk_cache():             # <<<<<<<<<<<<<<
 *     """
 * **```get_chunk_cache()```**
*/

  /* 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("netCDF4._netCDF4.get_chunk_cache", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":1406
 *     return (size,nelems,preemption)
 * 
 * def set_chunk_cache(size=None,nelems=None,preemption=None):             # <<<<<<<<<<<<<<
 *     """
 * **```set_chunk_cache(size=None,nelems=None,preemption=None)```**
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_11set_chunk_cache(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_7netCDF4_8_netCDF4_10set_chunk_cache, "\n**```set_chunk_cache(size=None,nelems=None,preemption=None)```**\n\nchange netCDF4 chunk cache settings.\nSee netcdf C library documentation for `nc_set_chunk_cache` for\ndetails.");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_11set_chunk_cache = {"set_chunk_cache", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_11set_chunk_cache, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_10set_chunk_cache};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_11set_chunk_cache(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_size = 0;
  PyObject *__pyx_v_nelems = 0;
  PyObject *__pyx_v_preemption = 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("set_chunk_cache (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 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,&__pyx_mstate_global->__pyx_n_u_nelems,&__pyx_mstate_global->__pyx_n_u_preemption,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 1406, __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(0, 1406, __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(0, 1406, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1406, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_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_chunk_cache", 0) < (0)) __PYX_ERR(0, 1406, __pyx_L3_error)
      if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[2]) values[2] = __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(0, 1406, __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(0, 1406, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1406, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None));
    }
    __pyx_v_size = values[0];
    __pyx_v_nelems = values[1];
    __pyx_v_preemption = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("set_chunk_cache", 0, 0, 3, __pyx_nargs); __PYX_ERR(0, 1406, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4.set_chunk_cache", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_10set_chunk_cache(__pyx_self, __pyx_v_size, __pyx_v_nelems, __pyx_v_preemption);

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_10set_chunk_cache(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_size, PyObject *__pyx_v_nelems, PyObject *__pyx_v_preemption) {
  int __pyx_v_ierr;
  size_t __pyx_v_sizep;
  size_t __pyx_v_nelemsp;
  float __pyx_v_preemptionp;
  PyObject *__pyx_v_size_orig = NULL;
  PyObject *__pyx_v_nelems_orig = NULL;
  PyObject *__pyx_v_preemption_orig = NULL;
  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)(PyObject *);
  int __pyx_t_8;
  float __pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("set_chunk_cache", 0);

  /* "netCDF4/_netCDF4.pyx":1417
 *     cdef float preemptionp
 *     # reset chunk cache size, leave other parameters unchanged.
 *     size_orig, nelems_orig, preemption_orig = get_chunk_cache()             # <<<<<<<<<<<<<<
 *     if size is not None:
 *         sizep = size
*/
  __pyx_t_2 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_get_chunk_cache); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1417, __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[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_3, __pyx_callargs+__pyx_t_4, (1-__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(0, 1417, __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 != 3)) {
      if (size > 3) __Pyx_RaiseTooManyValuesError(3);
      else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
      __PYX_ERR(0, 1417, __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_2 = PyTuple_GET_ITEM(sequence, 1);
      __Pyx_INCREF(__pyx_t_2);
      __pyx_t_5 = PyTuple_GET_ITEM(sequence, 2);
      __Pyx_INCREF(__pyx_t_5);
    } else {
      __pyx_t_3 = __Pyx_PyList_GetItemRefFast(sequence, 0, __Pyx_ReferenceSharing_SharedReference);
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1417, __pyx_L1_error)
      __Pyx_XGOTREF(__pyx_t_3);
      __pyx_t_2 = __Pyx_PyList_GetItemRefFast(sequence, 1, __Pyx_ReferenceSharing_SharedReference);
      if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1417, __pyx_L1_error)
      __Pyx_XGOTREF(__pyx_t_2);
      __pyx_t_5 = __Pyx_PyList_GetItemRefFast(sequence, 2, __Pyx_ReferenceSharing_SharedReference);
      if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1417, __pyx_L1_error)
      __Pyx_XGOTREF(__pyx_t_5);
    }
    #else
    __pyx_t_3 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1417, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_2 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1417, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_5 = __Pyx_PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1417, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    #endif
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  } else {
    Py_ssize_t index = -1;
    __pyx_t_6 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1417, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_7 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_6);
    index = 0; __pyx_t_3 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_3)) goto __pyx_L3_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_3);
    index = 1; __pyx_t_2 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_2);
    index = 2; __pyx_t_5 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_5)) goto __pyx_L3_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_5);
    if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 3) < (0)) __PYX_ERR(0, 1417, __pyx_L1_error)
    __pyx_t_7 = NULL;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    goto __pyx_L4_unpacking_done;
    __pyx_L3_unpacking_failed:;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_7 = NULL;
    if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
    __PYX_ERR(0, 1417, __pyx_L1_error)
    __pyx_L4_unpacking_done:;
  }
  __pyx_v_size_orig = __pyx_t_3;
  __pyx_t_3 = 0;
  __pyx_v_nelems_orig = __pyx_t_2;
  __pyx_t_2 = 0;
  __pyx_v_preemption_orig = __pyx_t_5;
  __pyx_t_5 = 0;

  /* "netCDF4/_netCDF4.pyx":1418
 *     # reset chunk cache size, leave other parameters unchanged.
 *     size_orig, nelems_orig, preemption_orig = get_chunk_cache()
 *     if size is not None:             # <<<<<<<<<<<<<<
 *         sizep = size
 *     else:
*/
  __pyx_t_8 = (__pyx_v_size != Py_None);
  if (__pyx_t_8) {

    /* "netCDF4/_netCDF4.pyx":1419
 *     size_orig, nelems_orig, preemption_orig = get_chunk_cache()
 *     if size is not None:
 *         sizep = size             # <<<<<<<<<<<<<<
 *     else:
 *         sizep = size_orig
*/
    __pyx_t_4 = __Pyx_PyLong_As_size_t(__pyx_v_size); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1419, __pyx_L1_error)
    __pyx_v_sizep = __pyx_t_4;

    /* "netCDF4/_netCDF4.pyx":1418
 *     # reset chunk cache size, leave other parameters unchanged.
 *     size_orig, nelems_orig, preemption_orig = get_chunk_cache()
 *     if size is not None:             # <<<<<<<<<<<<<<
 *         sizep = size
 *     else:
*/
    goto __pyx_L5;
  }

  /* "netCDF4/_netCDF4.pyx":1421
 *         sizep = size
 *     else:
 *         sizep = size_orig             # <<<<<<<<<<<<<<
 *     if nelems is not None:
 *         nelemsp = nelems
*/
  /*else*/ {
    __pyx_t_4 = __Pyx_PyLong_As_size_t(__pyx_v_size_orig); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1421, __pyx_L1_error)
    __pyx_v_sizep = __pyx_t_4;
  }
  __pyx_L5:;

  /* "netCDF4/_netCDF4.pyx":1422
 *     else:
 *         sizep = size_orig
 *     if nelems is not None:             # <<<<<<<<<<<<<<
 *         nelemsp = nelems
 *     else:
*/
  __pyx_t_8 = (__pyx_v_nelems != Py_None);
  if (__pyx_t_8) {

    /* "netCDF4/_netCDF4.pyx":1423
 *         sizep = size_orig
 *     if nelems is not None:
 *         nelemsp = nelems             # <<<<<<<<<<<<<<
 *     else:
 *         nelemsp = nelems_orig
*/
    __pyx_t_4 = __Pyx_PyLong_As_size_t(__pyx_v_nelems); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1423, __pyx_L1_error)
    __pyx_v_nelemsp = __pyx_t_4;

    /* "netCDF4/_netCDF4.pyx":1422
 *     else:
 *         sizep = size_orig
 *     if nelems is not None:             # <<<<<<<<<<<<<<
 *         nelemsp = nelems
 *     else:
*/
    goto __pyx_L6;
  }

  /* "netCDF4/_netCDF4.pyx":1425
 *         nelemsp = nelems
 *     else:
 *         nelemsp = nelems_orig             # <<<<<<<<<<<<<<
 *     if preemption is not None:
 *         preemptionp = preemption
*/
  /*else*/ {
    __pyx_t_4 = __Pyx_PyLong_As_size_t(__pyx_v_nelems_orig); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1425, __pyx_L1_error)
    __pyx_v_nelemsp = __pyx_t_4;
  }
  __pyx_L6:;

  /* "netCDF4/_netCDF4.pyx":1426
 *     else:
 *         nelemsp = nelems_orig
 *     if preemption is not None:             # <<<<<<<<<<<<<<
 *         preemptionp = preemption
 *     else:
*/
  __pyx_t_8 = (__pyx_v_preemption != Py_None);
  if (__pyx_t_8) {

    /* "netCDF4/_netCDF4.pyx":1427
 *         nelemsp = nelems_orig
 *     if preemption is not None:
 *         preemptionp = preemption             # <<<<<<<<<<<<<<
 *     else:
 *         preemptionp = preemption_orig
*/
    __pyx_t_9 = __Pyx_PyFloat_AsFloat(__pyx_v_preemption); if (unlikely((__pyx_t_9 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 1427, __pyx_L1_error)
    __pyx_v_preemptionp = __pyx_t_9;

    /* "netCDF4/_netCDF4.pyx":1426
 *     else:
 *         nelemsp = nelems_orig
 *     if preemption is not None:             # <<<<<<<<<<<<<<
 *         preemptionp = preemption
 *     else:
*/
    goto __pyx_L7;
  }

  /* "netCDF4/_netCDF4.pyx":1429
 *         preemptionp = preemption
 *     else:
 *         preemptionp = preemption_orig             # <<<<<<<<<<<<<<
 *     with nogil:
 *         ierr = nc_set_chunk_cache(sizep,nelemsp, preemptionp)
*/
  /*else*/ {
    __pyx_t_9 = __Pyx_PyFloat_AsFloat(__pyx_v_preemption_orig); if (unlikely((__pyx_t_9 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 1429, __pyx_L1_error)
    __pyx_v_preemptionp = __pyx_t_9;
  }
  __pyx_L7:;

  /* "netCDF4/_netCDF4.pyx":1430
 *     else:
 *         preemptionp = preemption_orig
 *     with nogil:             # <<<<<<<<<<<<<<
 *         ierr = nc_set_chunk_cache(sizep,nelemsp, preemptionp)
 *     _ensure_nc_success(ierr)
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "netCDF4/_netCDF4.pyx":1431
 *         preemptionp = preemption_orig
 *     with nogil:
 *         ierr = nc_set_chunk_cache(sizep,nelemsp, preemptionp)             # <<<<<<<<<<<<<<
 *     _ensure_nc_success(ierr)
 * 
*/
        __pyx_v_ierr = nc_set_chunk_cache(__pyx_v_sizep, __pyx_v_nelemsp, __pyx_v_preemptionp);
      }

      /* "netCDF4/_netCDF4.pyx":1430
 *     else:
 *         preemptionp = preemption_orig
 *     with nogil:             # <<<<<<<<<<<<<<
 *         ierr = nc_set_chunk_cache(sizep,nelemsp, preemptionp)
 *     _ensure_nc_success(ierr)
*/
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L10;
        }
        __pyx_L10:;
      }
  }

  /* "netCDF4/_netCDF4.pyx":1432
 *     with nogil:
 *         ierr = nc_set_chunk_cache(sizep,nelemsp, preemptionp)
 *     _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_t_5 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1432, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1432, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    assert(__pyx_t_5);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_5);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_2, __pyx__function);
    __pyx_t_4 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_2, __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;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1432, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":1406
 *     return (size,nelems,preemption)
 * 
 * def set_chunk_cache(size=None,nelems=None,preemption=None):             # <<<<<<<<<<<<<<
 *     """
 * **```set_chunk_cache(size=None,nelems=None,preemption=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_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("netCDF4._netCDF4.set_chunk_cache", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_size_orig);
  __Pyx_XDECREF(__pyx_v_nelems_orig);
  __Pyx_XDECREF(__pyx_v_preemption_orig);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":1435
 * 
 * 
 * def get_alignment():             # <<<<<<<<<<<<<<
 *     """**```get_alignment()```**
 * 
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_13get_alignment(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
PyDoc_STRVAR(__pyx_doc_7netCDF4_8_netCDF4_12get_alignment, "**```get_alignment()```**\n\n    return current netCDF alignment within HDF5 files in a tuple\n    (threshold,alignment). See netcdf C library documentation for\n    `nc_get_alignment` for details. Values can be reset with\n    `set_alignment`.\n\n    This function was added in netcdf 4.9.0.");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_13get_alignment = {"get_alignment", (PyCFunction)__pyx_pw_7netCDF4_8_netCDF4_13get_alignment, METH_NOARGS, __pyx_doc_7netCDF4_8_netCDF4_12get_alignment};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_13get_alignment(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_alignment (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_12get_alignment(__pyx_self);

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_12get_alignment(CYTHON_UNUSED PyObject *__pyx_self) {
  int __pyx_v_ierr;
  int __pyx_v_thresholdp;
  int __pyx_v_alignmentp;
  int __pyx_v_threshold;
  int __pyx_v_alignment;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  size_t __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_alignment", 0);

  /* "netCDF4/_netCDF4.pyx":1445
 *     This function was added in netcdf 4.9.0."""
 * 
 *     if not __has_set_alignment__:             # <<<<<<<<<<<<<<
 *         raise RuntimeError(
 *             "This function requires netcdf-c 4.9.0+ to be used at compile time"
*/
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_has_set_alignment); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1445, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 1445, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = (!__pyx_t_2);
  if (unlikely(__pyx_t_3)) {

    /* "netCDF4/_netCDF4.pyx":1446
 * 
 *     if not __has_set_alignment__:
 *         raise RuntimeError(             # <<<<<<<<<<<<<<
 *             "This function requires netcdf-c 4.9.0+ to be used at compile time"
 *         )
*/
    __pyx_t_4 = NULL;
    __pyx_t_5 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_This_function_requires_netcdf_c};
      __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_RuntimeError)), __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_1)) __PYX_ERR(0, 1446, __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(0, 1446, __pyx_L1_error)

    /* "netCDF4/_netCDF4.pyx":1445
 *     This function was added in netcdf 4.9.0."""
 * 
 *     if not __has_set_alignment__:             # <<<<<<<<<<<<<<
 *         raise RuntimeError(
 *             "This function requires netcdf-c 4.9.0+ to be used at compile time"
*/
  }

  /* "netCDF4/_netCDF4.pyx":1452
 *     cdef int ierr
 *     cdef int thresholdp, alignmentp
 *     ierr = nc_get_alignment(&thresholdp, &alignmentp)             # <<<<<<<<<<<<<<
 *     _ensure_nc_success(ierr)
 *     threshold = thresholdp
*/
  __pyx_v_ierr = nc_get_alignment((&__pyx_v_thresholdp), (&__pyx_v_alignmentp));

  /* "netCDF4/_netCDF4.pyx":1453
 *     cdef int thresholdp, alignmentp
 *     ierr = nc_get_alignment(&thresholdp, &alignmentp)
 *     _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 *     threshold = thresholdp
 *     alignment = alignmentp
*/
  __pyx_t_4 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1453, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1453, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(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_5 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_7};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_6, __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_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1453, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":1454
 *     ierr = nc_get_alignment(&thresholdp, &alignmentp)
 *     _ensure_nc_success(ierr)
 *     threshold = thresholdp             # <<<<<<<<<<<<<<
 *     alignment = alignmentp
 *     return (threshold, alignment)
*/
  __pyx_v_threshold = __pyx_v_thresholdp;

  /* "netCDF4/_netCDF4.pyx":1455
 *     _ensure_nc_success(ierr)
 *     threshold = thresholdp
 *     alignment = alignmentp             # <<<<<<<<<<<<<<
 *     return (threshold, alignment)
 * 
*/
  __pyx_v_alignment = __pyx_v_alignmentp;

  /* "netCDF4/_netCDF4.pyx":1456
 *     threshold = thresholdp
 *     alignment = alignmentp
 *     return (threshold, alignment)             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_int(__pyx_v_threshold); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1456, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = __Pyx_PyLong_From_int(__pyx_v_alignment); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1456, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1456, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1) != (0)) __PYX_ERR(0, 1456, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_6);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_6) != (0)) __PYX_ERR(0, 1456, __pyx_L1_error);
  __pyx_t_1 = 0;
  __pyx_t_6 = 0;
  __pyx_r = __pyx_t_7;
  __pyx_t_7 = 0;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":1435
 * 
 * 
 * def get_alignment():             # <<<<<<<<<<<<<<
 *     """**```get_alignment()```**
 * 
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("netCDF4._netCDF4.get_alignment", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":1459
 * 
 * 
 * def set_alignment(threshold, alignment):             # <<<<<<<<<<<<<<
 *     """**```set_alignment(threshold,alignment)```**
 * 
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_15set_alignment(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_7netCDF4_8_netCDF4_14set_alignment, "**```set_alignment(threshold,alignment)```**\n\n    Change the HDF5 file alignment.\n    See netcdf C library documentation for `nc_set_alignment` for\n    details.\n\n    This function was added in netcdf 4.9.0.");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_15set_alignment = {"set_alignment", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_15set_alignment, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_14set_alignment};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_15set_alignment(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_threshold = 0;
  PyObject *__pyx_v_alignment = 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_alignment (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_threshold,&__pyx_mstate_global->__pyx_n_u_alignment,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 1459, __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(0, 1459, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1459, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_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_alignment", 0) < (0)) __PYX_ERR(0, 1459, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("set_alignment", 1, 2, 2, i); __PYX_ERR(0, 1459, __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(0, 1459, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 1459, __pyx_L3_error)
    }
    __pyx_v_threshold = values[0];
    __pyx_v_alignment = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("set_alignment", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 1459, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4.set_alignment", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_14set_alignment(__pyx_self, __pyx_v_threshold, __pyx_v_alignment);

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_14set_alignment(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_threshold, PyObject *__pyx_v_alignment) {
  int __pyx_v_ierr;
  int __pyx_v_thresholdp;
  int __pyx_v_alignmentp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  size_t __pyx_t_5;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("set_alignment", 0);

  /* "netCDF4/_netCDF4.pyx":1468
 *     This function was added in netcdf 4.9.0."""
 * 
 *     if not __has_set_alignment__:             # <<<<<<<<<<<<<<
 *         raise RuntimeError(
 *             "This function requires netcdf-c 4.9.0+ to be used at compile time"
*/
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_has_set_alignment); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1468, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 1468, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = (!__pyx_t_2);
  if (unlikely(__pyx_t_3)) {

    /* "netCDF4/_netCDF4.pyx":1469
 * 
 *     if not __has_set_alignment__:
 *         raise RuntimeError(             # <<<<<<<<<<<<<<
 *             "This function requires netcdf-c 4.9.0+ to be used at compile time"
 *         )
*/
    __pyx_t_4 = NULL;
    __pyx_t_5 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_This_function_requires_netcdf_c};
      __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_RuntimeError)), __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_1)) __PYX_ERR(0, 1469, __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(0, 1469, __pyx_L1_error)

    /* "netCDF4/_netCDF4.pyx":1468
 *     This function was added in netcdf 4.9.0."""
 * 
 *     if not __has_set_alignment__:             # <<<<<<<<<<<<<<
 *         raise RuntimeError(
 *             "This function requires netcdf-c 4.9.0+ to be used at compile time"
*/
  }

  /* "netCDF4/_netCDF4.pyx":1475
 *     cdef int ierr
 *     cdef int thresholdp, alignmentp
 *     thresholdp = threshold             # <<<<<<<<<<<<<<
 *     alignmentp = alignment
 * 
*/
  __pyx_t_6 = __Pyx_PyLong_As_int(__pyx_v_threshold); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1475, __pyx_L1_error)
  __pyx_v_thresholdp = __pyx_t_6;

  /* "netCDF4/_netCDF4.pyx":1476
 *     cdef int thresholdp, alignmentp
 *     thresholdp = threshold
 *     alignmentp = alignment             # <<<<<<<<<<<<<<
 * 
 *     ierr = nc_set_alignment(thresholdp, alignmentp)
*/
  __pyx_t_6 = __Pyx_PyLong_As_int(__pyx_v_alignment); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1476, __pyx_L1_error)
  __pyx_v_alignmentp = __pyx_t_6;

  /* "netCDF4/_netCDF4.pyx":1478
 *     alignmentp = alignment
 * 
 *     ierr = nc_set_alignment(thresholdp, alignmentp)             # <<<<<<<<<<<<<<
 *     _ensure_nc_success(ierr)
 * 
*/
  __pyx_v_ierr = nc_set_alignment(__pyx_v_thresholdp, __pyx_v_alignmentp);

  /* "netCDF4/_netCDF4.pyx":1479
 * 
 *     ierr = nc_set_alignment(thresholdp, alignmentp)
 *     _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_t_4 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1479, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1479, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_5 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_7))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_7);
    assert(__pyx_t_4);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7);
    __Pyx_INCREF(__pyx_t_4);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_7, __pyx__function);
    __pyx_t_5 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_8};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __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_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1479, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":1459
 * 
 * 
 * def set_alignment(threshold, alignment):             # <<<<<<<<<<<<<<
 *     """**```set_alignment(threshold,alignment)```**
 * 
*/

  /* 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_4);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("netCDF4._netCDF4.set_alignment", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":1501
 * class NetCDF4MissingFeatureException(Exception):
 *     """Custom exception when trying to use features missing from the linked netCDF library"""
 *     def __init__(self, feature: str, version: str):             # <<<<<<<<<<<<<<
 *         super().__init__(
 *             f"{feature} requires netCDF lib >= {version} (using {__netcdf4libversion__}). "
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_30NetCDF4MissingFeatureException_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*/
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_30NetCDF4MissingFeatureException_1__init__ = {"__init__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_30NetCDF4MissingFeatureException_1__init__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_30NetCDF4MissingFeatureException_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;
  PyObject *__pyx_v_feature = 0;
  PyObject *__pyx_v_version = 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("__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_self,&__pyx_mstate_global->__pyx_n_u_feature,&__pyx_mstate_global->__pyx_n_u_version,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 1501, __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(0, 1501, __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(0, 1501, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1501, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_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(0, 1501, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 3; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, i); __PYX_ERR(0, 1501, __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(0, 1501, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 1501, __pyx_L3_error)
      values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 1501, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
    __pyx_v_feature = ((PyObject*)values[1]);
    __pyx_v_version = ((PyObject*)values[2]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, __pyx_nargs); __PYX_ERR(0, 1501, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4.NetCDF4MissingFeatureException.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_feature), (&PyUnicode_Type), 0, "feature", 2))) __PYX_ERR(0, 1501, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_version), (&PyUnicode_Type), 0, "version", 2))) __PYX_ERR(0, 1501, __pyx_L1_error)
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_30NetCDF4MissingFeatureException___init__(__pyx_self, __pyx_v_self, __pyx_v_feature, __pyx_v_version);

  /* 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_7netCDF4_8_netCDF4_30NetCDF4MissingFeatureException___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_feature, PyObject *__pyx_v_version) {
  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[10];
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "netCDF4/_netCDF4.pyx":1502
 *     """Custom exception when trying to use features missing from the linked netCDF library"""
 *     def __init__(self, feature: str, version: str):
 *         super().__init__(             # <<<<<<<<<<<<<<
 *             f"{feature} requires netCDF lib >= {version} (using {__netcdf4libversion__}). "
 *             f"To enable, rebuild netcdf4-python using netCDF {version} or higher "
*/
  __pyx_t_4 = NULL;
  __pyx_t_5 = __Pyx_CyFunction_GetClassObj(__pyx_self);
  if (!__pyx_t_5) { PyErr_SetString(PyExc_RuntimeError, "super(): empty __class__ cell"); __PYX_ERR(0, 1502, __pyx_L1_error) }
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_6 = 1;
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_t_5, __pyx_v_self};
    __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_super, __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_3)) __PYX_ERR(0, 1502, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  }
  __pyx_t_2 = __pyx_t_3;
  __Pyx_INCREF(__pyx_t_2);

  /* "netCDF4/_netCDF4.pyx":1503
 *     def __init__(self, feature: str, version: str):
 *         super().__init__(
 *             f"{feature} requires netCDF lib >= {version} (using {__netcdf4libversion__}). "             # <<<<<<<<<<<<<<
 *             f"To enable, rebuild netcdf4-python using netCDF {version} or higher "
 *             f"(and possibly enable {feature})"
*/
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_netcdf4libversion); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1503, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = __Pyx_PyObject_FormatSimple(__pyx_t_5, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1503, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "netCDF4/_netCDF4.pyx":1505
 *             f"{feature} requires netCDF lib >= {version} (using {__netcdf4libversion__}). "
 *             f"To enable, rebuild netcdf4-python using netCDF {version} or higher "
 *             f"(and possibly enable {feature})"             # <<<<<<<<<<<<<<
 *         )
 * 
*/
  __pyx_t_7[0] = __pyx_v_feature;
  __pyx_t_7[1] = __pyx_mstate_global->__pyx_kp_u_requires_netCDF_lib;
  __pyx_t_7[2] = __pyx_v_version;
  __pyx_t_7[3] = __pyx_mstate_global->__pyx_kp_u_using;
  __pyx_t_7[4] = __pyx_t_4;
  __pyx_t_7[5] = __pyx_mstate_global->__pyx_kp_u_To_enable_rebuild_netcdf4_pytho;
  __pyx_t_7[6] = __pyx_v_version;
  __pyx_t_7[7] = __pyx_mstate_global->__pyx_kp_u_or_higher_and_possibly_enable;
  __pyx_t_7[8] = __pyx_v_feature;
  __pyx_t_7[9] = __pyx_mstate_global->__pyx_kp_u__2;

  /* "netCDF4/_netCDF4.pyx":1503
 *     def __init__(self, feature: str, version: str):
 *         super().__init__(
 *             f"{feature} requires netCDF lib >= {version} (using {__netcdf4libversion__}). "             # <<<<<<<<<<<<<<
 *             f"To enable, rebuild netcdf4-python using netCDF {version} or higher "
 *             f"(and possibly enable {feature})"
*/
  __pyx_t_5 = __Pyx_PyUnicode_Join(__pyx_t_7, 10, __Pyx_PyUnicode_GET_LENGTH(__pyx_v_feature) * 2 + 24 + __Pyx_PyUnicode_GET_LENGTH(__pyx_v_version) * 2 + 8 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4) + 50 + 32 + 1, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_v_feature) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_v_version) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_v_version) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_v_feature));
  if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1503, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_6 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_5};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_init, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__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_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1502, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":1501
 * class NetCDF4MissingFeatureException(Exception):
 *     """Custom exception when trying to use features missing from the linked netCDF library"""
 *     def __init__(self, feature: str, version: str):             # <<<<<<<<<<<<<<
 *         super().__init__(
 *             f"{feature} requires netCDF lib >= {version} (using {__netcdf4libversion__}). "
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("netCDF4._netCDF4.NetCDF4MissingFeatureException.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":1634
 * # internal C functions.
 * 
 * cdef _get_att_names(int grpid, int varid):             # <<<<<<<<<<<<<<
 *     # Private function to get all the attribute names in a group
 *     cdef int ierr, numatts, n
*/

static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_att_names(int __pyx_v_grpid, int __pyx_v_varid) {
  int __pyx_v_ierr;
  int __pyx_v_numatts;
  int __pyx_v_n;
  char __pyx_v_namstring[(NC_MAX_NAME + 1)];
  PyObject *__pyx_v_attslist = NULL;
  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 = NULL;
  int __pyx_t_8;
  int __pyx_t_9;
  int __pyx_t_10;
  Py_ssize_t __pyx_t_11;
  int __pyx_t_12;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_get_att_names", 0);

  /* "netCDF4/_netCDF4.pyx":1638
 *     cdef int ierr, numatts, n
 *     cdef char namstring[NC_MAX_NAME+1]
 *     if varid == NC_GLOBAL:             # <<<<<<<<<<<<<<
 *         with nogil:
 *             ierr = nc_inq_natts(grpid, &numatts)
*/
  __pyx_t_1 = (__pyx_v_varid == NC_GLOBAL);
  if (__pyx_t_1) {

    /* "netCDF4/_netCDF4.pyx":1639
 *     cdef char namstring[NC_MAX_NAME+1]
 *     if varid == NC_GLOBAL:
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_inq_natts(grpid, &numatts)
 *     else:
*/
    {
        PyThreadState * _save;
        _save = PyEval_SaveThread();
        __Pyx_FastGIL_Remember();
        /*try:*/ {

          /* "netCDF4/_netCDF4.pyx":1640
 *     if varid == NC_GLOBAL:
 *         with nogil:
 *             ierr = nc_inq_natts(grpid, &numatts)             # <<<<<<<<<<<<<<
 *     else:
 *         with nogil:
*/
          __pyx_v_ierr = nc_inq_natts(__pyx_v_grpid, (&__pyx_v_numatts));
        }

        /* "netCDF4/_netCDF4.pyx":1639
 *     cdef char namstring[NC_MAX_NAME+1]
 *     if varid == NC_GLOBAL:
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_inq_natts(grpid, &numatts)
 *     else:
*/
        /*finally:*/ {
          /*normal exit:*/{
            __Pyx_FastGIL_Forget();
            PyEval_RestoreThread(_save);
            goto __pyx_L6;
          }
          __pyx_L6:;
        }
    }

    /* "netCDF4/_netCDF4.pyx":1638
 *     cdef int ierr, numatts, n
 *     cdef char namstring[NC_MAX_NAME+1]
 *     if varid == NC_GLOBAL:             # <<<<<<<<<<<<<<
 *         with nogil:
 *             ierr = nc_inq_natts(grpid, &numatts)
*/
    goto __pyx_L3;
  }

  /* "netCDF4/_netCDF4.pyx":1642
 *             ierr = nc_inq_natts(grpid, &numatts)
 *     else:
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_inq_varnatts(grpid, varid, &numatts)
 *     _ensure_nc_success(ierr, err_cls=AttributeError)
*/
  /*else*/ {
    {
        PyThreadState * _save;
        _save = PyEval_SaveThread();
        __Pyx_FastGIL_Remember();
        /*try:*/ {

          /* "netCDF4/_netCDF4.pyx":1643
 *     else:
 *         with nogil:
 *             ierr = nc_inq_varnatts(grpid, varid, &numatts)             # <<<<<<<<<<<<<<
 *     _ensure_nc_success(ierr, err_cls=AttributeError)
 *     attslist = []
*/
          __pyx_v_ierr = nc_inq_varnatts(__pyx_v_grpid, __pyx_v_varid, (&__pyx_v_numatts));
        }

        /* "netCDF4/_netCDF4.pyx":1642
 *             ierr = nc_inq_natts(grpid, &numatts)
 *     else:
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_inq_varnatts(grpid, varid, &numatts)
 *     _ensure_nc_success(ierr, err_cls=AttributeError)
*/
        /*finally:*/ {
          /*normal exit:*/{
            __Pyx_FastGIL_Forget();
            PyEval_RestoreThread(_save);
            goto __pyx_L9;
          }
          __pyx_L9:;
        }
    }
  }
  __pyx_L3:;

  /* "netCDF4/_netCDF4.pyx":1644
 *         with nogil:
 *             ierr = nc_inq_varnatts(grpid, varid, &numatts)
 *     _ensure_nc_success(ierr, err_cls=AttributeError)             # <<<<<<<<<<<<<<
 *     attslist = []
 *     for n in range(numatts):
*/
  __pyx_t_3 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1644, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1644, __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 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_3, __pyx_t_5};
    __pyx_t_7 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1644, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_err_cls, ((PyObject *)(((PyTypeObject*)PyExc_AttributeError))), __pyx_t_7, __pyx_callargs+2, 0) < (0)) __PYX_ERR(0, 1644, __pyx_L1_error)
    __pyx_t_2 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_7);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1644, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":1645
 *             ierr = nc_inq_varnatts(grpid, varid, &numatts)
 *     _ensure_nc_success(ierr, err_cls=AttributeError)
 *     attslist = []             # <<<<<<<<<<<<<<
 *     for n in range(numatts):
 *         with nogil:
*/
  __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1645, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_attslist = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":1646
 *     _ensure_nc_success(ierr, err_cls=AttributeError)
 *     attslist = []
 *     for n in range(numatts):             # <<<<<<<<<<<<<<
 *         with nogil:
 *             ierr = nc_inq_attname(grpid, varid, n, namstring)
*/
  __pyx_t_8 = __pyx_v_numatts;
  __pyx_t_9 = __pyx_t_8;
  for (__pyx_t_10 = 0; __pyx_t_10 < __pyx_t_9; __pyx_t_10+=1) {
    __pyx_v_n = __pyx_t_10;

    /* "netCDF4/_netCDF4.pyx":1647
 *     attslist = []
 *     for n in range(numatts):
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_inq_attname(grpid, varid, n, namstring)
 *         _ensure_nc_success(ierr, err_cls=AttributeError)
*/
    {
        PyThreadState * _save;
        _save = PyEval_SaveThread();
        __Pyx_FastGIL_Remember();
        /*try:*/ {

          /* "netCDF4/_netCDF4.pyx":1648
 *     for n in range(numatts):
 *         with nogil:
 *             ierr = nc_inq_attname(grpid, varid, n, namstring)             # <<<<<<<<<<<<<<
 *         _ensure_nc_success(ierr, err_cls=AttributeError)
 *         # attribute names are assumed to be utf-8
*/
          __pyx_v_ierr = nc_inq_attname(__pyx_v_grpid, __pyx_v_varid, __pyx_v_n, __pyx_v_namstring);
        }

        /* "netCDF4/_netCDF4.pyx":1647
 *     attslist = []
 *     for n in range(numatts):
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_inq_attname(grpid, varid, n, namstring)
 *         _ensure_nc_success(ierr, err_cls=AttributeError)
*/
        /*finally:*/ {
          /*normal exit:*/{
            __Pyx_FastGIL_Forget();
            PyEval_RestoreThread(_save);
            goto __pyx_L16;
          }
          __pyx_L16:;
        }
    }

    /* "netCDF4/_netCDF4.pyx":1649
 *         with nogil:
 *             ierr = nc_inq_attname(grpid, varid, n, namstring)
 *         _ensure_nc_success(ierr, err_cls=AttributeError)             # <<<<<<<<<<<<<<
 *         # attribute names are assumed to be utf-8
 *         attslist.append(namstring.decode('utf-8'))
*/
    __pyx_t_4 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1649, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_5 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1649, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_7);
      assert(__pyx_t_4);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_7, __pyx__function);
      __pyx_t_6 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_4, __pyx_t_5};
      __pyx_t_3 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1649, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_err_cls, ((PyObject *)(((PyTypeObject*)PyExc_AttributeError))), __pyx_t_3, __pyx_callargs+2, 0) < (0)) __PYX_ERR(0, 1649, __pyx_L1_error)
      __pyx_t_2 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_3);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1649, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "netCDF4/_netCDF4.pyx":1651
 *         _ensure_nc_success(ierr, err_cls=AttributeError)
 *         # attribute names are assumed to be utf-8
 *         attslist.append(namstring.decode('utf-8'))             # <<<<<<<<<<<<<<
 *     return attslist
 * 
*/
    __pyx_t_11 = __Pyx_ssize_strlen(__pyx_v_namstring); if (unlikely(__pyx_t_11 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1651, __pyx_L1_error)
    __pyx_t_2 = __Pyx_decode_c_string(__pyx_v_namstring, 0, __pyx_t_11, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1651, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_12 = __Pyx_PyList_Append(__pyx_v_attslist, __pyx_t_2); if (unlikely(__pyx_t_12 == ((int)-1))) __PYX_ERR(0, 1651, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }

  /* "netCDF4/_netCDF4.pyx":1652
 *         # attribute names are assumed to be utf-8
 *         attslist.append(namstring.decode('utf-8'))
 *     return attslist             # <<<<<<<<<<<<<<
 * 
 * cdef _get_att(grp, int varid, name, encoding='utf-8'):
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_attslist);
  __pyx_r = __pyx_v_attslist;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":1634
 * # internal C functions.
 * 
 * cdef _get_att_names(int grpid, int varid):             # <<<<<<<<<<<<<<
 *     # Private function to get all the attribute names in a group
 *     cdef int ierr, numatts, n
*/

  /* 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("netCDF4._netCDF4._get_att_names", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_attslist);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":1654
 *     return attslist
 * 
 * cdef _get_att(grp, int varid, name, encoding='utf-8'):             # <<<<<<<<<<<<<<
 *     # Private function to get an attribute value given its name
 *     cdef int ierr, n, _grpid
*/

static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_att(PyObject *__pyx_v_grp, int __pyx_v_varid, PyObject *__pyx_v_name, struct __pyx_opt_args_7netCDF4_8_netCDF4__get_att *__pyx_optional_args) {
  PyObject *__pyx_v_encoding = ((PyObject *)__pyx_mstate_global->__pyx_kp_u_utf_8);
  int __pyx_v_ierr;
  int __pyx_v__grpid;
  size_t __pyx_v_att_len;
  char *__pyx_v_attname;
  nc_type __pyx_v_att_type;
  PyArrayObject *__pyx_v_value_arr = 0;
  PyObject *__pyx_v_bytestr = NULL;
  PyObject *__pyx_v_pstring = NULL;
  char **__pyx_v_values;
  PyObject *__pyx_v_result = NULL;
  PyObject *__pyx_v_type_att = NULL;
  size_t __pyx_8genexpr3__pyx_v_j;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  struct __pyx_opt_args_7netCDF4_8_netCDF4__strencode __pyx_t_2;
  char *__pyx_t_3;
  int __pyx_t_4;
  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;
  int __pyx_t_10;
  size_t __pyx_t_11;
  size_t __pyx_t_12;
  size_t __pyx_t_13;
  PyObject *__pyx_t_14 = NULL;
  int __pyx_t_15;
  char const *__pyx_t_16;
  PyObject *__pyx_t_17 = NULL;
  PyObject *__pyx_t_18 = NULL;
  PyObject *__pyx_t_19 = NULL;
  PyObject *__pyx_t_20 = NULL;
  PyObject *__pyx_t_21 = NULL;
  PyObject *__pyx_t_22 = NULL;
  char const *__pyx_t_23;
  Py_ssize_t __pyx_t_24;
  PyObject *__pyx_t_25 = NULL;
  PyObject *__pyx_t_26 = NULL;
  PyObject *__pyx_t_27 = NULL;
  PyObject *__pyx_t_28 = NULL;
  PyObject *__pyx_t_29 = NULL;
  PyObject *__pyx_t_30 = NULL;
  PyObject *__pyx_t_31 = NULL;
  PyObject *__pyx_t_32 = NULL;
  PyObject *__pyx_t_33 = NULL;
  PyObject *__pyx_t_34 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_get_att", 0);
  if (__pyx_optional_args) {
    if (__pyx_optional_args->__pyx_n > 0) {
      __pyx_v_encoding = __pyx_optional_args->encoding;
    }
  }

  /* "netCDF4/_netCDF4.pyx":1662
 *     cdef ndarray value_arr
 *     # attribute names are assumed to be utf-8
 *     bytestr = _strencode(name,encoding='utf-8')             # <<<<<<<<<<<<<<
 *     attname = bytestr
 *     _grpid = grp._grpid
*/
  __pyx_t_2.__pyx_n = 1;
  __pyx_t_2.encoding = __pyx_mstate_global->__pyx_kp_u_utf_8;
  __pyx_t_1 = __pyx_f_7netCDF4_8_netCDF4__strencode(__pyx_v_name, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1662, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_bytestr = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":1663
 *     # attribute names are assumed to be utf-8
 *     bytestr = _strencode(name,encoding='utf-8')
 *     attname = bytestr             # <<<<<<<<<<<<<<
 *     _grpid = grp._grpid
 *     with nogil:
*/
  __pyx_t_3 = __Pyx_PyObject_AsWritableString(__pyx_v_bytestr); if (unlikely((!__pyx_t_3) && PyErr_Occurred())) __PYX_ERR(0, 1663, __pyx_L1_error)
  __pyx_v_attname = __pyx_t_3;

  /* "netCDF4/_netCDF4.pyx":1664
 *     bytestr = _strencode(name,encoding='utf-8')
 *     attname = bytestr
 *     _grpid = grp._grpid             # <<<<<<<<<<<<<<
 *     with nogil:
 *         ierr = nc_inq_att(_grpid, varid, attname, &att_type, &att_len)
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_mstate_global->__pyx_n_u_grpid); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1664, __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(0, 1664, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v__grpid = __pyx_t_4;

  /* "netCDF4/_netCDF4.pyx":1665
 *     attname = bytestr
 *     _grpid = grp._grpid
 *     with nogil:             # <<<<<<<<<<<<<<
 *         ierr = nc_inq_att(_grpid, varid, attname, &att_type, &att_len)
 *     _ensure_nc_success(ierr, err_cls=AttributeError)
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "netCDF4/_netCDF4.pyx":1666
 *     _grpid = grp._grpid
 *     with nogil:
 *         ierr = nc_inq_att(_grpid, varid, attname, &att_type, &att_len)             # <<<<<<<<<<<<<<
 *     _ensure_nc_success(ierr, err_cls=AttributeError)
 *     # attribute is a character or string ...
*/
        __pyx_v_ierr = nc_inq_att(__pyx_v__grpid, __pyx_v_varid, __pyx_v_attname, (&__pyx_v_att_type), (&__pyx_v_att_len));
      }

      /* "netCDF4/_netCDF4.pyx":1665
 *     attname = bytestr
 *     _grpid = grp._grpid
 *     with nogil:             # <<<<<<<<<<<<<<
 *         ierr = nc_inq_att(_grpid, varid, attname, &att_type, &att_len)
 *     _ensure_nc_success(ierr, err_cls=AttributeError)
*/
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "netCDF4/_netCDF4.pyx":1667
 *     with nogil:
 *         ierr = nc_inq_att(_grpid, varid, attname, &att_type, &att_len)
 *     _ensure_nc_success(ierr, err_cls=AttributeError)             # <<<<<<<<<<<<<<
 *     # attribute is a character or string ...
 *     if att_type == NC_CHAR:
*/
  __pyx_t_5 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1667, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1667, __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 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_5, __pyx_t_7};
    __pyx_t_9 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1667, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_err_cls, ((PyObject *)(((PyTypeObject*)PyExc_AttributeError))), __pyx_t_9, __pyx_callargs+2, 0) < (0)) __PYX_ERR(0, 1667, __pyx_L1_error)
    __pyx_t_1 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_t_6, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_9);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1667, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":1669
 *     _ensure_nc_success(ierr, err_cls=AttributeError)
 *     # attribute is a character or string ...
 *     if att_type == NC_CHAR:             # <<<<<<<<<<<<<<
 *         value_arr = numpy.empty(att_len,'S1')
 *         with nogil:
*/
  switch (__pyx_v_att_type) {
    case NC_CHAR:

    /* "netCDF4/_netCDF4.pyx":1670
 *     # attribute is a character or string ...
 *     if att_type == NC_CHAR:
 *         value_arr = numpy.empty(att_len,'S1')             # <<<<<<<<<<<<<<
 *         with nogil:
 *             ierr = nc_get_att_text(_grpid, varid, attname,
*/
    __pyx_t_6 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_mstate_global->__pyx_n_u_numpy); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1670, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_mstate_global->__pyx_n_u_empty); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1670, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __pyx_t_9 = __Pyx_PyLong_FromSize_t(__pyx_v_att_len); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1670, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __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_t_9, __pyx_mstate_global->__pyx_n_u_S1};
      __pyx_t_1 = __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_9); __pyx_t_9 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1670, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_ndarray))))) __PYX_ERR(0, 1670, __pyx_L1_error)
    __pyx_v_value_arr = ((PyArrayObject *)__pyx_t_1);
    __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":1671
 *     if att_type == NC_CHAR:
 *         value_arr = numpy.empty(att_len,'S1')
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_get_att_text(_grpid, varid, attname,
 *                     PyArray_BYTES(value_arr))
*/
    {
        PyThreadState * _save;
        _save = PyEval_SaveThread();
        __Pyx_FastGIL_Remember();
        /*try:*/ {

          /* "netCDF4/_netCDF4.pyx":1672
 *         value_arr = numpy.empty(att_len,'S1')
 *         with nogil:
 *             ierr = nc_get_att_text(_grpid, varid, attname,             # <<<<<<<<<<<<<<
 *                     PyArray_BYTES(value_arr))
 *         _ensure_nc_success(ierr, err_cls=AttributeError)
*/
          __pyx_v_ierr = nc_get_att_text(__pyx_v__grpid, __pyx_v_varid, __pyx_v_attname, PyArray_BYTES(__pyx_v_value_arr));
        }

        /* "netCDF4/_netCDF4.pyx":1671
 *     if att_type == NC_CHAR:
 *         value_arr = numpy.empty(att_len,'S1')
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_get_att_text(_grpid, varid, attname,
 *                     PyArray_BYTES(value_arr))
*/
        /*finally:*/ {
          /*normal exit:*/{
            __Pyx_FastGIL_Forget();
            PyEval_RestoreThread(_save);
            goto __pyx_L8;
          }
          __pyx_L8:;
        }
    }

    /* "netCDF4/_netCDF4.pyx":1674
 *             ierr = nc_get_att_text(_grpid, varid, attname,
 *                     PyArray_BYTES(value_arr))
 *         _ensure_nc_success(ierr, err_cls=AttributeError)             # <<<<<<<<<<<<<<
 *         if name == '_FillValue':
 *             # make sure _FillValue for character arrays is a byte on python 3
*/
    __pyx_t_7 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1674, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_6 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1674, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_8 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_9))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_9);
      assert(__pyx_t_7);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_9);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_9, __pyx__function);
      __pyx_t_8 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_7, __pyx_t_6};
      __pyx_t_5 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1674, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_err_cls, ((PyObject *)(((PyTypeObject*)PyExc_AttributeError))), __pyx_t_5, __pyx_callargs+2, 0) < (0)) __PYX_ERR(0, 1674, __pyx_L1_error)
      __pyx_t_1 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_t_9, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_5);
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1674, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":1675
 *                     PyArray_BYTES(value_arr))
 *         _ensure_nc_success(ierr, err_cls=AttributeError)
 *         if name == '_FillValue':             # <<<<<<<<<<<<<<
 *             # make sure _FillValue for character arrays is a byte on python 3
 *             # (issue 271).
*/
    __pyx_t_10 = (__Pyx_PyUnicode_Equals(__pyx_v_name, __pyx_mstate_global->__pyx_n_u_FillValue, Py_EQ)); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 1675, __pyx_L1_error)
    if (__pyx_t_10) {

      /* "netCDF4/_netCDF4.pyx":1678
 *             # make sure _FillValue for character arrays is a byte on python 3
 *             # (issue 271).
 *             pstring = value_arr.tobytes()             # <<<<<<<<<<<<<<
 *         else:
 *             pstring =\
*/
      __pyx_t_9 = ((PyObject *)__pyx_v_value_arr);
      __Pyx_INCREF(__pyx_t_9);
      __pyx_t_8 = 0;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_9, NULL};
        __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_tobytes, __pyx_callargs+__pyx_t_8, (1-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1678, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
      }
      __pyx_v_pstring = __pyx_t_1;
      __pyx_t_1 = 0;

      /* "netCDF4/_netCDF4.pyx":1675
 *                     PyArray_BYTES(value_arr))
 *         _ensure_nc_success(ierr, err_cls=AttributeError)
 *         if name == '_FillValue':             # <<<<<<<<<<<<<<
 *             # make sure _FillValue for character arrays is a byte on python 3
 *             # (issue 271).
*/
      goto __pyx_L9;
    }

    /* "netCDF4/_netCDF4.pyx":1681
 *         else:
 *             pstring =\
 *             value_arr.tobytes().decode(encoding,errors='replace').replace('\x00','')             # <<<<<<<<<<<<<<
 *         return pstring
 *     elif att_type == NC_STRING:
*/
    /*else*/ {
      __pyx_t_6 = ((PyObject *)__pyx_v_value_arr);
      __Pyx_INCREF(__pyx_t_6);
      __pyx_t_8 = 0;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL};
        __pyx_t_5 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_tobytes, __pyx_callargs+__pyx_t_8, (1-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1681, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
      }
      __pyx_t_9 = __pyx_t_5;
      __Pyx_INCREF(__pyx_t_9);
      __pyx_t_8 = 0;
      {
        PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_9, __pyx_v_encoding};
        __pyx_t_6 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1681, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_errors, __pyx_mstate_global->__pyx_n_u_replace, __pyx_t_6, __pyx_callargs+2, 0) < (0)) __PYX_ERR(0, 1681, __pyx_L1_error)
        __pyx_t_1 = __Pyx_Object_VectorcallMethod_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_n_u_decode, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_6);
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1681, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
      }
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_replace); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1681, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_mstate_global->__pyx_tuple[0], NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1681, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_v_pstring = __pyx_t_1;
      __pyx_t_1 = 0;
    }
    __pyx_L9:;

    /* "netCDF4/_netCDF4.pyx":1682
 *             pstring =\
 *             value_arr.tobytes().decode(encoding,errors='replace').replace('\x00','')
 *         return pstring             # <<<<<<<<<<<<<<
 *     elif att_type == NC_STRING:
 *         values = <char**>PyMem_Malloc(sizeof(char*) * att_len)
*/
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_pstring);
    __pyx_r = __pyx_v_pstring;
    goto __pyx_L0;

    /* "netCDF4/_netCDF4.pyx":1669
 *     _ensure_nc_success(ierr, err_cls=AttributeError)
 *     # attribute is a character or string ...
 *     if att_type == NC_CHAR:             # <<<<<<<<<<<<<<
 *         value_arr = numpy.empty(att_len,'S1')
 *         with nogil:
*/
    break;
    case NC_STRING:

    /* "netCDF4/_netCDF4.pyx":1684
 *         return pstring
 *     elif att_type == NC_STRING:
 *         values = <char**>PyMem_Malloc(sizeof(char*) * att_len)             # <<<<<<<<<<<<<<
 *         if not values:
 *             raise MemoryError()
*/
    __pyx_v_values = ((char **)PyMem_Malloc(((sizeof(char *)) * __pyx_v_att_len)));

    /* "netCDF4/_netCDF4.pyx":1685
 *     elif att_type == NC_STRING:
 *         values = <char**>PyMem_Malloc(sizeof(char*) * att_len)
 *         if not values:             # <<<<<<<<<<<<<<
 *             raise MemoryError()
 *         try:
*/
    __pyx_t_10 = (!(__pyx_v_values != 0));
    if (unlikely(__pyx_t_10)) {

      /* "netCDF4/_netCDF4.pyx":1686
 *         values = <char**>PyMem_Malloc(sizeof(char*) * att_len)
 *         if not values:
 *             raise MemoryError()             # <<<<<<<<<<<<<<
 *         try:
 *             with nogil:
*/
      PyErr_NoMemory(); __PYX_ERR(0, 1686, __pyx_L1_error)

      /* "netCDF4/_netCDF4.pyx":1685
 *     elif att_type == NC_STRING:
 *         values = <char**>PyMem_Malloc(sizeof(char*) * att_len)
 *         if not values:             # <<<<<<<<<<<<<<
 *             raise MemoryError()
 *         try:
*/
    }

    /* "netCDF4/_netCDF4.pyx":1687
 *         if not values:
 *             raise MemoryError()
 *         try:             # <<<<<<<<<<<<<<
 *             with nogil:
 *                 ierr = nc_get_att_string(_grpid, varid, attname, values)
*/
    /*try:*/ {

      /* "netCDF4/_netCDF4.pyx":1688
 *             raise MemoryError()
 *         try:
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 ierr = nc_get_att_string(_grpid, varid, attname, values)
 *             _ensure_nc_success(ierr, err_cls=AttributeError)
*/
      {
          PyThreadState * _save;
          _save = PyEval_SaveThread();
          __Pyx_FastGIL_Remember();
          /*try:*/ {

            /* "netCDF4/_netCDF4.pyx":1689
 *         try:
 *             with nogil:
 *                 ierr = nc_get_att_string(_grpid, varid, attname, values)             # <<<<<<<<<<<<<<
 *             _ensure_nc_success(ierr, err_cls=AttributeError)
 *             try:
*/
            __pyx_v_ierr = nc_get_att_string(__pyx_v__grpid, __pyx_v_varid, __pyx_v_attname, __pyx_v_values);
          }

          /* "netCDF4/_netCDF4.pyx":1688
 *             raise MemoryError()
 *         try:
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 ierr = nc_get_att_string(_grpid, varid, attname, values)
 *             _ensure_nc_success(ierr, err_cls=AttributeError)
*/
          /*finally:*/ {
            /*normal exit:*/{
              __Pyx_FastGIL_Forget();
              PyEval_RestoreThread(_save);
              goto __pyx_L16;
            }
            __pyx_L16:;
          }
      }

      /* "netCDF4/_netCDF4.pyx":1690
 *             with nogil:
 *                 ierr = nc_get_att_string(_grpid, varid, attname, values)
 *             _ensure_nc_success(ierr, err_cls=AttributeError)             # <<<<<<<<<<<<<<
 *             try:
 *                 result = [values[j].decode(encoding,errors='replace').replace('\x00','')
*/
      __pyx_t_5 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1690, __pyx_L12_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_9 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1690, __pyx_L12_error)
      __Pyx_GOTREF(__pyx_t_9);
      __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 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_5, __pyx_t_9};
        __pyx_t_7 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1690, __pyx_L12_error)
        __Pyx_GOTREF(__pyx_t_7);
        if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_err_cls, ((PyObject *)(((PyTypeObject*)PyExc_AttributeError))), __pyx_t_7, __pyx_callargs+2, 0) < (0)) __PYX_ERR(0, 1690, __pyx_L12_error)
        __pyx_t_1 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_t_6, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_7);
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1690, __pyx_L12_error)
        __Pyx_GOTREF(__pyx_t_1);
      }
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

      /* "netCDF4/_netCDF4.pyx":1691
 *                 ierr = nc_get_att_string(_grpid, varid, attname, values)
 *             _ensure_nc_success(ierr, err_cls=AttributeError)
 *             try:             # <<<<<<<<<<<<<<
 *                 result = [values[j].decode(encoding,errors='replace').replace('\x00','')
 *                           if values[j] else "" for j in range(att_len)]
*/
      /*try:*/ {

        /* "netCDF4/_netCDF4.pyx":1692
 *             _ensure_nc_success(ierr, err_cls=AttributeError)
 *             try:
 *                 result = [values[j].decode(encoding,errors='replace').replace('\x00','')             # <<<<<<<<<<<<<<
 *                           if values[j] else "" for j in range(att_len)]
 *             finally:
*/
        { /* enter inner scope */
          __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1692, __pyx_L18_error)
          __Pyx_GOTREF(__pyx_t_1);

          /* "netCDF4/_netCDF4.pyx":1693
 *             try:
 *                 result = [values[j].decode(encoding,errors='replace').replace('\x00','')
 *                           if values[j] else "" for j in range(att_len)]             # <<<<<<<<<<<<<<
 *             finally:
 *                 with nogil:
*/
          __pyx_t_8 = __pyx_v_att_len;
          __pyx_t_11 = __pyx_t_8;
          for (__pyx_t_12 = 0; __pyx_t_12 < __pyx_t_11; __pyx_t_12+=1) {
            __pyx_8genexpr3__pyx_v_j = __pyx_t_12;

            /* "netCDF4/_netCDF4.pyx":1692
 *             _ensure_nc_success(ierr, err_cls=AttributeError)
 *             try:
 *                 result = [values[j].decode(encoding,errors='replace').replace('\x00','')             # <<<<<<<<<<<<<<
 *                           if values[j] else "" for j in range(att_len)]
 *             finally:
*/
            __pyx_t_10 = ((__pyx_v_values[__pyx_8genexpr3__pyx_v_j]) != 0);
            if (__pyx_t_10) {
              __pyx_t_5 = __Pyx_PyBytes_FromString((__pyx_v_values[__pyx_8genexpr3__pyx_v_j])); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1692, __pyx_L18_error)
              __Pyx_GOTREF(__pyx_t_5);
              __pyx_t_9 = __pyx_t_5;
              __Pyx_INCREF(__pyx_t_9);
              __pyx_t_13 = 0;
              {
                PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_9, __pyx_v_encoding};
                __pyx_t_14 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1692, __pyx_L18_error)
                __Pyx_GOTREF(__pyx_t_14);
                if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_errors, __pyx_mstate_global->__pyx_n_u_replace, __pyx_t_14, __pyx_callargs+2, 0) < (0)) __PYX_ERR(0, 1692, __pyx_L18_error)
                __pyx_t_7 = __Pyx_Object_VectorcallMethod_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_n_u_decode, __pyx_callargs+__pyx_t_13, (2-__pyx_t_13) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_14);
                __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
                __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
                __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
                if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1692, __pyx_L18_error)
                __Pyx_GOTREF(__pyx_t_7);
              }
              __pyx_t_5 = PyUnicode_Replace(((PyObject*)__pyx_t_7), __pyx_mstate_global->__pyx_kp_u__3, __pyx_mstate_global->__pyx_kp_u__4, -1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1692, __pyx_L18_error)
              __Pyx_GOTREF(__pyx_t_5);
              __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
              __pyx_t_6 = __pyx_t_5;
              __pyx_t_5 = 0;
            } else {
              __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u__4);
              __pyx_t_6 = __pyx_mstate_global->__pyx_kp_u__4;
            }
            if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_6))) __PYX_ERR(0, 1692, __pyx_L18_error)
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          }
        } /* exit inner scope */
        __pyx_v_result = ((PyObject*)__pyx_t_1);
        __pyx_t_1 = 0;
      }

      /* "netCDF4/_netCDF4.pyx":1695
 *                           if values[j] else "" for j in range(att_len)]
 *             finally:
 *                 with nogil:             # <<<<<<<<<<<<<<
 *                     ierr = nc_free_string(att_len, values) # free memory in netcdf C lib
 *         finally:
*/
      /*finally:*/ {
        /*normal exit:*/{
          {
              PyThreadState * _save;
              _save = PyEval_SaveThread();
              __Pyx_FastGIL_Remember();
              /*try:*/ {

                /* "netCDF4/_netCDF4.pyx":1696
 *             finally:
 *                 with nogil:
 *                     ierr = nc_free_string(att_len, values) # free memory in netcdf C lib             # <<<<<<<<<<<<<<
 *         finally:
 *             PyMem_Free(values)
*/
                __pyx_v_ierr = nc_free_string(__pyx_v_att_len, __pyx_v_values);
              }

              /* "netCDF4/_netCDF4.pyx":1695
 *                           if values[j] else "" for j in range(att_len)]
 *             finally:
 *                 with nogil:             # <<<<<<<<<<<<<<
 *                     ierr = nc_free_string(att_len, values) # free memory in netcdf C lib
 *         finally:
*/
              /*finally:*/ {
                /*normal exit:*/{
                  __Pyx_FastGIL_Forget();
                  PyEval_RestoreThread(_save);
                  goto __pyx_L24;
                }
                __pyx_L24:;
              }
          }
          goto __pyx_L19;
        }
        __pyx_L18_error:;
        /*exception exit:*/{
          __Pyx_PyThreadState_declare
          __Pyx_PyThreadState_assign
          __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0;
          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 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_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
           __Pyx_ExceptionSwap(&__pyx_t_20, &__pyx_t_21, &__pyx_t_22);
          if ( unlikely(__Pyx_GetException(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19) < 0)) __Pyx_ErrFetch(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
          __Pyx_XGOTREF(__pyx_t_17);
          __Pyx_XGOTREF(__pyx_t_18);
          __Pyx_XGOTREF(__pyx_t_19);
          __Pyx_XGOTREF(__pyx_t_20);
          __Pyx_XGOTREF(__pyx_t_21);
          __Pyx_XGOTREF(__pyx_t_22);
          __pyx_t_4 = __pyx_lineno; __pyx_t_15 = __pyx_clineno; __pyx_t_16 = __pyx_filename;
          {
            {
                PyThreadState * _save;
                _save = PyEval_SaveThread();
                __Pyx_FastGIL_Remember();
                /*try:*/ {

                  /* "netCDF4/_netCDF4.pyx":1696
 *             finally:
 *                 with nogil:
 *                     ierr = nc_free_string(att_len, values) # free memory in netcdf C lib             # <<<<<<<<<<<<<<
 *         finally:
 *             PyMem_Free(values)
*/
                  __pyx_v_ierr = nc_free_string(__pyx_v_att_len, __pyx_v_values);
                }

                /* "netCDF4/_netCDF4.pyx":1695
 *                           if values[j] else "" for j in range(att_len)]
 *             finally:
 *                 with nogil:             # <<<<<<<<<<<<<<
 *                     ierr = nc_free_string(att_len, values) # free memory in netcdf C lib
 *         finally:
*/
                /*finally:*/ {
                  /*normal exit:*/{
                    __Pyx_FastGIL_Forget();
                    PyEval_RestoreThread(_save);
                    goto __pyx_L29;
                  }
                  __pyx_L29:;
                }
            }
          }
          __Pyx_XGIVEREF(__pyx_t_20);
          __Pyx_XGIVEREF(__pyx_t_21);
          __Pyx_XGIVEREF(__pyx_t_22);
          __Pyx_ExceptionReset(__pyx_t_20, __pyx_t_21, __pyx_t_22);
          __Pyx_XGIVEREF(__pyx_t_17);
          __Pyx_XGIVEREF(__pyx_t_18);
          __Pyx_XGIVEREF(__pyx_t_19);
          __Pyx_ErrRestore(__pyx_t_17, __pyx_t_18, __pyx_t_19);
          __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0;
          __pyx_lineno = __pyx_t_4; __pyx_clineno = __pyx_t_15; __pyx_filename = __pyx_t_16;
          goto __pyx_L12_error;
        }
        __pyx_L19:;
      }
    }

    /* "netCDF4/_netCDF4.pyx":1698
 *                     ierr = nc_free_string(att_len, values) # free memory in netcdf C lib
 *         finally:
 *             PyMem_Free(values)             # <<<<<<<<<<<<<<
 * 
 *         if len(result) == 1:
*/
    /*finally:*/ {
      /*normal exit:*/{
        PyMem_Free(__pyx_v_values);
        goto __pyx_L13;
      }
      __pyx_L12_error:;
      /*exception exit:*/{
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        __pyx_t_22 = 0; __pyx_t_21 = 0; __pyx_t_20 = 0; __pyx_t_19 = 0; __pyx_t_18 = 0; __pyx_t_17 = 0;
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 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_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
         __Pyx_ExceptionSwap(&__pyx_t_19, &__pyx_t_18, &__pyx_t_17);
        if ( unlikely(__Pyx_GetException(&__pyx_t_22, &__pyx_t_21, &__pyx_t_20) < 0)) __Pyx_ErrFetch(&__pyx_t_22, &__pyx_t_21, &__pyx_t_20);
        __Pyx_XGOTREF(__pyx_t_22);
        __Pyx_XGOTREF(__pyx_t_21);
        __Pyx_XGOTREF(__pyx_t_20);
        __Pyx_XGOTREF(__pyx_t_19);
        __Pyx_XGOTREF(__pyx_t_18);
        __Pyx_XGOTREF(__pyx_t_17);
        __pyx_t_15 = __pyx_lineno; __pyx_t_4 = __pyx_clineno; __pyx_t_23 = __pyx_filename;
        {
          PyMem_Free(__pyx_v_values);
        }
        __Pyx_XGIVEREF(__pyx_t_19);
        __Pyx_XGIVEREF(__pyx_t_18);
        __Pyx_XGIVEREF(__pyx_t_17);
        __Pyx_ExceptionReset(__pyx_t_19, __pyx_t_18, __pyx_t_17);
        __Pyx_XGIVEREF(__pyx_t_22);
        __Pyx_XGIVEREF(__pyx_t_21);
        __Pyx_XGIVEREF(__pyx_t_20);
        __Pyx_ErrRestore(__pyx_t_22, __pyx_t_21, __pyx_t_20);
        __pyx_t_22 = 0; __pyx_t_21 = 0; __pyx_t_20 = 0; __pyx_t_19 = 0; __pyx_t_18 = 0; __pyx_t_17 = 0;
        __pyx_lineno = __pyx_t_15; __pyx_clineno = __pyx_t_4; __pyx_filename = __pyx_t_23;
        goto __pyx_L1_error;
      }
      __pyx_L13:;
    }

    /* "netCDF4/_netCDF4.pyx":1700
 *             PyMem_Free(values)
 * 
 *         if len(result) == 1:             # <<<<<<<<<<<<<<
 *             return result[0]
 *         else:
*/
    __pyx_t_24 = __Pyx_PyList_GET_SIZE(__pyx_v_result); if (unlikely(__pyx_t_24 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1700, __pyx_L1_error)
    __pyx_t_10 = (__pyx_t_24 == 1);
    if (__pyx_t_10) {

      /* "netCDF4/_netCDF4.pyx":1701
 * 
 *         if len(result) == 1:
 *             return result[0]             # <<<<<<<<<<<<<<
 *         else:
 *             return result
*/
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_result, 0, long, 1, __Pyx_PyLong_From_long, 1, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1701, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_r = __pyx_t_1;
      __pyx_t_1 = 0;
      goto __pyx_L0;

      /* "netCDF4/_netCDF4.pyx":1700
 *             PyMem_Free(values)
 * 
 *         if len(result) == 1:             # <<<<<<<<<<<<<<
 *             return result[0]
 *         else:
*/
    }

    /* "netCDF4/_netCDF4.pyx":1703
 *             return result[0]
 *         else:
 *             return result             # <<<<<<<<<<<<<<
 *     else:
 *     # a regular numeric or compound type.
*/
    /*else*/ {
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(__pyx_v_result);
      __pyx_r = __pyx_v_result;
      goto __pyx_L0;
    }

    /* "netCDF4/_netCDF4.pyx":1683
 *             value_arr.tobytes().decode(encoding,errors='replace').replace('\x00','')
 *         return pstring
 *     elif att_type == NC_STRING:             # <<<<<<<<<<<<<<
 *         values = <char**>PyMem_Malloc(sizeof(char*) * att_len)
 *         if not values:
*/
    break;
    default:

    /* "netCDF4/_netCDF4.pyx":1706
 *     else:
 *     # a regular numeric or compound type.
 *         if att_type == NC_LONG:             # <<<<<<<<<<<<<<
 *             att_type = NC_INT
 *         try:
*/
    __pyx_t_10 = (__pyx_v_att_type == NC_LONG);
    if (__pyx_t_10) {

      /* "netCDF4/_netCDF4.pyx":1707
 *     # a regular numeric or compound type.
 *         if att_type == NC_LONG:
 *             att_type = NC_INT             # <<<<<<<<<<<<<<
 *         try:
 *             type_att = _nctonptype[att_type] # see if it is a primitive type
*/
      __pyx_v_att_type = NC_INT;

      /* "netCDF4/_netCDF4.pyx":1706
 *     else:
 *     # a regular numeric or compound type.
 *         if att_type == NC_LONG:             # <<<<<<<<<<<<<<
 *             att_type = NC_INT
 *         try:
*/
    }

    /* "netCDF4/_netCDF4.pyx":1708
 *         if att_type == NC_LONG:
 *             att_type = NC_INT
 *         try:             # <<<<<<<<<<<<<<
 *             type_att = _nctonptype[att_type] # see if it is a primitive type
 *             value_arr = numpy.empty(att_len,type_att)
*/
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
      __Pyx_XGOTREF(__pyx_t_17);
      __Pyx_XGOTREF(__pyx_t_18);
      __Pyx_XGOTREF(__pyx_t_19);
      /*try:*/ {

        /* "netCDF4/_netCDF4.pyx":1709
 *             att_type = NC_INT
 *         try:
 *             type_att = _nctonptype[att_type] # see if it is a primitive type             # <<<<<<<<<<<<<<
 *             value_arr = numpy.empty(att_len,type_att)
 *         except KeyError:
*/
        __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_nctonptype); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1709, __pyx_L34_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_6 = __Pyx_GetItemInt(__pyx_t_1, __pyx_v_att_type, nc_type, 1, __Pyx_PyLong_From_nc_type, 0, 1, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1709, __pyx_L34_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_v_type_att = __pyx_t_6;
        __pyx_t_6 = 0;

        /* "netCDF4/_netCDF4.pyx":1710
 *         try:
 *             type_att = _nctonptype[att_type] # see if it is a primitive type
 *             value_arr = numpy.empty(att_len,type_att)             # <<<<<<<<<<<<<<
 *         except KeyError:
 *             # check if it's a compound
*/
        __pyx_t_1 = NULL;
        __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1710, __pyx_L34_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_empty); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1710, __pyx_L34_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_t_5 = __Pyx_PyLong_FromSize_t(__pyx_v_att_len); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1710, __pyx_L34_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_8 = 1;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_7))) {
          __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_7);
          assert(__pyx_t_1);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7);
          __Pyx_INCREF(__pyx_t_1);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_7, __pyx__function);
          __pyx_t_8 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[3] = {__pyx_t_1, __pyx_t_5, __pyx_v_type_att};
          __pyx_t_6 = __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_1); __pyx_t_1 = 0;
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1710, __pyx_L34_error)
          __Pyx_GOTREF(__pyx_t_6);
        }
        if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_ndarray))))) __PYX_ERR(0, 1710, __pyx_L34_error)
        __pyx_v_value_arr = ((PyArrayObject *)__pyx_t_6);
        __pyx_t_6 = 0;

        /* "netCDF4/_netCDF4.pyx":1708
 *         if att_type == NC_LONG:
 *             att_type = NC_INT
 *         try:             # <<<<<<<<<<<<<<
 *             type_att = _nctonptype[att_type] # see if it is a primitive type
 *             value_arr = numpy.empty(att_len,type_att)
*/
      }
      __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
      __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
      __Pyx_XDECREF(__pyx_t_19); __pyx_t_19 = 0;
      goto __pyx_L39_try_end;
      __pyx_L34_error:;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 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_XDECREF(__pyx_t_9); __pyx_t_9 = 0;

      /* "netCDF4/_netCDF4.pyx":1711
 *             type_att = _nctonptype[att_type] # see if it is a primitive type
 *             value_arr = numpy.empty(att_len,type_att)
 *         except KeyError:             # <<<<<<<<<<<<<<
 *             # check if it's a compound
 *             try:
*/
      __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_KeyError))));
      if (__pyx_t_4) {
        __Pyx_AddTraceback("netCDF4._netCDF4._get_att", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_7, &__pyx_t_5) < 0) __PYX_ERR(0, 1711, __pyx_L36_except_error)
        __Pyx_XGOTREF(__pyx_t_6);
        __Pyx_XGOTREF(__pyx_t_7);
        __Pyx_XGOTREF(__pyx_t_5);

        /* "netCDF4/_netCDF4.pyx":1713
 *         except KeyError:
 *             # check if it's a compound
 *             try:             # <<<<<<<<<<<<<<
 *                 type_att = _read_compound(grp, att_type)
 *                 value_arr = numpy.empty(att_len,type_att.dtype_view)
*/
        {
          __Pyx_PyThreadState_declare
          __Pyx_PyThreadState_assign
          __Pyx_ExceptionSave(&__pyx_t_20, &__pyx_t_21, &__pyx_t_22);
          __Pyx_XGOTREF(__pyx_t_20);
          __Pyx_XGOTREF(__pyx_t_21);
          __Pyx_XGOTREF(__pyx_t_22);
          /*try:*/ {

            /* "netCDF4/_netCDF4.pyx":1714
 *             # check if it's a compound
 *             try:
 *                 type_att = _read_compound(grp, att_type)             # <<<<<<<<<<<<<<
 *                 value_arr = numpy.empty(att_len,type_att.dtype_view)
 *             except:
*/
            __pyx_t_1 = __pyx_f_7netCDF4_8_netCDF4__read_compound(__pyx_v_grp, __pyx_v_att_type, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1714, __pyx_L42_error)
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_XDECREF_SET(__pyx_v_type_att, __pyx_t_1);
            __pyx_t_1 = 0;

            /* "netCDF4/_netCDF4.pyx":1715
 *             try:
 *                 type_att = _read_compound(grp, att_type)
 *                 value_arr = numpy.empty(att_len,type_att.dtype_view)             # <<<<<<<<<<<<<<
 *             except:
 *                 # check if it's an enum
*/
            __pyx_t_14 = NULL;
            __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_mstate_global->__pyx_n_u_numpy); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1715, __pyx_L42_error)
            __Pyx_GOTREF(__pyx_t_9);
            __pyx_t_25 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_mstate_global->__pyx_n_u_empty); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 1715, __pyx_L42_error)
            __Pyx_GOTREF(__pyx_t_25);
            __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
            __pyx_t_9 = __Pyx_PyLong_FromSize_t(__pyx_v_att_len); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1715, __pyx_L42_error)
            __Pyx_GOTREF(__pyx_t_9);
            __pyx_t_26 = __Pyx_PyObject_GetAttrStr(__pyx_v_type_att, __pyx_mstate_global->__pyx_n_u_dtype_view); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 1715, __pyx_L42_error)
            __Pyx_GOTREF(__pyx_t_26);
            __pyx_t_8 = 1;
            #if CYTHON_UNPACK_METHODS
            if (unlikely(PyMethod_Check(__pyx_t_25))) {
              __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_25);
              assert(__pyx_t_14);
              PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_25);
              __Pyx_INCREF(__pyx_t_14);
              __Pyx_INCREF(__pyx__function);
              __Pyx_DECREF_SET(__pyx_t_25, __pyx__function);
              __pyx_t_8 = 0;
            }
            #endif
            {
              PyObject *__pyx_callargs[3] = {__pyx_t_14, __pyx_t_9, __pyx_t_26};
              __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_25, __pyx_callargs+__pyx_t_8, (3-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
              __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
              __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
              __Pyx_DECREF(__pyx_t_26); __pyx_t_26 = 0;
              __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
              if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1715, __pyx_L42_error)
              __Pyx_GOTREF(__pyx_t_1);
            }
            if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_ndarray))))) __PYX_ERR(0, 1715, __pyx_L42_error)
            __Pyx_XDECREF_SET(__pyx_v_value_arr, ((PyArrayObject *)__pyx_t_1));
            __pyx_t_1 = 0;

            /* "netCDF4/_netCDF4.pyx":1713
 *         except KeyError:
 *             # check if it's a compound
 *             try:             # <<<<<<<<<<<<<<
 *                 type_att = _read_compound(grp, att_type)
 *                 value_arr = numpy.empty(att_len,type_att.dtype_view)
*/
          }
          __Pyx_XDECREF(__pyx_t_20); __pyx_t_20 = 0;
          __Pyx_XDECREF(__pyx_t_21); __pyx_t_21 = 0;
          __Pyx_XDECREF(__pyx_t_22); __pyx_t_22 = 0;
          goto __pyx_L49_try_end;
          __pyx_L42_error:;
          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
          __Pyx_XDECREF(__pyx_t_25); __pyx_t_25 = 0;
          __Pyx_XDECREF(__pyx_t_26); __pyx_t_26 = 0;
          __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;

          /* "netCDF4/_netCDF4.pyx":1716
 *                 type_att = _read_compound(grp, att_type)
 *                 value_arr = numpy.empty(att_len,type_att.dtype_view)
 *             except:             # <<<<<<<<<<<<<<
 *                 # check if it's an enum
 *                 try:
*/
          /*except:*/ {
            __Pyx_AddTraceback("netCDF4._netCDF4._get_att", __pyx_clineno, __pyx_lineno, __pyx_filename);
            if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_25, &__pyx_t_26) < 0) __PYX_ERR(0, 1716, __pyx_L44_except_error)
            __Pyx_XGOTREF(__pyx_t_1);
            __Pyx_XGOTREF(__pyx_t_25);
            __Pyx_XGOTREF(__pyx_t_26);

            /* "netCDF4/_netCDF4.pyx":1718
 *             except:
 *                 # check if it's an enum
 *                 try:             # <<<<<<<<<<<<<<
 *                     type_att = _read_enum(grp, att_type)
 *                     value_arr = numpy.empty(att_len,type_att.dtype)
*/
            {
              __Pyx_PyThreadState_declare
              __Pyx_PyThreadState_assign
              __Pyx_ExceptionSave(&__pyx_t_27, &__pyx_t_28, &__pyx_t_29);
              __Pyx_XGOTREF(__pyx_t_27);
              __Pyx_XGOTREF(__pyx_t_28);
              __Pyx_XGOTREF(__pyx_t_29);
              /*try:*/ {

                /* "netCDF4/_netCDF4.pyx":1719
 *                 # check if it's an enum
 *                 try:
 *                     type_att = _read_enum(grp, att_type)             # <<<<<<<<<<<<<<
 *                     value_arr = numpy.empty(att_len,type_att.dtype)
 *                 except:
*/
                __pyx_t_9 = __pyx_f_7netCDF4_8_netCDF4__read_enum(__pyx_v_grp, __pyx_v_att_type, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1719, __pyx_L52_error)
                __Pyx_GOTREF(__pyx_t_9);
                __Pyx_XDECREF_SET(__pyx_v_type_att, __pyx_t_9);
                __pyx_t_9 = 0;

                /* "netCDF4/_netCDF4.pyx":1720
 *                 try:
 *                     type_att = _read_enum(grp, att_type)
 *                     value_arr = numpy.empty(att_len,type_att.dtype)             # <<<<<<<<<<<<<<
 *                 except:
 *                     raise KeyError('attribute %s has unsupported datatype' % attname)
*/
                __pyx_t_14 = NULL;
                __Pyx_GetModuleGlobalName(__pyx_t_30, __pyx_mstate_global->__pyx_n_u_numpy); if (unlikely(!__pyx_t_30)) __PYX_ERR(0, 1720, __pyx_L52_error)
                __Pyx_GOTREF(__pyx_t_30);
                __pyx_t_31 = __Pyx_PyObject_GetAttrStr(__pyx_t_30, __pyx_mstate_global->__pyx_n_u_empty); if (unlikely(!__pyx_t_31)) __PYX_ERR(0, 1720, __pyx_L52_error)
                __Pyx_GOTREF(__pyx_t_31);
                __Pyx_DECREF(__pyx_t_30); __pyx_t_30 = 0;
                __pyx_t_30 = __Pyx_PyLong_FromSize_t(__pyx_v_att_len); if (unlikely(!__pyx_t_30)) __PYX_ERR(0, 1720, __pyx_L52_error)
                __Pyx_GOTREF(__pyx_t_30);
                __pyx_t_32 = __Pyx_PyObject_GetAttrStr(__pyx_v_type_att, __pyx_mstate_global->__pyx_n_u_dtype); if (unlikely(!__pyx_t_32)) __PYX_ERR(0, 1720, __pyx_L52_error)
                __Pyx_GOTREF(__pyx_t_32);
                __pyx_t_8 = 1;
                #if CYTHON_UNPACK_METHODS
                if (unlikely(PyMethod_Check(__pyx_t_31))) {
                  __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_31);
                  assert(__pyx_t_14);
                  PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_31);
                  __Pyx_INCREF(__pyx_t_14);
                  __Pyx_INCREF(__pyx__function);
                  __Pyx_DECREF_SET(__pyx_t_31, __pyx__function);
                  __pyx_t_8 = 0;
                }
                #endif
                {
                  PyObject *__pyx_callargs[3] = {__pyx_t_14, __pyx_t_30, __pyx_t_32};
                  __pyx_t_9 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_31, __pyx_callargs+__pyx_t_8, (3-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
                  __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
                  __Pyx_DECREF(__pyx_t_30); __pyx_t_30 = 0;
                  __Pyx_DECREF(__pyx_t_32); __pyx_t_32 = 0;
                  __Pyx_DECREF(__pyx_t_31); __pyx_t_31 = 0;
                  if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1720, __pyx_L52_error)
                  __Pyx_GOTREF(__pyx_t_9);
                }
                if (!(likely(((__pyx_t_9) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_9, __pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_ndarray))))) __PYX_ERR(0, 1720, __pyx_L52_error)
                __Pyx_XDECREF_SET(__pyx_v_value_arr, ((PyArrayObject *)__pyx_t_9));
                __pyx_t_9 = 0;

                /* "netCDF4/_netCDF4.pyx":1718
 *             except:
 *                 # check if it's an enum
 *                 try:             # <<<<<<<<<<<<<<
 *                     type_att = _read_enum(grp, att_type)
 *                     value_arr = numpy.empty(att_len,type_att.dtype)
*/
              }
              __Pyx_XDECREF(__pyx_t_27); __pyx_t_27 = 0;
              __Pyx_XDECREF(__pyx_t_28); __pyx_t_28 = 0;
              __Pyx_XDECREF(__pyx_t_29); __pyx_t_29 = 0;
              goto __pyx_L59_try_end;
              __pyx_L52_error:;
              __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
              __Pyx_XDECREF(__pyx_t_30); __pyx_t_30 = 0;
              __Pyx_XDECREF(__pyx_t_31); __pyx_t_31 = 0;
              __Pyx_XDECREF(__pyx_t_32); __pyx_t_32 = 0;
              __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;

              /* "netCDF4/_netCDF4.pyx":1721
 *                     type_att = _read_enum(grp, att_type)
 *                     value_arr = numpy.empty(att_len,type_att.dtype)
 *                 except:             # <<<<<<<<<<<<<<
 *                     raise KeyError('attribute %s has unsupported datatype' % attname)
 *         with nogil:
*/
              /*except:*/ {
                __Pyx_AddTraceback("netCDF4._netCDF4._get_att", __pyx_clineno, __pyx_lineno, __pyx_filename);
                if (__Pyx_GetException(&__pyx_t_9, &__pyx_t_31, &__pyx_t_32) < 0) __PYX_ERR(0, 1721, __pyx_L54_except_error)
                __Pyx_XGOTREF(__pyx_t_9);
                __Pyx_XGOTREF(__pyx_t_31);
                __Pyx_XGOTREF(__pyx_t_32);

                /* "netCDF4/_netCDF4.pyx":1722
 *                     value_arr = numpy.empty(att_len,type_att.dtype)
 *                 except:
 *                     raise KeyError('attribute %s has unsupported datatype' % attname)             # <<<<<<<<<<<<<<
 *         with nogil:
 *             ierr = nc_get_att(_grpid, varid, attname, PyArray_BYTES(value_arr))
*/
                __pyx_t_14 = NULL;
                __pyx_t_33 = __Pyx_PyBytes_FromString(__pyx_v_attname); if (unlikely(!__pyx_t_33)) __PYX_ERR(0, 1722, __pyx_L54_except_error)
                __Pyx_GOTREF(__pyx_t_33);
                __pyx_t_34 = PyUnicode_Format(__pyx_mstate_global->__pyx_kp_u_attribute_s_has_unsupported_data, __pyx_t_33); if (unlikely(!__pyx_t_34)) __PYX_ERR(0, 1722, __pyx_L54_except_error)
                __Pyx_GOTREF(__pyx_t_34);
                __Pyx_DECREF(__pyx_t_33); __pyx_t_33 = 0;
                __pyx_t_8 = 1;
                {
                  PyObject *__pyx_callargs[2] = {__pyx_t_14, __pyx_t_34};
                  __pyx_t_30 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_KeyError)), __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_34); __pyx_t_34 = 0;
                  if (unlikely(!__pyx_t_30)) __PYX_ERR(0, 1722, __pyx_L54_except_error)
                  __Pyx_GOTREF(__pyx_t_30);
                }
                __Pyx_Raise(__pyx_t_30, 0, 0, 0);
                __Pyx_DECREF(__pyx_t_30); __pyx_t_30 = 0;
                __PYX_ERR(0, 1722, __pyx_L54_except_error)
              }

              /* "netCDF4/_netCDF4.pyx":1718
 *             except:
 *                 # check if it's an enum
 *                 try:             # <<<<<<<<<<<<<<
 *                     type_att = _read_enum(grp, att_type)
 *                     value_arr = numpy.empty(att_len,type_att.dtype)
*/
              __pyx_L54_except_error:;
              __Pyx_XGIVEREF(__pyx_t_27);
              __Pyx_XGIVEREF(__pyx_t_28);
              __Pyx_XGIVEREF(__pyx_t_29);
              __Pyx_ExceptionReset(__pyx_t_27, __pyx_t_28, __pyx_t_29);
              goto __pyx_L44_except_error;
              __pyx_L59_try_end:;
            }
            __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
            __Pyx_XDECREF(__pyx_t_25); __pyx_t_25 = 0;
            __Pyx_XDECREF(__pyx_t_26); __pyx_t_26 = 0;
            goto __pyx_L43_exception_handled;
          }

          /* "netCDF4/_netCDF4.pyx":1713
 *         except KeyError:
 *             # check if it's a compound
 *             try:             # <<<<<<<<<<<<<<
 *                 type_att = _read_compound(grp, att_type)
 *                 value_arr = numpy.empty(att_len,type_att.dtype_view)
*/
          __pyx_L44_except_error:;
          __Pyx_XGIVEREF(__pyx_t_20);
          __Pyx_XGIVEREF(__pyx_t_21);
          __Pyx_XGIVEREF(__pyx_t_22);
          __Pyx_ExceptionReset(__pyx_t_20, __pyx_t_21, __pyx_t_22);
          goto __pyx_L36_except_error;
          __pyx_L43_exception_handled:;
          __Pyx_XGIVEREF(__pyx_t_20);
          __Pyx_XGIVEREF(__pyx_t_21);
          __Pyx_XGIVEREF(__pyx_t_22);
          __Pyx_ExceptionReset(__pyx_t_20, __pyx_t_21, __pyx_t_22);
          __pyx_L49_try_end:;
        }
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        goto __pyx_L35_exception_handled;
      }
      goto __pyx_L36_except_error;

      /* "netCDF4/_netCDF4.pyx":1708
 *         if att_type == NC_LONG:
 *             att_type = NC_INT
 *         try:             # <<<<<<<<<<<<<<
 *             type_att = _nctonptype[att_type] # see if it is a primitive type
 *             value_arr = numpy.empty(att_len,type_att)
*/
      __pyx_L36_except_error:;
      __Pyx_XGIVEREF(__pyx_t_17);
      __Pyx_XGIVEREF(__pyx_t_18);
      __Pyx_XGIVEREF(__pyx_t_19);
      __Pyx_ExceptionReset(__pyx_t_17, __pyx_t_18, __pyx_t_19);
      goto __pyx_L1_error;
      __pyx_L35_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_17);
      __Pyx_XGIVEREF(__pyx_t_18);
      __Pyx_XGIVEREF(__pyx_t_19);
      __Pyx_ExceptionReset(__pyx_t_17, __pyx_t_18, __pyx_t_19);
      __pyx_L39_try_end:;
    }

    /* "netCDF4/_netCDF4.pyx":1723
 *                 except:
 *                     raise KeyError('attribute %s has unsupported datatype' % attname)
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_get_att(_grpid, varid, attname, PyArray_BYTES(value_arr))
 *         _ensure_nc_success(ierr, err_cls=AttributeError)
*/
    {
        PyThreadState * _save;
        _save = PyEval_SaveThread();
        __Pyx_FastGIL_Remember();
        /*try:*/ {

          /* "netCDF4/_netCDF4.pyx":1724
 *                     raise KeyError('attribute %s has unsupported datatype' % attname)
 *         with nogil:
 *             ierr = nc_get_att(_grpid, varid, attname, PyArray_BYTES(value_arr))             # <<<<<<<<<<<<<<
 *         _ensure_nc_success(ierr, err_cls=AttributeError)
 *         if value_arr.shape == ():
*/
          __pyx_v_ierr = nc_get_att(__pyx_v__grpid, __pyx_v_varid, __pyx_v_attname, PyArray_BYTES(__pyx_v_value_arr));
        }

        /* "netCDF4/_netCDF4.pyx":1723
 *                 except:
 *                     raise KeyError('attribute %s has unsupported datatype' % attname)
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_get_att(_grpid, varid, attname, PyArray_BYTES(value_arr))
 *         _ensure_nc_success(ierr, err_cls=AttributeError)
*/
        /*finally:*/ {
          /*normal exit:*/{
            __Pyx_FastGIL_Forget();
            PyEval_RestoreThread(_save);
            goto __pyx_L64;
          }
          __pyx_L64:;
        }
    }

    /* "netCDF4/_netCDF4.pyx":1725
 *         with nogil:
 *             ierr = nc_get_att(_grpid, varid, attname, PyArray_BYTES(value_arr))
 *         _ensure_nc_success(ierr, err_cls=AttributeError)             # <<<<<<<<<<<<<<
 *         if value_arr.shape == ():
 *             # return a scalar for a scalar array
*/
    __pyx_t_7 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1725, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_26 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 1725, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_26);
    __pyx_t_8 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
      assert(__pyx_t_7);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_6, __pyx__function);
      __pyx_t_8 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_7, __pyx_t_26};
      __pyx_t_25 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 1725, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_25);
      if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_err_cls, ((PyObject *)(((PyTypeObject*)PyExc_AttributeError))), __pyx_t_25, __pyx_callargs+2, 0) < (0)) __PYX_ERR(0, 1725, __pyx_L1_error)
      __pyx_t_5 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_t_6, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_25);
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_26); __pyx_t_26 = 0;
      __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1725, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
    }
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "netCDF4/_netCDF4.pyx":1726
 *             ierr = nc_get_att(_grpid, varid, attname, PyArray_BYTES(value_arr))
 *         _ensure_nc_success(ierr, err_cls=AttributeError)
 *         if value_arr.shape == ():             # <<<<<<<<<<<<<<
 *             # return a scalar for a scalar array
 *             return value_arr.item()
*/
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_value_arr), __pyx_mstate_global->__pyx_n_u_shape); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1726, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = PyObject_RichCompare(__pyx_t_5, __pyx_mstate_global->__pyx_empty_tuple, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1726, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 1726, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (__pyx_t_10) {

      /* "netCDF4/_netCDF4.pyx":1728
 *         if value_arr.shape == ():
 *             # return a scalar for a scalar array
 *             return value_arr.item()             # <<<<<<<<<<<<<<
 *         elif att_len == 1:
 *             # return a scalar for a single element array
*/
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_5 = ((PyObject *)__pyx_v_value_arr);
      __Pyx_INCREF(__pyx_t_5);
      __pyx_t_8 = 0;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
        __pyx_t_6 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_item, __pyx_callargs+__pyx_t_8, (1-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1728, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
      }
      __pyx_r = __pyx_t_6;
      __pyx_t_6 = 0;
      goto __pyx_L0;

      /* "netCDF4/_netCDF4.pyx":1726
 *             ierr = nc_get_att(_grpid, varid, attname, PyArray_BYTES(value_arr))
 *         _ensure_nc_success(ierr, err_cls=AttributeError)
 *         if value_arr.shape == ():             # <<<<<<<<<<<<<<
 *             # return a scalar for a scalar array
 *             return value_arr.item()
*/
    }

    /* "netCDF4/_netCDF4.pyx":1729
 *             # return a scalar for a scalar array
 *             return value_arr.item()
 *         elif att_len == 1:             # <<<<<<<<<<<<<<
 *             # return a scalar for a single element array
 *             return value_arr[0]
*/
    __pyx_t_10 = (__pyx_v_att_len == 1);
    if (__pyx_t_10) {

      /* "netCDF4/_netCDF4.pyx":1731
 *         elif att_len == 1:
 *             # return a scalar for a single element array
 *             return value_arr[0]             # <<<<<<<<<<<<<<
 *         else:
 *             return value_arr
*/
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_6 = __Pyx_GetItemInt(((PyObject *)__pyx_v_value_arr), 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1731, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_r = __pyx_t_6;
      __pyx_t_6 = 0;
      goto __pyx_L0;

      /* "netCDF4/_netCDF4.pyx":1729
 *             # return a scalar for a scalar array
 *             return value_arr.item()
 *         elif att_len == 1:             # <<<<<<<<<<<<<<
 *             # return a scalar for a single element array
 *             return value_arr[0]
*/
    }

    /* "netCDF4/_netCDF4.pyx":1733
 *             return value_arr[0]
 *         else:
 *             return value_arr             # <<<<<<<<<<<<<<
 * 
 * def _set_default_format(object format='NETCDF4'):
*/
    /*else*/ {
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF((PyObject *)__pyx_v_value_arr);
      __pyx_r = ((PyObject *)__pyx_v_value_arr);
      goto __pyx_L0;
    }
    break;
  }

  /* "netCDF4/_netCDF4.pyx":1654
 *     return attslist
 * 
 * cdef _get_att(grp, int varid, name, encoding='utf-8'):             # <<<<<<<<<<<<<<
 *     # Private function to get an attribute value given its name
 *     cdef int ierr, n, _grpid
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_XDECREF(__pyx_t_25);
  __Pyx_XDECREF(__pyx_t_26);
  __Pyx_XDECREF(__pyx_t_30);
  __Pyx_XDECREF(__pyx_t_31);
  __Pyx_XDECREF(__pyx_t_32);
  __Pyx_XDECREF(__pyx_t_33);
  __Pyx_XDECREF(__pyx_t_34);
  __Pyx_AddTraceback("netCDF4._netCDF4._get_att", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_value_arr);
  __Pyx_XDECREF(__pyx_v_bytestr);
  __Pyx_XDECREF(__pyx_v_pstring);
  __Pyx_XDECREF(__pyx_v_result);
  __Pyx_XDECREF(__pyx_v_type_att);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":1735
 *             return value_arr
 * 
 * def _set_default_format(object format='NETCDF4'):             # <<<<<<<<<<<<<<
 *     # Private function to set the netCDF file format
 *     cdef int ierr, formatid
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_17_set_default_format(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_7netCDF4_8_netCDF4_17_set_default_format = {"_set_default_format", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_17_set_default_format, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_17_set_default_format(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_format = 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_default_format (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 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,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 1735, __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(0, 1735, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_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_default_format", 0) < (0)) __PYX_ERR(0, 1735, __pyx_L3_error)
      if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)((PyObject*)__pyx_mstate_global->__pyx_n_u_NETCDF4)));
    } else {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1735, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)((PyObject*)__pyx_mstate_global->__pyx_n_u_NETCDF4)));
    }
    __pyx_v_format = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_set_default_format", 0, 0, 1, __pyx_nargs); __PYX_ERR(0, 1735, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4._set_default_format", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_16_set_default_format(__pyx_self, __pyx_v_format);

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_16_set_default_format(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_format) {
  int __pyx_v_ierr;
  int __pyx_v_formatid;
  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;
  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("_set_default_format", 0);

  /* "netCDF4/_netCDF4.pyx":1738
 *     # Private function to set the netCDF file format
 *     cdef int ierr, formatid
 *     if format not in _format_dict:             # <<<<<<<<<<<<<<
 *         raise ValueError("unrecognized format requested")
 *     formatid = _format_dict[format]
*/
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_format_dict); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1738, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_v_format, __pyx_t_1, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 1738, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (unlikely(__pyx_t_2)) {

    /* "netCDF4/_netCDF4.pyx":1739
 *     cdef int ierr, formatid
 *     if format not in _format_dict:
 *         raise ValueError("unrecognized format requested")             # <<<<<<<<<<<<<<
 *     formatid = _format_dict[format]
 *     with nogil:
*/
    __pyx_t_3 = NULL;
    __pyx_t_4 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_unrecognized_format_requested};
      __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(0, 1739, __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(0, 1739, __pyx_L1_error)

    /* "netCDF4/_netCDF4.pyx":1738
 *     # Private function to set the netCDF file format
 *     cdef int ierr, formatid
 *     if format not in _format_dict:             # <<<<<<<<<<<<<<
 *         raise ValueError("unrecognized format requested")
 *     formatid = _format_dict[format]
*/
  }

  /* "netCDF4/_netCDF4.pyx":1740
 *     if format not in _format_dict:
 *         raise ValueError("unrecognized format requested")
 *     formatid = _format_dict[format]             # <<<<<<<<<<<<<<
 *     with nogil:
 *         ierr = nc_set_default_format(formatid, NULL)
*/
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_format_dict); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1740, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_v_format); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1740, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_5 = __Pyx_PyLong_As_int(__pyx_t_3); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1740, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_formatid = __pyx_t_5;

  /* "netCDF4/_netCDF4.pyx":1741
 *         raise ValueError("unrecognized format requested")
 *     formatid = _format_dict[format]
 *     with nogil:             # <<<<<<<<<<<<<<
 *         ierr = nc_set_default_format(formatid, NULL)
 *     _ensure_nc_success(ierr)
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "netCDF4/_netCDF4.pyx":1742
 *     formatid = _format_dict[format]
 *     with nogil:
 *         ierr = nc_set_default_format(formatid, NULL)             # <<<<<<<<<<<<<<
 *     _ensure_nc_success(ierr)
 * 
*/
        __pyx_v_ierr = nc_set_default_format(__pyx_v_formatid, NULL);
      }

      /* "netCDF4/_netCDF4.pyx":1741
 *         raise ValueError("unrecognized format requested")
 *     formatid = _format_dict[format]
 *     with nogil:             # <<<<<<<<<<<<<<
 *         ierr = nc_set_default_format(formatid, NULL)
 *     _ensure_nc_success(ierr)
*/
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L6;
        }
        __pyx_L6:;
      }
  }

  /* "netCDF4/_netCDF4.pyx":1743
 *     with nogil:
 *         ierr = nc_set_default_format(formatid, NULL)
 *     _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 * 
 * cdef _get_format(int grpid):
*/
  __pyx_t_1 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1743, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1743, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_4 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6);
    assert(__pyx_t_1);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_6);
    __Pyx_INCREF(__pyx_t_1);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_6, __pyx__function);
    __pyx_t_4 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_t_7};
    __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_6, __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_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1743, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "netCDF4/_netCDF4.pyx":1735
 *             return value_arr
 * 
 * def _set_default_format(object format='NETCDF4'):             # <<<<<<<<<<<<<<
 *     # Private function to set the netCDF file format
 *     cdef int ierr, formatid
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("netCDF4._netCDF4._set_default_format", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":1745
 *     _ensure_nc_success(ierr)
 * 
 * cdef _get_format(int grpid):             # <<<<<<<<<<<<<<
 *     # Private function to get the netCDF file format
 *     cdef int ierr, formatp
*/

static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_format(int __pyx_v_grpid) {
  int __pyx_v_ierr;
  int __pyx_v_formatp;
  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_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_get_format", 0);

  /* "netCDF4/_netCDF4.pyx":1748
 *     # Private function to get the netCDF file format
 *     cdef int ierr, formatp
 *     with nogil:             # <<<<<<<<<<<<<<
 *         ierr = nc_inq_format(grpid, &formatp)
 *     _ensure_nc_success(ierr)
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "netCDF4/_netCDF4.pyx":1749
 *     cdef int ierr, formatp
 *     with nogil:
 *         ierr = nc_inq_format(grpid, &formatp)             # <<<<<<<<<<<<<<
 *     _ensure_nc_success(ierr)
 *     if formatp not in _reverse_format_dict:
*/
        __pyx_v_ierr = nc_inq_format(__pyx_v_grpid, (&__pyx_v_formatp));
      }

      /* "netCDF4/_netCDF4.pyx":1748
 *     # Private function to get the netCDF file format
 *     cdef int ierr, formatp
 *     with nogil:             # <<<<<<<<<<<<<<
 *         ierr = nc_inq_format(grpid, &formatp)
 *     _ensure_nc_success(ierr)
*/
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "netCDF4/_netCDF4.pyx":1750
 *     with nogil:
 *         ierr = nc_inq_format(grpid, &formatp)
 *     _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 *     if formatp not in _reverse_format_dict:
 *         raise ValueError('format not supported by python interface')
*/
  __pyx_t_2 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1750, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1750, __pyx_L1_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[2] = {__pyx_t_2, __pyx_t_4};
    __pyx_t_1 = __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_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(0, 1750, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":1751
 *         ierr = nc_inq_format(grpid, &formatp)
 *     _ensure_nc_success(ierr)
 *     if formatp not in _reverse_format_dict:             # <<<<<<<<<<<<<<
 *         raise ValueError('format not supported by python interface')
 *     return _reverse_format_dict[formatp]
*/
  __pyx_t_1 = __Pyx_PyLong_From_int(__pyx_v_formatp); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1751, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_reverse_format_dict); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1751, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_6 = (__Pyx_PySequence_ContainsTF(__pyx_t_1, __pyx_t_3, Py_NE)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 1751, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(__pyx_t_6)) {

    /* "netCDF4/_netCDF4.pyx":1752
 *     _ensure_nc_success(ierr)
 *     if formatp not in _reverse_format_dict:
 *         raise ValueError('format not supported by python interface')             # <<<<<<<<<<<<<<
 *     return _reverse_format_dict[formatp]
 * 
*/
    __pyx_t_1 = NULL;
    __pyx_t_5 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_mstate_global->__pyx_kp_u_format_not_supported_by_python_i};
      __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_1); __pyx_t_1 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1752, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(0, 1752, __pyx_L1_error)

    /* "netCDF4/_netCDF4.pyx":1751
 *         ierr = nc_inq_format(grpid, &formatp)
 *     _ensure_nc_success(ierr)
 *     if formatp not in _reverse_format_dict:             # <<<<<<<<<<<<<<
 *         raise ValueError('format not supported by python interface')
 *     return _reverse_format_dict[formatp]
*/
  }

  /* "netCDF4/_netCDF4.pyx":1753
 *     if formatp not in _reverse_format_dict:
 *         raise ValueError('format not supported by python interface')
 *     return _reverse_format_dict[formatp]             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_reverse_format_dict); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1753, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_3, __pyx_v_formatp, int, 1, __Pyx_PyLong_From_int, 0, 1, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1753, __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;

  /* "netCDF4/_netCDF4.pyx":1745
 *     _ensure_nc_success(ierr)
 * 
 * cdef _get_format(int grpid):             # <<<<<<<<<<<<<<
 *     # Private function to get the netCDF file format
 *     cdef int ierr, formatp
*/

  /* 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("netCDF4._netCDF4._get_format", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":1756
 * 
 * 
 * cdef _get_full_format(int grpid):             # <<<<<<<<<<<<<<
 *     """Private function to get the underlying disk format"""
 * 
*/

static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_full_format(int __pyx_v_grpid) {
  int __pyx_v_ierr;
  int __pyx_v_formatp;
  int __pyx_v_modep;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  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("_get_full_format", 0);

  /* "netCDF4/_netCDF4.pyx":1759
 *     """Private function to get the underlying disk format"""
 * 
 *     if not __has_nc_inq_format_extended__:             # <<<<<<<<<<<<<<
 *         return "UNDEFINED"
 * 
*/
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_has_nc_inq_format_extended); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1759, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 1759, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = (!__pyx_t_2);
  if (__pyx_t_3) {

    /* "netCDF4/_netCDF4.pyx":1760
 * 
 *     if not __has_nc_inq_format_extended__:
 *         return "UNDEFINED"             # <<<<<<<<<<<<<<
 * 
 *     cdef int ierr, formatp, modep
*/
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_UNDEFINED);
    __pyx_r = __pyx_mstate_global->__pyx_n_u_UNDEFINED;
    goto __pyx_L0;

    /* "netCDF4/_netCDF4.pyx":1759
 *     """Private function to get the underlying disk format"""
 * 
 *     if not __has_nc_inq_format_extended__:             # <<<<<<<<<<<<<<
 *         return "UNDEFINED"
 * 
*/
  }

  /* "netCDF4/_netCDF4.pyx":1763
 * 
 *     cdef int ierr, formatp, modep
 *     with nogil:             # <<<<<<<<<<<<<<
 *         ierr = nc_inq_format_extended(grpid, &formatp, &modep)
 *     _ensure_nc_success(ierr)
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "netCDF4/_netCDF4.pyx":1764
 *     cdef int ierr, formatp, modep
 *     with nogil:
 *         ierr = nc_inq_format_extended(grpid, &formatp, &modep)             # <<<<<<<<<<<<<<
 *     _ensure_nc_success(ierr)
 *     if formatp == NC_FORMAT_NC3:
*/
        __pyx_v_ierr = nc_inq_format_extended(__pyx_v_grpid, (&__pyx_v_formatp), (&__pyx_v_modep));
      }

      /* "netCDF4/_netCDF4.pyx":1763
 * 
 *     cdef int ierr, formatp, modep
 *     with nogil:             # <<<<<<<<<<<<<<
 *         ierr = nc_inq_format_extended(grpid, &formatp, &modep)
 *     _ensure_nc_success(ierr)
*/
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L6;
        }
        __pyx_L6:;
      }
  }

  /* "netCDF4/_netCDF4.pyx":1765
 *     with nogil:
 *         ierr = nc_inq_format_extended(grpid, &formatp, &modep)
 *     _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 *     if formatp == NC_FORMAT_NC3:
 *         return 'NETCDF3'
*/
  __pyx_t_4 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1765, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1765, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = 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_7 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_6};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __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;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1765, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":1766
 *         ierr = nc_inq_format_extended(grpid, &formatp, &modep)
 *     _ensure_nc_success(ierr)
 *     if formatp == NC_FORMAT_NC3:             # <<<<<<<<<<<<<<
 *         return 'NETCDF3'
 *     if formatp == NC_FORMAT_NC_HDF5:
*/
  __pyx_t_3 = (__pyx_v_formatp == NC_FORMAT_NC3);
  if (__pyx_t_3) {

    /* "netCDF4/_netCDF4.pyx":1767
 *     _ensure_nc_success(ierr)
 *     if formatp == NC_FORMAT_NC3:
 *         return 'NETCDF3'             # <<<<<<<<<<<<<<
 *     if formatp == NC_FORMAT_NC_HDF5:
 *         return 'HDF5'
*/
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_NETCDF3);
    __pyx_r = __pyx_mstate_global->__pyx_n_u_NETCDF3;
    goto __pyx_L0;

    /* "netCDF4/_netCDF4.pyx":1766
 *         ierr = nc_inq_format_extended(grpid, &formatp, &modep)
 *     _ensure_nc_success(ierr)
 *     if formatp == NC_FORMAT_NC3:             # <<<<<<<<<<<<<<
 *         return 'NETCDF3'
 *     if formatp == NC_FORMAT_NC_HDF5:
*/
  }

  /* "netCDF4/_netCDF4.pyx":1768
 *     if formatp == NC_FORMAT_NC3:
 *         return 'NETCDF3'
 *     if formatp == NC_FORMAT_NC_HDF5:             # <<<<<<<<<<<<<<
 *         return 'HDF5'
 *     if formatp == NC_FORMAT_NC_HDF4:
*/
  __pyx_t_3 = (__pyx_v_formatp == NC_FORMAT_NC_HDF5);
  if (__pyx_t_3) {

    /* "netCDF4/_netCDF4.pyx":1769
 *         return 'NETCDF3'
 *     if formatp == NC_FORMAT_NC_HDF5:
 *         return 'HDF5'             # <<<<<<<<<<<<<<
 *     if formatp == NC_FORMAT_NC_HDF4:
 *         return 'HDF4'
*/
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_HDF5);
    __pyx_r = __pyx_mstate_global->__pyx_n_u_HDF5;
    goto __pyx_L0;

    /* "netCDF4/_netCDF4.pyx":1768
 *     if formatp == NC_FORMAT_NC3:
 *         return 'NETCDF3'
 *     if formatp == NC_FORMAT_NC_HDF5:             # <<<<<<<<<<<<<<
 *         return 'HDF5'
 *     if formatp == NC_FORMAT_NC_HDF4:
*/
  }

  /* "netCDF4/_netCDF4.pyx":1770
 *     if formatp == NC_FORMAT_NC_HDF5:
 *         return 'HDF5'
 *     if formatp == NC_FORMAT_NC_HDF4:             # <<<<<<<<<<<<<<
 *         return 'HDF4'
 *     if formatp == NC_FORMAT_PNETCDF:
*/
  __pyx_t_3 = (__pyx_v_formatp == NC_FORMAT_NC_HDF4);
  if (__pyx_t_3) {

    /* "netCDF4/_netCDF4.pyx":1771
 *         return 'HDF5'
 *     if formatp == NC_FORMAT_NC_HDF4:
 *         return 'HDF4'             # <<<<<<<<<<<<<<
 *     if formatp == NC_FORMAT_PNETCDF:
 *         return 'PNETCDF'
*/
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_HDF4);
    __pyx_r = __pyx_mstate_global->__pyx_n_u_HDF4;
    goto __pyx_L0;

    /* "netCDF4/_netCDF4.pyx":1770
 *     if formatp == NC_FORMAT_NC_HDF5:
 *         return 'HDF5'
 *     if formatp == NC_FORMAT_NC_HDF4:             # <<<<<<<<<<<<<<
 *         return 'HDF4'
 *     if formatp == NC_FORMAT_PNETCDF:
*/
  }

  /* "netCDF4/_netCDF4.pyx":1772
 *     if formatp == NC_FORMAT_NC_HDF4:
 *         return 'HDF4'
 *     if formatp == NC_FORMAT_PNETCDF:             # <<<<<<<<<<<<<<
 *         return 'PNETCDF'
 *     if formatp == NC_FORMAT_DAP2:
*/
  __pyx_t_3 = (__pyx_v_formatp == NC_FORMAT_PNETCDF);
  if (__pyx_t_3) {

    /* "netCDF4/_netCDF4.pyx":1773
 *         return 'HDF4'
 *     if formatp == NC_FORMAT_PNETCDF:
 *         return 'PNETCDF'             # <<<<<<<<<<<<<<
 *     if formatp == NC_FORMAT_DAP2:
 *         return 'DAP2'
*/
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_PNETCDF);
    __pyx_r = __pyx_mstate_global->__pyx_n_u_PNETCDF;
    goto __pyx_L0;

    /* "netCDF4/_netCDF4.pyx":1772
 *     if formatp == NC_FORMAT_NC_HDF4:
 *         return 'HDF4'
 *     if formatp == NC_FORMAT_PNETCDF:             # <<<<<<<<<<<<<<
 *         return 'PNETCDF'
 *     if formatp == NC_FORMAT_DAP2:
*/
  }

  /* "netCDF4/_netCDF4.pyx":1774
 *     if formatp == NC_FORMAT_PNETCDF:
 *         return 'PNETCDF'
 *     if formatp == NC_FORMAT_DAP2:             # <<<<<<<<<<<<<<
 *         return 'DAP2'
 *     if formatp == NC_FORMAT_DAP4:
*/
  __pyx_t_3 = (__pyx_v_formatp == NC_FORMAT_DAP2);
  if (__pyx_t_3) {

    /* "netCDF4/_netCDF4.pyx":1775
 *         return 'PNETCDF'
 *     if formatp == NC_FORMAT_DAP2:
 *         return 'DAP2'             # <<<<<<<<<<<<<<
 *     if formatp == NC_FORMAT_DAP4:
 *         return 'DAP4'
*/
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_DAP2);
    __pyx_r = __pyx_mstate_global->__pyx_n_u_DAP2;
    goto __pyx_L0;

    /* "netCDF4/_netCDF4.pyx":1774
 *     if formatp == NC_FORMAT_PNETCDF:
 *         return 'PNETCDF'
 *     if formatp == NC_FORMAT_DAP2:             # <<<<<<<<<<<<<<
 *         return 'DAP2'
 *     if formatp == NC_FORMAT_DAP4:
*/
  }

  /* "netCDF4/_netCDF4.pyx":1776
 *     if formatp == NC_FORMAT_DAP2:
 *         return 'DAP2'
 *     if formatp == NC_FORMAT_DAP4:             # <<<<<<<<<<<<<<
 *         return 'DAP4'
 *     if formatp == NC_FORMAT_UNDEFINED:
*/
  __pyx_t_3 = (__pyx_v_formatp == NC_FORMAT_DAP4);
  if (__pyx_t_3) {

    /* "netCDF4/_netCDF4.pyx":1777
 *         return 'DAP2'
 *     if formatp == NC_FORMAT_DAP4:
 *         return 'DAP4'             # <<<<<<<<<<<<<<
 *     if formatp == NC_FORMAT_UNDEFINED:
 *         return 'UNDEFINED'
*/
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_DAP4);
    __pyx_r = __pyx_mstate_global->__pyx_n_u_DAP4;
    goto __pyx_L0;

    /* "netCDF4/_netCDF4.pyx":1776
 *     if formatp == NC_FORMAT_DAP2:
 *         return 'DAP2'
 *     if formatp == NC_FORMAT_DAP4:             # <<<<<<<<<<<<<<
 *         return 'DAP4'
 *     if formatp == NC_FORMAT_UNDEFINED:
*/
  }

  /* "netCDF4/_netCDF4.pyx":1778
 *     if formatp == NC_FORMAT_DAP4:
 *         return 'DAP4'
 *     if formatp == NC_FORMAT_UNDEFINED:             # <<<<<<<<<<<<<<
 *         return 'UNDEFINED'
 * 
*/
  __pyx_t_3 = (__pyx_v_formatp == NC_FORMAT_UNDEFINED);
  if (__pyx_t_3) {

    /* "netCDF4/_netCDF4.pyx":1779
 *         return 'DAP4'
 *     if formatp == NC_FORMAT_UNDEFINED:
 *         return 'UNDEFINED'             # <<<<<<<<<<<<<<
 * 
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_UNDEFINED);
    __pyx_r = __pyx_mstate_global->__pyx_n_u_UNDEFINED;
    goto __pyx_L0;

    /* "netCDF4/_netCDF4.pyx":1778
 *     if formatp == NC_FORMAT_DAP4:
 *         return 'DAP4'
 *     if formatp == NC_FORMAT_UNDEFINED:             # <<<<<<<<<<<<<<
 *         return 'UNDEFINED'
 * 
*/
  }

  /* "netCDF4/_netCDF4.pyx":1756
 * 
 * 
 * cdef _get_full_format(int grpid):             # <<<<<<<<<<<<<<
 *     """Private function to get the underlying disk format"""
 * 
*/

  /* 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_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("netCDF4._netCDF4._get_full_format", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":1782
 * 
 * 
 * cdef issue485_workaround(int grpid, int varid, char* attname):             # <<<<<<<<<<<<<<
 *     # check to see if attribute already exists
 *     # and is NC_CHAR, if so delete it and re-create it
*/

static PyObject *__pyx_f_7netCDF4_8_netCDF4_issue485_workaround(int __pyx_v_grpid, int __pyx_v_varid, char *__pyx_v_attname) {
  nc_type __pyx_v_att_type;
  size_t __pyx_v_att_len;
  int __pyx_v_ierr;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  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("issue485_workaround", 0);

  /* "netCDF4/_netCDF4.pyx":1791
 *     cdef size_t att_len
 * 
 *     if not _needsworkaround_issue485:             # <<<<<<<<<<<<<<
 *         return
 *     with nogil:
*/
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_needsworkaround_issue485); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1791, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 1791, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = (!__pyx_t_2);
  if (__pyx_t_3) {

    /* "netCDF4/_netCDF4.pyx":1792
 * 
 *     if not _needsworkaround_issue485:
 *         return             # <<<<<<<<<<<<<<
 *     with nogil:
 *         ierr = nc_inq_att(grpid, varid, attname, &att_type, &att_len)
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "netCDF4/_netCDF4.pyx":1791
 *     cdef size_t att_len
 * 
 *     if not _needsworkaround_issue485:             # <<<<<<<<<<<<<<
 *         return
 *     with nogil:
*/
  }

  /* "netCDF4/_netCDF4.pyx":1793
 *     if not _needsworkaround_issue485:
 *         return
 *     with nogil:             # <<<<<<<<<<<<<<
 *         ierr = nc_inq_att(grpid, varid, attname, &att_type, &att_len)
 *     if ierr == NC_NOERR and att_type == NC_CHAR:
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "netCDF4/_netCDF4.pyx":1794
 *         return
 *     with nogil:
 *         ierr = nc_inq_att(grpid, varid, attname, &att_type, &att_len)             # <<<<<<<<<<<<<<
 *     if ierr == NC_NOERR and att_type == NC_CHAR:
 *         with nogil:
*/
        __pyx_v_ierr = nc_inq_att(__pyx_v_grpid, __pyx_v_varid, __pyx_v_attname, (&__pyx_v_att_type), (&__pyx_v_att_len));
      }

      /* "netCDF4/_netCDF4.pyx":1793
 *     if not _needsworkaround_issue485:
 *         return
 *     with nogil:             # <<<<<<<<<<<<<<
 *         ierr = nc_inq_att(grpid, varid, attname, &att_type, &att_len)
 *     if ierr == NC_NOERR and att_type == NC_CHAR:
*/
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L6;
        }
        __pyx_L6:;
      }
  }

  /* "netCDF4/_netCDF4.pyx":1795
 *     with nogil:
 *         ierr = nc_inq_att(grpid, varid, attname, &att_type, &att_len)
 *     if ierr == NC_NOERR and att_type == NC_CHAR:             # <<<<<<<<<<<<<<
 *         with nogil:
 *             ierr = nc_del_att(grpid, varid, attname)
*/
  __pyx_t_2 = (__pyx_v_ierr == NC_NOERR);
  if (__pyx_t_2) {
  } else {
    __pyx_t_3 = __pyx_t_2;
    goto __pyx_L8_bool_binop_done;
  }
  __pyx_t_2 = (__pyx_v_att_type == NC_CHAR);
  __pyx_t_3 = __pyx_t_2;
  __pyx_L8_bool_binop_done:;
  if (__pyx_t_3) {

    /* "netCDF4/_netCDF4.pyx":1796
 *         ierr = nc_inq_att(grpid, varid, attname, &att_type, &att_len)
 *     if ierr == NC_NOERR and att_type == NC_CHAR:
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_del_att(grpid, varid, attname)
 *         _ensure_nc_success(ierr)
*/
    {
        PyThreadState * _save;
        _save = PyEval_SaveThread();
        __Pyx_FastGIL_Remember();
        /*try:*/ {

          /* "netCDF4/_netCDF4.pyx":1797
 *     if ierr == NC_NOERR and att_type == NC_CHAR:
 *         with nogil:
 *             ierr = nc_del_att(grpid, varid, attname)             # <<<<<<<<<<<<<<
 *         _ensure_nc_success(ierr)
 * 
*/
          __pyx_v_ierr = nc_del_att(__pyx_v_grpid, __pyx_v_varid, __pyx_v_attname);
        }

        /* "netCDF4/_netCDF4.pyx":1796
 *         ierr = nc_inq_att(grpid, varid, attname, &att_type, &att_len)
 *     if ierr == NC_NOERR and att_type == NC_CHAR:
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_del_att(grpid, varid, attname)
 *         _ensure_nc_success(ierr)
*/
        /*finally:*/ {
          /*normal exit:*/{
            __Pyx_FastGIL_Forget();
            PyEval_RestoreThread(_save);
            goto __pyx_L12;
          }
          __pyx_L12:;
        }
    }

    /* "netCDF4/_netCDF4.pyx":1798
 *         with nogil:
 *             ierr = nc_del_att(grpid, varid, attname)
 *         _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 * 
 * 
*/
    __pyx_t_4 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1798, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1798, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = 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_7 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_6};
      __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __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;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1798, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":1795
 *     with nogil:
 *         ierr = nc_inq_att(grpid, varid, attname, &att_type, &att_len)
 *     if ierr == NC_NOERR and att_type == NC_CHAR:             # <<<<<<<<<<<<<<
 *         with nogil:
 *             ierr = nc_del_att(grpid, varid, attname)
*/
  }

  /* "netCDF4/_netCDF4.pyx":1782
 * 
 * 
 * cdef issue485_workaround(int grpid, int varid, char* attname):             # <<<<<<<<<<<<<<
 *     # check to see if attribute already exists
 *     # and is NC_CHAR, if so delete it and re-create it
*/

  /* 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_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("netCDF4._netCDF4.issue485_workaround", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":1801
 * 
 * 
 * cdef _set_att(grp, int varid, name, value,\             # <<<<<<<<<<<<<<
 *               nc_type xtype=-99, force_ncstring=False):
 *     # Private function to set an attribute name/value pair
*/

static PyObject *__pyx_f_7netCDF4_8_netCDF4__set_att(PyObject *__pyx_v_grp, int __pyx_v_varid, PyObject *__pyx_v_name, PyObject *__pyx_v_value, struct __pyx_opt_args_7netCDF4_8_netCDF4__set_att *__pyx_optional_args) {
  nc_type __pyx_v_xtype = ((nc_type)-99);

  /* "netCDF4/_netCDF4.pyx":1802
 * 
 * cdef _set_att(grp, int varid, name, value,\
 *               nc_type xtype=-99, force_ncstring=False):             # <<<<<<<<<<<<<<
 *     # Private function to set an attribute name/value pair
 *     cdef int ierr, lenarr, N, grpid
*/
  PyObject *__pyx_v_force_ncstring = ((PyObject *)Py_False);
  int __pyx_v_ierr;
  int __pyx_v_lenarr;
  int __pyx_v_N;
  int __pyx_v_grpid;
  char *__pyx_v_attname;
  char *__pyx_v_datstring;
  char **__pyx_v_string_ptrs;
  PyArrayObject *__pyx_v_value_arr = 0;
  PyObject *__pyx_v_bytestr = NULL;
  PyObject *__pyx_v_msg = NULL;
  PyObject *__pyx_v_fmt = NULL;
  PyObject *__pyx_v_is_netcdf3 = NULL;
  PyObject *__pyx_v_strings = NULL;
  int __pyx_v_j;
  PyObject *__pyx_v_dats = NULL;
  PyObject *__pyx_v_value_arr1 = NULL;
  CYTHON_UNUSED PyObject *__pyx_v_dats_ascii = NULL;
  PyObject *__pyx_8genexpr4__pyx_v_s = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  char *__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;
  int __pyx_t_8;
  int __pyx_t_9;
  int __pyx_t_10;
  Py_ssize_t __pyx_t_11;
  PyObject *(*__pyx_t_12)(PyObject *);
  int __pyx_t_13;
  int __pyx_t_14;
  char const *__pyx_t_15;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17 = NULL;
  PyObject *__pyx_t_18 = NULL;
  PyObject *__pyx_t_19 = NULL;
  PyObject *__pyx_t_20 = NULL;
  PyObject *__pyx_t_21 = NULL;
  PyObject *__pyx_t_22 = NULL;
  nc_type __pyx_t_23;
  PyObject *__pyx_t_24[6];
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_set_att", 0);
  if (__pyx_optional_args) {
    if (__pyx_optional_args->__pyx_n > 0) {
      __pyx_v_xtype = __pyx_optional_args->xtype;
      if (__pyx_optional_args->__pyx_n > 1) {
        __pyx_v_force_ncstring = __pyx_optional_args->force_ncstring;
      }
    }
  }
  __Pyx_INCREF(__pyx_v_force_ncstring);

  /* "netCDF4/_netCDF4.pyx":1809
 *     cdef char **string_ptrs
 *     cdef ndarray value_arr
 *     bytestr = _strencode(name)             # <<<<<<<<<<<<<<
 *     attname = bytestr
 *     grpid = grp._grpid
*/
  __pyx_t_1 = __pyx_f_7netCDF4_8_netCDF4__strencode(__pyx_v_name, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1809, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_bytestr = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":1810
 *     cdef ndarray value_arr
 *     bytestr = _strencode(name)
 *     attname = bytestr             # <<<<<<<<<<<<<<
 *     grpid = grp._grpid
 *     # put attribute value into a numpy array.
*/
  __pyx_t_2 = __Pyx_PyObject_AsWritableString(__pyx_v_bytestr); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 1810, __pyx_L1_error)
  __pyx_v_attname = __pyx_t_2;

  /* "netCDF4/_netCDF4.pyx":1811
 *     bytestr = _strencode(name)
 *     attname = bytestr
 *     grpid = grp._grpid             # <<<<<<<<<<<<<<
 *     # put attribute value into a numpy array.
 *     value_arr = numpy.array(value)
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_mstate_global->__pyx_n_u_grpid); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1811, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyLong_As_int(__pyx_t_1); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1811, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_grpid = __pyx_t_3;

  /* "netCDF4/_netCDF4.pyx":1813
 *     grpid = grp._grpid
 *     # put attribute value into a numpy array.
 *     value_arr = numpy.array(value)             # <<<<<<<<<<<<<<
 *     if value_arr.ndim > 1: # issue #841
 *         if __version__ > "1.4.2":
*/
  __pyx_t_4 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1813, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_array); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1813, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_7 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(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_7 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_value};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_6, __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_1)) __PYX_ERR(0, 1813, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_ndarray))))) __PYX_ERR(0, 1813, __pyx_L1_error)
  __pyx_v_value_arr = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":1814
 *     # put attribute value into a numpy array.
 *     value_arr = numpy.array(value)
 *     if value_arr.ndim > 1: # issue #841             # <<<<<<<<<<<<<<
 *         if __version__ > "1.4.2":
 *             raise ValueError('multi-dimensional array attributes not supported')
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_value_arr), __pyx_mstate_global->__pyx_n_u_ndim); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1814, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = PyObject_RichCompare(__pyx_t_1, __pyx_mstate_global->__pyx_int_1, Py_GT); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1814, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 1814, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (__pyx_t_8) {

    /* "netCDF4/_netCDF4.pyx":1815
 *     value_arr = numpy.array(value)
 *     if value_arr.ndim > 1: # issue #841
 *         if __version__ > "1.4.2":             # <<<<<<<<<<<<<<
 *             raise ValueError('multi-dimensional array attributes not supported')
 *         else:
*/
    __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_version_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1815, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_1 = PyObject_RichCompare(__pyx_t_6, __pyx_mstate_global->__pyx_kp_u_1_4_2, Py_GT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1815, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 1815, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (unlikely(__pyx_t_8)) {

      /* "netCDF4/_netCDF4.pyx":1816
 *     if value_arr.ndim > 1: # issue #841
 *         if __version__ > "1.4.2":
 *             raise ValueError('multi-dimensional array attributes not supported')             # <<<<<<<<<<<<<<
 *         else:
 *             msg = """
*/
      __pyx_t_6 = NULL;
      __pyx_t_7 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_mstate_global->__pyx_kp_u_multi_dimensional_array_attribut};
        __pyx_t_1 = __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;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1816, __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(0, 1816, __pyx_L1_error)

      /* "netCDF4/_netCDF4.pyx":1815
 *     value_arr = numpy.array(value)
 *     if value_arr.ndim > 1: # issue #841
 *         if __version__ > "1.4.2":             # <<<<<<<<<<<<<<
 *             raise ValueError('multi-dimensional array attributes not supported')
 *         else:
*/
    }

    /* "netCDF4/_netCDF4.pyx":1818
 *             raise ValueError('multi-dimensional array attributes not supported')
 *         else:
 *             msg = """             # <<<<<<<<<<<<<<
 * Multi-dimensional array attributes are now deprecated.
 * Instead of silently flattening the array, an error will
*/
    /*else*/ {
      __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u_Multi_dimensional_array_attribu);
      __pyx_v_msg = __pyx_mstate_global->__pyx_kp_u_Multi_dimensional_array_attribu;

      /* "netCDF4/_netCDF4.pyx":1822
 * Instead of silently flattening the array, an error will
 * be raised in the next release."""
 *             warnings.warn(msg,FutureWarning)             # <<<<<<<<<<<<<<
 *     # if array is 64 bit integers or
 *     # if 64-bit datatype not supported, cast to 32 bit integers.
*/
      __pyx_t_6 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_warnings); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1822, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_warn); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1822, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_7 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_5))) {
        __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
        assert(__pyx_t_6);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
        __pyx_t_7 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_v_msg, ((PyObject *)(((PyTypeObject*)PyExc_FutureWarning)))};
        __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_7, (3-__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_1)) __PYX_ERR(0, 1822, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
      }
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    }

    /* "netCDF4/_netCDF4.pyx":1814
 *     # put attribute value into a numpy array.
 *     value_arr = numpy.array(value)
 *     if value_arr.ndim > 1: # issue #841             # <<<<<<<<<<<<<<
 *         if __version__ > "1.4.2":
 *             raise ValueError('multi-dimensional array attributes not supported')
*/
  }

  /* "netCDF4/_netCDF4.pyx":1825
 *     # if array is 64 bit integers or
 *     # if 64-bit datatype not supported, cast to 32 bit integers.
 *     fmt = _get_format(grpid)             # <<<<<<<<<<<<<<
 *     is_netcdf3 = fmt.startswith('NETCDF3') or fmt == 'NETCDF4_CLASSIC'
 *     if value_arr.dtype.str[1:] == 'i8' and ('i8' not in _supportedtypes or\
*/
  __pyx_t_1 = __pyx_f_7netCDF4_8_netCDF4__get_format(__pyx_v_grpid); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1825, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_fmt = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":1826
 *     # if 64-bit datatype not supported, cast to 32 bit integers.
 *     fmt = _get_format(grpid)
 *     is_netcdf3 = fmt.startswith('NETCDF3') or fmt == 'NETCDF4_CLASSIC'             # <<<<<<<<<<<<<<
 *     if value_arr.dtype.str[1:] == 'i8' and ('i8' not in _supportedtypes or\
 *        (is_netcdf3 and fmt != 'NETCDF3_64BIT_DATA')):
*/
  __pyx_t_6 = __pyx_v_fmt;
  __Pyx_INCREF(__pyx_t_6);
  __pyx_t_7 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_mstate_global->__pyx_n_u_NETCDF3};
    __pyx_t_5 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_startswith, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1826, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
  }
  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 1826, __pyx_L1_error)
  if (!__pyx_t_8) {
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  } else {
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_1 = __pyx_t_5;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    goto __pyx_L5_bool_binop_done;
  }
  __pyx_t_5 = PyObject_RichCompare(__pyx_v_fmt, __pyx_mstate_global->__pyx_n_u_NETCDF4_CLASSIC, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1826, __pyx_L1_error)
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_1 = __pyx_t_5;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_L5_bool_binop_done:;
  __pyx_v_is_netcdf3 = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":1827
 *     fmt = _get_format(grpid)
 *     is_netcdf3 = fmt.startswith('NETCDF3') or fmt == 'NETCDF4_CLASSIC'
 *     if value_arr.dtype.str[1:] == 'i8' and ('i8' not in _supportedtypes or\             # <<<<<<<<<<<<<<
 *        (is_netcdf3 and fmt != 'NETCDF3_64BIT_DATA')):
 *         value_arr = value_arr.astype('i4')
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_value_arr), __pyx_mstate_global->__pyx_n_u_dtype); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1827, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_str); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1827, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetSlice(__pyx_t_5, 1, 0, NULL, NULL, &__pyx_mstate_global->__pyx_slice[0], 1, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1827, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_9 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_i8, Py_EQ)); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 1827, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_9) {
  } else {
    __pyx_t_8 = __pyx_t_9;
    goto __pyx_L8_bool_binop_done;
  }
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_supportedtypes); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1827, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_9 = (__Pyx_PySequence_ContainsTF(__pyx_mstate_global->__pyx_n_u_i8, __pyx_t_1, Py_NE)); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 1827, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!__pyx_t_9) {
  } else {
    __pyx_t_8 = __pyx_t_9;
    goto __pyx_L8_bool_binop_done;
  }

  /* "netCDF4/_netCDF4.pyx":1828
 *     is_netcdf3 = fmt.startswith('NETCDF3') or fmt == 'NETCDF4_CLASSIC'
 *     if value_arr.dtype.str[1:] == 'i8' and ('i8' not in _supportedtypes or\
 *        (is_netcdf3 and fmt != 'NETCDF3_64BIT_DATA')):             # <<<<<<<<<<<<<<
 *         value_arr = value_arr.astype('i4')
 *     # if array contains ascii strings, write a text attribute (stored as bytes).
*/
  __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_is_netcdf3); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 1828, __pyx_L1_error)
  if (__pyx_t_9) {
  } else {
    __pyx_t_8 = __pyx_t_9;
    goto __pyx_L8_bool_binop_done;
  }
  __pyx_t_9 = (__Pyx_PyUnicode_Equals(__pyx_v_fmt, __pyx_mstate_global->__pyx_n_u_NETCDF3_64BIT_DATA, Py_NE)); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 1828, __pyx_L1_error)
  __pyx_t_8 = __pyx_t_9;
  __pyx_L8_bool_binop_done:;

  /* "netCDF4/_netCDF4.pyx":1827
 *     fmt = _get_format(grpid)
 *     is_netcdf3 = fmt.startswith('NETCDF3') or fmt == 'NETCDF4_CLASSIC'
 *     if value_arr.dtype.str[1:] == 'i8' and ('i8' not in _supportedtypes or\             # <<<<<<<<<<<<<<
 *        (is_netcdf3 and fmt != 'NETCDF3_64BIT_DATA')):
 *         value_arr = value_arr.astype('i4')
*/
  if (__pyx_t_8) {

    /* "netCDF4/_netCDF4.pyx":1829
 *     if value_arr.dtype.str[1:] == 'i8' and ('i8' not in _supportedtypes or\
 *        (is_netcdf3 and fmt != 'NETCDF3_64BIT_DATA')):
 *         value_arr = value_arr.astype('i4')             # <<<<<<<<<<<<<<
 *     # if array contains ascii strings, write a text attribute (stored as bytes).
 *     # if array contains unicode strings, and data model is NETCDF4,
*/
    __pyx_t_5 = ((PyObject *)__pyx_v_value_arr);
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_7 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_n_u_i4};
      __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_astype, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1829, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_ndarray))))) __PYX_ERR(0, 1829, __pyx_L1_error)
    __Pyx_DECREF_SET(__pyx_v_value_arr, ((PyArrayObject *)__pyx_t_1));
    __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":1827
 *     fmt = _get_format(grpid)
 *     is_netcdf3 = fmt.startswith('NETCDF3') or fmt == 'NETCDF4_CLASSIC'
 *     if value_arr.dtype.str[1:] == 'i8' and ('i8' not in _supportedtypes or\             # <<<<<<<<<<<<<<
 *        (is_netcdf3 and fmt != 'NETCDF3_64BIT_DATA')):
 *         value_arr = value_arr.astype('i4')
*/
  }

  /* "netCDF4/_netCDF4.pyx":1833
 *     # if array contains unicode strings, and data model is NETCDF4,
 *     # write as a string.
 *     if value_arr.dtype.char in ['S','U']:             # <<<<<<<<<<<<<<
 *         # force array of strings if array has multiple elements (issue #770)
 *         N = value_arr.size
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_value_arr), __pyx_mstate_global->__pyx_n_u_dtype); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1833, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_char); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1833, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_9 = (__Pyx_PyUnicode_Equals(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_S, Py_EQ)); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 1833, __pyx_L1_error)
  if (!__pyx_t_9) {
  } else {
    __pyx_t_8 = __pyx_t_9;
    goto __pyx_L13_bool_binop_done;
  }
  __pyx_t_9 = (__Pyx_PyUnicode_Equals(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_U, Py_EQ)); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 1833, __pyx_L1_error)
  __pyx_t_8 = __pyx_t_9;
  __pyx_L13_bool_binop_done:;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_9 = __pyx_t_8;
  if (__pyx_t_9) {

    /* "netCDF4/_netCDF4.pyx":1835
 *     if value_arr.dtype.char in ['S','U']:
 *         # force array of strings if array has multiple elements (issue #770)
 *         N = value_arr.size             # <<<<<<<<<<<<<<
 *         if N > 1: force_ncstring=True
 *         if not is_netcdf3 and force_ncstring and N > 1:
*/
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_value_arr), __pyx_mstate_global->__pyx_n_u_size); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1835, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_3 = __Pyx_PyLong_As_int(__pyx_t_5); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1835, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_v_N = __pyx_t_3;

    /* "netCDF4/_netCDF4.pyx":1836
 *         # force array of strings if array has multiple elements (issue #770)
 *         N = value_arr.size
 *         if N > 1: force_ncstring=True             # <<<<<<<<<<<<<<
 *         if not is_netcdf3 and force_ncstring and N > 1:
 *             string_ptrs = <char**>PyMem_Malloc(N * sizeof(char*))
*/
    __pyx_t_9 = (__pyx_v_N > 1);
    if (__pyx_t_9) {
      __Pyx_INCREF(Py_True);
      __Pyx_DECREF_SET(__pyx_v_force_ncstring, Py_True);
    }

    /* "netCDF4/_netCDF4.pyx":1837
 *         N = value_arr.size
 *         if N > 1: force_ncstring=True
 *         if not is_netcdf3 and force_ncstring and N > 1:             # <<<<<<<<<<<<<<
 *             string_ptrs = <char**>PyMem_Malloc(N * sizeof(char*))
 *             if not string_ptrs:
*/
    __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_is_netcdf3); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 1837, __pyx_L1_error)
    __pyx_t_10 = (!__pyx_t_8);
    if (__pyx_t_10) {
    } else {
      __pyx_t_9 = __pyx_t_10;
      goto __pyx_L17_bool_binop_done;
    }
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_force_ncstring); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 1837, __pyx_L1_error)
    if (__pyx_t_10) {
    } else {
      __pyx_t_9 = __pyx_t_10;
      goto __pyx_L17_bool_binop_done;
    }
    __pyx_t_10 = (__pyx_v_N > 1);
    __pyx_t_9 = __pyx_t_10;
    __pyx_L17_bool_binop_done:;
    if (__pyx_t_9) {

      /* "netCDF4/_netCDF4.pyx":1838
 *         if N > 1: force_ncstring=True
 *         if not is_netcdf3 and force_ncstring and N > 1:
 *             string_ptrs = <char**>PyMem_Malloc(N * sizeof(char*))             # <<<<<<<<<<<<<<
 *             if not string_ptrs:
 *                 raise MemoryError()
*/
      __pyx_v_string_ptrs = ((char **)PyMem_Malloc((__pyx_v_N * (sizeof(char *)))));

      /* "netCDF4/_netCDF4.pyx":1839
 *         if not is_netcdf3 and force_ncstring and N > 1:
 *             string_ptrs = <char**>PyMem_Malloc(N * sizeof(char*))
 *             if not string_ptrs:             # <<<<<<<<<<<<<<
 *                 raise MemoryError()
 *             try:
*/
      __pyx_t_9 = (!(__pyx_v_string_ptrs != 0));
      if (unlikely(__pyx_t_9)) {

        /* "netCDF4/_netCDF4.pyx":1840
 *             string_ptrs = <char**>PyMem_Malloc(N * sizeof(char*))
 *             if not string_ptrs:
 *                 raise MemoryError()             # <<<<<<<<<<<<<<
 *             try:
 *                 strings = [_strencode(s) for s in value_arr.flat]
*/
        PyErr_NoMemory(); __PYX_ERR(0, 1840, __pyx_L1_error)

        /* "netCDF4/_netCDF4.pyx":1839
 *         if not is_netcdf3 and force_ncstring and N > 1:
 *             string_ptrs = <char**>PyMem_Malloc(N * sizeof(char*))
 *             if not string_ptrs:             # <<<<<<<<<<<<<<
 *                 raise MemoryError()
 *             try:
*/
      }

      /* "netCDF4/_netCDF4.pyx":1841
 *             if not string_ptrs:
 *                 raise MemoryError()
 *             try:             # <<<<<<<<<<<<<<
 *                 strings = [_strencode(s) for s in value_arr.flat]
 *                 for j in range(N):
*/
      /*try:*/ {

        /* "netCDF4/_netCDF4.pyx":1842
 *                 raise MemoryError()
 *             try:
 *                 strings = [_strencode(s) for s in value_arr.flat]             # <<<<<<<<<<<<<<
 *                 for j in range(N):
 *                     if len(strings[j]) == 0:
*/
        { /* enter inner scope */
          __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1842, __pyx_L26_error)
          __Pyx_GOTREF(__pyx_t_5);
          __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_value_arr), __pyx_mstate_global->__pyx_n_u_flat); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1842, __pyx_L26_error)
          __Pyx_GOTREF(__pyx_t_1);
          if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
            __pyx_t_6 = __pyx_t_1; __Pyx_INCREF(__pyx_t_6);
            __pyx_t_11 = 0;
            __pyx_t_12 = NULL;
          } else {
            __pyx_t_11 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1842, __pyx_L26_error)
            __Pyx_GOTREF(__pyx_t_6);
            __pyx_t_12 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_6); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1842, __pyx_L26_error)
          }
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          for (;;) {
            if (likely(!__pyx_t_12)) {
              if (likely(PyList_CheckExact(__pyx_t_6))) {
                {
                  Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_6);
                  #if !CYTHON_ASSUME_SAFE_SIZE
                  if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 1842, __pyx_L26_error)
                  #endif
                  if (__pyx_t_11 >= __pyx_temp) break;
                }
                __pyx_t_1 = __Pyx_PyList_GetItemRefFast(__pyx_t_6, __pyx_t_11, __Pyx_ReferenceSharing_OwnStrongReference);
                ++__pyx_t_11;
              } else {
                {
                  Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_6);
                  #if !CYTHON_ASSUME_SAFE_SIZE
                  if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 1842, __pyx_L26_error)
                  #endif
                  if (__pyx_t_11 >= __pyx_temp) break;
                }
                #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
                __pyx_t_1 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_11));
                #else
                __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_6, __pyx_t_11);
                #endif
                ++__pyx_t_11;
              }
              if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1842, __pyx_L26_error)
            } else {
              __pyx_t_1 = __pyx_t_12(__pyx_t_6);
              if (unlikely(!__pyx_t_1)) {
                PyObject* exc_type = PyErr_Occurred();
                if (exc_type) {
                  if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 1842, __pyx_L26_error)
                  PyErr_Clear();
                }
                break;
              }
            }
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_XDECREF_SET(__pyx_8genexpr4__pyx_v_s, __pyx_t_1);
            __pyx_t_1 = 0;
            __pyx_t_1 = __pyx_f_7netCDF4_8_netCDF4__strencode(__pyx_8genexpr4__pyx_v_s, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1842, __pyx_L26_error)
            __Pyx_GOTREF(__pyx_t_1);
            if (unlikely(__Pyx_ListComp_Append(__pyx_t_5, (PyObject*)__pyx_t_1))) __PYX_ERR(0, 1842, __pyx_L26_error)
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          }
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_XDECREF(__pyx_8genexpr4__pyx_v_s); __pyx_8genexpr4__pyx_v_s = 0;
          goto __pyx_L30_exit_scope;
          __pyx_L26_error:;
          __Pyx_XDECREF(__pyx_8genexpr4__pyx_v_s); __pyx_8genexpr4__pyx_v_s = 0;
          goto __pyx_L22_error;
          __pyx_L30_exit_scope:;
        } /* exit inner scope */
        __pyx_v_strings = ((PyObject*)__pyx_t_5);
        __pyx_t_5 = 0;

        /* "netCDF4/_netCDF4.pyx":1843
 *             try:
 *                 strings = [_strencode(s) for s in value_arr.flat]
 *                 for j in range(N):             # <<<<<<<<<<<<<<
 *                     if len(strings[j]) == 0:
 *                         strings[j] = _strencode('\x00')
*/
        __pyx_t_3 = __pyx_v_N;
        __pyx_t_13 = __pyx_t_3;
        for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
          __pyx_v_j = __pyx_t_14;

          /* "netCDF4/_netCDF4.pyx":1844
 *                 strings = [_strencode(s) for s in value_arr.flat]
 *                 for j in range(N):
 *                     if len(strings[j]) == 0:             # <<<<<<<<<<<<<<
 *                         strings[j] = _strencode('\x00')
 *                     string_ptrs[j] = strings[j]
*/
          __pyx_t_5 = __Pyx_GetItemInt_List(__pyx_v_strings, __pyx_v_j, int, 1, __Pyx_PyLong_From_int, 1, 1, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1844, __pyx_L22_error)
          __Pyx_GOTREF(__pyx_t_5);
          __pyx_t_11 = PyObject_Length(__pyx_t_5); if (unlikely(__pyx_t_11 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1844, __pyx_L22_error)
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __pyx_t_9 = (__pyx_t_11 == 0);
          if (__pyx_t_9) {

            /* "netCDF4/_netCDF4.pyx":1845
 *                 for j in range(N):
 *                     if len(strings[j]) == 0:
 *                         strings[j] = _strencode('\x00')             # <<<<<<<<<<<<<<
 *                     string_ptrs[j] = strings[j]
 *                 issue485_workaround(grpid, varid, attname)
*/
            __pyx_t_5 = __pyx_f_7netCDF4_8_netCDF4__strencode(__pyx_mstate_global->__pyx_kp_u__3, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1845, __pyx_L22_error)
            __Pyx_GOTREF(__pyx_t_5);
            if (unlikely((__Pyx_SetItemInt(__pyx_v_strings, __pyx_v_j, __pyx_t_5, int, 1, __Pyx_PyLong_From_int, 1, 1, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference) < 0))) __PYX_ERR(0, 1845, __pyx_L22_error)
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

            /* "netCDF4/_netCDF4.pyx":1844
 *                 strings = [_strencode(s) for s in value_arr.flat]
 *                 for j in range(N):
 *                     if len(strings[j]) == 0:             # <<<<<<<<<<<<<<
 *                         strings[j] = _strencode('\x00')
 *                     string_ptrs[j] = strings[j]
*/
          }

          /* "netCDF4/_netCDF4.pyx":1846
 *                     if len(strings[j]) == 0:
 *                         strings[j] = _strencode('\x00')
 *                     string_ptrs[j] = strings[j]             # <<<<<<<<<<<<<<
 *                 issue485_workaround(grpid, varid, attname)
 *                 with nogil:
*/
          __pyx_t_5 = __Pyx_GetItemInt_List(__pyx_v_strings, __pyx_v_j, int, 1, __Pyx_PyLong_From_int, 1, 1, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1846, __pyx_L22_error)
          __Pyx_GOTREF(__pyx_t_5);
          __pyx_t_2 = __Pyx_PyObject_AsWritableString(__pyx_t_5); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 1846, __pyx_L22_error)
          (__pyx_v_string_ptrs[__pyx_v_j]) = __pyx_t_2;
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        }

        /* "netCDF4/_netCDF4.pyx":1847
 *                         strings[j] = _strencode('\x00')
 *                     string_ptrs[j] = strings[j]
 *                 issue485_workaround(grpid, varid, attname)             # <<<<<<<<<<<<<<
 *                 with nogil:
 *                     ierr = nc_put_att_string(grpid, varid, attname, N, <const char**>string_ptrs)
*/
        __pyx_t_5 = __pyx_f_7netCDF4_8_netCDF4_issue485_workaround(__pyx_v_grpid, __pyx_v_varid, __pyx_v_attname); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1847, __pyx_L22_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

        /* "netCDF4/_netCDF4.pyx":1848
 *                     string_ptrs[j] = strings[j]
 *                 issue485_workaround(grpid, varid, attname)
 *                 with nogil:             # <<<<<<<<<<<<<<
 *                     ierr = nc_put_att_string(grpid, varid, attname, N, <const char**>string_ptrs)
 *             finally:
*/
        {
            PyThreadState * _save;
            _save = PyEval_SaveThread();
            __Pyx_FastGIL_Remember();
            /*try:*/ {

              /* "netCDF4/_netCDF4.pyx":1849
 *                 issue485_workaround(grpid, varid, attname)
 *                 with nogil:
 *                     ierr = nc_put_att_string(grpid, varid, attname, N, <const char**>string_ptrs)             # <<<<<<<<<<<<<<
 *             finally:
 *                 PyMem_Free(string_ptrs)
*/
              __pyx_v_ierr = nc_put_att_string(__pyx_v_grpid, __pyx_v_varid, __pyx_v_attname, __pyx_v_N, ((char const **)__pyx_v_string_ptrs));
            }

            /* "netCDF4/_netCDF4.pyx":1848
 *                     string_ptrs[j] = strings[j]
 *                 issue485_workaround(grpid, varid, attname)
 *                 with nogil:             # <<<<<<<<<<<<<<
 *                     ierr = nc_put_att_string(grpid, varid, attname, N, <const char**>string_ptrs)
 *             finally:
*/
            /*finally:*/ {
              /*normal exit:*/{
                __Pyx_FastGIL_Forget();
                PyEval_RestoreThread(_save);
                goto __pyx_L36;
              }
              __pyx_L36:;
            }
        }
      }

      /* "netCDF4/_netCDF4.pyx":1851
 *                     ierr = nc_put_att_string(grpid, varid, attname, N, <const char**>string_ptrs)
 *             finally:
 *                 PyMem_Free(string_ptrs)             # <<<<<<<<<<<<<<
 *         else:
 *             # don't allow string array attributes in NETCDF3 files.
*/
      /*finally:*/ {
        /*normal exit:*/{
          PyMem_Free(__pyx_v_string_ptrs);
          goto __pyx_L23;
        }
        __pyx_L22_error:;
        /*exception exit:*/{
          __Pyx_PyThreadState_declare
          __Pyx_PyThreadState_assign
          __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0;
          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 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_19, &__pyx_t_20, &__pyx_t_21);
          if ( unlikely(__Pyx_GetException(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18) < 0)) __Pyx_ErrFetch(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18);
          __Pyx_XGOTREF(__pyx_t_16);
          __Pyx_XGOTREF(__pyx_t_17);
          __Pyx_XGOTREF(__pyx_t_18);
          __Pyx_XGOTREF(__pyx_t_19);
          __Pyx_XGOTREF(__pyx_t_20);
          __Pyx_XGOTREF(__pyx_t_21);
          __pyx_t_3 = __pyx_lineno; __pyx_t_13 = __pyx_clineno; __pyx_t_15 = __pyx_filename;
          {
            PyMem_Free(__pyx_v_string_ptrs);
          }
          __Pyx_XGIVEREF(__pyx_t_19);
          __Pyx_XGIVEREF(__pyx_t_20);
          __Pyx_XGIVEREF(__pyx_t_21);
          __Pyx_ExceptionReset(__pyx_t_19, __pyx_t_20, __pyx_t_21);
          __Pyx_XGIVEREF(__pyx_t_16);
          __Pyx_XGIVEREF(__pyx_t_17);
          __Pyx_XGIVEREF(__pyx_t_18);
          __Pyx_ErrRestore(__pyx_t_16, __pyx_t_17, __pyx_t_18);
          __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0;
          __pyx_lineno = __pyx_t_3; __pyx_clineno = __pyx_t_13; __pyx_filename = __pyx_t_15;
          goto __pyx_L1_error;
        }
        __pyx_L23:;
      }

      /* "netCDF4/_netCDF4.pyx":1837
 *         N = value_arr.size
 *         if N > 1: force_ncstring=True
 *         if not is_netcdf3 and force_ncstring and N > 1:             # <<<<<<<<<<<<<<
 *             string_ptrs = <char**>PyMem_Malloc(N * sizeof(char*))
 *             if not string_ptrs:
*/
      goto __pyx_L16;
    }

    /* "netCDF4/_netCDF4.pyx":1854
 *         else:
 *             # don't allow string array attributes in NETCDF3 files.
 *             if is_netcdf3 and N > 1:             # <<<<<<<<<<<<<<
 *                 msg='array string attributes can only be written with NETCDF4'
 *                 raise OSError(msg)
*/
    /*else*/ {
      __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_is_netcdf3); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 1854, __pyx_L1_error)
      if (__pyx_t_10) {
      } else {
        __pyx_t_9 = __pyx_t_10;
        goto __pyx_L40_bool_binop_done;
      }
      __pyx_t_10 = (__pyx_v_N > 1);
      __pyx_t_9 = __pyx_t_10;
      __pyx_L40_bool_binop_done:;
      if (unlikely(__pyx_t_9)) {

        /* "netCDF4/_netCDF4.pyx":1855
 *             # don't allow string array attributes in NETCDF3 files.
 *             if is_netcdf3 and N > 1:
 *                 msg='array string attributes can only be written with NETCDF4'             # <<<<<<<<<<<<<<
 *                 raise OSError(msg)
 *             if not value_arr.shape:
*/
        __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u_array_string_attributes_can_only);
        __Pyx_XDECREF_SET(__pyx_v_msg, __pyx_mstate_global->__pyx_kp_u_array_string_attributes_can_only);

        /* "netCDF4/_netCDF4.pyx":1856
 *             if is_netcdf3 and N > 1:
 *                 msg='array string attributes can only be written with NETCDF4'
 *                 raise OSError(msg)             # <<<<<<<<<<<<<<
 *             if not value_arr.shape:
 *                 dats = _strencode(value_arr.item())
*/
        __pyx_t_6 = NULL;
        __pyx_t_7 = 1;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_v_msg};
          __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_OSError)), __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(0, 1856, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
        }
        __Pyx_Raise(__pyx_t_5, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __PYX_ERR(0, 1856, __pyx_L1_error)

        /* "netCDF4/_netCDF4.pyx":1854
 *         else:
 *             # don't allow string array attributes in NETCDF3 files.
 *             if is_netcdf3 and N > 1:             # <<<<<<<<<<<<<<
 *                 msg='array string attributes can only be written with NETCDF4'
 *                 raise OSError(msg)
*/
      }

      /* "netCDF4/_netCDF4.pyx":1857
 *                 msg='array string attributes can only be written with NETCDF4'
 *                 raise OSError(msg)
 *             if not value_arr.shape:             # <<<<<<<<<<<<<<
 *                 dats = _strencode(value_arr.item())
 *             else:
*/
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_value_arr), __pyx_mstate_global->__pyx_n_u_shape); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1857, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 1857, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_10 = (!__pyx_t_9);
      if (__pyx_t_10) {

        /* "netCDF4/_netCDF4.pyx":1858
 *                 raise OSError(msg)
 *             if not value_arr.shape:
 *                 dats = _strencode(value_arr.item())             # <<<<<<<<<<<<<<
 *             else:
 *                 value_arr1 = value_arr.ravel()
*/
        __pyx_t_6 = ((PyObject *)__pyx_v_value_arr);
        __Pyx_INCREF(__pyx_t_6);
        __pyx_t_7 = 0;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL};
          __pyx_t_5 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_item, __pyx_callargs+__pyx_t_7, (1-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
          if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1858, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
        }
        __pyx_t_6 = __pyx_f_7netCDF4_8_netCDF4__strencode(__pyx_t_5, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1858, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_v_dats = __pyx_t_6;
        __pyx_t_6 = 0;

        /* "netCDF4/_netCDF4.pyx":1857
 *                 msg='array string attributes can only be written with NETCDF4'
 *                 raise OSError(msg)
 *             if not value_arr.shape:             # <<<<<<<<<<<<<<
 *                 dats = _strencode(value_arr.item())
 *             else:
*/
        goto __pyx_L42;
      }

      /* "netCDF4/_netCDF4.pyx":1860
 *                 dats = _strencode(value_arr.item())
 *             else:
 *                 value_arr1 = value_arr.ravel()             # <<<<<<<<<<<<<<
 *                 dats = _strencode(''.join(value_arr1.tolist()))
 *             lenarr = len(dats)
*/
      /*else*/ {
        __pyx_t_5 = ((PyObject *)__pyx_v_value_arr);
        __Pyx_INCREF(__pyx_t_5);
        __pyx_t_7 = 0;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
          __pyx_t_6 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_ravel, __pyx_callargs+__pyx_t_7, (1-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
          if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1860, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
        }
        __pyx_v_value_arr1 = __pyx_t_6;
        __pyx_t_6 = 0;

        /* "netCDF4/_netCDF4.pyx":1861
 *             else:
 *                 value_arr1 = value_arr.ravel()
 *                 dats = _strencode(''.join(value_arr1.tolist()))             # <<<<<<<<<<<<<<
 *             lenarr = len(dats)
 *             datstring = dats
*/
        __pyx_t_5 = __pyx_v_value_arr1;
        __Pyx_INCREF(__pyx_t_5);
        __pyx_t_7 = 0;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
          __pyx_t_6 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_tolist, __pyx_callargs+__pyx_t_7, (1-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
          if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1861, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
        }
        __pyx_t_5 = PyUnicode_Join(__pyx_mstate_global->__pyx_kp_u__4, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1861, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_6 = __pyx_f_7netCDF4_8_netCDF4__strencode(__pyx_t_5, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1861, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_v_dats = __pyx_t_6;
        __pyx_t_6 = 0;
      }
      __pyx_L42:;

      /* "netCDF4/_netCDF4.pyx":1862
 *                 value_arr1 = value_arr.ravel()
 *                 dats = _strencode(''.join(value_arr1.tolist()))
 *             lenarr = len(dats)             # <<<<<<<<<<<<<<
 *             datstring = dats
 *             if lenarr == 0:
*/
      __pyx_t_11 = PyObject_Length(__pyx_v_dats); if (unlikely(__pyx_t_11 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1862, __pyx_L1_error)
      __pyx_v_lenarr = __pyx_t_11;

      /* "netCDF4/_netCDF4.pyx":1863
 *                 dats = _strencode(''.join(value_arr1.tolist()))
 *             lenarr = len(dats)
 *             datstring = dats             # <<<<<<<<<<<<<<
 *             if lenarr == 0:
 *                 # write null byte
*/
      __pyx_t_2 = __Pyx_PyObject_AsWritableString(__pyx_v_dats); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 1863, __pyx_L1_error)
      __pyx_v_datstring = __pyx_t_2;

      /* "netCDF4/_netCDF4.pyx":1864
 *             lenarr = len(dats)
 *             datstring = dats
 *             if lenarr == 0:             # <<<<<<<<<<<<<<
 *                 # write null byte
 *                 lenarr=1; datstring = '\x00'
*/
      __pyx_t_10 = (__pyx_v_lenarr == 0);
      if (__pyx_t_10) {

        /* "netCDF4/_netCDF4.pyx":1866
 *             if lenarr == 0:
 *                 # write null byte
 *                 lenarr=1; datstring = '\x00'             # <<<<<<<<<<<<<<
 *             if (force_ncstring or value_arr.dtype.char == 'U') and not is_netcdf3:
 *                 # try to convert to ascii string, write as NC_CHAR
*/
        __pyx_v_lenarr = 1;
        __pyx_v_datstring = ((char *)"\000");

        /* "netCDF4/_netCDF4.pyx":1864
 *             lenarr = len(dats)
 *             datstring = dats
 *             if lenarr == 0:             # <<<<<<<<<<<<<<
 *                 # write null byte
 *                 lenarr=1; datstring = '\x00'
*/
      }

      /* "netCDF4/_netCDF4.pyx":1867
 *                 # write null byte
 *                 lenarr=1; datstring = '\x00'
 *             if (force_ncstring or value_arr.dtype.char == 'U') and not is_netcdf3:             # <<<<<<<<<<<<<<
 *                 # try to convert to ascii string, write as NC_CHAR
 *                 # else it's a unicode string, write as NC_STRING (if NETCDF4)
*/
      __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_force_ncstring); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 1867, __pyx_L1_error)
      if (!__pyx_t_9) {
      } else {
        goto __pyx_L46_next_and;
      }
      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_value_arr), __pyx_mstate_global->__pyx_n_u_dtype); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1867, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_char); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1867, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_9 = (__Pyx_PyUnicode_Equals(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_U, Py_EQ)); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 1867, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (__pyx_t_9) {
      } else {
        __pyx_t_10 = __pyx_t_9;
        goto __pyx_L45_bool_binop_done;
      }
      __pyx_L46_next_and:;
      __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_is_netcdf3); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 1867, __pyx_L1_error)
      __pyx_t_8 = (!__pyx_t_9);
      __pyx_t_10 = __pyx_t_8;
      __pyx_L45_bool_binop_done:;
      if (__pyx_t_10) {

        /* "netCDF4/_netCDF4.pyx":1870
 *                 # try to convert to ascii string, write as NC_CHAR
 *                 # else it's a unicode string, write as NC_STRING (if NETCDF4)
 *                 try:             # <<<<<<<<<<<<<<
 *                     if force_ncstring: raise UnicodeError
 *                     dats_ascii = _to_ascii(dats) # try to encode bytes as ascii string
*/
        {
          __Pyx_PyThreadState_declare
          __Pyx_PyThreadState_assign
          __Pyx_ExceptionSave(&__pyx_t_21, &__pyx_t_20, &__pyx_t_19);
          __Pyx_XGOTREF(__pyx_t_21);
          __Pyx_XGOTREF(__pyx_t_20);
          __Pyx_XGOTREF(__pyx_t_19);
          /*try:*/ {

            /* "netCDF4/_netCDF4.pyx":1871
 *                 # else it's a unicode string, write as NC_STRING (if NETCDF4)
 *                 try:
 *                     if force_ncstring: raise UnicodeError             # <<<<<<<<<<<<<<
 *                     dats_ascii = _to_ascii(dats) # try to encode bytes as ascii string
 *                     with nogil:
*/
            __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_force_ncstring); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 1871, __pyx_L48_error)
            if (unlikely(__pyx_t_10)) {
              __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_UnicodeError))), 0, 0, 0);
              __PYX_ERR(0, 1871, __pyx_L48_error)
            }

            /* "netCDF4/_netCDF4.pyx":1872
 *                 try:
 *                     if force_ncstring: raise UnicodeError
 *                     dats_ascii = _to_ascii(dats) # try to encode bytes as ascii string             # <<<<<<<<<<<<<<
 *                     with nogil:
 *                         ierr = nc_put_att_text(grpid, varid, attname, lenarr, datstring)
*/
            __pyx_t_6 = NULL;
            __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_to_ascii); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1872, __pyx_L48_error)
            __Pyx_GOTREF(__pyx_t_1);
            __pyx_t_7 = 1;
            #if CYTHON_UNPACK_METHODS
            if (unlikely(PyMethod_Check(__pyx_t_1))) {
              __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1);
              assert(__pyx_t_6);
              PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_1);
              __Pyx_INCREF(__pyx_t_6);
              __Pyx_INCREF(__pyx__function);
              __Pyx_DECREF_SET(__pyx_t_1, __pyx__function);
              __pyx_t_7 = 0;
            }
            #endif
            {
              PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_v_dats};
              __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_1, __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_1); __pyx_t_1 = 0;
              if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1872, __pyx_L48_error)
              __Pyx_GOTREF(__pyx_t_5);
            }
            __pyx_v_dats_ascii = __pyx_t_5;
            __pyx_t_5 = 0;

            /* "netCDF4/_netCDF4.pyx":1873
 *                     if force_ncstring: raise UnicodeError
 *                     dats_ascii = _to_ascii(dats) # try to encode bytes as ascii string
 *                     with nogil:             # <<<<<<<<<<<<<<
 *                         ierr = nc_put_att_text(grpid, varid, attname, lenarr, datstring)
 *                 except UnicodeError:
*/
            {
                PyThreadState * _save;
                _save = PyEval_SaveThread();
                __Pyx_FastGIL_Remember();
                /*try:*/ {

                  /* "netCDF4/_netCDF4.pyx":1874
 *                     dats_ascii = _to_ascii(dats) # try to encode bytes as ascii string
 *                     with nogil:
 *                         ierr = nc_put_att_text(grpid, varid, attname, lenarr, datstring)             # <<<<<<<<<<<<<<
 *                 except UnicodeError:
 *                     issue485_workaround(grpid, varid, attname)
*/
                  __pyx_v_ierr = nc_put_att_text(__pyx_v_grpid, __pyx_v_varid, __pyx_v_attname, __pyx_v_lenarr, __pyx_v_datstring);
                }

                /* "netCDF4/_netCDF4.pyx":1873
 *                     if force_ncstring: raise UnicodeError
 *                     dats_ascii = _to_ascii(dats) # try to encode bytes as ascii string
 *                     with nogil:             # <<<<<<<<<<<<<<
 *                         ierr = nc_put_att_text(grpid, varid, attname, lenarr, datstring)
 *                 except UnicodeError:
*/
                /*finally:*/ {
                  /*normal exit:*/{
                    __Pyx_FastGIL_Forget();
                    PyEval_RestoreThread(_save);
                    goto __pyx_L57;
                  }
                  __pyx_L57:;
                }
            }

            /* "netCDF4/_netCDF4.pyx":1870
 *                 # try to convert to ascii string, write as NC_CHAR
 *                 # else it's a unicode string, write as NC_STRING (if NETCDF4)
 *                 try:             # <<<<<<<<<<<<<<
 *                     if force_ncstring: raise UnicodeError
 *                     dats_ascii = _to_ascii(dats) # try to encode bytes as ascii string
*/
          }
          __Pyx_XDECREF(__pyx_t_21); __pyx_t_21 = 0;
          __Pyx_XDECREF(__pyx_t_20); __pyx_t_20 = 0;
          __Pyx_XDECREF(__pyx_t_19); __pyx_t_19 = 0;
          goto __pyx_L53_try_end;
          __pyx_L48_error:;
          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 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;

          /* "netCDF4/_netCDF4.pyx":1875
 *                     with nogil:
 *                         ierr = nc_put_att_text(grpid, varid, attname, lenarr, datstring)
 *                 except UnicodeError:             # <<<<<<<<<<<<<<
 *                     issue485_workaround(grpid, varid, attname)
 *                     with nogil:
*/
          __pyx_t_13 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_UnicodeError))));
          if (__pyx_t_13) {
            __Pyx_AddTraceback("netCDF4._netCDF4._set_att", __pyx_clineno, __pyx_lineno, __pyx_filename);
            if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_1, &__pyx_t_6) < 0) __PYX_ERR(0, 1875, __pyx_L50_except_error)
            __Pyx_XGOTREF(__pyx_t_5);
            __Pyx_XGOTREF(__pyx_t_1);
            __Pyx_XGOTREF(__pyx_t_6);

            /* "netCDF4/_netCDF4.pyx":1876
 *                         ierr = nc_put_att_text(grpid, varid, attname, lenarr, datstring)
 *                 except UnicodeError:
 *                     issue485_workaround(grpid, varid, attname)             # <<<<<<<<<<<<<<
 *                     with nogil:
 *                         ierr = nc_put_att_string(grpid, varid, attname, 1, <const char**>&datstring)
*/
            __pyx_t_4 = __pyx_f_7netCDF4_8_netCDF4_issue485_workaround(__pyx_v_grpid, __pyx_v_varid, __pyx_v_attname); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1876, __pyx_L50_except_error)
            __Pyx_GOTREF(__pyx_t_4);
            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

            /* "netCDF4/_netCDF4.pyx":1877
 *                 except UnicodeError:
 *                     issue485_workaround(grpid, varid, attname)
 *                     with nogil:             # <<<<<<<<<<<<<<
 *                         ierr = nc_put_att_string(grpid, varid, attname, 1, <const char**>&datstring)
 *             else:
*/
            {
                PyThreadState * _save;
                _save = PyEval_SaveThread();
                __Pyx_FastGIL_Remember();
                /*try:*/ {

                  /* "netCDF4/_netCDF4.pyx":1878
 *                     issue485_workaround(grpid, varid, attname)
 *                     with nogil:
 *                         ierr = nc_put_att_string(grpid, varid, attname, 1, <const char**>&datstring)             # <<<<<<<<<<<<<<
 *             else:
 *                 with nogil:
*/
                  __pyx_v_ierr = nc_put_att_string(__pyx_v_grpid, __pyx_v_varid, __pyx_v_attname, 1, ((char const **)(&__pyx_v_datstring)));
                }

                /* "netCDF4/_netCDF4.pyx":1877
 *                 except UnicodeError:
 *                     issue485_workaround(grpid, varid, attname)
 *                     with nogil:             # <<<<<<<<<<<<<<
 *                         ierr = nc_put_att_string(grpid, varid, attname, 1, <const char**>&datstring)
 *             else:
*/
                /*finally:*/ {
                  /*normal exit:*/{
                    __Pyx_FastGIL_Forget();
                    PyEval_RestoreThread(_save);
                    goto __pyx_L64;
                  }
                  __pyx_L64:;
                }
            }
            __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
            __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
            __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
            goto __pyx_L49_exception_handled;
          }
          goto __pyx_L50_except_error;

          /* "netCDF4/_netCDF4.pyx":1870
 *                 # try to convert to ascii string, write as NC_CHAR
 *                 # else it's a unicode string, write as NC_STRING (if NETCDF4)
 *                 try:             # <<<<<<<<<<<<<<
 *                     if force_ncstring: raise UnicodeError
 *                     dats_ascii = _to_ascii(dats) # try to encode bytes as ascii string
*/
          __pyx_L50_except_error:;
          __Pyx_XGIVEREF(__pyx_t_21);
          __Pyx_XGIVEREF(__pyx_t_20);
          __Pyx_XGIVEREF(__pyx_t_19);
          __Pyx_ExceptionReset(__pyx_t_21, __pyx_t_20, __pyx_t_19);
          goto __pyx_L1_error;
          __pyx_L49_exception_handled:;
          __Pyx_XGIVEREF(__pyx_t_21);
          __Pyx_XGIVEREF(__pyx_t_20);
          __Pyx_XGIVEREF(__pyx_t_19);
          __Pyx_ExceptionReset(__pyx_t_21, __pyx_t_20, __pyx_t_19);
          __pyx_L53_try_end:;
        }

        /* "netCDF4/_netCDF4.pyx":1867
 *                 # write null byte
 *                 lenarr=1; datstring = '\x00'
 *             if (force_ncstring or value_arr.dtype.char == 'U') and not is_netcdf3:             # <<<<<<<<<<<<<<
 *                 # try to convert to ascii string, write as NC_CHAR
 *                 # else it's a unicode string, write as NC_STRING (if NETCDF4)
*/
        goto __pyx_L44;
      }

      /* "netCDF4/_netCDF4.pyx":1880
 *                         ierr = nc_put_att_string(grpid, varid, attname, 1, <const char**>&datstring)
 *             else:
 *                 with nogil:             # <<<<<<<<<<<<<<
 *                     ierr = nc_put_att_text(grpid, varid, attname, lenarr, datstring)
 *         _ensure_nc_success(ierr, err_cls=AttributeError)
*/
      /*else*/ {
        {
            PyThreadState * _save;
            _save = PyEval_SaveThread();
            __Pyx_FastGIL_Remember();
            /*try:*/ {

              /* "netCDF4/_netCDF4.pyx":1881
 *             else:
 *                 with nogil:
 *                     ierr = nc_put_att_text(grpid, varid, attname, lenarr, datstring)             # <<<<<<<<<<<<<<
 *         _ensure_nc_success(ierr, err_cls=AttributeError)
 *     # a 'regular' array type ('f4','i4','f8' etc)
*/
              __pyx_v_ierr = nc_put_att_text(__pyx_v_grpid, __pyx_v_varid, __pyx_v_attname, __pyx_v_lenarr, __pyx_v_datstring);
            }

            /* "netCDF4/_netCDF4.pyx":1880
 *                         ierr = nc_put_att_string(grpid, varid, attname, 1, <const char**>&datstring)
 *             else:
 *                 with nogil:             # <<<<<<<<<<<<<<
 *                     ierr = nc_put_att_text(grpid, varid, attname, lenarr, datstring)
 *         _ensure_nc_success(ierr, err_cls=AttributeError)
*/
            /*finally:*/ {
              /*normal exit:*/{
                __Pyx_FastGIL_Forget();
                PyEval_RestoreThread(_save);
                goto __pyx_L67;
              }
              __pyx_L67:;
            }
        }
      }
      __pyx_L44:;
    }
    __pyx_L16:;

    /* "netCDF4/_netCDF4.pyx":1882
 *                 with nogil:
 *                     ierr = nc_put_att_text(grpid, varid, attname, lenarr, datstring)
 *         _ensure_nc_success(ierr, err_cls=AttributeError)             # <<<<<<<<<<<<<<
 *     # a 'regular' array type ('f4','i4','f8' etc)
 *     else:
*/
    __pyx_t_1 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1882, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1882, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_7 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_5);
      assert(__pyx_t_1);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
      __pyx_t_7 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_1, __pyx_t_4};
      __pyx_t_22 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_22)) __PYX_ERR(0, 1882, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_22);
      if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_err_cls, ((PyObject *)(((PyTypeObject*)PyExc_AttributeError))), __pyx_t_22, __pyx_callargs+2, 0) < (0)) __PYX_ERR(0, 1882, __pyx_L1_error)
      __pyx_t_6 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_22);
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_22); __pyx_t_22 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1882, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
    }
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

    /* "netCDF4/_netCDF4.pyx":1833
 *     # if array contains unicode strings, and data model is NETCDF4,
 *     # write as a string.
 *     if value_arr.dtype.char in ['S','U']:             # <<<<<<<<<<<<<<
 *         # force array of strings if array has multiple elements (issue #770)
 *         N = value_arr.size
*/
    goto __pyx_L12;
  }

  /* "netCDF4/_netCDF4.pyx":1885
 *     # a 'regular' array type ('f4','i4','f8' etc)
 *     else:
 *         if value_arr.dtype.kind == 'V': # compound attribute.             # <<<<<<<<<<<<<<
 *             xtype = _find_cmptype(grp,value_arr.dtype)
 *         elif value_arr.dtype.str[1:] not in _supportedtypes:
*/
  /*else*/ {
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_value_arr), __pyx_mstate_global->__pyx_n_u_dtype); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1885, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_kind); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1885, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_10 = (__Pyx_PyUnicode_Equals(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_V, Py_EQ)); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 1885, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (__pyx_t_10) {

      /* "netCDF4/_netCDF4.pyx":1886
 *     else:
 *         if value_arr.dtype.kind == 'V': # compound attribute.
 *             xtype = _find_cmptype(grp,value_arr.dtype)             # <<<<<<<<<<<<<<
 *         elif value_arr.dtype.str[1:] not in _supportedtypes:
 *             raise TypeError, 'illegal data type for attribute %r, must be one of %s, got %s' % (attname, _supportedtypes, value_arr.dtype.str[1:])
*/
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_value_arr), __pyx_mstate_global->__pyx_n_u_dtype); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1886, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = __pyx_f_7netCDF4_8_netCDF4__find_cmptype(__pyx_v_grp, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1886, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_23 = __Pyx_PyLong_As_nc_type(__pyx_t_6); if (unlikely((__pyx_t_23 == ((nc_type)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1886, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_v_xtype = __pyx_t_23;

      /* "netCDF4/_netCDF4.pyx":1885
 *     # a 'regular' array type ('f4','i4','f8' etc)
 *     else:
 *         if value_arr.dtype.kind == 'V': # compound attribute.             # <<<<<<<<<<<<<<
 *             xtype = _find_cmptype(grp,value_arr.dtype)
 *         elif value_arr.dtype.str[1:] not in _supportedtypes:
*/
      goto __pyx_L68;
    }

    /* "netCDF4/_netCDF4.pyx":1887
 *         if value_arr.dtype.kind == 'V': # compound attribute.
 *             xtype = _find_cmptype(grp,value_arr.dtype)
 *         elif value_arr.dtype.str[1:] not in _supportedtypes:             # <<<<<<<<<<<<<<
 *             raise TypeError, 'illegal data type for attribute %r, must be one of %s, got %s' % (attname, _supportedtypes, value_arr.dtype.str[1:])
 *         elif xtype == -99: # if xtype is not passed in as kwarg.
*/
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_value_arr), __pyx_mstate_global->__pyx_n_u_dtype); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1887, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_str); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1887, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = __Pyx_PyObject_GetSlice(__pyx_t_5, 1, 0, NULL, NULL, &__pyx_mstate_global->__pyx_slice[0], 1, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1887, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_supportedtypes); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1887, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_10 = (__Pyx_PySequence_ContainsTF(__pyx_t_6, __pyx_t_5, Py_NE)); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 1887, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(__pyx_t_10)) {

      /* "netCDF4/_netCDF4.pyx":1888
 *             xtype = _find_cmptype(grp,value_arr.dtype)
 *         elif value_arr.dtype.str[1:] not in _supportedtypes:
 *             raise TypeError, 'illegal data type for attribute %r, must be one of %s, got %s' % (attname, _supportedtypes, value_arr.dtype.str[1:])             # <<<<<<<<<<<<<<
 *         elif xtype == -99: # if xtype is not passed in as kwarg.
 *             xtype = _nptonctype[value_arr.dtype.str[1:]]
*/
      __pyx_t_5 = __Pyx_PyBytes_FromString(__pyx_v_attname); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1888, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_t_5), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1888, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_supportedtypes); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1888, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_22 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Str(__pyx_t_5), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_22)) __PYX_ERR(0, 1888, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_22);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_value_arr), __pyx_mstate_global->__pyx_n_u_dtype); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1888, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_str); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1888, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_5 = __Pyx_PyObject_GetSlice(__pyx_t_4, 1, 0, NULL, NULL, &__pyx_mstate_global->__pyx_slice[0], 1, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1888, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_4 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Str(__pyx_t_5), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1888, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_24[0] = __pyx_mstate_global->__pyx_kp_u_illegal_data_type_for_attribute;
      __pyx_t_24[1] = __pyx_t_6;
      __pyx_t_24[2] = __pyx_mstate_global->__pyx_kp_u_must_be_one_of;
      __pyx_t_24[3] = __pyx_t_22;
      __pyx_t_24[4] = __pyx_mstate_global->__pyx_kp_u_got;
      __pyx_t_24[5] = __pyx_t_4;
      __pyx_t_5 = __Pyx_PyUnicode_Join(__pyx_t_24, 6, 32 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6) + 17 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_22) + 6 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4), 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_22) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4));
      if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1888, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_22); __pyx_t_22 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_t_5, 0, 0);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __PYX_ERR(0, 1888, __pyx_L1_error)

      /* "netCDF4/_netCDF4.pyx":1887
 *         if value_arr.dtype.kind == 'V': # compound attribute.
 *             xtype = _find_cmptype(grp,value_arr.dtype)
 *         elif value_arr.dtype.str[1:] not in _supportedtypes:             # <<<<<<<<<<<<<<
 *             raise TypeError, 'illegal data type for attribute %r, must be one of %s, got %s' % (attname, _supportedtypes, value_arr.dtype.str[1:])
 *         elif xtype == -99: # if xtype is not passed in as kwarg.
*/
    }

    /* "netCDF4/_netCDF4.pyx":1889
 *         elif value_arr.dtype.str[1:] not in _supportedtypes:
 *             raise TypeError, 'illegal data type for attribute %r, must be one of %s, got %s' % (attname, _supportedtypes, value_arr.dtype.str[1:])
 *         elif xtype == -99: # if xtype is not passed in as kwarg.             # <<<<<<<<<<<<<<
 *             xtype = _nptonctype[value_arr.dtype.str[1:]]
 *         lenarr = PyArray_SIZE(value_arr)
*/
    __pyx_t_10 = (__pyx_v_xtype == -99L);
    if (__pyx_t_10) {

      /* "netCDF4/_netCDF4.pyx":1890
 *             raise TypeError, 'illegal data type for attribute %r, must be one of %s, got %s' % (attname, _supportedtypes, value_arr.dtype.str[1:])
 *         elif xtype == -99: # if xtype is not passed in as kwarg.
 *             xtype = _nptonctype[value_arr.dtype.str[1:]]             # <<<<<<<<<<<<<<
 *         lenarr = PyArray_SIZE(value_arr)
 *         with nogil:
*/
      __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_nptonctype); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1890, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_value_arr), __pyx_mstate_global->__pyx_n_u_dtype); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1890, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_22 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_str); if (unlikely(!__pyx_t_22)) __PYX_ERR(0, 1890, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_22);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_4 = __Pyx_PyObject_GetSlice(__pyx_t_22, 1, 0, NULL, NULL, &__pyx_mstate_global->__pyx_slice[0], 1, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1890, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_22); __pyx_t_22 = 0;
      __pyx_t_22 = __Pyx_PyObject_GetItem(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_22)) __PYX_ERR(0, 1890, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_22);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_23 = __Pyx_PyLong_As_nc_type(__pyx_t_22); if (unlikely((__pyx_t_23 == ((nc_type)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1890, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_22); __pyx_t_22 = 0;
      __pyx_v_xtype = __pyx_t_23;

      /* "netCDF4/_netCDF4.pyx":1889
 *         elif value_arr.dtype.str[1:] not in _supportedtypes:
 *             raise TypeError, 'illegal data type for attribute %r, must be one of %s, got %s' % (attname, _supportedtypes, value_arr.dtype.str[1:])
 *         elif xtype == -99: # if xtype is not passed in as kwarg.             # <<<<<<<<<<<<<<
 *             xtype = _nptonctype[value_arr.dtype.str[1:]]
 *         lenarr = PyArray_SIZE(value_arr)
*/
    }
    __pyx_L68:;

    /* "netCDF4/_netCDF4.pyx":1891
 *         elif xtype == -99: # if xtype is not passed in as kwarg.
 *             xtype = _nptonctype[value_arr.dtype.str[1:]]
 *         lenarr = PyArray_SIZE(value_arr)             # <<<<<<<<<<<<<<
 *         with nogil:
 *             ierr = nc_put_att(grpid, varid, attname, xtype, lenarr,
*/
    __pyx_v_lenarr = PyArray_SIZE(__pyx_v_value_arr);

    /* "netCDF4/_netCDF4.pyx":1892
 *             xtype = _nptonctype[value_arr.dtype.str[1:]]
 *         lenarr = PyArray_SIZE(value_arr)
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_put_att(grpid, varid, attname, xtype, lenarr,
 *                 PyArray_DATA(value_arr))
*/
    {
        PyThreadState * _save;
        _save = PyEval_SaveThread();
        __Pyx_FastGIL_Remember();
        /*try:*/ {

          /* "netCDF4/_netCDF4.pyx":1893
 *         lenarr = PyArray_SIZE(value_arr)
 *         with nogil:
 *             ierr = nc_put_att(grpid, varid, attname, xtype, lenarr,             # <<<<<<<<<<<<<<
 *                 PyArray_DATA(value_arr))
 *         _ensure_nc_success(ierr, err_cls=AttributeError)
*/
          __pyx_v_ierr = nc_put_att(__pyx_v_grpid, __pyx_v_varid, __pyx_v_attname, __pyx_v_xtype, __pyx_v_lenarr, PyArray_DATA(__pyx_v_value_arr));
        }

        /* "netCDF4/_netCDF4.pyx":1892
 *             xtype = _nptonctype[value_arr.dtype.str[1:]]
 *         lenarr = PyArray_SIZE(value_arr)
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_put_att(grpid, varid, attname, xtype, lenarr,
 *                 PyArray_DATA(value_arr))
*/
        /*finally:*/ {
          /*normal exit:*/{
            __Pyx_FastGIL_Forget();
            PyEval_RestoreThread(_save);
            goto __pyx_L71;
          }
          __pyx_L71:;
        }
    }

    /* "netCDF4/_netCDF4.pyx":1895
 *             ierr = nc_put_att(grpid, varid, attname, xtype, lenarr,
 *                 PyArray_DATA(value_arr))
 *         _ensure_nc_success(ierr, err_cls=AttributeError)             # <<<<<<<<<<<<<<
 * 
 * cdef _get_types(group):
*/
    __pyx_t_4 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1895, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1895, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = 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_7 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_4, __pyx_t_6};
      __pyx_t_1 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1895, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_err_cls, ((PyObject *)(((PyTypeObject*)PyExc_AttributeError))), __pyx_t_1, __pyx_callargs+2, 0) < (0)) __PYX_ERR(0, 1895, __pyx_L1_error)
      __pyx_t_22 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_1);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_22)) __PYX_ERR(0, 1895, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_22);
    }
    __Pyx_DECREF(__pyx_t_22); __pyx_t_22 = 0;
  }
  __pyx_L12:;

  /* "netCDF4/_netCDF4.pyx":1801
 * 
 * 
 * cdef _set_att(grp, int varid, name, value,\             # <<<<<<<<<<<<<<
 *               nc_type xtype=-99, force_ncstring=False):
 *     # Private function to set an attribute name/value pair
*/

  /* 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_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_22);
  __Pyx_AddTraceback("netCDF4._netCDF4._set_att", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_value_arr);
  __Pyx_XDECREF(__pyx_v_bytestr);
  __Pyx_XDECREF(__pyx_v_msg);
  __Pyx_XDECREF(__pyx_v_fmt);
  __Pyx_XDECREF(__pyx_v_is_netcdf3);
  __Pyx_XDECREF(__pyx_v_strings);
  __Pyx_XDECREF(__pyx_v_dats);
  __Pyx_XDECREF(__pyx_v_value_arr1);
  __Pyx_XDECREF(__pyx_v_dats_ascii);
  __Pyx_XDECREF(__pyx_8genexpr4__pyx_v_s);
  __Pyx_XDECREF(__pyx_v_force_ncstring);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":1897
 *         _ensure_nc_success(ierr, err_cls=AttributeError)
 * 
 * cdef _get_types(group):             # <<<<<<<<<<<<<<
 *     # Private function to create `CompoundType`,
 *     # `VLType` or `EnumType` instances for all the
*/

static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_types(PyObject *__pyx_v_group) {
  int __pyx_v_ierr;
  int __pyx_v_ntypes;
  int __pyx_v_classp;
  int __pyx_v_n;
  int __pyx_v__grpid;
  nc_type __pyx_v_xtype;
  nc_type *__pyx_v_typeids;
  char __pyx_v_namstring[(NC_MAX_NAME + 1)];
  PyObject *__pyx_v_cmptypes = NULL;
  PyObject *__pyx_v_vltypes = NULL;
  PyObject *__pyx_v_enumtypes = NULL;
  PyObject *__pyx_v_name = NULL;
  PyObject *__pyx_v_cmptype = NULL;
  PyObject *__pyx_v_msg = NULL;
  PyObject *__pyx_v_vltype = NULL;
  PyObject *__pyx_v_enumtype = NULL;
  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;
  size_t __pyx_t_6;
  int __pyx_t_7;
  int __pyx_t_8;
  int __pyx_t_9;
  Py_ssize_t __pyx_t_10;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  int __pyx_t_14;
  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;
  __Pyx_RefNannySetupContext("_get_types", 0);

  /* "netCDF4/_netCDF4.pyx":1905
 *     cdef nc_type *typeids
 *     cdef char namstring[NC_MAX_NAME+1]
 *     _grpid = group._grpid             # <<<<<<<<<<<<<<
 *     # get the number of user defined types in this group.
 *     with nogil:
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_group, __pyx_mstate_global->__pyx_n_u_grpid); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1905, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyLong_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1905, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v__grpid = __pyx_t_2;

  /* "netCDF4/_netCDF4.pyx":1907
 *     _grpid = group._grpid
 *     # get the number of user defined types in this group.
 *     with nogil:             # <<<<<<<<<<<<<<
 *         ierr = nc_inq_typeids(_grpid, &ntypes, NULL)
 *     _ensure_nc_success(ierr)
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "netCDF4/_netCDF4.pyx":1908
 *     # get the number of user defined types in this group.
 *     with nogil:
 *         ierr = nc_inq_typeids(_grpid, &ntypes, NULL)             # <<<<<<<<<<<<<<
 *     _ensure_nc_success(ierr)
 *     if ntypes > 0:
*/
        __pyx_v_ierr = nc_inq_typeids(__pyx_v__grpid, (&__pyx_v_ntypes), NULL);
      }

      /* "netCDF4/_netCDF4.pyx":1907
 *     _grpid = group._grpid
 *     # get the number of user defined types in this group.
 *     with nogil:             # <<<<<<<<<<<<<<
 *         ierr = nc_inq_typeids(_grpid, &ntypes, NULL)
 *     _ensure_nc_success(ierr)
*/
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "netCDF4/_netCDF4.pyx":1909
 *     with nogil:
 *         ierr = nc_inq_typeids(_grpid, &ntypes, NULL)
 *     _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 *     if ntypes > 0:
 *         typeids = <nc_type *>malloc(sizeof(nc_type) * ntypes)
*/
  __pyx_t_3 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1909, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1909, __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_1 = __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_1)) __PYX_ERR(0, 1909, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":1910
 *         ierr = nc_inq_typeids(_grpid, &ntypes, NULL)
 *     _ensure_nc_success(ierr)
 *     if ntypes > 0:             # <<<<<<<<<<<<<<
 *         typeids = <nc_type *>malloc(sizeof(nc_type) * ntypes)
 *         with nogil:
*/
  __pyx_t_7 = (__pyx_v_ntypes > 0);
  if (__pyx_t_7) {

    /* "netCDF4/_netCDF4.pyx":1911
 *     _ensure_nc_success(ierr)
 *     if ntypes > 0:
 *         typeids = <nc_type *>malloc(sizeof(nc_type) * ntypes)             # <<<<<<<<<<<<<<
 *         with nogil:
 *             ierr = nc_inq_typeids(_grpid, &ntypes, typeids)
*/
    __pyx_v_typeids = ((nc_type *)malloc(((sizeof(nc_type)) * __pyx_v_ntypes)));

    /* "netCDF4/_netCDF4.pyx":1912
 *     if ntypes > 0:
 *         typeids = <nc_type *>malloc(sizeof(nc_type) * ntypes)
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_inq_typeids(_grpid, &ntypes, typeids)
 *         _ensure_nc_success(ierr)
*/
    {
        PyThreadState * _save;
        _save = PyEval_SaveThread();
        __Pyx_FastGIL_Remember();
        /*try:*/ {

          /* "netCDF4/_netCDF4.pyx":1913
 *         typeids = <nc_type *>malloc(sizeof(nc_type) * ntypes)
 *         with nogil:
 *             ierr = nc_inq_typeids(_grpid, &ntypes, typeids)             # <<<<<<<<<<<<<<
 *         _ensure_nc_success(ierr)
 *     # create empty dictionary for CompoundType instances.
*/
          __pyx_v_ierr = nc_inq_typeids(__pyx_v__grpid, (&__pyx_v_ntypes), __pyx_v_typeids);
        }

        /* "netCDF4/_netCDF4.pyx":1912
 *     if ntypes > 0:
 *         typeids = <nc_type *>malloc(sizeof(nc_type) * ntypes)
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_inq_typeids(_grpid, &ntypes, typeids)
 *         _ensure_nc_success(ierr)
*/
        /*finally:*/ {
          /*normal exit:*/{
            __Pyx_FastGIL_Forget();
            PyEval_RestoreThread(_save);
            goto __pyx_L9;
          }
          __pyx_L9:;
        }
    }

    /* "netCDF4/_netCDF4.pyx":1914
 *         with nogil:
 *             ierr = nc_inq_typeids(_grpid, &ntypes, typeids)
 *         _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 *     # create empty dictionary for CompoundType instances.
 *     cmptypes = dict()
*/
    __pyx_t_4 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1914, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_3 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1914, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __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[2] = {__pyx_t_4, __pyx_t_3};
      __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __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;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1914, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":1910
 *         ierr = nc_inq_typeids(_grpid, &ntypes, NULL)
 *     _ensure_nc_success(ierr)
 *     if ntypes > 0:             # <<<<<<<<<<<<<<
 *         typeids = <nc_type *>malloc(sizeof(nc_type) * ntypes)
 *         with nogil:
*/
  }

  /* "netCDF4/_netCDF4.pyx":1916
 *         _ensure_nc_success(ierr)
 *     # create empty dictionary for CompoundType instances.
 *     cmptypes = dict()             # <<<<<<<<<<<<<<
 *     vltypes = dict()
 *     enumtypes = dict()
*/
  __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1916, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_cmptypes = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":1917
 *     # create empty dictionary for CompoundType instances.
 *     cmptypes = dict()
 *     vltypes = dict()             # <<<<<<<<<<<<<<
 *     enumtypes = dict()
 * 
*/
  __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1917, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_vltypes = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":1918
 *     cmptypes = dict()
 *     vltypes = dict()
 *     enumtypes = dict()             # <<<<<<<<<<<<<<
 * 
 *     if ntypes > 0:
*/
  __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1918, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_enumtypes = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":1920
 *     enumtypes = dict()
 * 
 *     if ntypes > 0:             # <<<<<<<<<<<<<<
 *         for n in range(ntypes):
 *             xtype = typeids[n]
*/
  __pyx_t_7 = (__pyx_v_ntypes > 0);
  if (__pyx_t_7) {

    /* "netCDF4/_netCDF4.pyx":1921
 * 
 *     if ntypes > 0:
 *         for n in range(ntypes):             # <<<<<<<<<<<<<<
 *             xtype = typeids[n]
 *             with nogil:
*/
    __pyx_t_2 = __pyx_v_ntypes;
    __pyx_t_8 = __pyx_t_2;
    for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_8; __pyx_t_9+=1) {
      __pyx_v_n = __pyx_t_9;

      /* "netCDF4/_netCDF4.pyx":1922
 *     if ntypes > 0:
 *         for n in range(ntypes):
 *             xtype = typeids[n]             # <<<<<<<<<<<<<<
 *             with nogil:
 *                 ierr = nc_inq_user_type(_grpid, xtype, namstring,
*/
      __pyx_v_xtype = (__pyx_v_typeids[__pyx_v_n]);

      /* "netCDF4/_netCDF4.pyx":1923
 *         for n in range(ntypes):
 *             xtype = typeids[n]
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 ierr = nc_inq_user_type(_grpid, xtype, namstring,
 *                                         NULL,NULL,NULL,&classp)
*/
      {
          PyThreadState * _save;
          _save = PyEval_SaveThread();
          __Pyx_FastGIL_Remember();
          /*try:*/ {

            /* "netCDF4/_netCDF4.pyx":1924
 *             xtype = typeids[n]
 *             with nogil:
 *                 ierr = nc_inq_user_type(_grpid, xtype, namstring,             # <<<<<<<<<<<<<<
 *                                         NULL,NULL,NULL,&classp)
 *             _ensure_nc_success(ierr)
*/
            __pyx_v_ierr = nc_inq_user_type(__pyx_v__grpid, __pyx_v_xtype, __pyx_v_namstring, NULL, NULL, NULL, (&__pyx_v_classp));
          }

          /* "netCDF4/_netCDF4.pyx":1923
 *         for n in range(ntypes):
 *             xtype = typeids[n]
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 ierr = nc_inq_user_type(_grpid, xtype, namstring,
 *                                         NULL,NULL,NULL,&classp)
*/
          /*finally:*/ {
            /*normal exit:*/{
              __Pyx_FastGIL_Forget();
              PyEval_RestoreThread(_save);
              goto __pyx_L17;
            }
            __pyx_L17:;
          }
      }

      /* "netCDF4/_netCDF4.pyx":1926
 *                 ierr = nc_inq_user_type(_grpid, xtype, namstring,
 *                                         NULL,NULL,NULL,&classp)
 *             _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 *             if classp == NC_COMPOUND: # a compound
 *                 name = namstring.decode('utf-8')
*/
      __pyx_t_5 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1926, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1926, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_6 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_3))) {
        __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
        assert(__pyx_t_5);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
        __pyx_t_6 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_4};
        __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_3, __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_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1926, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
      }
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

      /* "netCDF4/_netCDF4.pyx":1927
 *                                         NULL,NULL,NULL,&classp)
 *             _ensure_nc_success(ierr)
 *             if classp == NC_COMPOUND: # a compound             # <<<<<<<<<<<<<<
 *                 name = namstring.decode('utf-8')
 *                 # read the compound type info from the file,
*/
      switch (__pyx_v_classp) {
        case NC_COMPOUND:

        /* "netCDF4/_netCDF4.pyx":1928
 *             _ensure_nc_success(ierr)
 *             if classp == NC_COMPOUND: # a compound
 *                 name = namstring.decode('utf-8')             # <<<<<<<<<<<<<<
 *                 # read the compound type info from the file,
 *                 # create a CompoundType instance from it.
*/
        __pyx_t_10 = __Pyx_ssize_strlen(__pyx_v_namstring); if (unlikely(__pyx_t_10 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1928, __pyx_L1_error)
        __pyx_t_1 = __Pyx_decode_c_string(__pyx_v_namstring, 0, __pyx_t_10, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1928, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_1);
        __pyx_t_1 = 0;

        /* "netCDF4/_netCDF4.pyx":1931
 *                 # read the compound type info from the file,
 *                 # create a CompoundType instance from it.
 *                 try:             # <<<<<<<<<<<<<<
 *                     cmptype = _read_compound(group, xtype)
 *                 except KeyError:
*/
        {
          __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:*/ {

            /* "netCDF4/_netCDF4.pyx":1932
 *                 # create a CompoundType instance from it.
 *                 try:
 *                     cmptype = _read_compound(group, xtype)             # <<<<<<<<<<<<<<
 *                 except KeyError:
 *                     msg='WARNING: unsupported Compound type, skipping...'
*/
            __pyx_t_1 = __pyx_f_7netCDF4_8_netCDF4__read_compound(__pyx_v_group, __pyx_v_xtype, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1932, __pyx_L18_error)
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_XDECREF_SET(__pyx_v_cmptype, __pyx_t_1);
            __pyx_t_1 = 0;

            /* "netCDF4/_netCDF4.pyx":1931
 *                 # read the compound type info from the file,
 *                 # create a CompoundType instance from it.
 *                 try:             # <<<<<<<<<<<<<<
 *                     cmptype = _read_compound(group, xtype)
 *                 except KeyError:
*/
          }
          __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_L25_try_end;
          __pyx_L18_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;

          /* "netCDF4/_netCDF4.pyx":1933
 *                 try:
 *                     cmptype = _read_compound(group, xtype)
 *                 except KeyError:             # <<<<<<<<<<<<<<
 *                     msg='WARNING: unsupported Compound type, skipping...'
 *                     warnings.warn(msg)
*/
          __pyx_t_14 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_KeyError))));
          if (__pyx_t_14) {
            __Pyx_AddTraceback("netCDF4._netCDF4._get_types", __pyx_clineno, __pyx_lineno, __pyx_filename);
            if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_3, &__pyx_t_4) < 0) __PYX_ERR(0, 1933, __pyx_L20_except_error)
            __Pyx_XGOTREF(__pyx_t_1);
            __Pyx_XGOTREF(__pyx_t_3);
            __Pyx_XGOTREF(__pyx_t_4);

            /* "netCDF4/_netCDF4.pyx":1934
 *                     cmptype = _read_compound(group, xtype)
 *                 except KeyError:
 *                     msg='WARNING: unsupported Compound type, skipping...'             # <<<<<<<<<<<<<<
 *                     warnings.warn(msg)
 *                     continue
*/
            __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u_WARNING_unsupported_Compound_typ);
            __Pyx_XDECREF_SET(__pyx_v_msg, __pyx_mstate_global->__pyx_kp_u_WARNING_unsupported_Compound_typ);

            /* "netCDF4/_netCDF4.pyx":1935
 *                 except KeyError:
 *                     msg='WARNING: unsupported Compound type, skipping...'
 *                     warnings.warn(msg)             # <<<<<<<<<<<<<<
 *                     continue
 *                 cmptypes[name] = cmptype
*/
            __pyx_t_15 = NULL;
            __Pyx_GetModuleGlobalName(__pyx_t_16, __pyx_mstate_global->__pyx_n_u_warnings); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 1935, __pyx_L20_except_error)
            __Pyx_GOTREF(__pyx_t_16);
            __pyx_t_17 = __Pyx_PyObject_GetAttrStr(__pyx_t_16, __pyx_mstate_global->__pyx_n_u_warn); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 1935, __pyx_L20_except_error)
            __Pyx_GOTREF(__pyx_t_17);
            __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
            __pyx_t_6 = 1;
            #if CYTHON_UNPACK_METHODS
            if (unlikely(PyMethod_Check(__pyx_t_17))) {
              __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_17);
              assert(__pyx_t_15);
              PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_17);
              __Pyx_INCREF(__pyx_t_15);
              __Pyx_INCREF(__pyx__function);
              __Pyx_DECREF_SET(__pyx_t_17, __pyx__function);
              __pyx_t_6 = 0;
            }
            #endif
            {
              PyObject *__pyx_callargs[2] = {__pyx_t_15, __pyx_v_msg};
              __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_17, __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_17); __pyx_t_17 = 0;
              if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1935, __pyx_L20_except_error)
              __Pyx_GOTREF(__pyx_t_5);
            }
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

            /* "netCDF4/_netCDF4.pyx":1936
 *                     msg='WARNING: unsupported Compound type, skipping...'
 *                     warnings.warn(msg)
 *                     continue             # <<<<<<<<<<<<<<
 *                 cmptypes[name] = cmptype
 *             elif classp == NC_VLEN: # a vlen
*/
            goto __pyx_L26_except_continue;
            __pyx_L26_except_continue:;
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
            __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
            goto __pyx_L24_try_continue;
          }
          goto __pyx_L20_except_error;

          /* "netCDF4/_netCDF4.pyx":1931
 *                 # read the compound type info from the file,
 *                 # create a CompoundType instance from it.
 *                 try:             # <<<<<<<<<<<<<<
 *                     cmptype = _read_compound(group, xtype)
 *                 except KeyError:
*/
          __pyx_L20_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_L24_try_continue:;
          __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_L11_continue;
          __pyx_L25_try_end:;
        }

        /* "netCDF4/_netCDF4.pyx":1937
 *                     warnings.warn(msg)
 *                     continue
 *                 cmptypes[name] = cmptype             # <<<<<<<<<<<<<<
 *             elif classp == NC_VLEN: # a vlen
 *                 name = namstring.decode('utf-8')
*/
        if (unlikely((PyDict_SetItem(__pyx_v_cmptypes, __pyx_v_name, __pyx_v_cmptype) < 0))) __PYX_ERR(0, 1937, __pyx_L1_error)

        /* "netCDF4/_netCDF4.pyx":1927
 *                                         NULL,NULL,NULL,&classp)
 *             _ensure_nc_success(ierr)
 *             if classp == NC_COMPOUND: # a compound             # <<<<<<<<<<<<<<
 *                 name = namstring.decode('utf-8')
 *                 # read the compound type info from the file,
*/
        break;
        case NC_VLEN:

        /* "netCDF4/_netCDF4.pyx":1939
 *                 cmptypes[name] = cmptype
 *             elif classp == NC_VLEN: # a vlen
 *                 name = namstring.decode('utf-8')             # <<<<<<<<<<<<<<
 *                 # read the VLEN type info from the file,
 *                 # create a VLType instance from it.
*/
        __pyx_t_10 = __Pyx_ssize_strlen(__pyx_v_namstring); if (unlikely(__pyx_t_10 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1939, __pyx_L1_error)
        __pyx_t_4 = __Pyx_decode_c_string(__pyx_v_namstring, 0, __pyx_t_10, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1939, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_4);
        __pyx_t_4 = 0;

        /* "netCDF4/_netCDF4.pyx":1942
 *                 # read the VLEN type info from the file,
 *                 # create a VLType instance from it.
 *                 try:             # <<<<<<<<<<<<<<
 *                     vltype = _read_vlen(group, xtype)
 *                 except KeyError:
*/
        {
          __Pyx_PyThreadState_declare
          __Pyx_PyThreadState_assign
          __Pyx_ExceptionSave(&__pyx_t_13, &__pyx_t_12, &__pyx_t_11);
          __Pyx_XGOTREF(__pyx_t_13);
          __Pyx_XGOTREF(__pyx_t_12);
          __Pyx_XGOTREF(__pyx_t_11);
          /*try:*/ {

            /* "netCDF4/_netCDF4.pyx":1943
 *                 # create a VLType instance from it.
 *                 try:
 *                     vltype = _read_vlen(group, xtype)             # <<<<<<<<<<<<<<
 *                 except KeyError:
 *                     msg='WARNING: unsupported VLEN type, skipping...'
*/
            __pyx_t_4 = __pyx_f_7netCDF4_8_netCDF4__read_vlen(__pyx_v_group, __pyx_v_xtype, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1943, __pyx_L28_error)
            __Pyx_GOTREF(__pyx_t_4);
            __Pyx_XDECREF_SET(__pyx_v_vltype, __pyx_t_4);
            __pyx_t_4 = 0;

            /* "netCDF4/_netCDF4.pyx":1942
 *                 # read the VLEN type info from the file,
 *                 # create a VLType instance from it.
 *                 try:             # <<<<<<<<<<<<<<
 *                     vltype = _read_vlen(group, xtype)
 *                 except KeyError:
*/
          }
          __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
          __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
          __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
          goto __pyx_L35_try_end;
          __pyx_L28_error:;
          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
          __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
          __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 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;

          /* "netCDF4/_netCDF4.pyx":1944
 *                 try:
 *                     vltype = _read_vlen(group, xtype)
 *                 except KeyError:             # <<<<<<<<<<<<<<
 *                     msg='WARNING: unsupported VLEN type, skipping...'
 *                     warnings.warn(msg)
*/
          __pyx_t_14 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_KeyError))));
          if (__pyx_t_14) {
            __Pyx_AddTraceback("netCDF4._netCDF4._get_types", __pyx_clineno, __pyx_lineno, __pyx_filename);
            if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_3, &__pyx_t_1) < 0) __PYX_ERR(0, 1944, __pyx_L30_except_error)
            __Pyx_XGOTREF(__pyx_t_4);
            __Pyx_XGOTREF(__pyx_t_3);
            __Pyx_XGOTREF(__pyx_t_1);

            /* "netCDF4/_netCDF4.pyx":1945
 *                     vltype = _read_vlen(group, xtype)
 *                 except KeyError:
 *                     msg='WARNING: unsupported VLEN type, skipping...'             # <<<<<<<<<<<<<<
 *                     warnings.warn(msg)
 *                     continue
*/
            __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u_WARNING_unsupported_VLEN_type_sk);
            __Pyx_XDECREF_SET(__pyx_v_msg, __pyx_mstate_global->__pyx_kp_u_WARNING_unsupported_VLEN_type_sk);

            /* "netCDF4/_netCDF4.pyx":1946
 *                 except KeyError:
 *                     msg='WARNING: unsupported VLEN type, skipping...'
 *                     warnings.warn(msg)             # <<<<<<<<<<<<<<
 *                     continue
 *                 vltypes[name] = vltype
*/
            __pyx_t_17 = NULL;
            __Pyx_GetModuleGlobalName(__pyx_t_15, __pyx_mstate_global->__pyx_n_u_warnings); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 1946, __pyx_L30_except_error)
            __Pyx_GOTREF(__pyx_t_15);
            __pyx_t_16 = __Pyx_PyObject_GetAttrStr(__pyx_t_15, __pyx_mstate_global->__pyx_n_u_warn); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 1946, __pyx_L30_except_error)
            __Pyx_GOTREF(__pyx_t_16);
            __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
            __pyx_t_6 = 1;
            #if CYTHON_UNPACK_METHODS
            if (unlikely(PyMethod_Check(__pyx_t_16))) {
              __pyx_t_17 = PyMethod_GET_SELF(__pyx_t_16);
              assert(__pyx_t_17);
              PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_16);
              __Pyx_INCREF(__pyx_t_17);
              __Pyx_INCREF(__pyx__function);
              __Pyx_DECREF_SET(__pyx_t_16, __pyx__function);
              __pyx_t_6 = 0;
            }
            #endif
            {
              PyObject *__pyx_callargs[2] = {__pyx_t_17, __pyx_v_msg};
              __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_16, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
              __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
              __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
              if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1946, __pyx_L30_except_error)
              __Pyx_GOTREF(__pyx_t_5);
            }
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

            /* "netCDF4/_netCDF4.pyx":1947
 *                     msg='WARNING: unsupported VLEN type, skipping...'
 *                     warnings.warn(msg)
 *                     continue             # <<<<<<<<<<<<<<
 *                 vltypes[name] = vltype
 *             elif classp == NC_ENUM: # an enum type
*/
            goto __pyx_L36_except_continue;
            __pyx_L36_except_continue:;
            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
            __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
            goto __pyx_L34_try_continue;
          }
          goto __pyx_L30_except_error;

          /* "netCDF4/_netCDF4.pyx":1942
 *                 # read the VLEN type info from the file,
 *                 # create a VLType instance from it.
 *                 try:             # <<<<<<<<<<<<<<
 *                     vltype = _read_vlen(group, xtype)
 *                 except KeyError:
*/
          __pyx_L30_except_error:;
          __Pyx_XGIVEREF(__pyx_t_13);
          __Pyx_XGIVEREF(__pyx_t_12);
          __Pyx_XGIVEREF(__pyx_t_11);
          __Pyx_ExceptionReset(__pyx_t_13, __pyx_t_12, __pyx_t_11);
          goto __pyx_L1_error;
          __pyx_L34_try_continue:;
          __Pyx_XGIVEREF(__pyx_t_13);
          __Pyx_XGIVEREF(__pyx_t_12);
          __Pyx_XGIVEREF(__pyx_t_11);
          __Pyx_ExceptionReset(__pyx_t_13, __pyx_t_12, __pyx_t_11);
          goto __pyx_L11_continue;
          __pyx_L35_try_end:;
        }

        /* "netCDF4/_netCDF4.pyx":1948
 *                     warnings.warn(msg)
 *                     continue
 *                 vltypes[name] = vltype             # <<<<<<<<<<<<<<
 *             elif classp == NC_ENUM: # an enum type
 *                 name = namstring.decode('utf-8')
*/
        if (unlikely((PyDict_SetItem(__pyx_v_vltypes, __pyx_v_name, __pyx_v_vltype) < 0))) __PYX_ERR(0, 1948, __pyx_L1_error)

        /* "netCDF4/_netCDF4.pyx":1938
 *                     continue
 *                 cmptypes[name] = cmptype
 *             elif classp == NC_VLEN: # a vlen             # <<<<<<<<<<<<<<
 *                 name = namstring.decode('utf-8')
 *                 # read the VLEN type info from the file,
*/
        break;
        case NC_ENUM:

        /* "netCDF4/_netCDF4.pyx":1950
 *                 vltypes[name] = vltype
 *             elif classp == NC_ENUM: # an enum type
 *                 name = namstring.decode('utf-8')             # <<<<<<<<<<<<<<
 *                 # read the Enum type info from the file,
 *                 # create a EnumType instance from it.
*/
        __pyx_t_10 = __Pyx_ssize_strlen(__pyx_v_namstring); if (unlikely(__pyx_t_10 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1950, __pyx_L1_error)
        __pyx_t_1 = __Pyx_decode_c_string(__pyx_v_namstring, 0, __pyx_t_10, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1950, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_1);
        __pyx_t_1 = 0;

        /* "netCDF4/_netCDF4.pyx":1953
 *                 # read the Enum type info from the file,
 *                 # create a EnumType instance from it.
 *                 try:             # <<<<<<<<<<<<<<
 *                     enumtype = _read_enum(group, xtype)
 *                 except KeyError:
*/
        {
          __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:*/ {

            /* "netCDF4/_netCDF4.pyx":1954
 *                 # create a EnumType instance from it.
 *                 try:
 *                     enumtype = _read_enum(group, xtype)             # <<<<<<<<<<<<<<
 *                 except KeyError:
 *                     msg='WARNING: unsupported Enum type, skipping...'
*/
            __pyx_t_1 = __pyx_f_7netCDF4_8_netCDF4__read_enum(__pyx_v_group, __pyx_v_xtype, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1954, __pyx_L38_error)
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_XDECREF_SET(__pyx_v_enumtype, __pyx_t_1);
            __pyx_t_1 = 0;

            /* "netCDF4/_netCDF4.pyx":1953
 *                 # read the Enum type info from the file,
 *                 # create a EnumType instance from it.
 *                 try:             # <<<<<<<<<<<<<<
 *                     enumtype = _read_enum(group, xtype)
 *                 except KeyError:
*/
          }
          __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_L45_try_end;
          __pyx_L38_error:;
          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
          __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
          __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 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;

          /* "netCDF4/_netCDF4.pyx":1955
 *                 try:
 *                     enumtype = _read_enum(group, xtype)
 *                 except KeyError:             # <<<<<<<<<<<<<<
 *                     msg='WARNING: unsupported Enum type, skipping...'
 *                     warnings.warn(msg)
*/
          __pyx_t_14 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_KeyError))));
          if (__pyx_t_14) {
            __Pyx_AddTraceback("netCDF4._netCDF4._get_types", __pyx_clineno, __pyx_lineno, __pyx_filename);
            if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_3, &__pyx_t_4) < 0) __PYX_ERR(0, 1955, __pyx_L40_except_error)
            __Pyx_XGOTREF(__pyx_t_1);
            __Pyx_XGOTREF(__pyx_t_3);
            __Pyx_XGOTREF(__pyx_t_4);

            /* "netCDF4/_netCDF4.pyx":1956
 *                     enumtype = _read_enum(group, xtype)
 *                 except KeyError:
 *                     msg='WARNING: unsupported Enum type, skipping...'             # <<<<<<<<<<<<<<
 *                     warnings.warn(msg)
 *                     continue
*/
            __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u_WARNING_unsupported_Enum_type_sk);
            __Pyx_XDECREF_SET(__pyx_v_msg, __pyx_mstate_global->__pyx_kp_u_WARNING_unsupported_Enum_type_sk);

            /* "netCDF4/_netCDF4.pyx":1957
 *                 except KeyError:
 *                     msg='WARNING: unsupported Enum type, skipping...'
 *                     warnings.warn(msg)             # <<<<<<<<<<<<<<
 *                     continue
 *                 enumtypes[name] = enumtype
*/
            __pyx_t_16 = NULL;
            __Pyx_GetModuleGlobalName(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_warnings); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 1957, __pyx_L40_except_error)
            __Pyx_GOTREF(__pyx_t_17);
            __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_warn); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 1957, __pyx_L40_except_error)
            __Pyx_GOTREF(__pyx_t_15);
            __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
            __pyx_t_6 = 1;
            #if CYTHON_UNPACK_METHODS
            if (unlikely(PyMethod_Check(__pyx_t_15))) {
              __pyx_t_16 = PyMethod_GET_SELF(__pyx_t_15);
              assert(__pyx_t_16);
              PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_15);
              __Pyx_INCREF(__pyx_t_16);
              __Pyx_INCREF(__pyx__function);
              __Pyx_DECREF_SET(__pyx_t_15, __pyx__function);
              __pyx_t_6 = 0;
            }
            #endif
            {
              PyObject *__pyx_callargs[2] = {__pyx_t_16, __pyx_v_msg};
              __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_15, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
              __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
              __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
              if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1957, __pyx_L40_except_error)
              __Pyx_GOTREF(__pyx_t_5);
            }
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

            /* "netCDF4/_netCDF4.pyx":1958
 *                     msg='WARNING: unsupported Enum type, skipping...'
 *                     warnings.warn(msg)
 *                     continue             # <<<<<<<<<<<<<<
 *                 enumtypes[name] = enumtype
 *         free(typeids)
*/
            goto __pyx_L46_except_continue;
            __pyx_L46_except_continue:;
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
            __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
            goto __pyx_L44_try_continue;
          }
          goto __pyx_L40_except_error;

          /* "netCDF4/_netCDF4.pyx":1953
 *                 # read the Enum type info from the file,
 *                 # create a EnumType instance from it.
 *                 try:             # <<<<<<<<<<<<<<
 *                     enumtype = _read_enum(group, xtype)
 *                 except KeyError:
*/
          __pyx_L40_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_L44_try_continue:;
          __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_L11_continue;
          __pyx_L45_try_end:;
        }

        /* "netCDF4/_netCDF4.pyx":1959
 *                     warnings.warn(msg)
 *                     continue
 *                 enumtypes[name] = enumtype             # <<<<<<<<<<<<<<
 *         free(typeids)
 *     return cmptypes, vltypes, enumtypes
*/
        if (unlikely((PyDict_SetItem(__pyx_v_enumtypes, __pyx_v_name, __pyx_v_enumtype) < 0))) __PYX_ERR(0, 1959, __pyx_L1_error)

        /* "netCDF4/_netCDF4.pyx":1949
 *                     continue
 *                 vltypes[name] = vltype
 *             elif classp == NC_ENUM: # an enum type             # <<<<<<<<<<<<<<
 *                 name = namstring.decode('utf-8')
 *                 # read the Enum type info from the file,
*/
        break;
        default: break;
      }
      __pyx_L11_continue:;
    }

    /* "netCDF4/_netCDF4.pyx":1960
 *                     continue
 *                 enumtypes[name] = enumtype
 *         free(typeids)             # <<<<<<<<<<<<<<
 *     return cmptypes, vltypes, enumtypes
 * 
*/
    free(__pyx_v_typeids);

    /* "netCDF4/_netCDF4.pyx":1920
 *     enumtypes = dict()
 * 
 *     if ntypes > 0:             # <<<<<<<<<<<<<<
 *         for n in range(ntypes):
 *             xtype = typeids[n]
*/
  }

  /* "netCDF4/_netCDF4.pyx":1961
 *                 enumtypes[name] = enumtype
 *         free(typeids)
 *     return cmptypes, vltypes, enumtypes             # <<<<<<<<<<<<<<
 * 
 * cdef _get_dims(group):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1961, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_v_cmptypes);
  __Pyx_GIVEREF(__pyx_v_cmptypes);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_cmptypes) != (0)) __PYX_ERR(0, 1961, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_vltypes);
  __Pyx_GIVEREF(__pyx_v_vltypes);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_vltypes) != (0)) __PYX_ERR(0, 1961, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_enumtypes);
  __Pyx_GIVEREF(__pyx_v_enumtypes);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_v_enumtypes) != (0)) __PYX_ERR(0, 1961, __pyx_L1_error);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":1897
 *         _ensure_nc_success(ierr, err_cls=AttributeError)
 * 
 * cdef _get_types(group):             # <<<<<<<<<<<<<<
 *     # Private function to create `CompoundType`,
 *     # `VLType` or `EnumType` instances for all the
*/

  /* 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_15);
  __Pyx_XDECREF(__pyx_t_16);
  __Pyx_XDECREF(__pyx_t_17);
  __Pyx_AddTraceback("netCDF4._netCDF4._get_types", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_cmptypes);
  __Pyx_XDECREF(__pyx_v_vltypes);
  __Pyx_XDECREF(__pyx_v_enumtypes);
  __Pyx_XDECREF(__pyx_v_name);
  __Pyx_XDECREF(__pyx_v_cmptype);
  __Pyx_XDECREF(__pyx_v_msg);
  __Pyx_XDECREF(__pyx_v_vltype);
  __Pyx_XDECREF(__pyx_v_enumtype);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":1963
 *     return cmptypes, vltypes, enumtypes
 * 
 * cdef _get_dims(group):             # <<<<<<<<<<<<<<
 *     # Private function to create `Dimension` instances for all the
 *     # dimensions in a `Group` or Dataset
*/

static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_dims(PyObject *__pyx_v_group) {
  int __pyx_v_ierr;
  int __pyx_v_numdims;
  int __pyx_v_n;
  int __pyx_v__grpid;
  int *__pyx_v_dimids;
  char __pyx_v_namstring[(NC_MAX_NAME + 1)];
  PyObject *__pyx_v_dimensions = NULL;
  PyObject *__pyx_v_name = NULL;
  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;
  size_t __pyx_t_6;
  int __pyx_t_7;
  int __pyx_t_8;
  int __pyx_t_9;
  Py_ssize_t __pyx_t_10;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_get_dims", 0);

  /* "netCDF4/_netCDF4.pyx":1970
 *     cdef char namstring[NC_MAX_NAME+1]
 *     # get number of dimensions in this Group.
 *     _grpid = group._grpid             # <<<<<<<<<<<<<<
 *     with nogil:
 *         ierr = nc_inq_ndims(_grpid, &numdims)
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_group, __pyx_mstate_global->__pyx_n_u_grpid); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1970, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyLong_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1970, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v__grpid = __pyx_t_2;

  /* "netCDF4/_netCDF4.pyx":1971
 *     # get number of dimensions in this Group.
 *     _grpid = group._grpid
 *     with nogil:             # <<<<<<<<<<<<<<
 *         ierr = nc_inq_ndims(_grpid, &numdims)
 *     _ensure_nc_success(ierr)
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "netCDF4/_netCDF4.pyx":1972
 *     _grpid = group._grpid
 *     with nogil:
 *         ierr = nc_inq_ndims(_grpid, &numdims)             # <<<<<<<<<<<<<<
 *     _ensure_nc_success(ierr)
 *     # create empty dictionary for dimensions.
*/
        __pyx_v_ierr = nc_inq_ndims(__pyx_v__grpid, (&__pyx_v_numdims));
      }

      /* "netCDF4/_netCDF4.pyx":1971
 *     # get number of dimensions in this Group.
 *     _grpid = group._grpid
 *     with nogil:             # <<<<<<<<<<<<<<
 *         ierr = nc_inq_ndims(_grpid, &numdims)
 *     _ensure_nc_success(ierr)
*/
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "netCDF4/_netCDF4.pyx":1973
 *     with nogil:
 *         ierr = nc_inq_ndims(_grpid, &numdims)
 *     _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 *     # create empty dictionary for dimensions.
 *     dimensions = dict()
*/
  __pyx_t_3 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1973, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1973, __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_1 = __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_1)) __PYX_ERR(0, 1973, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":1975
 *     _ensure_nc_success(ierr)
 *     # create empty dictionary for dimensions.
 *     dimensions = dict()             # <<<<<<<<<<<<<<
 *     if numdims > 0:
 *         dimids = <int *>malloc(sizeof(int) * numdims)
*/
  __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1975, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_dimensions = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":1976
 *     # create empty dictionary for dimensions.
 *     dimensions = dict()
 *     if numdims > 0:             # <<<<<<<<<<<<<<
 *         dimids = <int *>malloc(sizeof(int) * numdims)
 *         if group.data_model == 'NETCDF4':
*/
  __pyx_t_7 = (__pyx_v_numdims > 0);
  if (__pyx_t_7) {

    /* "netCDF4/_netCDF4.pyx":1977
 *     dimensions = dict()
 *     if numdims > 0:
 *         dimids = <int *>malloc(sizeof(int) * numdims)             # <<<<<<<<<<<<<<
 *         if group.data_model == 'NETCDF4':
 *             with nogil:
*/
    __pyx_v_dimids = ((int *)malloc(((sizeof(int)) * __pyx_v_numdims)));

    /* "netCDF4/_netCDF4.pyx":1978
 *     if numdims > 0:
 *         dimids = <int *>malloc(sizeof(int) * numdims)
 *         if group.data_model == 'NETCDF4':             # <<<<<<<<<<<<<<
 *             with nogil:
 *                 ierr = nc_inq_dimids(_grpid, &numdims, dimids, 0)
*/
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_group, __pyx_mstate_global->__pyx_n_u_data_model); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1978, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_7 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_NETCDF4, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 1978, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (__pyx_t_7) {

      /* "netCDF4/_netCDF4.pyx":1979
 *         dimids = <int *>malloc(sizeof(int) * numdims)
 *         if group.data_model == 'NETCDF4':
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 ierr = nc_inq_dimids(_grpid, &numdims, dimids, 0)
 *             _ensure_nc_success(ierr)
*/
      {
          PyThreadState * _save;
          _save = PyEval_SaveThread();
          __Pyx_FastGIL_Remember();
          /*try:*/ {

            /* "netCDF4/_netCDF4.pyx":1980
 *         if group.data_model == 'NETCDF4':
 *             with nogil:
 *                 ierr = nc_inq_dimids(_grpid, &numdims, dimids, 0)             # <<<<<<<<<<<<<<
 *             _ensure_nc_success(ierr)
 *         else:
*/
            __pyx_v_ierr = nc_inq_dimids(__pyx_v__grpid, (&__pyx_v_numdims), __pyx_v_dimids, 0);
          }

          /* "netCDF4/_netCDF4.pyx":1979
 *         dimids = <int *>malloc(sizeof(int) * numdims)
 *         if group.data_model == 'NETCDF4':
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 ierr = nc_inq_dimids(_grpid, &numdims, dimids, 0)
 *             _ensure_nc_success(ierr)
*/
          /*finally:*/ {
            /*normal exit:*/{
              __Pyx_FastGIL_Forget();
              PyEval_RestoreThread(_save);
              goto __pyx_L10;
            }
            __pyx_L10:;
          }
      }

      /* "netCDF4/_netCDF4.pyx":1981
 *             with nogil:
 *                 ierr = nc_inq_dimids(_grpid, &numdims, dimids, 0)
 *             _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 *         else:
 *             for n in range(numdims):
*/
      __pyx_t_4 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1981, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_3 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1981, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __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[2] = {__pyx_t_4, __pyx_t_3};
        __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __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;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1981, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
      }
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

      /* "netCDF4/_netCDF4.pyx":1978
 *     if numdims > 0:
 *         dimids = <int *>malloc(sizeof(int) * numdims)
 *         if group.data_model == 'NETCDF4':             # <<<<<<<<<<<<<<
 *             with nogil:
 *                 ierr = nc_inq_dimids(_grpid, &numdims, dimids, 0)
*/
      goto __pyx_L7;
    }

    /* "netCDF4/_netCDF4.pyx":1983
 *             _ensure_nc_success(ierr)
 *         else:
 *             for n in range(numdims):             # <<<<<<<<<<<<<<
 *                 dimids[n] = n
 *         for n in range(numdims):
*/
    /*else*/ {
      __pyx_t_2 = __pyx_v_numdims;
      __pyx_t_8 = __pyx_t_2;
      for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_8; __pyx_t_9+=1) {
        __pyx_v_n = __pyx_t_9;

        /* "netCDF4/_netCDF4.pyx":1984
 *         else:
 *             for n in range(numdims):
 *                 dimids[n] = n             # <<<<<<<<<<<<<<
 *         for n in range(numdims):
 *             with nogil:
*/
        (__pyx_v_dimids[__pyx_v_n]) = __pyx_v_n;
      }
    }
    __pyx_L7:;

    /* "netCDF4/_netCDF4.pyx":1985
 *             for n in range(numdims):
 *                 dimids[n] = n
 *         for n in range(numdims):             # <<<<<<<<<<<<<<
 *             with nogil:
 *                 ierr = nc_inq_dimname(_grpid, dimids[n], namstring)
*/
    __pyx_t_2 = __pyx_v_numdims;
    __pyx_t_8 = __pyx_t_2;
    for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_8; __pyx_t_9+=1) {
      __pyx_v_n = __pyx_t_9;

      /* "netCDF4/_netCDF4.pyx":1986
 *                 dimids[n] = n
 *         for n in range(numdims):
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 ierr = nc_inq_dimname(_grpid, dimids[n], namstring)
 *             _ensure_nc_success(ierr)
*/
      {
          PyThreadState * _save;
          _save = PyEval_SaveThread();
          __Pyx_FastGIL_Remember();
          /*try:*/ {

            /* "netCDF4/_netCDF4.pyx":1987
 *         for n in range(numdims):
 *             with nogil:
 *                 ierr = nc_inq_dimname(_grpid, dimids[n], namstring)             # <<<<<<<<<<<<<<
 *             _ensure_nc_success(ierr)
 *             name = namstring.decode('utf-8')
*/
            __pyx_v_ierr = nc_inq_dimname(__pyx_v__grpid, (__pyx_v_dimids[__pyx_v_n]), __pyx_v_namstring);
          }

          /* "netCDF4/_netCDF4.pyx":1986
 *                 dimids[n] = n
 *         for n in range(numdims):
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 ierr = nc_inq_dimname(_grpid, dimids[n], namstring)
 *             _ensure_nc_success(ierr)
*/
          /*finally:*/ {
            /*normal exit:*/{
              __Pyx_FastGIL_Forget();
              PyEval_RestoreThread(_save);
              goto __pyx_L19;
            }
            __pyx_L19:;
          }
      }

      /* "netCDF4/_netCDF4.pyx":1988
 *             with nogil:
 *                 ierr = nc_inq_dimname(_grpid, dimids[n], namstring)
 *             _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 *             name = namstring.decode('utf-8')
 *             dimensions[name] = Dimension(group, name, id=dimids[n])
*/
      __pyx_t_5 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1988, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1988, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_6 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_3))) {
        __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
        assert(__pyx_t_5);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
        __pyx_t_6 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_4};
        __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_3, __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_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1988, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
      }
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

      /* "netCDF4/_netCDF4.pyx":1989
 *                 ierr = nc_inq_dimname(_grpid, dimids[n], namstring)
 *             _ensure_nc_success(ierr)
 *             name = namstring.decode('utf-8')             # <<<<<<<<<<<<<<
 *             dimensions[name] = Dimension(group, name, id=dimids[n])
 *         free(dimids)
*/
      __pyx_t_10 = __Pyx_ssize_strlen(__pyx_v_namstring); if (unlikely(__pyx_t_10 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1989, __pyx_L1_error)
      __pyx_t_1 = __Pyx_decode_c_string(__pyx_v_namstring, 0, __pyx_t_10, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1989, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_1);
      __pyx_t_1 = 0;

      /* "netCDF4/_netCDF4.pyx":1990
 *             _ensure_nc_success(ierr)
 *             name = namstring.decode('utf-8')
 *             dimensions[name] = Dimension(group, name, id=dimids[n])             # <<<<<<<<<<<<<<
 *         free(dimids)
 *     return dimensions
*/
      __pyx_t_3 = NULL;
      __pyx_t_4 = __Pyx_PyLong_From_int((__pyx_v_dimids[__pyx_v_n])); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1990, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_6 = 1;
      {
        PyObject *__pyx_callargs[3 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_3, __pyx_v_group, __pyx_v_name};
        __pyx_t_5 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1990, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_id, __pyx_t_4, __pyx_t_5, __pyx_callargs+3, 0) < (0)) __PYX_ERR(0, 1990, __pyx_L1_error)
        __pyx_t_1 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Dimension, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_5);
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1990, __pyx_L1_error)
        __Pyx_GOTREF((PyObject *)__pyx_t_1);
      }
      if (unlikely((PyDict_SetItem(__pyx_v_dimensions, __pyx_v_name, ((PyObject *)__pyx_t_1)) < 0))) __PYX_ERR(0, 1990, __pyx_L1_error)
      __Pyx_DECREF((PyObject *)__pyx_t_1); __pyx_t_1 = 0;
    }

    /* "netCDF4/_netCDF4.pyx":1991
 *             name = namstring.decode('utf-8')
 *             dimensions[name] = Dimension(group, name, id=dimids[n])
 *         free(dimids)             # <<<<<<<<<<<<<<
 *     return dimensions
 * 
*/
    free(__pyx_v_dimids);

    /* "netCDF4/_netCDF4.pyx":1976
 *     # create empty dictionary for dimensions.
 *     dimensions = dict()
 *     if numdims > 0:             # <<<<<<<<<<<<<<
 *         dimids = <int *>malloc(sizeof(int) * numdims)
 *         if group.data_model == 'NETCDF4':
*/
  }

  /* "netCDF4/_netCDF4.pyx":1992
 *             dimensions[name] = Dimension(group, name, id=dimids[n])
 *         free(dimids)
 *     return dimensions             # <<<<<<<<<<<<<<
 * 
 * cdef _get_grps(group):
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_dimensions);
  __pyx_r = __pyx_v_dimensions;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":1963
 *     return cmptypes, vltypes, enumtypes
 * 
 * cdef _get_dims(group):             # <<<<<<<<<<<<<<
 *     # Private function to create `Dimension` instances for all the
 *     # dimensions in a `Group` or Dataset
*/

  /* 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("netCDF4._netCDF4._get_dims", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_dimensions);
  __Pyx_XDECREF(__pyx_v_name);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":1994
 *     return dimensions
 * 
 * cdef _get_grps(group):             # <<<<<<<<<<<<<<
 *     # Private function to create `Group` instances for all the
 *     # groups in a `Group` or Dataset
*/

static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_grps(PyObject *__pyx_v_group) {
  int __pyx_v_ierr;
  int __pyx_v_numgrps;
  int __pyx_v_n;
  int __pyx_v__grpid;
  int *__pyx_v_grpids;
  char __pyx_v_namstring[(NC_MAX_NAME + 1)];
  PyObject *__pyx_v_groups = NULL;
  PyObject *__pyx_v_name = NULL;
  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;
  size_t __pyx_t_6;
  int __pyx_t_7;
  int __pyx_t_8;
  int __pyx_t_9;
  Py_ssize_t __pyx_t_10;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_get_grps", 0);

  /* "netCDF4/_netCDF4.pyx":2001
 *     cdef char namstring[NC_MAX_NAME+1]
 *     # get number of groups in this Group.
 *     _grpid = group._grpid             # <<<<<<<<<<<<<<
 *     with nogil:
 *         ierr = nc_inq_grps(_grpid, &numgrps, NULL)
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_group, __pyx_mstate_global->__pyx_n_u_grpid); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2001, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyLong_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2001, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v__grpid = __pyx_t_2;

  /* "netCDF4/_netCDF4.pyx":2002
 *     # get number of groups in this Group.
 *     _grpid = group._grpid
 *     with nogil:             # <<<<<<<<<<<<<<
 *         ierr = nc_inq_grps(_grpid, &numgrps, NULL)
 *     _ensure_nc_success(ierr)
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "netCDF4/_netCDF4.pyx":2003
 *     _grpid = group._grpid
 *     with nogil:
 *         ierr = nc_inq_grps(_grpid, &numgrps, NULL)             # <<<<<<<<<<<<<<
 *     _ensure_nc_success(ierr)
 *     # create dictionary containing `Group` instances for groups in this group
*/
        __pyx_v_ierr = nc_inq_grps(__pyx_v__grpid, (&__pyx_v_numgrps), NULL);
      }

      /* "netCDF4/_netCDF4.pyx":2002
 *     # get number of groups in this Group.
 *     _grpid = group._grpid
 *     with nogil:             # <<<<<<<<<<<<<<
 *         ierr = nc_inq_grps(_grpid, &numgrps, NULL)
 *     _ensure_nc_success(ierr)
*/
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "netCDF4/_netCDF4.pyx":2004
 *     with nogil:
 *         ierr = nc_inq_grps(_grpid, &numgrps, NULL)
 *     _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 *     # create dictionary containing `Group` instances for groups in this group
 *     groups = dict()
*/
  __pyx_t_3 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2004, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2004, __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_1 = __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_1)) __PYX_ERR(0, 2004, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":2006
 *     _ensure_nc_success(ierr)
 *     # create dictionary containing `Group` instances for groups in this group
 *     groups = dict()             # <<<<<<<<<<<<<<
 *     if numgrps > 0:
 *         grpids = <int *>malloc(sizeof(int) * numgrps)
*/
  __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2006, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_groups = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":2007
 *     # create dictionary containing `Group` instances for groups in this group
 *     groups = dict()
 *     if numgrps > 0:             # <<<<<<<<<<<<<<
 *         grpids = <int *>malloc(sizeof(int) * numgrps)
 *         with nogil:
*/
  __pyx_t_7 = (__pyx_v_numgrps > 0);
  if (__pyx_t_7) {

    /* "netCDF4/_netCDF4.pyx":2008
 *     groups = dict()
 *     if numgrps > 0:
 *         grpids = <int *>malloc(sizeof(int) * numgrps)             # <<<<<<<<<<<<<<
 *         with nogil:
 *             ierr = nc_inq_grps(_grpid, NULL, grpids)
*/
    __pyx_v_grpids = ((int *)malloc(((sizeof(int)) * __pyx_v_numgrps)));

    /* "netCDF4/_netCDF4.pyx":2009
 *     if numgrps > 0:
 *         grpids = <int *>malloc(sizeof(int) * numgrps)
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_inq_grps(_grpid, NULL, grpids)
 *         _ensure_nc_success(ierr)
*/
    {
        PyThreadState * _save;
        _save = PyEval_SaveThread();
        __Pyx_FastGIL_Remember();
        /*try:*/ {

          /* "netCDF4/_netCDF4.pyx":2010
 *         grpids = <int *>malloc(sizeof(int) * numgrps)
 *         with nogil:
 *             ierr = nc_inq_grps(_grpid, NULL, grpids)             # <<<<<<<<<<<<<<
 *         _ensure_nc_success(ierr)
 *         for n in range(numgrps):
*/
          __pyx_v_ierr = nc_inq_grps(__pyx_v__grpid, NULL, __pyx_v_grpids);
        }

        /* "netCDF4/_netCDF4.pyx":2009
 *     if numgrps > 0:
 *         grpids = <int *>malloc(sizeof(int) * numgrps)
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_inq_grps(_grpid, NULL, grpids)
 *         _ensure_nc_success(ierr)
*/
        /*finally:*/ {
          /*normal exit:*/{
            __Pyx_FastGIL_Forget();
            PyEval_RestoreThread(_save);
            goto __pyx_L9;
          }
          __pyx_L9:;
        }
    }

    /* "netCDF4/_netCDF4.pyx":2011
 *         with nogil:
 *             ierr = nc_inq_grps(_grpid, NULL, grpids)
 *         _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 *         for n in range(numgrps):
 *             with nogil:
*/
    __pyx_t_4 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2011, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_3 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2011, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __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[2] = {__pyx_t_4, __pyx_t_3};
      __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __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;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2011, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":2012
 *             ierr = nc_inq_grps(_grpid, NULL, grpids)
 *         _ensure_nc_success(ierr)
 *         for n in range(numgrps):             # <<<<<<<<<<<<<<
 *             with nogil:
 *                 ierr = nc_inq_grpname(grpids[n], namstring)
*/
    __pyx_t_2 = __pyx_v_numgrps;
    __pyx_t_8 = __pyx_t_2;
    for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_8; __pyx_t_9+=1) {
      __pyx_v_n = __pyx_t_9;

      /* "netCDF4/_netCDF4.pyx":2013
 *         _ensure_nc_success(ierr)
 *         for n in range(numgrps):
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 ierr = nc_inq_grpname(grpids[n], namstring)
 *             _ensure_nc_success(ierr)
*/
      {
          PyThreadState * _save;
          _save = PyEval_SaveThread();
          __Pyx_FastGIL_Remember();
          /*try:*/ {

            /* "netCDF4/_netCDF4.pyx":2014
 *         for n in range(numgrps):
 *             with nogil:
 *                 ierr = nc_inq_grpname(grpids[n], namstring)             # <<<<<<<<<<<<<<
 *             _ensure_nc_success(ierr)
 *             name = namstring.decode('utf-8')
*/
            __pyx_v_ierr = nc_inq_grpname((__pyx_v_grpids[__pyx_v_n]), __pyx_v_namstring);
          }

          /* "netCDF4/_netCDF4.pyx":2013
 *         _ensure_nc_success(ierr)
 *         for n in range(numgrps):
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 ierr = nc_inq_grpname(grpids[n], namstring)
 *             _ensure_nc_success(ierr)
*/
          /*finally:*/ {
            /*normal exit:*/{
              __Pyx_FastGIL_Forget();
              PyEval_RestoreThread(_save);
              goto __pyx_L16;
            }
            __pyx_L16:;
          }
      }

      /* "netCDF4/_netCDF4.pyx":2015
 *             with nogil:
 *                 ierr = nc_inq_grpname(grpids[n], namstring)
 *             _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 *             name = namstring.decode('utf-8')
 *             groups[name] = Group(group, name, id=grpids[n])
*/
      __pyx_t_5 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2015, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2015, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_6 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_3))) {
        __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
        assert(__pyx_t_5);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
        __pyx_t_6 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_4};
        __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_3, __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_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2015, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
      }
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

      /* "netCDF4/_netCDF4.pyx":2016
 *                 ierr = nc_inq_grpname(grpids[n], namstring)
 *             _ensure_nc_success(ierr)
 *             name = namstring.decode('utf-8')             # <<<<<<<<<<<<<<
 *             groups[name] = Group(group, name, id=grpids[n])
 *         free(grpids)
*/
      __pyx_t_10 = __Pyx_ssize_strlen(__pyx_v_namstring); if (unlikely(__pyx_t_10 == ((Py_ssize_t)-1))) __PYX_ERR(0, 2016, __pyx_L1_error)
      __pyx_t_1 = __Pyx_decode_c_string(__pyx_v_namstring, 0, __pyx_t_10, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2016, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_1);
      __pyx_t_1 = 0;

      /* "netCDF4/_netCDF4.pyx":2017
 *             _ensure_nc_success(ierr)
 *             name = namstring.decode('utf-8')
 *             groups[name] = Group(group, name, id=grpids[n])             # <<<<<<<<<<<<<<
 *         free(grpids)
 *     return groups
*/
      __pyx_t_3 = NULL;
      __pyx_t_4 = __Pyx_PyLong_From_int((__pyx_v_grpids[__pyx_v_n])); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2017, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_6 = 1;
      {
        PyObject *__pyx_callargs[3 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_3, __pyx_v_group, __pyx_v_name};
        __pyx_t_5 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2017, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_id, __pyx_t_4, __pyx_t_5, __pyx_callargs+3, 0) < (0)) __PYX_ERR(0, 2017, __pyx_L1_error)
        __pyx_t_1 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Group, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_5);
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2017, __pyx_L1_error)
        __Pyx_GOTREF((PyObject *)__pyx_t_1);
      }
      if (unlikely((PyDict_SetItem(__pyx_v_groups, __pyx_v_name, ((PyObject *)__pyx_t_1)) < 0))) __PYX_ERR(0, 2017, __pyx_L1_error)
      __Pyx_DECREF((PyObject *)__pyx_t_1); __pyx_t_1 = 0;
    }

    /* "netCDF4/_netCDF4.pyx":2018
 *             name = namstring.decode('utf-8')
 *             groups[name] = Group(group, name, id=grpids[n])
 *         free(grpids)             # <<<<<<<<<<<<<<
 *     return groups
 * 
*/
    free(__pyx_v_grpids);

    /* "netCDF4/_netCDF4.pyx":2007
 *     # create dictionary containing `Group` instances for groups in this group
 *     groups = dict()
 *     if numgrps > 0:             # <<<<<<<<<<<<<<
 *         grpids = <int *>malloc(sizeof(int) * numgrps)
 *         with nogil:
*/
  }

  /* "netCDF4/_netCDF4.pyx":2019
 *             groups[name] = Group(group, name, id=grpids[n])
 *         free(grpids)
 *     return groups             # <<<<<<<<<<<<<<
 * 
 * cdef _get_vars(group, bint auto_complex=False):
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_groups);
  __pyx_r = __pyx_v_groups;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":1994
 *     return dimensions
 * 
 * cdef _get_grps(group):             # <<<<<<<<<<<<<<
 *     # Private function to create `Group` instances for all the
 *     # groups in a `Group` or Dataset
*/

  /* 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("netCDF4._netCDF4._get_grps", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_groups);
  __Pyx_XDECREF(__pyx_v_name);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_7netCDF4_8_netCDF4_9_get_vars_2generator1(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "netCDF4/_netCDF4.pyx":2133
 * 
 *             # create new variable instance.
 *             dimensions = tuple(_find_dim(group, d) for d in dimensions)             # <<<<<<<<<<<<<<
 * 
 *             if auto_complex and <bint>pfnc_var_is_complex(_grpid, varid):
*/

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_get_vars_genexpr(PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_2_genexpr *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("genexpr", 0);
  __pyx_cur_scope = (struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_2_genexpr *)__pyx_tp_new_7netCDF4_8_netCDF4___pyx_scope_struct_2_genexpr(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_2_genexpr, __pyx_mstate_global->__pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_2_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(0, 2133, __pyx_L1_error)
  } else {
    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_outer_scope = (struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_1___pyx_f_7netCDF4_8_netCDF4__get_vars *) __pyx_self;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_outer_scope);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_outer_scope);
  __pyx_cur_scope->__pyx_genexpr_arg_0 = __pyx_genexpr_arg_0;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_genexpr_arg_0);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_genexpr_arg_0);
  {
    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_7netCDF4_8_netCDF4_9_get_vars_2generator1, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[1]), (PyObject *) __pyx_cur_scope, __pyx_mstate_global->__pyx_n_u_genexpr, __pyx_mstate_global->__pyx_n_u_get_vars_locals_genexpr, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4); if (unlikely(!gen)) __PYX_ERR(0, 2133, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("netCDF4._netCDF4._get_vars.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_7netCDF4_8_netCDF4_9_get_vars_2generator1(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_2_genexpr *__pyx_cur_scope = ((struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_2_genexpr *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  PyObject *(*__pyx_t_3)(PyObject *);
  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_RefNannyDeclarations
  __Pyx_RefNannySetupContext("genexpr", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    case 1: goto __pyx_L6_resume_from_yield;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(__pyx_sent_value != Py_None)) {
    if (unlikely(__pyx_sent_value)) PyErr_SetString(PyExc_TypeError, "can't send non-None value to a just-started generator");
    __PYX_ERR(0, 2133, __pyx_L1_error)
  }
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(0, 2133, __pyx_L1_error) }
  if (likely(PyList_CheckExact(__pyx_cur_scope->__pyx_genexpr_arg_0)) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_genexpr_arg_0)) {
    __pyx_t_1 = __pyx_cur_scope->__pyx_genexpr_arg_0; __Pyx_INCREF(__pyx_t_1);
    __pyx_t_2 = 0;
    __pyx_t_3 = NULL;
  } else {
    __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_cur_scope->__pyx_genexpr_arg_0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2133, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2133, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 2133, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) break;
        }
        __pyx_t_4 = __Pyx_PyList_GetItemRefFast(__pyx_t_1, __pyx_t_2, __Pyx_ReferenceSharing_OwnStrongReference);
        ++__pyx_t_2;
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 2133, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2));
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2);
        #endif
        ++__pyx_t_2;
      }
      if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2133, __pyx_L1_error)
    } else {
      __pyx_t_4 = __pyx_t_3(__pyx_t_1);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 2133, __pyx_L1_error)
          PyErr_Clear();
        }
        break;
      }
    }
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_d);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_d, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_5 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_find_dim); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2133, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_group)) { __Pyx_RaiseClosureNameError("group"); __PYX_ERR(0, 2133, __pyx_L1_error) }
    __pyx_t_7 = 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_7 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_cur_scope->__pyx_outer_scope->__pyx_v_group, __pyx_cur_scope->__pyx_v_d};
      __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_6, __pyx_callargs+__pyx_t_7, (3-__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_4)) __PYX_ERR(0, 2133, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
    }
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    __Pyx_XGIVEREF(__pyx_t_1);
    __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
    __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
    __pyx_cur_scope->__pyx_t_2 = __pyx_t_3;
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
    /* return from generator, yielding value */
    __pyx_generator->resume_label = 1;
    return __pyx_r;
    __pyx_L6_resume_from_yield:;
    __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
    __pyx_cur_scope->__pyx_t_0 = 0;
    __Pyx_XGOTREF(__pyx_t_1);
    __pyx_t_2 = __pyx_cur_scope->__pyx_t_1;
    __pyx_t_3 = __pyx_cur_scope->__pyx_t_2;
    if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 2133, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);

  /* 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_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  if (__Pyx_PyErr_Occurred()) {
    __Pyx_Generator_Replace_StopIteration(0);
    __Pyx_AddTraceback("genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  }
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  #if !CYTHON_USE_EXC_INFO_STACK
  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
  #endif
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":2021
 *     return groups
 * 
 * cdef _get_vars(group, bint auto_complex=False):             # <<<<<<<<<<<<<<
 *     # Private function to create `Variable` instances for all the
 *     # variables in a `Group` or Dataset
*/

static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group, struct __pyx_opt_args_7netCDF4_8_netCDF4__get_vars *__pyx_optional_args) {
  struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_1___pyx_f_7netCDF4_8_netCDF4__get_vars *__pyx_cur_scope;
  int __pyx_v_auto_complex = ((int)0);
  int __pyx_v_ierr;
  int __pyx_v_numvars;
  int __pyx_v_n;
  int __pyx_v_varid;
  int __pyx_v_classp;
  int __pyx_v_iendian;
  int __pyx_v__grpid;
  int *__pyx_v_varids;
  nc_type __pyx_v_xtype;
  char __pyx_v_namstring[(NC_MAX_NAME + 1)];
  char __pyx_v_namstring_cmp[(NC_MAX_NAME + 1)];
  nc_type __pyx_v_complex_nc_type;
  PyObject *__pyx_v_variables = NULL;
  PyObject *__pyx_v_name = NULL;
  PyObject *__pyx_v_endianness = NULL;
  PyObject *__pyx_v_datatype = NULL;
  PyObject *__pyx_v_msg = NULL;
  PyObject *__pyx_v_dimids = NULL;
  PyObject *__pyx_v_dimensions = NULL;
  PyObject *__pyx_v_dimid = NULL;
  PyObject *__pyx_v_grp = NULL;
  int __pyx_v_found;
  PyObject *__pyx_v_key = NULL;
  PyObject *__pyx_v_value = NULL;
  PyObject *__pyx_v_endian = NULL;
  PyObject *__pyx_gb_7netCDF4_8_netCDF4_9_get_vars_2generator1 = 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;
  size_t __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  int __pyx_t_9;
  int __pyx_t_10;
  Py_ssize_t __pyx_t_11;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  int __pyx_t_15;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17 = NULL;
  PyObject *__pyx_t_18 = NULL;
  PyObject *__pyx_t_19 = NULL;
  PyObject *__pyx_t_20 = NULL;
  struct __pyx_opt_args_7netCDF4_8_netCDF4__read_compound __pyx_t_21;
  PyObject *__pyx_t_22 = NULL;
  PyObject *__pyx_t_23 = NULL;
  PyObject *__pyx_t_24 = NULL;
  struct __pyx_opt_args_7netCDF4_8_netCDF4__read_vlen __pyx_t_25;
  struct __pyx_opt_args_7netCDF4_8_netCDF4__read_enum __pyx_t_26;
  PyObject *(*__pyx_t_27)(PyObject *);
  Py_ssize_t __pyx_t_28;
  Py_ssize_t __pyx_t_29;
  int __pyx_t_30;
  int __pyx_t_31;
  int __pyx_t_32;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_get_vars", 0);
  __pyx_cur_scope = (struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_1___pyx_f_7netCDF4_8_netCDF4__get_vars *)__pyx_tp_new_7netCDF4_8_netCDF4___pyx_scope_struct_1___pyx_f_7netCDF4_8_netCDF4__get_vars(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_1___pyx_f_7netCDF4_8_netCDF4__get_vars, __pyx_mstate_global->__pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_1___pyx_f_7netCDF4_8_netCDF4__get_vars *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(0, 2021, __pyx_L1_error)
  } else {
    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
  }
  if (__pyx_optional_args) {
    if (__pyx_optional_args->__pyx_n > 0) {
      __pyx_v_auto_complex = __pyx_optional_args->auto_complex;
    }
  }
  __pyx_cur_scope->__pyx_v_group = __pyx_v_group;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_group);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_group);

  /* "netCDF4/_netCDF4.pyx":2033
 * 
 *     # get number of variables in this Group.
 *     _grpid = group._grpid             # <<<<<<<<<<<<<<
 *     with nogil:
 *         ierr = nc_inq_nvars(_grpid, &numvars)
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_group, __pyx_mstate_global->__pyx_n_u_grpid); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2033, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyLong_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2033, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v__grpid = __pyx_t_2;

  /* "netCDF4/_netCDF4.pyx":2034
 *     # get number of variables in this Group.
 *     _grpid = group._grpid
 *     with nogil:             # <<<<<<<<<<<<<<
 *         ierr = nc_inq_nvars(_grpid, &numvars)
 *     _ensure_nc_success(ierr, err_cls=AttributeError)
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "netCDF4/_netCDF4.pyx":2035
 *     _grpid = group._grpid
 *     with nogil:
 *         ierr = nc_inq_nvars(_grpid, &numvars)             # <<<<<<<<<<<<<<
 *     _ensure_nc_success(ierr, err_cls=AttributeError)
 *     # create empty dictionary for variables.
*/
        __pyx_v_ierr = nc_inq_nvars(__pyx_v__grpid, (&__pyx_v_numvars));
      }

      /* "netCDF4/_netCDF4.pyx":2034
 *     # get number of variables in this Group.
 *     _grpid = group._grpid
 *     with nogil:             # <<<<<<<<<<<<<<
 *         ierr = nc_inq_nvars(_grpid, &numvars)
 *     _ensure_nc_success(ierr, err_cls=AttributeError)
*/
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "netCDF4/_netCDF4.pyx":2036
 *     with nogil:
 *         ierr = nc_inq_nvars(_grpid, &numvars)
 *     _ensure_nc_success(ierr, err_cls=AttributeError)             # <<<<<<<<<<<<<<
 *     # create empty dictionary for variables.
 *     variables = dict()
*/
  __pyx_t_3 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2036, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2036, __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 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_3, __pyx_t_5};
    __pyx_t_7 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2036, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_err_cls, ((PyObject *)(((PyTypeObject*)PyExc_AttributeError))), __pyx_t_7, __pyx_callargs+2, 0) < (0)) __PYX_ERR(0, 2036, __pyx_L1_error)
    __pyx_t_1 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_7);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2036, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":2038
 *     _ensure_nc_success(ierr, err_cls=AttributeError)
 *     # create empty dictionary for variables.
 *     variables = dict()             # <<<<<<<<<<<<<<
 *     if numvars > 0:
 *         # get variable ids.
*/
  __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2038, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_variables = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":2039
 *     # create empty dictionary for variables.
 *     variables = dict()
 *     if numvars > 0:             # <<<<<<<<<<<<<<
 *         # get variable ids.
 *         varids = <int *>malloc(sizeof(int) * numvars)
*/
  __pyx_t_8 = (__pyx_v_numvars > 0);
  if (__pyx_t_8) {

    /* "netCDF4/_netCDF4.pyx":2041
 *     if numvars > 0:
 *         # get variable ids.
 *         varids = <int *>malloc(sizeof(int) * numvars)             # <<<<<<<<<<<<<<
 *         if group.data_model == 'NETCDF4':
 *             with nogil:
*/
    __pyx_v_varids = ((int *)malloc(((sizeof(int)) * __pyx_v_numvars)));

    /* "netCDF4/_netCDF4.pyx":2042
 *         # get variable ids.
 *         varids = <int *>malloc(sizeof(int) * numvars)
 *         if group.data_model == 'NETCDF4':             # <<<<<<<<<<<<<<
 *             with nogil:
 *                 ierr = nc_inq_varids(_grpid, &numvars, varids)
*/
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_group, __pyx_mstate_global->__pyx_n_u_data_model); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2042, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_8 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_NETCDF4, Py_EQ)); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 2042, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (__pyx_t_8) {

      /* "netCDF4/_netCDF4.pyx":2043
 *         varids = <int *>malloc(sizeof(int) * numvars)
 *         if group.data_model == 'NETCDF4':
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 ierr = nc_inq_varids(_grpid, &numvars, varids)
 *             _ensure_nc_success(ierr)
*/
      {
          PyThreadState * _save;
          _save = PyEval_SaveThread();
          __Pyx_FastGIL_Remember();
          /*try:*/ {

            /* "netCDF4/_netCDF4.pyx":2044
 *         if group.data_model == 'NETCDF4':
 *             with nogil:
 *                 ierr = nc_inq_varids(_grpid, &numvars, varids)             # <<<<<<<<<<<<<<
 *             _ensure_nc_success(ierr)
 *         else:
*/
            __pyx_v_ierr = nc_inq_varids(__pyx_v__grpid, (&__pyx_v_numvars), __pyx_v_varids);
          }

          /* "netCDF4/_netCDF4.pyx":2043
 *         varids = <int *>malloc(sizeof(int) * numvars)
 *         if group.data_model == 'NETCDF4':
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 ierr = nc_inq_varids(_grpid, &numvars, varids)
 *             _ensure_nc_success(ierr)
*/
          /*finally:*/ {
            /*normal exit:*/{
              __Pyx_FastGIL_Forget();
              PyEval_RestoreThread(_save);
              goto __pyx_L10;
            }
            __pyx_L10:;
          }
      }

      /* "netCDF4/_netCDF4.pyx":2045
 *             with nogil:
 *                 ierr = nc_inq_varids(_grpid, &numvars, varids)
 *             _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 *         else:
 *             for n in range(numvars):
*/
      __pyx_t_4 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2045, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_5 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2045, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_7))) {
        __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_7);
        assert(__pyx_t_4);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_7, __pyx__function);
        __pyx_t_6 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_5};
        __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __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;
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2045, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
      }
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

      /* "netCDF4/_netCDF4.pyx":2042
 *         # get variable ids.
 *         varids = <int *>malloc(sizeof(int) * numvars)
 *         if group.data_model == 'NETCDF4':             # <<<<<<<<<<<<<<
 *             with nogil:
 *                 ierr = nc_inq_varids(_grpid, &numvars, varids)
*/
      goto __pyx_L7;
    }

    /* "netCDF4/_netCDF4.pyx":2047
 *             _ensure_nc_success(ierr)
 *         else:
 *             for n in range(numvars):             # <<<<<<<<<<<<<<
 *                 varids[n] = n
 *         # loop over variables.
*/
    /*else*/ {
      __pyx_t_2 = __pyx_v_numvars;
      __pyx_t_9 = __pyx_t_2;
      for (__pyx_t_10 = 0; __pyx_t_10 < __pyx_t_9; __pyx_t_10+=1) {
        __pyx_v_n = __pyx_t_10;

        /* "netCDF4/_netCDF4.pyx":2048
 *         else:
 *             for n in range(numvars):
 *                 varids[n] = n             # <<<<<<<<<<<<<<
 *         # loop over variables.
 *         for n in range(numvars):
*/
        (__pyx_v_varids[__pyx_v_n]) = __pyx_v_n;
      }
    }
    __pyx_L7:;

    /* "netCDF4/_netCDF4.pyx":2050
 *                 varids[n] = n
 *         # loop over variables.
 *         for n in range(numvars):             # <<<<<<<<<<<<<<
 *             varid = varids[n]
 *             # get variable name.
*/
    __pyx_t_2 = __pyx_v_numvars;
    __pyx_t_9 = __pyx_t_2;
    for (__pyx_t_10 = 0; __pyx_t_10 < __pyx_t_9; __pyx_t_10+=1) {
      __pyx_v_n = __pyx_t_10;

      /* "netCDF4/_netCDF4.pyx":2051
 *         # loop over variables.
 *         for n in range(numvars):
 *             varid = varids[n]             # <<<<<<<<<<<<<<
 *             # get variable name.
 *             with nogil:
*/
      __pyx_v_varid = (__pyx_v_varids[__pyx_v_n]);

      /* "netCDF4/_netCDF4.pyx":2053
 *             varid = varids[n]
 *             # get variable name.
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 ierr = nc_inq_varname(_grpid, varid, namstring)
 *             _ensure_nc_success(ierr)
*/
      {
          PyThreadState * _save;
          _save = PyEval_SaveThread();
          __Pyx_FastGIL_Remember();
          /*try:*/ {

            /* "netCDF4/_netCDF4.pyx":2054
 *             # get variable name.
 *             with nogil:
 *                 ierr = nc_inq_varname(_grpid, varid, namstring)             # <<<<<<<<<<<<<<
 *             _ensure_nc_success(ierr)
 *             name = namstring.decode('utf-8')
*/
            __pyx_v_ierr = nc_inq_varname(__pyx_v__grpid, __pyx_v_varid, __pyx_v_namstring);
          }

          /* "netCDF4/_netCDF4.pyx":2053
 *             varid = varids[n]
 *             # get variable name.
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 ierr = nc_inq_varname(_grpid, varid, namstring)
 *             _ensure_nc_success(ierr)
*/
          /*finally:*/ {
            /*normal exit:*/{
              __Pyx_FastGIL_Forget();
              PyEval_RestoreThread(_save);
              goto __pyx_L19;
            }
            __pyx_L19:;
          }
      }

      /* "netCDF4/_netCDF4.pyx":2055
 *             with nogil:
 *                 ierr = nc_inq_varname(_grpid, varid, namstring)
 *             _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 *             name = namstring.decode('utf-8')
 *             # get variable type.
*/
      __pyx_t_7 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2055, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_4 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2055, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_6 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_5))) {
        __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
        assert(__pyx_t_7);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
        __pyx_t_6 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_4};
        __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2055, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
      }
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

      /* "netCDF4/_netCDF4.pyx":2056
 *                 ierr = nc_inq_varname(_grpid, varid, namstring)
 *             _ensure_nc_success(ierr)
 *             name = namstring.decode('utf-8')             # <<<<<<<<<<<<<<
 *             # get variable type.
 *             with nogil:
*/
      __pyx_t_11 = __Pyx_ssize_strlen(__pyx_v_namstring); if (unlikely(__pyx_t_11 == ((Py_ssize_t)-1))) __PYX_ERR(0, 2056, __pyx_L1_error)
      __pyx_t_1 = __Pyx_decode_c_string(__pyx_v_namstring, 0, __pyx_t_11, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2056, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_1);
      __pyx_t_1 = 0;

      /* "netCDF4/_netCDF4.pyx":2058
 *             name = namstring.decode('utf-8')
 *             # get variable type.
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 ierr = nc_inq_vartype(_grpid, varid, &xtype)
 *             _ensure_nc_success(ierr)
*/
      {
          PyThreadState * _save;
          _save = PyEval_SaveThread();
          __Pyx_FastGIL_Remember();
          /*try:*/ {

            /* "netCDF4/_netCDF4.pyx":2059
 *             # get variable type.
 *             with nogil:
 *                 ierr = nc_inq_vartype(_grpid, varid, &xtype)             # <<<<<<<<<<<<<<
 *             _ensure_nc_success(ierr)
 *             # get endian-ness of variable.
*/
            __pyx_v_ierr = nc_inq_vartype(__pyx_v__grpid, __pyx_v_varid, (&__pyx_v_xtype));
          }

          /* "netCDF4/_netCDF4.pyx":2058
 *             name = namstring.decode('utf-8')
 *             # get variable type.
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 ierr = nc_inq_vartype(_grpid, varid, &xtype)
 *             _ensure_nc_success(ierr)
*/
          /*finally:*/ {
            /*normal exit:*/{
              __Pyx_FastGIL_Forget();
              PyEval_RestoreThread(_save);
              goto __pyx_L24;
            }
            __pyx_L24:;
          }
      }

      /* "netCDF4/_netCDF4.pyx":2060
 *             with nogil:
 *                 ierr = nc_inq_vartype(_grpid, varid, &xtype)
 *             _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 *             # get endian-ness of variable.
 *             endianness = None
*/
      __pyx_t_5 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2060, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_7 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2060, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __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[2] = {__pyx_t_5, __pyx_t_7};
        __pyx_t_1 = __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_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2060, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
      }
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

      /* "netCDF4/_netCDF4.pyx":2062
 *             _ensure_nc_success(ierr)
 *             # get endian-ness of variable.
 *             endianness = None             # <<<<<<<<<<<<<<
 *             with nogil:
 *                 ierr = nc_inq_var_endian(_grpid, varid, &iendian)
*/
      __Pyx_INCREF(Py_None);
      __Pyx_XDECREF_SET(__pyx_v_endianness, ((PyObject*)Py_None));

      /* "netCDF4/_netCDF4.pyx":2063
 *             # get endian-ness of variable.
 *             endianness = None
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 ierr = nc_inq_var_endian(_grpid, varid, &iendian)
 *             if ierr == NC_NOERR:
*/
      {
          PyThreadState * _save;
          _save = PyEval_SaveThread();
          __Pyx_FastGIL_Remember();
          /*try:*/ {

            /* "netCDF4/_netCDF4.pyx":2064
 *             endianness = None
 *             with nogil:
 *                 ierr = nc_inq_var_endian(_grpid, varid, &iendian)             # <<<<<<<<<<<<<<
 *             if ierr == NC_NOERR:
 *                 if iendian == NC_ENDIAN_LITTLE:
*/
            __pyx_v_ierr = nc_inq_var_endian(__pyx_v__grpid, __pyx_v_varid, (&__pyx_v_iendian));
          }

          /* "netCDF4/_netCDF4.pyx":2063
 *             # get endian-ness of variable.
 *             endianness = None
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 ierr = nc_inq_var_endian(_grpid, varid, &iendian)
 *             if ierr == NC_NOERR:
*/
          /*finally:*/ {
            /*normal exit:*/{
              __Pyx_FastGIL_Forget();
              PyEval_RestoreThread(_save);
              goto __pyx_L29;
            }
            __pyx_L29:;
          }
      }

      /* "netCDF4/_netCDF4.pyx":2065
 *             with nogil:
 *                 ierr = nc_inq_var_endian(_grpid, varid, &iendian)
 *             if ierr == NC_NOERR:             # <<<<<<<<<<<<<<
 *                 if iendian == NC_ENDIAN_LITTLE:
 *                     endianness = '<'
*/
      __pyx_t_8 = (__pyx_v_ierr == NC_NOERR);
      if (__pyx_t_8) {

        /* "netCDF4/_netCDF4.pyx":2066
 *                 ierr = nc_inq_var_endian(_grpid, varid, &iendian)
 *             if ierr == NC_NOERR:
 *                 if iendian == NC_ENDIAN_LITTLE:             # <<<<<<<<<<<<<<
 *                     endianness = '<'
 *                 elif iendian == NC_ENDIAN_BIG:
*/
        switch (__pyx_v_iendian) {
          case NC_ENDIAN_LITTLE:

          /* "netCDF4/_netCDF4.pyx":2067
 *             if ierr == NC_NOERR:
 *                 if iendian == NC_ENDIAN_LITTLE:
 *                     endianness = '<'             # <<<<<<<<<<<<<<
 *                 elif iendian == NC_ENDIAN_BIG:
 *                     endianness = '>'
*/
          __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u__5);
          __Pyx_DECREF_SET(__pyx_v_endianness, __pyx_mstate_global->__pyx_kp_u__5);

          /* "netCDF4/_netCDF4.pyx":2066
 *                 ierr = nc_inq_var_endian(_grpid, varid, &iendian)
 *             if ierr == NC_NOERR:
 *                 if iendian == NC_ENDIAN_LITTLE:             # <<<<<<<<<<<<<<
 *                     endianness = '<'
 *                 elif iendian == NC_ENDIAN_BIG:
*/
          break;
          case NC_ENDIAN_BIG:

          /* "netCDF4/_netCDF4.pyx":2069
 *                     endianness = '<'
 *                 elif iendian == NC_ENDIAN_BIG:
 *                     endianness = '>'             # <<<<<<<<<<<<<<
 *             # check to see if it is a supported user-defined type.
 *             try:
*/
          __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u__6);
          __Pyx_DECREF_SET(__pyx_v_endianness, __pyx_mstate_global->__pyx_kp_u__6);

          /* "netCDF4/_netCDF4.pyx":2068
 *                 if iendian == NC_ENDIAN_LITTLE:
 *                     endianness = '<'
 *                 elif iendian == NC_ENDIAN_BIG:             # <<<<<<<<<<<<<<
 *                     endianness = '>'
 *             # check to see if it is a supported user-defined type.
*/
          break;
          default: break;
        }

        /* "netCDF4/_netCDF4.pyx":2065
 *             with nogil:
 *                 ierr = nc_inq_var_endian(_grpid, varid, &iendian)
 *             if ierr == NC_NOERR:             # <<<<<<<<<<<<<<
 *                 if iendian == NC_ENDIAN_LITTLE:
 *                     endianness = '<'
*/
      }

      /* "netCDF4/_netCDF4.pyx":2071
 *                     endianness = '>'
 *             # check to see if it is a supported user-defined type.
 *             try:             # <<<<<<<<<<<<<<
 *                 datatype = _nctonptype[xtype]
 *                 if endianness is not None:
*/
      {
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        __Pyx_ExceptionSave(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14);
        __Pyx_XGOTREF(__pyx_t_12);
        __Pyx_XGOTREF(__pyx_t_13);
        __Pyx_XGOTREF(__pyx_t_14);
        /*try:*/ {

          /* "netCDF4/_netCDF4.pyx":2072
 *             # check to see if it is a supported user-defined type.
 *             try:
 *                 datatype = _nctonptype[xtype]             # <<<<<<<<<<<<<<
 *                 if endianness is not None:
 *                     datatype = endianness + datatype
*/
          __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_nctonptype); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2072, __pyx_L31_error)
          __Pyx_GOTREF(__pyx_t_1);
          __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_1, __pyx_v_xtype, nc_type, 1, __Pyx_PyLong_From_nc_type, 0, 1, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2072, __pyx_L31_error)
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_XDECREF_SET(__pyx_v_datatype, __pyx_t_4);
          __pyx_t_4 = 0;

          /* "netCDF4/_netCDF4.pyx":2073
 *             try:
 *                 datatype = _nctonptype[xtype]
 *                 if endianness is not None:             # <<<<<<<<<<<<<<
 *                     datatype = endianness + datatype
 *             except KeyError:
*/
          __pyx_t_8 = (__pyx_v_endianness != ((PyObject*)Py_None));
          if (__pyx_t_8) {

            /* "netCDF4/_netCDF4.pyx":2074
 *                 datatype = _nctonptype[xtype]
 *                 if endianness is not None:
 *                     datatype = endianness + datatype             # <<<<<<<<<<<<<<
 *             except KeyError:
 *                 if xtype == NC_STRING:
*/
            __pyx_t_4 = PyNumber_Add(__pyx_v_endianness, __pyx_v_datatype); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2074, __pyx_L31_error)
            __Pyx_GOTREF(__pyx_t_4);
            __Pyx_DECREF_SET(__pyx_v_datatype, __pyx_t_4);
            __pyx_t_4 = 0;

            /* "netCDF4/_netCDF4.pyx":2073
 *             try:
 *                 datatype = _nctonptype[xtype]
 *                 if endianness is not None:             # <<<<<<<<<<<<<<
 *                     datatype = endianness + datatype
 *             except KeyError:
*/
          }

          /* "netCDF4/_netCDF4.pyx":2071
 *                     endianness = '>'
 *             # check to see if it is a supported user-defined type.
 *             try:             # <<<<<<<<<<<<<<
 *                 datatype = _nctonptype[xtype]
 *                 if endianness is not None:
*/
        }
        __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
        __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
        __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
        goto __pyx_L38_try_end;
        __pyx_L31_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;
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;

        /* "netCDF4/_netCDF4.pyx":2075
 *                 if endianness is not None:
 *                     datatype = endianness + datatype
 *             except KeyError:             # <<<<<<<<<<<<<<
 *                 if xtype == NC_STRING:
 *                     datatype = str
*/
        __pyx_t_15 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_KeyError))));
        if (__pyx_t_15) {
          __Pyx_AddTraceback("netCDF4._netCDF4._get_vars", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_1, &__pyx_t_7) < 0) __PYX_ERR(0, 2075, __pyx_L33_except_error)
          __Pyx_XGOTREF(__pyx_t_4);
          __Pyx_XGOTREF(__pyx_t_1);
          __Pyx_XGOTREF(__pyx_t_7);

          /* "netCDF4/_netCDF4.pyx":2076
 *                     datatype = endianness + datatype
 *             except KeyError:
 *                 if xtype == NC_STRING:             # <<<<<<<<<<<<<<
 *                     datatype = str
 *                 else:
*/
          __pyx_t_8 = (__pyx_v_xtype == NC_STRING);
          if (__pyx_t_8) {

            /* "netCDF4/_netCDF4.pyx":2077
 *             except KeyError:
 *                 if xtype == NC_STRING:
 *                     datatype = str             # <<<<<<<<<<<<<<
 *                 else:
 *                     with nogil:
*/
            __Pyx_INCREF((PyObject *)(&PyUnicode_Type));
            __Pyx_XDECREF_SET(__pyx_v_datatype, ((PyObject *)(&PyUnicode_Type)));

            /* "netCDF4/_netCDF4.pyx":2076
 *                     datatype = endianness + datatype
 *             except KeyError:
 *                 if xtype == NC_STRING:             # <<<<<<<<<<<<<<
 *                     datatype = str
 *                 else:
*/
            goto __pyx_L42;
          }

          /* "netCDF4/_netCDF4.pyx":2079
 *                     datatype = str
 *                 else:
 *                     with nogil:             # <<<<<<<<<<<<<<
 *                         ierr = nc_inq_user_type(_grpid, xtype, namstring_cmp,
 *                                                 NULL, NULL, NULL, &classp)
*/
          /*else*/ {
            {
                PyThreadState * _save;
                _save = PyEval_SaveThread();
                __Pyx_FastGIL_Remember();
                /*try:*/ {

                  /* "netCDF4/_netCDF4.pyx":2080
 *                 else:
 *                     with nogil:
 *                         ierr = nc_inq_user_type(_grpid, xtype, namstring_cmp,             # <<<<<<<<<<<<<<
 *                                                 NULL, NULL, NULL, &classp)
 *                     _ensure_nc_success(ierr)
*/
                  __pyx_v_ierr = nc_inq_user_type(__pyx_v__grpid, __pyx_v_xtype, __pyx_v_namstring_cmp, NULL, NULL, NULL, (&__pyx_v_classp));
                }

                /* "netCDF4/_netCDF4.pyx":2079
 *                     datatype = str
 *                 else:
 *                     with nogil:             # <<<<<<<<<<<<<<
 *                         ierr = nc_inq_user_type(_grpid, xtype, namstring_cmp,
 *                                                 NULL, NULL, NULL, &classp)
*/
                /*finally:*/ {
                  /*normal exit:*/{
                    __Pyx_FastGIL_Forget();
                    PyEval_RestoreThread(_save);
                    goto __pyx_L47;
                  }
                  __pyx_L47:;
                }
            }

            /* "netCDF4/_netCDF4.pyx":2082
 *                         ierr = nc_inq_user_type(_grpid, xtype, namstring_cmp,
 *                                                 NULL, NULL, NULL, &classp)
 *                     _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 *                     if classp == NC_COMPOUND: # a compound type
 *                         # create CompoundType instance describing this compound type.
*/
            __pyx_t_3 = NULL;
            __Pyx_GetModuleGlobalName(__pyx_t_16, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 2082, __pyx_L33_except_error)
            __Pyx_GOTREF(__pyx_t_16);
            __pyx_t_17 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 2082, __pyx_L33_except_error)
            __Pyx_GOTREF(__pyx_t_17);
            __pyx_t_6 = 1;
            #if CYTHON_UNPACK_METHODS
            if (unlikely(PyMethod_Check(__pyx_t_16))) {
              __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_16);
              assert(__pyx_t_3);
              PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_16);
              __Pyx_INCREF(__pyx_t_3);
              __Pyx_INCREF(__pyx__function);
              __Pyx_DECREF_SET(__pyx_t_16, __pyx__function);
              __pyx_t_6 = 0;
            }
            #endif
            {
              PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_17};
              __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_16, __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_17); __pyx_t_17 = 0;
              __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
              if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2082, __pyx_L33_except_error)
              __Pyx_GOTREF(__pyx_t_5);
            }
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

            /* "netCDF4/_netCDF4.pyx":2083
 *                                                 NULL, NULL, NULL, &classp)
 *                     _ensure_nc_success(ierr)
 *                     if classp == NC_COMPOUND: # a compound type             # <<<<<<<<<<<<<<
 *                         # create CompoundType instance describing this compound type.
 *                         try:
*/
            switch (__pyx_v_classp) {
              case NC_COMPOUND:

              /* "netCDF4/_netCDF4.pyx":2085
 *                     if classp == NC_COMPOUND: # a compound type
 *                         # create CompoundType instance describing this compound type.
 *                         try:             # <<<<<<<<<<<<<<
 *                             datatype = _read_compound(group, xtype, endian=endianness)
 *                         except KeyError:
*/
              {
                __Pyx_PyThreadState_declare
                __Pyx_PyThreadState_assign
                __Pyx_ExceptionSave(&__pyx_t_18, &__pyx_t_19, &__pyx_t_20);
                __Pyx_XGOTREF(__pyx_t_18);
                __Pyx_XGOTREF(__pyx_t_19);
                __Pyx_XGOTREF(__pyx_t_20);
                /*try:*/ {

                  /* "netCDF4/_netCDF4.pyx":2086
 *                         # create CompoundType instance describing this compound type.
 *                         try:
 *                             datatype = _read_compound(group, xtype, endian=endianness)             # <<<<<<<<<<<<<<
 *                         except KeyError:
 *                             msg="WARNING: variable '%s' has unsupported compound datatype, skipping .." % name
*/
                  __pyx_t_5 = __pyx_cur_scope->__pyx_v_group;
                  __Pyx_INCREF(__pyx_t_5);
                  __pyx_t_21.__pyx_n = 1;
                  __pyx_t_21.endian = __pyx_v_endianness;
                  __pyx_t_16 = __pyx_f_7netCDF4_8_netCDF4__read_compound(__pyx_t_5, __pyx_v_xtype, &__pyx_t_21); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 2086, __pyx_L48_error)
                  __Pyx_GOTREF(__pyx_t_16);
                  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
                  __Pyx_XDECREF_SET(__pyx_v_datatype, __pyx_t_16);
                  __pyx_t_16 = 0;

                  /* "netCDF4/_netCDF4.pyx":2085
 *                     if classp == NC_COMPOUND: # a compound type
 *                         # create CompoundType instance describing this compound type.
 *                         try:             # <<<<<<<<<<<<<<
 *                             datatype = _read_compound(group, xtype, endian=endianness)
 *                         except KeyError:
*/
                }
                __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
                __Pyx_XDECREF(__pyx_t_19); __pyx_t_19 = 0;
                __Pyx_XDECREF(__pyx_t_20); __pyx_t_20 = 0;
                goto __pyx_L55_try_end;
                __pyx_L48_error:;
                __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
                __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
                __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
                __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

                /* "netCDF4/_netCDF4.pyx":2087
 *                         try:
 *                             datatype = _read_compound(group, xtype, endian=endianness)
 *                         except KeyError:             # <<<<<<<<<<<<<<
 *                             msg="WARNING: variable '%s' has unsupported compound datatype, skipping .." % name
 *                             warnings.warn(msg)
*/
                __pyx_t_15 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_KeyError))));
                if (__pyx_t_15) {
                  __Pyx_AddTraceback("netCDF4._netCDF4._get_vars", __pyx_clineno, __pyx_lineno, __pyx_filename);
                  if (__Pyx_GetException(&__pyx_t_16, &__pyx_t_5, &__pyx_t_17) < 0) __PYX_ERR(0, 2087, __pyx_L50_except_error)
                  __Pyx_XGOTREF(__pyx_t_16);
                  __Pyx_XGOTREF(__pyx_t_5);
                  __Pyx_XGOTREF(__pyx_t_17);

                  /* "netCDF4/_netCDF4.pyx":2088
 *                             datatype = _read_compound(group, xtype, endian=endianness)
 *                         except KeyError:
 *                             msg="WARNING: variable '%s' has unsupported compound datatype, skipping .." % name             # <<<<<<<<<<<<<<
 *                             warnings.warn(msg)
 *                             continue
*/
                  __pyx_t_3 = __Pyx_PyUnicode_FormatSafe(__pyx_mstate_global->__pyx_kp_u_WARNING_variable_s_has_unsupport, __pyx_v_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2088, __pyx_L50_except_error)
                  __Pyx_GOTREF(__pyx_t_3);
                  __Pyx_XDECREF_SET(__pyx_v_msg, ((PyObject*)__pyx_t_3));
                  __pyx_t_3 = 0;

                  /* "netCDF4/_netCDF4.pyx":2089
 *                         except KeyError:
 *                             msg="WARNING: variable '%s' has unsupported compound datatype, skipping .." % name
 *                             warnings.warn(msg)             # <<<<<<<<<<<<<<
 *                             continue
 *                     elif classp == NC_VLEN: # a compound type
*/
                  __pyx_t_22 = NULL;
                  __Pyx_GetModuleGlobalName(__pyx_t_23, __pyx_mstate_global->__pyx_n_u_warnings); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2089, __pyx_L50_except_error)
                  __Pyx_GOTREF(__pyx_t_23);
                  __pyx_t_24 = __Pyx_PyObject_GetAttrStr(__pyx_t_23, __pyx_mstate_global->__pyx_n_u_warn); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 2089, __pyx_L50_except_error)
                  __Pyx_GOTREF(__pyx_t_24);
                  __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
                  __pyx_t_6 = 1;
                  #if CYTHON_UNPACK_METHODS
                  if (unlikely(PyMethod_Check(__pyx_t_24))) {
                    __pyx_t_22 = PyMethod_GET_SELF(__pyx_t_24);
                    assert(__pyx_t_22);
                    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_24);
                    __Pyx_INCREF(__pyx_t_22);
                    __Pyx_INCREF(__pyx__function);
                    __Pyx_DECREF_SET(__pyx_t_24, __pyx__function);
                    __pyx_t_6 = 0;
                  }
                  #endif
                  {
                    PyObject *__pyx_callargs[2] = {__pyx_t_22, __pyx_v_msg};
                    __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_24, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
                    __Pyx_XDECREF(__pyx_t_22); __pyx_t_22 = 0;
                    __Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0;
                    if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2089, __pyx_L50_except_error)
                    __Pyx_GOTREF(__pyx_t_3);
                  }
                  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

                  /* "netCDF4/_netCDF4.pyx":2090
 *                             msg="WARNING: variable '%s' has unsupported compound datatype, skipping .." % name
 *                             warnings.warn(msg)
 *                             continue             # <<<<<<<<<<<<<<
 *                     elif classp == NC_VLEN: # a compound type
 *                         # create VLType instance describing this compound type.
*/
                  goto __pyx_L56_except_continue;
                  __pyx_L56_except_continue:;
                  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
                  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
                  __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
                  goto __pyx_L54_try_continue;
                }
                goto __pyx_L50_except_error;

                /* "netCDF4/_netCDF4.pyx":2085
 *                     if classp == NC_COMPOUND: # a compound type
 *                         # create CompoundType instance describing this compound type.
 *                         try:             # <<<<<<<<<<<<<<
 *                             datatype = _read_compound(group, xtype, endian=endianness)
 *                         except KeyError:
*/
                __pyx_L50_except_error:;
                __Pyx_XGIVEREF(__pyx_t_18);
                __Pyx_XGIVEREF(__pyx_t_19);
                __Pyx_XGIVEREF(__pyx_t_20);
                __Pyx_ExceptionReset(__pyx_t_18, __pyx_t_19, __pyx_t_20);
                goto __pyx_L33_except_error;
                __pyx_L54_try_continue:;
                __Pyx_XGIVEREF(__pyx_t_18);
                __Pyx_XGIVEREF(__pyx_t_19);
                __Pyx_XGIVEREF(__pyx_t_20);
                __Pyx_ExceptionReset(__pyx_t_18, __pyx_t_19, __pyx_t_20);
                goto __pyx_L40_except_continue;
                __pyx_L55_try_end:;
              }

              /* "netCDF4/_netCDF4.pyx":2083
 *                                                 NULL, NULL, NULL, &classp)
 *                     _ensure_nc_success(ierr)
 *                     if classp == NC_COMPOUND: # a compound type             # <<<<<<<<<<<<<<
 *                         # create CompoundType instance describing this compound type.
 *                         try:
*/
              break;
              case NC_VLEN:

              /* "netCDF4/_netCDF4.pyx":2093
 *                     elif classp == NC_VLEN: # a compound type
 *                         # create VLType instance describing this compound type.
 *                         try:             # <<<<<<<<<<<<<<
 *                             datatype = _read_vlen(group, xtype, endian=endianness)
 *                         except KeyError:
*/
              {
                __Pyx_PyThreadState_declare
                __Pyx_PyThreadState_assign
                __Pyx_ExceptionSave(&__pyx_t_20, &__pyx_t_19, &__pyx_t_18);
                __Pyx_XGOTREF(__pyx_t_20);
                __Pyx_XGOTREF(__pyx_t_19);
                __Pyx_XGOTREF(__pyx_t_18);
                /*try:*/ {

                  /* "netCDF4/_netCDF4.pyx":2094
 *                         # create VLType instance describing this compound type.
 *                         try:
 *                             datatype = _read_vlen(group, xtype, endian=endianness)             # <<<<<<<<<<<<<<
 *                         except KeyError:
 *                             msg="WARNING: variable '%s' has unsupported VLEN datatype, skipping .." % name
*/
                  __pyx_t_17 = __pyx_cur_scope->__pyx_v_group;
                  __Pyx_INCREF(__pyx_t_17);
                  __pyx_t_25.__pyx_n = 1;
                  __pyx_t_25.endian = __pyx_v_endianness;
                  __pyx_t_5 = __pyx_f_7netCDF4_8_netCDF4__read_vlen(__pyx_t_17, __pyx_v_xtype, &__pyx_t_25); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2094, __pyx_L58_error)
                  __Pyx_GOTREF(__pyx_t_5);
                  __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
                  __Pyx_XDECREF_SET(__pyx_v_datatype, __pyx_t_5);
                  __pyx_t_5 = 0;

                  /* "netCDF4/_netCDF4.pyx":2093
 *                     elif classp == NC_VLEN: # a compound type
 *                         # create VLType instance describing this compound type.
 *                         try:             # <<<<<<<<<<<<<<
 *                             datatype = _read_vlen(group, xtype, endian=endianness)
 *                         except KeyError:
*/
                }
                __Pyx_XDECREF(__pyx_t_20); __pyx_t_20 = 0;
                __Pyx_XDECREF(__pyx_t_19); __pyx_t_19 = 0;
                __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
                goto __pyx_L65_try_end;
                __pyx_L58_error:;
                __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
                __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
                __Pyx_XDECREF(__pyx_t_22); __pyx_t_22 = 0;
                __Pyx_XDECREF(__pyx_t_23); __pyx_t_23 = 0;
                __Pyx_XDECREF(__pyx_t_24); __pyx_t_24 = 0;
                __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
                __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

                /* "netCDF4/_netCDF4.pyx":2095
 *                         try:
 *                             datatype = _read_vlen(group, xtype, endian=endianness)
 *                         except KeyError:             # <<<<<<<<<<<<<<
 *                             msg="WARNING: variable '%s' has unsupported VLEN datatype, skipping .." % name
 *                             warnings.warn(msg)
*/
                __pyx_t_15 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_KeyError))));
                if (__pyx_t_15) {
                  __Pyx_AddTraceback("netCDF4._netCDF4._get_vars", __pyx_clineno, __pyx_lineno, __pyx_filename);
                  if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_17, &__pyx_t_16) < 0) __PYX_ERR(0, 2095, __pyx_L60_except_error)
                  __Pyx_XGOTREF(__pyx_t_5);
                  __Pyx_XGOTREF(__pyx_t_17);
                  __Pyx_XGOTREF(__pyx_t_16);

                  /* "netCDF4/_netCDF4.pyx":2096
 *                             datatype = _read_vlen(group, xtype, endian=endianness)
 *                         except KeyError:
 *                             msg="WARNING: variable '%s' has unsupported VLEN datatype, skipping .." % name             # <<<<<<<<<<<<<<
 *                             warnings.warn(msg)
 *                             continue
*/
                  __pyx_t_3 = __Pyx_PyUnicode_FormatSafe(__pyx_mstate_global->__pyx_kp_u_WARNING_variable_s_has_unsupport_2, __pyx_v_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2096, __pyx_L60_except_error)
                  __Pyx_GOTREF(__pyx_t_3);
                  __Pyx_XDECREF_SET(__pyx_v_msg, ((PyObject*)__pyx_t_3));
                  __pyx_t_3 = 0;

                  /* "netCDF4/_netCDF4.pyx":2097
 *                         except KeyError:
 *                             msg="WARNING: variable '%s' has unsupported VLEN datatype, skipping .." % name
 *                             warnings.warn(msg)             # <<<<<<<<<<<<<<
 *                             continue
 *                     elif classp == NC_ENUM:
*/
                  __pyx_t_24 = NULL;
                  __Pyx_GetModuleGlobalName(__pyx_t_22, __pyx_mstate_global->__pyx_n_u_warnings); if (unlikely(!__pyx_t_22)) __PYX_ERR(0, 2097, __pyx_L60_except_error)
                  __Pyx_GOTREF(__pyx_t_22);
                  __pyx_t_23 = __Pyx_PyObject_GetAttrStr(__pyx_t_22, __pyx_mstate_global->__pyx_n_u_warn); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2097, __pyx_L60_except_error)
                  __Pyx_GOTREF(__pyx_t_23);
                  __Pyx_DECREF(__pyx_t_22); __pyx_t_22 = 0;
                  __pyx_t_6 = 1;
                  #if CYTHON_UNPACK_METHODS
                  if (unlikely(PyMethod_Check(__pyx_t_23))) {
                    __pyx_t_24 = PyMethod_GET_SELF(__pyx_t_23);
                    assert(__pyx_t_24);
                    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_23);
                    __Pyx_INCREF(__pyx_t_24);
                    __Pyx_INCREF(__pyx__function);
                    __Pyx_DECREF_SET(__pyx_t_23, __pyx__function);
                    __pyx_t_6 = 0;
                  }
                  #endif
                  {
                    PyObject *__pyx_callargs[2] = {__pyx_t_24, __pyx_v_msg};
                    __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_23, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
                    __Pyx_XDECREF(__pyx_t_24); __pyx_t_24 = 0;
                    __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
                    if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2097, __pyx_L60_except_error)
                    __Pyx_GOTREF(__pyx_t_3);
                  }
                  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

                  /* "netCDF4/_netCDF4.pyx":2098
 *                             msg="WARNING: variable '%s' has unsupported VLEN datatype, skipping .." % name
 *                             warnings.warn(msg)
 *                             continue             # <<<<<<<<<<<<<<
 *                     elif classp == NC_ENUM:
 *                         # create EnumType instance describing this compound type.
*/
                  goto __pyx_L66_except_continue;
                  __pyx_L66_except_continue:;
                  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
                  __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
                  __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
                  goto __pyx_L64_try_continue;
                }
                goto __pyx_L60_except_error;

                /* "netCDF4/_netCDF4.pyx":2093
 *                     elif classp == NC_VLEN: # a compound type
 *                         # create VLType instance describing this compound type.
 *                         try:             # <<<<<<<<<<<<<<
 *                             datatype = _read_vlen(group, xtype, endian=endianness)
 *                         except KeyError:
*/
                __pyx_L60_except_error:;
                __Pyx_XGIVEREF(__pyx_t_20);
                __Pyx_XGIVEREF(__pyx_t_19);
                __Pyx_XGIVEREF(__pyx_t_18);
                __Pyx_ExceptionReset(__pyx_t_20, __pyx_t_19, __pyx_t_18);
                goto __pyx_L33_except_error;
                __pyx_L64_try_continue:;
                __Pyx_XGIVEREF(__pyx_t_20);
                __Pyx_XGIVEREF(__pyx_t_19);
                __Pyx_XGIVEREF(__pyx_t_18);
                __Pyx_ExceptionReset(__pyx_t_20, __pyx_t_19, __pyx_t_18);
                goto __pyx_L40_except_continue;
                __pyx_L65_try_end:;
              }

              /* "netCDF4/_netCDF4.pyx":2091
 *                             warnings.warn(msg)
 *                             continue
 *                     elif classp == NC_VLEN: # a compound type             # <<<<<<<<<<<<<<
 *                         # create VLType instance describing this compound type.
 *                         try:
*/
              break;
              case NC_ENUM:

              /* "netCDF4/_netCDF4.pyx":2101
 *                     elif classp == NC_ENUM:
 *                         # create EnumType instance describing this compound type.
 *                         try:             # <<<<<<<<<<<<<<
 *                             datatype = _read_enum(group, xtype, endian=endianness)
 *                         except KeyError:
*/
              {
                __Pyx_PyThreadState_declare
                __Pyx_PyThreadState_assign
                __Pyx_ExceptionSave(&__pyx_t_18, &__pyx_t_19, &__pyx_t_20);
                __Pyx_XGOTREF(__pyx_t_18);
                __Pyx_XGOTREF(__pyx_t_19);
                __Pyx_XGOTREF(__pyx_t_20);
                /*try:*/ {

                  /* "netCDF4/_netCDF4.pyx":2102
 *                         # create EnumType instance describing this compound type.
 *                         try:
 *                             datatype = _read_enum(group, xtype, endian=endianness)             # <<<<<<<<<<<<<<
 *                         except KeyError:
 *                             msg="WARNING: variable '%s' has unsupported Enum datatype, skipping .." % name
*/
                  __pyx_t_16 = __pyx_cur_scope->__pyx_v_group;
                  __Pyx_INCREF(__pyx_t_16);
                  __pyx_t_26.__pyx_n = 1;
                  __pyx_t_26.endian = __pyx_v_endianness;
                  __pyx_t_17 = __pyx_f_7netCDF4_8_netCDF4__read_enum(__pyx_t_16, __pyx_v_xtype, &__pyx_t_26); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 2102, __pyx_L68_error)
                  __Pyx_GOTREF(__pyx_t_17);
                  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
                  __Pyx_XDECREF_SET(__pyx_v_datatype, __pyx_t_17);
                  __pyx_t_17 = 0;

                  /* "netCDF4/_netCDF4.pyx":2101
 *                     elif classp == NC_ENUM:
 *                         # create EnumType instance describing this compound type.
 *                         try:             # <<<<<<<<<<<<<<
 *                             datatype = _read_enum(group, xtype, endian=endianness)
 *                         except KeyError:
*/
                }
                __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
                __Pyx_XDECREF(__pyx_t_19); __pyx_t_19 = 0;
                __Pyx_XDECREF(__pyx_t_20); __pyx_t_20 = 0;
                goto __pyx_L75_try_end;
                __pyx_L68_error:;
                __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
                __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
                __Pyx_XDECREF(__pyx_t_22); __pyx_t_22 = 0;
                __Pyx_XDECREF(__pyx_t_23); __pyx_t_23 = 0;
                __Pyx_XDECREF(__pyx_t_24); __pyx_t_24 = 0;
                __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
                __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

                /* "netCDF4/_netCDF4.pyx":2103
 *                         try:
 *                             datatype = _read_enum(group, xtype, endian=endianness)
 *                         except KeyError:             # <<<<<<<<<<<<<<
 *                             msg="WARNING: variable '%s' has unsupported Enum datatype, skipping .." % name
 *                             warnings.warn(msg)
*/
                __pyx_t_15 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_KeyError))));
                if (__pyx_t_15) {
                  __Pyx_AddTraceback("netCDF4._netCDF4._get_vars", __pyx_clineno, __pyx_lineno, __pyx_filename);
                  if (__Pyx_GetException(&__pyx_t_17, &__pyx_t_16, &__pyx_t_5) < 0) __PYX_ERR(0, 2103, __pyx_L70_except_error)
                  __Pyx_XGOTREF(__pyx_t_17);
                  __Pyx_XGOTREF(__pyx_t_16);
                  __Pyx_XGOTREF(__pyx_t_5);

                  /* "netCDF4/_netCDF4.pyx":2104
 *                             datatype = _read_enum(group, xtype, endian=endianness)
 *                         except KeyError:
 *                             msg="WARNING: variable '%s' has unsupported Enum datatype, skipping .." % name             # <<<<<<<<<<<<<<
 *                             warnings.warn(msg)
 *                             continue
*/
                  __pyx_t_3 = __Pyx_PyUnicode_FormatSafe(__pyx_mstate_global->__pyx_kp_u_WARNING_variable_s_has_unsupport_3, __pyx_v_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2104, __pyx_L70_except_error)
                  __Pyx_GOTREF(__pyx_t_3);
                  __Pyx_XDECREF_SET(__pyx_v_msg, ((PyObject*)__pyx_t_3));
                  __pyx_t_3 = 0;

                  /* "netCDF4/_netCDF4.pyx":2105
 *                         except KeyError:
 *                             msg="WARNING: variable '%s' has unsupported Enum datatype, skipping .." % name
 *                             warnings.warn(msg)             # <<<<<<<<<<<<<<
 *                             continue
 *                     else:
*/
                  __pyx_t_23 = NULL;
                  __Pyx_GetModuleGlobalName(__pyx_t_24, __pyx_mstate_global->__pyx_n_u_warnings); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 2105, __pyx_L70_except_error)
                  __Pyx_GOTREF(__pyx_t_24);
                  __pyx_t_22 = __Pyx_PyObject_GetAttrStr(__pyx_t_24, __pyx_mstate_global->__pyx_n_u_warn); if (unlikely(!__pyx_t_22)) __PYX_ERR(0, 2105, __pyx_L70_except_error)
                  __Pyx_GOTREF(__pyx_t_22);
                  __Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0;
                  __pyx_t_6 = 1;
                  #if CYTHON_UNPACK_METHODS
                  if (unlikely(PyMethod_Check(__pyx_t_22))) {
                    __pyx_t_23 = PyMethod_GET_SELF(__pyx_t_22);
                    assert(__pyx_t_23);
                    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_22);
                    __Pyx_INCREF(__pyx_t_23);
                    __Pyx_INCREF(__pyx__function);
                    __Pyx_DECREF_SET(__pyx_t_22, __pyx__function);
                    __pyx_t_6 = 0;
                  }
                  #endif
                  {
                    PyObject *__pyx_callargs[2] = {__pyx_t_23, __pyx_v_msg};
                    __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_22, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
                    __Pyx_XDECREF(__pyx_t_23); __pyx_t_23 = 0;
                    __Pyx_DECREF(__pyx_t_22); __pyx_t_22 = 0;
                    if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2105, __pyx_L70_except_error)
                    __Pyx_GOTREF(__pyx_t_3);
                  }
                  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

                  /* "netCDF4/_netCDF4.pyx":2106
 *                             msg="WARNING: variable '%s' has unsupported Enum datatype, skipping .." % name
 *                             warnings.warn(msg)
 *                             continue             # <<<<<<<<<<<<<<
 *                     else:
 *                         msg="WARNING: variable '%s' has unsupported datatype, skipping .." % name
*/
                  goto __pyx_L76_except_continue;
                  __pyx_L76_except_continue:;
                  __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
                  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
                  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
                  goto __pyx_L74_try_continue;
                }
                goto __pyx_L70_except_error;

                /* "netCDF4/_netCDF4.pyx":2101
 *                     elif classp == NC_ENUM:
 *                         # create EnumType instance describing this compound type.
 *                         try:             # <<<<<<<<<<<<<<
 *                             datatype = _read_enum(group, xtype, endian=endianness)
 *                         except KeyError:
*/
                __pyx_L70_except_error:;
                __Pyx_XGIVEREF(__pyx_t_18);
                __Pyx_XGIVEREF(__pyx_t_19);
                __Pyx_XGIVEREF(__pyx_t_20);
                __Pyx_ExceptionReset(__pyx_t_18, __pyx_t_19, __pyx_t_20);
                goto __pyx_L33_except_error;
                __pyx_L74_try_continue:;
                __Pyx_XGIVEREF(__pyx_t_18);
                __Pyx_XGIVEREF(__pyx_t_19);
                __Pyx_XGIVEREF(__pyx_t_20);
                __Pyx_ExceptionReset(__pyx_t_18, __pyx_t_19, __pyx_t_20);
                goto __pyx_L40_except_continue;
                __pyx_L75_try_end:;
              }

              /* "netCDF4/_netCDF4.pyx":2099
 *                             warnings.warn(msg)
 *                             continue
 *                     elif classp == NC_ENUM:             # <<<<<<<<<<<<<<
 *                         # create EnumType instance describing this compound type.
 *                         try:
*/
              break;
              default:

              /* "netCDF4/_netCDF4.pyx":2108
 *                             continue
 *                     else:
 *                         msg="WARNING: variable '%s' has unsupported datatype, skipping .." % name             # <<<<<<<<<<<<<<
 *                         warnings.warn(msg)
 *                         continue
*/
              __pyx_t_5 = __Pyx_PyUnicode_FormatSafe(__pyx_mstate_global->__pyx_kp_u_WARNING_variable_s_has_unsupport_4, __pyx_v_name); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2108, __pyx_L33_except_error)
              __Pyx_GOTREF(__pyx_t_5);
              __Pyx_XDECREF_SET(__pyx_v_msg, ((PyObject*)__pyx_t_5));
              __pyx_t_5 = 0;

              /* "netCDF4/_netCDF4.pyx":2109
 *                     else:
 *                         msg="WARNING: variable '%s' has unsupported datatype, skipping .." % name
 *                         warnings.warn(msg)             # <<<<<<<<<<<<<<
 *                         continue
 * 
*/
              __pyx_t_16 = NULL;
              __Pyx_GetModuleGlobalName(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_warnings); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 2109, __pyx_L33_except_error)
              __Pyx_GOTREF(__pyx_t_17);
              __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_warn); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2109, __pyx_L33_except_error)
              __Pyx_GOTREF(__pyx_t_3);
              __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
              __pyx_t_6 = 1;
              #if CYTHON_UNPACK_METHODS
              if (unlikely(PyMethod_Check(__pyx_t_3))) {
                __pyx_t_16 = PyMethod_GET_SELF(__pyx_t_3);
                assert(__pyx_t_16);
                PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
                __Pyx_INCREF(__pyx_t_16);
                __Pyx_INCREF(__pyx__function);
                __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
                __pyx_t_6 = 0;
              }
              #endif
              {
                PyObject *__pyx_callargs[2] = {__pyx_t_16, __pyx_v_msg};
                __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_3, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
                __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
                __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
                if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2109, __pyx_L33_except_error)
                __Pyx_GOTREF(__pyx_t_5);
              }
              __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

              /* "netCDF4/_netCDF4.pyx":2110
 *                         msg="WARNING: variable '%s' has unsupported datatype, skipping .." % name
 *                         warnings.warn(msg)
 *                         continue             # <<<<<<<<<<<<<<
 * 
 *             # get number of dimensions.
*/
              goto __pyx_L40_except_continue;
              break;
            }
          }
          __pyx_L42:;
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
          goto __pyx_L32_exception_handled;
          __pyx_L40_except_continue:;
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
          goto __pyx_L37_try_continue;
        }
        goto __pyx_L33_except_error;

        /* "netCDF4/_netCDF4.pyx":2071
 *                     endianness = '>'
 *             # check to see if it is a supported user-defined type.
 *             try:             # <<<<<<<<<<<<<<
 *                 datatype = _nctonptype[xtype]
 *                 if endianness is not None:
*/
        __pyx_L33_except_error:;
        __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);
        goto __pyx_L1_error;
        __pyx_L37_try_continue:;
        __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);
        goto __pyx_L13_continue;
        __pyx_L32_exception_handled:;
        __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_L38_try_end:;
      }

      /* "netCDF4/_netCDF4.pyx":2113
 * 
 *             # get number of dimensions.
 *             dimids = _inq_vardimid(_grpid, varid, auto_complex)             # <<<<<<<<<<<<<<
 * 
 *             # loop over dimensions, retrieve names.
*/
      __pyx_t_7 = __pyx_f_7netCDF4_8_netCDF4__inq_vardimid(__pyx_v__grpid, __pyx_v_varid, __pyx_v_auto_complex); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2113, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_XDECREF_SET(__pyx_v_dimids, __pyx_t_7);
      __pyx_t_7 = 0;

      /* "netCDF4/_netCDF4.pyx":2120
 *             # and so does it's parent - can a variable in grp1
 *             # use the 'foo' dimension from the parent?
 *             dimensions = []             # <<<<<<<<<<<<<<
 *             for dimid in dimids:
 *                 grp = group
*/
      __pyx_t_7 = PyList_New(0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2120, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_XDECREF_SET(__pyx_v_dimensions, __pyx_t_7);
      __pyx_t_7 = 0;

      /* "netCDF4/_netCDF4.pyx":2121
 *             # use the 'foo' dimension from the parent?
 *             dimensions = []
 *             for dimid in dimids:             # <<<<<<<<<<<<<<
 *                 grp = group
 *                 found = False
*/
      if (likely(PyList_CheckExact(__pyx_v_dimids)) || PyTuple_CheckExact(__pyx_v_dimids)) {
        __pyx_t_7 = __pyx_v_dimids; __Pyx_INCREF(__pyx_t_7);
        __pyx_t_11 = 0;
        __pyx_t_27 = NULL;
      } else {
        __pyx_t_11 = -1; __pyx_t_7 = PyObject_GetIter(__pyx_v_dimids); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2121, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_27 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_7); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 2121, __pyx_L1_error)
      }
      for (;;) {
        if (likely(!__pyx_t_27)) {
          if (likely(PyList_CheckExact(__pyx_t_7))) {
            {
              Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_7);
              #if !CYTHON_ASSUME_SAFE_SIZE
              if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 2121, __pyx_L1_error)
              #endif
              if (__pyx_t_11 >= __pyx_temp) break;
            }
            __pyx_t_1 = __Pyx_PyList_GetItemRefFast(__pyx_t_7, __pyx_t_11, __Pyx_ReferenceSharing_OwnStrongReference);
            ++__pyx_t_11;
          } else {
            {
              Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_7);
              #if !CYTHON_ASSUME_SAFE_SIZE
              if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 2121, __pyx_L1_error)
              #endif
              if (__pyx_t_11 >= __pyx_temp) break;
            }
            #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
            __pyx_t_1 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_7, __pyx_t_11));
            #else
            __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_7, __pyx_t_11);
            #endif
            ++__pyx_t_11;
          }
          if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2121, __pyx_L1_error)
        } else {
          __pyx_t_1 = __pyx_t_27(__pyx_t_7);
          if (unlikely(!__pyx_t_1)) {
            PyObject* exc_type = PyErr_Occurred();
            if (exc_type) {
              if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 2121, __pyx_L1_error)
              PyErr_Clear();
            }
            break;
          }
        }
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_XDECREF_SET(__pyx_v_dimid, __pyx_t_1);
        __pyx_t_1 = 0;

        /* "netCDF4/_netCDF4.pyx":2122
 *             dimensions = []
 *             for dimid in dimids:
 *                 grp = group             # <<<<<<<<<<<<<<
 *                 found = False
 *                 while not found:
*/
        __Pyx_INCREF(__pyx_cur_scope->__pyx_v_group);
        __Pyx_XDECREF_SET(__pyx_v_grp, __pyx_cur_scope->__pyx_v_group);

        /* "netCDF4/_netCDF4.pyx":2123
 *             for dimid in dimids:
 *                 grp = group
 *                 found = False             # <<<<<<<<<<<<<<
 *                 while not found:
 *                     for key, value in grp.dimensions.items():
*/
        __pyx_v_found = 0;

        /* "netCDF4/_netCDF4.pyx":2124
 *                 grp = group
 *                 found = False
 *                 while not found:             # <<<<<<<<<<<<<<
 *                     for key, value in grp.dimensions.items():
 *                         if value._dimid == dimid:
*/
        while (1) {
          __pyx_t_8 = (!__pyx_v_found);
          if (!__pyx_t_8) break;

          /* "netCDF4/_netCDF4.pyx":2125
 *                 found = False
 *                 while not found:
 *                     for key, value in grp.dimensions.items():             # <<<<<<<<<<<<<<
 *                         if value._dimid == dimid:
 *                             dimensions.append(key)
*/
          __pyx_t_28 = 0;
          __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_mstate_global->__pyx_n_u_dimensions); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2125, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_4);
          if (unlikely(__pyx_t_4 == Py_None)) {
            PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "items");
            __PYX_ERR(0, 2125, __pyx_L1_error)
          }
          __pyx_t_5 = __Pyx_dict_iterator(__pyx_t_4, 0, __pyx_mstate_global->__pyx_n_u_items, (&__pyx_t_29), (&__pyx_t_15)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2125, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_XDECREF(__pyx_t_1);
          __pyx_t_1 = __pyx_t_5;
          __pyx_t_5 = 0;
          while (1) {
            __pyx_t_30 = __Pyx_dict_iter_next(__pyx_t_1, __pyx_t_29, &__pyx_t_28, &__pyx_t_5, &__pyx_t_4, NULL, __pyx_t_15);
            if (unlikely(__pyx_t_30 == 0)) break;
            if (unlikely(__pyx_t_30 == -1)) __PYX_ERR(0, 2125, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            __Pyx_GOTREF(__pyx_t_4);
            __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_5);
            __pyx_t_5 = 0;
            __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_4);
            __pyx_t_4 = 0;

            /* "netCDF4/_netCDF4.pyx":2126
 *                 while not found:
 *                     for key, value in grp.dimensions.items():
 *                         if value._dimid == dimid:             # <<<<<<<<<<<<<<
 *                             dimensions.append(key)
 *                             found = True
*/
            __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_value, __pyx_mstate_global->__pyx_n_u_dimid); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2126, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_4);
            __pyx_t_5 = PyObject_RichCompare(__pyx_t_4, __pyx_v_dimid, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2126, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
            __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 2126, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
            if (__pyx_t_8) {

              /* "netCDF4/_netCDF4.pyx":2127
 *                     for key, value in grp.dimensions.items():
 *                         if value._dimid == dimid:
 *                             dimensions.append(key)             # <<<<<<<<<<<<<<
 *                             found = True
 *                             break
*/
              __pyx_t_31 = __Pyx_PyObject_Append(__pyx_v_dimensions, __pyx_v_key); if (unlikely(__pyx_t_31 == ((int)-1))) __PYX_ERR(0, 2127, __pyx_L1_error)

              /* "netCDF4/_netCDF4.pyx":2128
 *                         if value._dimid == dimid:
 *                             dimensions.append(key)
 *                             found = True             # <<<<<<<<<<<<<<
 *                             break
 *                     grp = grp.parent
*/
              __pyx_v_found = 1;

              /* "netCDF4/_netCDF4.pyx":2129
 *                             dimensions.append(key)
 *                             found = True
 *                             break             # <<<<<<<<<<<<<<
 *                     grp = grp.parent
 * 
*/
              goto __pyx_L83_break;

              /* "netCDF4/_netCDF4.pyx":2126
 *                 while not found:
 *                     for key, value in grp.dimensions.items():
 *                         if value._dimid == dimid:             # <<<<<<<<<<<<<<
 *                             dimensions.append(key)
 *                             found = True
*/
            }
          }
          __pyx_L83_break:;
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

          /* "netCDF4/_netCDF4.pyx":2130
 *                             found = True
 *                             break
 *                     grp = grp.parent             # <<<<<<<<<<<<<<
 * 
 *             # create new variable instance.
*/
          __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_mstate_global->__pyx_n_u_parent); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2130, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_DECREF_SET(__pyx_v_grp, __pyx_t_1);
          __pyx_t_1 = 0;
        }

        /* "netCDF4/_netCDF4.pyx":2121
 *             # use the 'foo' dimension from the parent?
 *             dimensions = []
 *             for dimid in dimids:             # <<<<<<<<<<<<<<
 *                 grp = group
 *                 found = False
*/
      }
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

      /* "netCDF4/_netCDF4.pyx":2133
 * 
 *             # create new variable instance.
 *             dimensions = tuple(_find_dim(group, d) for d in dimensions)             # <<<<<<<<<<<<<<
 * 
 *             if auto_complex and <bint>pfnc_var_is_complex(_grpid, varid):
*/
      __pyx_t_7 = __pyx_pf_7netCDF4_8_netCDF4_9_get_vars_genexpr(((PyObject*)__pyx_cur_scope), __pyx_v_dimensions); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2133, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_1 = __Pyx_PySequence_Tuple(__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2133, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF_SET(__pyx_v_dimensions, __pyx_t_1);
      __pyx_t_1 = 0;

      /* "netCDF4/_netCDF4.pyx":2135
 *             dimensions = tuple(_find_dim(group, d) for d in dimensions)
 * 
 *             if auto_complex and <bint>pfnc_var_is_complex(_grpid, varid):             # <<<<<<<<<<<<<<
 *                 with nogil:
 *                     ierr = pfnc_inq_var_complex_base_type(_grpid, varid, &complex_nc_type)
*/
      if (__pyx_v_auto_complex) {
      } else {
        __pyx_t_8 = __pyx_v_auto_complex;
        goto __pyx_L87_bool_binop_done;
      }
      __pyx_t_32 = pfnc_var_is_complex(__pyx_v__grpid, __pyx_v_varid);
      __pyx_t_8 = __pyx_t_32;
      __pyx_L87_bool_binop_done:;
      if (__pyx_t_8) {

        /* "netCDF4/_netCDF4.pyx":2136
 * 
 *             if auto_complex and <bint>pfnc_var_is_complex(_grpid, varid):
 *                 with nogil:             # <<<<<<<<<<<<<<
 *                     ierr = pfnc_inq_var_complex_base_type(_grpid, varid, &complex_nc_type)
 *                 _ensure_nc_success(ierr)
*/
        {
            PyThreadState * _save;
            _save = PyEval_SaveThread();
            __Pyx_FastGIL_Remember();
            /*try:*/ {

              /* "netCDF4/_netCDF4.pyx":2137
 *             if auto_complex and <bint>pfnc_var_is_complex(_grpid, varid):
 *                 with nogil:
 *                     ierr = pfnc_inq_var_complex_base_type(_grpid, varid, &complex_nc_type)             # <<<<<<<<<<<<<<
 *                 _ensure_nc_success(ierr)
 *                 # TODO: proper lookup
*/
              __pyx_v_ierr = pfnc_inq_var_complex_base_type(__pyx_v__grpid, __pyx_v_varid, (&__pyx_v_complex_nc_type));
            }

            /* "netCDF4/_netCDF4.pyx":2136
 * 
 *             if auto_complex and <bint>pfnc_var_is_complex(_grpid, varid):
 *                 with nogil:             # <<<<<<<<<<<<<<
 *                     ierr = pfnc_inq_var_complex_base_type(_grpid, varid, &complex_nc_type)
 *                 _ensure_nc_success(ierr)
*/
            /*finally:*/ {
              /*normal exit:*/{
                __Pyx_FastGIL_Forget();
                PyEval_RestoreThread(_save);
                goto __pyx_L93;
              }
              __pyx_L93:;
            }
        }

        /* "netCDF4/_netCDF4.pyx":2138
 *                 with nogil:
 *                     ierr = pfnc_inq_var_complex_base_type(_grpid, varid, &complex_nc_type)
 *                 _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 *                 # TODO: proper lookup
 *                 datatype = "c16" if complex_nc_type == NC_DOUBLE else "c8"
*/
        __pyx_t_7 = NULL;
        __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2138, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_4 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2138, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_6 = 1;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_5))) {
          __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
          assert(__pyx_t_7);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_7);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
          __pyx_t_6 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_4};
          __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2138, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
        }
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

        /* "netCDF4/_netCDF4.pyx":2140
 *                 _ensure_nc_success(ierr)
 *                 # TODO: proper lookup
 *                 datatype = "c16" if complex_nc_type == NC_DOUBLE else "c8"             # <<<<<<<<<<<<<<
 * 
 *             endian = _dtype_endian_lookup[endianness] or "native"
*/
        __pyx_t_8 = (__pyx_v_complex_nc_type == NC_DOUBLE);
        if (__pyx_t_8) {
          __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_c16);
          __pyx_t_1 = __pyx_mstate_global->__pyx_n_u_c16;
        } else {
          __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_c8);
          __pyx_t_1 = __pyx_mstate_global->__pyx_n_u_c8;
        }
        __Pyx_DECREF_SET(__pyx_v_datatype, __pyx_t_1);
        __pyx_t_1 = 0;

        /* "netCDF4/_netCDF4.pyx":2135
 *             dimensions = tuple(_find_dim(group, d) for d in dimensions)
 * 
 *             if auto_complex and <bint>pfnc_var_is_complex(_grpid, varid):             # <<<<<<<<<<<<<<
 *                 with nogil:
 *                     ierr = pfnc_inq_var_complex_base_type(_grpid, varid, &complex_nc_type)
*/
      }

      /* "netCDF4/_netCDF4.pyx":2142
 *                 datatype = "c16" if complex_nc_type == NC_DOUBLE else "c8"
 * 
 *             endian = _dtype_endian_lookup[endianness] or "native"             # <<<<<<<<<<<<<<
 *             variables[name] = Variable(group, name, datatype, dimensions, id=varid, endian=endian)
 * 
*/
      __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_dtype_endian_lookup); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2142, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_4 = __Pyx_PyObject_Dict_GetItem(__pyx_t_5, __pyx_v_endianness); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2142, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 2142, __pyx_L1_error)
      if (!__pyx_t_8) {
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      } else {
        __Pyx_INCREF(__pyx_t_4);
        __pyx_t_1 = __pyx_t_4;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        goto __pyx_L94_bool_binop_done;
      }
      __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_native);
      __pyx_t_1 = __pyx_mstate_global->__pyx_n_u_native;
      __pyx_L94_bool_binop_done:;
      __Pyx_XDECREF_SET(__pyx_v_endian, __pyx_t_1);
      __pyx_t_1 = 0;

      /* "netCDF4/_netCDF4.pyx":2143
 * 
 *             endian = _dtype_endian_lookup[endianness] or "native"
 *             variables[name] = Variable(group, name, datatype, dimensions, id=varid, endian=endian)             # <<<<<<<<<<<<<<
 * 
 *         free(varids) # free pointer holding variable ids.
*/
      __pyx_t_4 = NULL;
      __pyx_t_5 = __Pyx_PyLong_From_int(__pyx_v_varid); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2143, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = 1;
      {
        PyObject *__pyx_callargs[5 + ((CYTHON_VECTORCALL) ? 2 : 0)] = {__pyx_t_4, __pyx_cur_scope->__pyx_v_group, __pyx_v_name, __pyx_v_datatype, __pyx_v_dimensions};
        __pyx_t_7 = __Pyx_MakeVectorcallBuilderKwds(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2143, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_id, __pyx_t_5, __pyx_t_7, __pyx_callargs+5, 0) < (0)) __PYX_ERR(0, 2143, __pyx_L1_error)
        if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_endian, __pyx_v_endian, __pyx_t_7, __pyx_callargs+5, 1) < (0)) __PYX_ERR(0, 2143, __pyx_L1_error)
        __pyx_t_1 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Variable, __pyx_callargs+__pyx_t_6, (5-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_7);
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2143, __pyx_L1_error)
        __Pyx_GOTREF((PyObject *)__pyx_t_1);
      }
      if (unlikely((PyDict_SetItem(__pyx_v_variables, __pyx_v_name, ((PyObject *)__pyx_t_1)) < 0))) __PYX_ERR(0, 2143, __pyx_L1_error)
      __Pyx_DECREF((PyObject *)__pyx_t_1); __pyx_t_1 = 0;
      __pyx_L13_continue:;
    }

    /* "netCDF4/_netCDF4.pyx":2145
 *             variables[name] = Variable(group, name, datatype, dimensions, id=varid, endian=endian)
 * 
 *         free(varids) # free pointer holding variable ids.             # <<<<<<<<<<<<<<
 *     return variables
 * 
*/
    free(__pyx_v_varids);

    /* "netCDF4/_netCDF4.pyx":2039
 *     # create empty dictionary for variables.
 *     variables = dict()
 *     if numvars > 0:             # <<<<<<<<<<<<<<
 *         # get variable ids.
 *         varids = <int *>malloc(sizeof(int) * numvars)
*/
  }

  /* "netCDF4/_netCDF4.pyx":2146
 * 
 *         free(varids) # free pointer holding variable ids.
 *     return variables             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_variables);
  __pyx_r = __pyx_v_variables;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":2021
 *     return groups
 * 
 * cdef _get_vars(group, bint auto_complex=False):             # <<<<<<<<<<<<<<
 *     # Private function to create `Variable` instances for all the
 *     # variables in a `Group` or Dataset
*/

  /* 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_XDECREF(__pyx_t_16);
  __Pyx_XDECREF(__pyx_t_17);
  __Pyx_XDECREF(__pyx_t_22);
  __Pyx_XDECREF(__pyx_t_23);
  __Pyx_XDECREF(__pyx_t_24);
  __Pyx_AddTraceback("netCDF4._netCDF4._get_vars", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_variables);
  __Pyx_XDECREF(__pyx_v_name);
  __Pyx_XDECREF(__pyx_v_endianness);
  __Pyx_XDECREF(__pyx_v_datatype);
  __Pyx_XDECREF(__pyx_v_msg);
  __Pyx_XDECREF(__pyx_v_dimids);
  __Pyx_XDECREF(__pyx_v_dimensions);
  __Pyx_XDECREF(__pyx_v_dimid);
  __Pyx_XDECREF(__pyx_v_grp);
  __Pyx_XDECREF(__pyx_v_key);
  __Pyx_XDECREF(__pyx_v_value);
  __Pyx_XDECREF(__pyx_v_endian);
  __Pyx_XDECREF(__pyx_gb_7netCDF4_8_netCDF4_9_get_vars_2generator1);
  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":2149
 * 
 * 
 * def _ensure_nc_success(ierr, err_cls=RuntimeError, filename=None, extra_msg=None):             # <<<<<<<<<<<<<<
 *     # print netcdf error message, raise error.
 *     if ierr == NC_NOERR:
*/

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_39__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(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2149, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__Pyx_CyFunction_Defaults(struct __pyx_defaults, __pyx_self)->arg0);
  __Pyx_GIVEREF(__Pyx_CyFunction_Defaults(struct __pyx_defaults, __pyx_self)->arg0);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __Pyx_CyFunction_Defaults(struct __pyx_defaults, __pyx_self)->arg0) != (0)) __PYX_ERR(0, 2149, __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(0, 2149, __pyx_L1_error);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, Py_None) != (0)) __PYX_ERR(0, 2149, __pyx_L1_error);
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2149, __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(0, 2149, __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(0, 2149, __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("netCDF4._netCDF4.__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_7netCDF4_8_netCDF4_19_ensure_nc_success(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_7netCDF4_8_netCDF4_19_ensure_nc_success = {"_ensure_nc_success", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_19_ensure_nc_success, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_19_ensure_nc_success(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_ierr = 0;
  PyObject *__pyx_v_err_cls = 0;
  PyObject *__pyx_v_filename = 0;
  PyObject *__pyx_v_extra_msg = 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("_ensure_nc_success (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_ierr,&__pyx_mstate_global->__pyx_n_u_err_cls,&__pyx_mstate_global->__pyx_n_u_filename,&__pyx_mstate_global->__pyx_n_u_extra_msg,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(0, 2149, __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(0, 2149, __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(0, 2149, __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(0, 2149, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 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, "_ensure_nc_success", 0) < (0)) __PYX_ERR(0, 2149, __pyx_L3_error)
      if (!values[1]) values[1] = __Pyx_NewRef(__pyx_dynamic_args->arg0);
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)Py_None));
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("_ensure_nc_success", 0, 1, 4, i); __PYX_ERR(0, 2149, __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(0, 2149, __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(0, 2149, __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(0, 2149, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 2149, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[1]) values[1] = __Pyx_NewRef(__pyx_dynamic_args->arg0);
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)Py_None));
    }
    __pyx_v_ierr = values[0];
    __pyx_v_err_cls = values[1];
    __pyx_v_filename = values[2];
    __pyx_v_extra_msg = values[3];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_ensure_nc_success", 0, 1, 4, __pyx_nargs); __PYX_ERR(0, 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("netCDF4._netCDF4._ensure_nc_success", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_18_ensure_nc_success(__pyx_self, __pyx_v_ierr, __pyx_v_err_cls, __pyx_v_filename, __pyx_v_extra_msg);

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_18_ensure_nc_success(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_ierr, PyObject *__pyx_v_err_cls, PyObject *__pyx_v_filename, PyObject *__pyx_v_extra_msg) {
  PyObject *__pyx_v_err_str = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  char *__pyx_t_5;
  Py_ssize_t __pyx_t_6;
  size_t __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9[3];
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_ensure_nc_success", 0);
  __Pyx_INCREF(__pyx_v_filename);
  __Pyx_INCREF(__pyx_v_extra_msg);

  /* "netCDF4/_netCDF4.pyx":2151
 * def _ensure_nc_success(ierr, err_cls=RuntimeError, filename=None, extra_msg=None):
 *     # print netcdf error message, raise error.
 *     if ierr == NC_NOERR:             # <<<<<<<<<<<<<<
 *         return
 * 
*/
  __pyx_t_1 = __Pyx_PyLong_From___pyx_anon_enum(NC_NOERR); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2151, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_RichCompare(__pyx_v_ierr, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2151, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 2151, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__pyx_t_3) {

    /* "netCDF4/_netCDF4.pyx":2152
 *     # print netcdf error message, raise error.
 *     if ierr == NC_NOERR:
 *         return             # <<<<<<<<<<<<<<
 * 
 *     err_str = (<char *>nc_strerror(ierr)).decode('ascii')
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "netCDF4/_netCDF4.pyx":2151
 * def _ensure_nc_success(ierr, err_cls=RuntimeError, filename=None, extra_msg=None):
 *     # print netcdf error message, raise error.
 *     if ierr == NC_NOERR:             # <<<<<<<<<<<<<<
 *         return
 * 
*/
  }

  /* "netCDF4/_netCDF4.pyx":2154
 *         return
 * 
 *     err_str = (<char *>nc_strerror(ierr)).decode('ascii')             # <<<<<<<<<<<<<<
 *     if issubclass(err_cls, OSError):
 *         if isinstance(filename, bytes):
*/
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_v_ierr); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2154, __pyx_L1_error)
  __pyx_t_5 = ((char *)nc_strerror(__pyx_t_4));
  __pyx_t_6 = __Pyx_ssize_strlen(__pyx_t_5); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 2154, __pyx_L1_error)
  __pyx_t_2 = __Pyx_decode_c_string(__pyx_t_5, 0, __pyx_t_6, NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2154, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_v_err_str = __pyx_t_2;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":2155
 * 
 *     err_str = (<char *>nc_strerror(ierr)).decode('ascii')
 *     if issubclass(err_cls, OSError):             # <<<<<<<<<<<<<<
 *         if isinstance(filename, bytes):
 *             filename = filename.decode()
*/
  __pyx_t_3 = PyObject_IsSubclass(__pyx_v_err_cls, ((PyObject *)(((PyTypeObject*)PyExc_OSError)))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 2155, __pyx_L1_error)
  if (__pyx_t_3) {

    /* "netCDF4/_netCDF4.pyx":2156
 *     err_str = (<char *>nc_strerror(ierr)).decode('ascii')
 *     if issubclass(err_cls, OSError):
 *         if isinstance(filename, bytes):             # <<<<<<<<<<<<<<
 *             filename = filename.decode()
 *         raise err_cls(ierr, err_str, filename)
*/
    __pyx_t_3 = PyBytes_Check(__pyx_v_filename); 
    if (__pyx_t_3) {

      /* "netCDF4/_netCDF4.pyx":2157
 *     if issubclass(err_cls, OSError):
 *         if isinstance(filename, bytes):
 *             filename = filename.decode()             # <<<<<<<<<<<<<<
 *         raise err_cls(ierr, err_str, filename)
 * 
*/
      __pyx_t_1 = __pyx_v_filename;
      __Pyx_INCREF(__pyx_t_1);
      __pyx_t_7 = 0;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_1, NULL};
        __pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_decode, __pyx_callargs+__pyx_t_7, (1-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2157, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
      }
      __Pyx_DECREF_SET(__pyx_v_filename, __pyx_t_2);
      __pyx_t_2 = 0;

      /* "netCDF4/_netCDF4.pyx":2156
 *     err_str = (<char *>nc_strerror(ierr)).decode('ascii')
 *     if issubclass(err_cls, OSError):
 *         if isinstance(filename, bytes):             # <<<<<<<<<<<<<<
 *             filename = filename.decode()
 *         raise err_cls(ierr, err_str, filename)
*/
    }

    /* "netCDF4/_netCDF4.pyx":2158
 *         if isinstance(filename, bytes):
 *             filename = filename.decode()
 *         raise err_cls(ierr, err_str, filename)             # <<<<<<<<<<<<<<
 * 
 *     if extra_msg:
*/
    __pyx_t_1 = NULL;
    __Pyx_INCREF(__pyx_v_err_cls);
    __pyx_t_8 = __pyx_v_err_cls; 
    __pyx_t_7 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_8))) {
      __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_8);
      assert(__pyx_t_1);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_8);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_8, __pyx__function);
      __pyx_t_7 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_1, __pyx_v_ierr, __pyx_v_err_str, __pyx_v_filename};
      __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_8, __pyx_callargs+__pyx_t_7, (4-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2158, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(0, 2158, __pyx_L1_error)

    /* "netCDF4/_netCDF4.pyx":2155
 * 
 *     err_str = (<char *>nc_strerror(ierr)).decode('ascii')
 *     if issubclass(err_cls, OSError):             # <<<<<<<<<<<<<<
 *         if isinstance(filename, bytes):
 *             filename = filename.decode()
*/
  }

  /* "netCDF4/_netCDF4.pyx":2160
 *         raise err_cls(ierr, err_str, filename)
 * 
 *     if extra_msg:             # <<<<<<<<<<<<<<
 *         if isinstance(extra_msg, bytes):
 *             extra_msg = extra_msg.decode()
*/
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_extra_msg); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 2160, __pyx_L1_error)
  if (__pyx_t_3) {

    /* "netCDF4/_netCDF4.pyx":2161
 * 
 *     if extra_msg:
 *         if isinstance(extra_msg, bytes):             # <<<<<<<<<<<<<<
 *             extra_msg = extra_msg.decode()
 *         err_str = f"{err_str}: {extra_msg}"
*/
    __pyx_t_3 = PyBytes_Check(__pyx_v_extra_msg); 
    if (__pyx_t_3) {

      /* "netCDF4/_netCDF4.pyx":2162
 *     if extra_msg:
 *         if isinstance(extra_msg, bytes):
 *             extra_msg = extra_msg.decode()             # <<<<<<<<<<<<<<
 *         err_str = f"{err_str}: {extra_msg}"
 *     raise err_cls(err_str)
*/
      __pyx_t_8 = __pyx_v_extra_msg;
      __Pyx_INCREF(__pyx_t_8);
      __pyx_t_7 = 0;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_8, NULL};
        __pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_decode, __pyx_callargs+__pyx_t_7, (1-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2162, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
      }
      __Pyx_DECREF_SET(__pyx_v_extra_msg, __pyx_t_2);
      __pyx_t_2 = 0;

      /* "netCDF4/_netCDF4.pyx":2161
 * 
 *     if extra_msg:
 *         if isinstance(extra_msg, bytes):             # <<<<<<<<<<<<<<
 *             extra_msg = extra_msg.decode()
 *         err_str = f"{err_str}: {extra_msg}"
*/
    }

    /* "netCDF4/_netCDF4.pyx":2163
 *         if isinstance(extra_msg, bytes):
 *             extra_msg = extra_msg.decode()
 *         err_str = f"{err_str}: {extra_msg}"             # <<<<<<<<<<<<<<
 *     raise err_cls(err_str)
 * 
*/
    __pyx_t_2 = __Pyx_PyObject_FormatSimple(__pyx_v_err_str, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2163, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_8 = __Pyx_PyObject_FormatSimple(__pyx_v_extra_msg, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2163, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_9[0] = __pyx_t_2;
    __pyx_t_9[1] = __pyx_mstate_global->__pyx_kp_u__7;
    __pyx_t_9[2] = __pyx_t_8;
    __pyx_t_1 = __Pyx_PyUnicode_Join(__pyx_t_9, 3, __Pyx_PyUnicode_GET_LENGTH(__pyx_t_2) + 2 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_8), 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_8));
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2163, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF_SET(__pyx_v_err_str, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":2160
 *         raise err_cls(ierr, err_str, filename)
 * 
 *     if extra_msg:             # <<<<<<<<<<<<<<
 *         if isinstance(extra_msg, bytes):
 *             extra_msg = extra_msg.decode()
*/
  }

  /* "netCDF4/_netCDF4.pyx":2164
 *             extra_msg = extra_msg.decode()
 *         err_str = f"{err_str}: {extra_msg}"
 *     raise err_cls(err_str)             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_t_8 = NULL;
  __Pyx_INCREF(__pyx_v_err_cls);
  __pyx_t_2 = __pyx_v_err_cls; 
  __pyx_t_7 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_2);
    assert(__pyx_t_8);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_8);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_2, __pyx__function);
    __pyx_t_7 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_v_err_str};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_2, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2164, __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(0, 2164, __pyx_L1_error)

  /* "netCDF4/_netCDF4.pyx":2149
 * 
 * 
 * def _ensure_nc_success(ierr, err_cls=RuntimeError, filename=None, extra_msg=None):             # <<<<<<<<<<<<<<
 *     # print netcdf error message, raise error.
 *     if ierr == NC_NOERR:
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("netCDF4._netCDF4._ensure_nc_success", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_err_str);
  __Pyx_XDECREF(__pyx_v_filename);
  __Pyx_XDECREF(__pyx_v_extra_msg);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":2167
 * 
 * 
 * def dtype_is_complex(dtype):             # <<<<<<<<<<<<<<
 *     """Return True if dtype is a complex number"""
 *     return dtype in ("c8", "c16")
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_21dtype_is_complex(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_7netCDF4_8_netCDF4_20dtype_is_complex, "Return True if dtype is a complex number");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_21dtype_is_complex = {"dtype_is_complex", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_21dtype_is_complex, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_20dtype_is_complex};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_21dtype_is_complex(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_dtype = 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("dtype_is_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_dtype,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 2167, __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(0, 2167, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "dtype_is_complex", 0) < (0)) __PYX_ERR(0, 2167, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("dtype_is_complex", 1, 1, 1, i); __PYX_ERR(0, 2167, __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(0, 2167, __pyx_L3_error)
    }
    __pyx_v_dtype = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("dtype_is_complex", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 2167, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4.dtype_is_complex", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_20dtype_is_complex(__pyx_self, __pyx_v_dtype);

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_20dtype_is_complex(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_dtype) {
  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("dtype_is_complex", 0);

  /* "netCDF4/_netCDF4.pyx":2169
 * def dtype_is_complex(dtype):
 *     """Return True if dtype is a complex number"""
 *     return dtype in ("c8", "c16")             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_dtype);
  __pyx_t_1 = __pyx_v_dtype;
  __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_c8, Py_EQ)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 2169, __pyx_L1_error)
  if (!__pyx_t_3) {
  } else {
    __pyx_t_2 = __pyx_t_3;
    goto __pyx_L3_bool_binop_done;
  }
  __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_c16, Py_EQ)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 2169, __pyx_L1_error)
  __pyx_t_2 = __pyx_t_3;
  __pyx_L3_bool_binop_done:;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2169, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":2167
 * 
 * 
 * def dtype_is_complex(dtype):             # <<<<<<<<<<<<<<
 *     """Return True if dtype is a complex number"""
 *     return dtype in ("c8", "c16")
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("netCDF4._netCDF4.dtype_is_complex", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":2172
 * 
 * 
 * cdef int _inq_varndims(int ncid, int varid, bint auto_complex):             # <<<<<<<<<<<<<<
 *     """Wrapper around `nc_inq_varndims`/`pfnc_inq_varndims` for complex numbers"""
 * 
*/

static int __pyx_f_7netCDF4_8_netCDF4__inq_varndims(int __pyx_v_ncid, int __pyx_v_varid, int __pyx_v_auto_complex) {
  int __pyx_v_ierr;
  int __pyx_v_ndims;
  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;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_inq_varndims", 0);

  /* "netCDF4/_netCDF4.pyx":2175
 *     """Wrapper around `nc_inq_varndims`/`pfnc_inq_varndims` for complex numbers"""
 * 
 *     cdef int ierr = NC_NOERR             # <<<<<<<<<<<<<<
 *     cdef int ndims
 * 
*/
  __pyx_v_ierr = NC_NOERR;

  /* "netCDF4/_netCDF4.pyx":2178
 *     cdef int ndims
 * 
 *     if auto_complex:             # <<<<<<<<<<<<<<
 *         with nogil:
 *             ierr = pfnc_inq_varndims(ncid, varid, &ndims)
*/
  if (__pyx_v_auto_complex) {

    /* "netCDF4/_netCDF4.pyx":2179
 * 
 *     if auto_complex:
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = pfnc_inq_varndims(ncid, varid, &ndims)
 *     else:
*/
    {
        PyThreadState * _save;
        _save = PyEval_SaveThread();
        __Pyx_FastGIL_Remember();
        /*try:*/ {

          /* "netCDF4/_netCDF4.pyx":2180
 *     if auto_complex:
 *         with nogil:
 *             ierr = pfnc_inq_varndims(ncid, varid, &ndims)             # <<<<<<<<<<<<<<
 *     else:
 *         with nogil:
*/
          __pyx_v_ierr = pfnc_inq_varndims(__pyx_v_ncid, __pyx_v_varid, (&__pyx_v_ndims));
        }

        /* "netCDF4/_netCDF4.pyx":2179
 * 
 *     if auto_complex:
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = pfnc_inq_varndims(ncid, varid, &ndims)
 *     else:
*/
        /*finally:*/ {
          /*normal exit:*/{
            __Pyx_FastGIL_Forget();
            PyEval_RestoreThread(_save);
            goto __pyx_L6;
          }
          __pyx_L6:;
        }
    }

    /* "netCDF4/_netCDF4.pyx":2178
 *     cdef int ndims
 * 
 *     if auto_complex:             # <<<<<<<<<<<<<<
 *         with nogil:
 *             ierr = pfnc_inq_varndims(ncid, varid, &ndims)
*/
    goto __pyx_L3;
  }

  /* "netCDF4/_netCDF4.pyx":2182
 *             ierr = pfnc_inq_varndims(ncid, varid, &ndims)
 *     else:
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_inq_varndims(ncid, varid, &ndims)
 * 
*/
  /*else*/ {
    {
        PyThreadState * _save;
        _save = PyEval_SaveThread();
        __Pyx_FastGIL_Remember();
        /*try:*/ {

          /* "netCDF4/_netCDF4.pyx":2183
 *     else:
 *         with nogil:
 *             ierr = nc_inq_varndims(ncid, varid, &ndims)             # <<<<<<<<<<<<<<
 * 
 *     _ensure_nc_success(ierr)
*/
          __pyx_v_ierr = nc_inq_varndims(__pyx_v_ncid, __pyx_v_varid, (&__pyx_v_ndims));
        }

        /* "netCDF4/_netCDF4.pyx":2182
 *             ierr = pfnc_inq_varndims(ncid, varid, &ndims)
 *     else:
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_inq_varndims(ncid, varid, &ndims)
 * 
*/
        /*finally:*/ {
          /*normal exit:*/{
            __Pyx_FastGIL_Forget();
            PyEval_RestoreThread(_save);
            goto __pyx_L9;
          }
          __pyx_L9:;
        }
    }
  }
  __pyx_L3:;

  /* "netCDF4/_netCDF4.pyx":2185
 *             ierr = nc_inq_varndims(ncid, varid, &ndims)
 * 
 *     _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 *     return ndims
 * 
*/
  __pyx_t_2 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2185, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2185, __pyx_L1_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[2] = {__pyx_t_2, __pyx_t_4};
    __pyx_t_1 = __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_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(0, 2185, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":2186
 * 
 *     _ensure_nc_success(ierr)
 *     return ndims             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_r = __pyx_v_ndims;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":2172
 * 
 * 
 * cdef int _inq_varndims(int ncid, int varid, bint auto_complex):             # <<<<<<<<<<<<<<
 *     """Wrapper around `nc_inq_varndims`/`pfnc_inq_varndims` for complex numbers"""
 * 
*/

  /* 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("netCDF4._netCDF4._inq_varndims", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":2189
 * 
 * 
 * cdef _inq_vardimid(int ncid, int varid, bint auto_complex):             # <<<<<<<<<<<<<<
 *     """Wrapper around `nc_inq_vardimid`/`pfnc_inq_vardimid` for complex numbers"""
 * 
*/

static PyObject *__pyx_f_7netCDF4_8_netCDF4__inq_vardimid(int __pyx_v_ncid, int __pyx_v_varid, int __pyx_v_auto_complex) {
  int __pyx_v_ierr;
  int __pyx_v_ndims;
  int *__pyx_v_dimids;
  PyObject *__pyx_v_result = NULL;
  int __pyx_8genexpr6__pyx_v_n;
  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_t_7;
  int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_inq_vardimid", 0);

  /* "netCDF4/_netCDF4.pyx":2192
 *     """Wrapper around `nc_inq_vardimid`/`pfnc_inq_vardimid` for complex numbers"""
 * 
 *     cdef int ierr = NC_NOERR             # <<<<<<<<<<<<<<
 *     cdef int ndims = _inq_varndims(ncid, varid, auto_complex)
 *     cdef int* dimids = <int*> malloc(sizeof(int) * ndims)
*/
  __pyx_v_ierr = NC_NOERR;

  /* "netCDF4/_netCDF4.pyx":2193
 * 
 *     cdef int ierr = NC_NOERR
 *     cdef int ndims = _inq_varndims(ncid, varid, auto_complex)             # <<<<<<<<<<<<<<
 *     cdef int* dimids = <int*> malloc(sizeof(int) * ndims)
 * 
*/
  __pyx_t_1 = __pyx_f_7netCDF4_8_netCDF4__inq_varndims(__pyx_v_ncid, __pyx_v_varid, __pyx_v_auto_complex); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2193, __pyx_L1_error)
  __pyx_v_ndims = __pyx_t_1;

  /* "netCDF4/_netCDF4.pyx":2194
 *     cdef int ierr = NC_NOERR
 *     cdef int ndims = _inq_varndims(ncid, varid, auto_complex)
 *     cdef int* dimids = <int*> malloc(sizeof(int) * ndims)             # <<<<<<<<<<<<<<
 * 
 *     if auto_complex:
*/
  __pyx_v_dimids = ((int *)malloc(((sizeof(int)) * __pyx_v_ndims)));

  /* "netCDF4/_netCDF4.pyx":2196
 *     cdef int* dimids = <int*> malloc(sizeof(int) * ndims)
 * 
 *     if auto_complex:             # <<<<<<<<<<<<<<
 *         with nogil:
 *             ierr = pfnc_inq_vardimid(ncid, varid, dimids)
*/
  if (__pyx_v_auto_complex) {

    /* "netCDF4/_netCDF4.pyx":2197
 * 
 *     if auto_complex:
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = pfnc_inq_vardimid(ncid, varid, dimids)
 *     else:
*/
    {
        PyThreadState * _save;
        _save = PyEval_SaveThread();
        __Pyx_FastGIL_Remember();
        /*try:*/ {

          /* "netCDF4/_netCDF4.pyx":2198
 *     if auto_complex:
 *         with nogil:
 *             ierr = pfnc_inq_vardimid(ncid, varid, dimids)             # <<<<<<<<<<<<<<
 *     else:
 *         with nogil:
*/
          __pyx_v_ierr = pfnc_inq_vardimid(__pyx_v_ncid, __pyx_v_varid, __pyx_v_dimids);
        }

        /* "netCDF4/_netCDF4.pyx":2197
 * 
 *     if auto_complex:
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = pfnc_inq_vardimid(ncid, varid, dimids)
 *     else:
*/
        /*finally:*/ {
          /*normal exit:*/{
            __Pyx_FastGIL_Forget();
            PyEval_RestoreThread(_save);
            goto __pyx_L6;
          }
          __pyx_L6:;
        }
    }

    /* "netCDF4/_netCDF4.pyx":2196
 *     cdef int* dimids = <int*> malloc(sizeof(int) * ndims)
 * 
 *     if auto_complex:             # <<<<<<<<<<<<<<
 *         with nogil:
 *             ierr = pfnc_inq_vardimid(ncid, varid, dimids)
*/
    goto __pyx_L3;
  }

  /* "netCDF4/_netCDF4.pyx":2200
 *             ierr = pfnc_inq_vardimid(ncid, varid, dimids)
 *     else:
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_inq_vardimid(ncid, varid, dimids)
 * 
*/
  /*else*/ {
    {
        PyThreadState * _save;
        _save = PyEval_SaveThread();
        __Pyx_FastGIL_Remember();
        /*try:*/ {

          /* "netCDF4/_netCDF4.pyx":2201
 *     else:
 *         with nogil:
 *             ierr = nc_inq_vardimid(ncid, varid, dimids)             # <<<<<<<<<<<<<<
 * 
 *     _ensure_nc_success(ierr)
*/
          __pyx_v_ierr = nc_inq_vardimid(__pyx_v_ncid, __pyx_v_varid, __pyx_v_dimids);
        }

        /* "netCDF4/_netCDF4.pyx":2200
 *             ierr = pfnc_inq_vardimid(ncid, varid, dimids)
 *     else:
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_inq_vardimid(ncid, varid, dimids)
 * 
*/
        /*finally:*/ {
          /*normal exit:*/{
            __Pyx_FastGIL_Forget();
            PyEval_RestoreThread(_save);
            goto __pyx_L9;
          }
          __pyx_L9:;
        }
    }
  }
  __pyx_L3:;

  /* "netCDF4/_netCDF4.pyx":2203
 *             ierr = nc_inq_vardimid(ncid, varid, dimids)
 * 
 *     _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 * 
 *     result = [dimids[n] for n in range(ndims)]
*/
  __pyx_t_3 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2203, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2203, __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(0, 2203, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":2205
 *     _ensure_nc_success(ierr)
 * 
 *     result = [dimids[n] for n in range(ndims)]             # <<<<<<<<<<<<<<
 *     free(dimids)
 *     return result
*/
  { /* enter inner scope */
    __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2205, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = __pyx_v_ndims;
    __pyx_t_7 = __pyx_t_1;
    for (__pyx_t_8 = 0; __pyx_t_8 < __pyx_t_7; __pyx_t_8+=1) {
      __pyx_8genexpr6__pyx_v_n = __pyx_t_8;
      __pyx_t_4 = __Pyx_PyLong_From_int((__pyx_v_dimids[__pyx_8genexpr6__pyx_v_n])); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2205, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_4))) __PYX_ERR(0, 2205, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
  } /* exit inner scope */
  __pyx_v_result = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":2206
 * 
 *     result = [dimids[n] for n in range(ndims)]
 *     free(dimids)             # <<<<<<<<<<<<<<
 *     return result
 * 
*/
  free(__pyx_v_dimids);

  /* "netCDF4/_netCDF4.pyx":2207
 *     result = [dimids[n] for n in range(ndims)]
 *     free(dimids)
 *     return result             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_result);
  __pyx_r = __pyx_v_result;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":2189
 * 
 * 
 * cdef _inq_vardimid(int ncid, int varid, bint auto_complex):             # <<<<<<<<<<<<<<
 *     """Wrapper around `nc_inq_vardimid`/`pfnc_inq_vardimid` for complex numbers"""
 * 
*/

  /* 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("netCDF4._netCDF4._inq_vardimid", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":2300
 *     keepweakref, _ncstring_attrs__, auto_complex
 * 
 *     def __init__(self, filename, mode='r', clobber=True, format='NETCDF4',             # <<<<<<<<<<<<<<
 *                      diskless=False, persist=False, keepweakref=False,
 *                      memory=None, encoding=None, parallel=False,
*/

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
PyDoc_STRVAR(__pyx_doc_7netCDF4_8_netCDF4_7Dataset___init__, "\n        **`__init__(self, filename, mode=\"r\", clobber=True, diskless=False,\n        persist=False, keepweakref=False, memory=None, encoding=None,\n        parallel=False, comm=None, info=None, format='NETCDF4')`**\n\n        `Dataset` constructor.\n\n        **`filename`**: Name of netCDF file to hold dataset. Can also\n        be a python 3 pathlib instance or the URL of an OpenDAP dataset.  When memory is\n        set this is just used to set the `filepath()`.\n\n        **`mode`**: access mode. `r` means read-only; no data can be\n        modified. `w` means write; a new file is created, an existing file with\n        the same name is deleted. `x` means write, but fail if an existing\n        file with the same name already exists. `a` and `r+` mean append;\n        an existing file is opened for reading and writing, if\n        file does not exist already, one is created.\n        Appending `s` to modes `r`, `w`, `r+` or `a` will enable unbuffered shared\n        access to `NETCDF3_CLASSIC`, `NETCDF3_64BIT_OFFSET` or\n        `NETCDF3_64BIT_DATA` formatted files.\n        Unbuffered access may be useful even if you don't need shared\n        access, since it may be faster for programs that don't access data\n        sequentially. This option is ignored for `NETCDF4` and `NETCDF4_CLASSIC`\n        formatted files.\n\n        **`clobber`**: if `True` (default), opening a file with `mode='w'`\n        will clobber an existing file with the same name.  if `False`, an\n        exception will be raised if a file with the same name already exists.\n        mode=`x` is identical to mode=`w` with clobber=False.\n\n        **`format`**: underlying file format (one of `'NETCDF4',\n        'NETCDF4_CLASSIC', 'NETCDF3_CLASSIC'`, `'NETCDF3_64BIT_OFFSET'` or\n        `'NETCDF3_64BIT_DATA'`.\n        Only relevant if `mode = 'w'` (if `mode = 'r','a'` or `'r+'` the file format\n        is automatically detected). Default `'NETCDF4'`, which means the data is\n        stored ""in an HDF5 file, using netCDF 4 API features.  Setting\n        `format='NETCDF4_CLASSIC'` will create an HDF5 file, using only netCDF 3\n        compatible API features. netCDF 3 clients must be recompiled and linked\n        against the netCDF 4 library to read files in `NETCDF4_CLASSIC` format.\n        `'NETCDF3_CLASSIC'` is the classic netCDF 3 file format that does not\n        handle 2+ Gb files. `'NETCDF3_64BIT_OFFSET'` is the 64-bit offset\n        version of the netCDF 3 file format, which fully supports 2+ GB files, but\n        is only compatible with clients linked against netCDF version 3.6.0 or\n        later. `'NETCDF3_64BIT_DATA'` is the 64-bit data version of the netCDF 3\n        file format, which supports 64-bit dimension sizes plus unsigned and\n        64 bit integer data types, but is only compatible with clients linked against\n        netCDF version 4.4.0 or later.\n\n        **`diskless`**: If `True`, create diskless (in-core) file.\n        This is a feature added to the C library after the\n        netcdf-4.2 release. If you need to access the memory buffer directly,\n        use the in-memory feature instead (see `memory` kwarg).\n\n        **`persist`**: if `diskless=True`, persist file to disk when closed\n        (default `False`).\n\n        **`keepweakref`**: if `True`, child Dimension and Variable instances will keep weak\n        references to the parent Dataset or Group object.  Default is `False`, which\n        means strong references will be kept.  Having Dimension and Variable instances\n        keep a strong reference to the parent Dataset instance, which in turn keeps a\n        reference to child Dimension and Variable instances, creates circular references.\n        Circular references complicate garbage collection, which may mean increased\n        memory usage for programs that create may Dataset instances with lots of\n        Variables. It also will result in the Dataset object never being deleted, which\n        mea""ns it may keep open files alive as well. Setting `keepweakref=True` allows\n        Dataset instances to be garbage collected as soon as they go out of scope, potentially\n        reducing memory usage and open file handles.  However, in many cases this is not\n        desirable, since the associated Variable instances may still be needed, but are\n        rendered unusable when the parent Dataset instance is garbage collected.\n\n        **`memory`**: if not `None`, create or open an in-memory Dataset.\n        If mode = `r`, the memory kwarg must contain a memory buffer object\n        (an object that supports the python buffer interface).\n        The Dataset will then be created with contents taken from this block of memory.\n        If mode = `w`, the memory kwarg should contain the anticipated size\n        of the Dataset in bytes (used only for NETCDF3 files).  A memory\n        buffer containing a copy of the Dataset is returned by the\n        `Dataset.close` method. Requires netcdf-c version 4.4.1 for mode=`r`\n        netcdf-c 4.6.2 for mode=`w`. To persist the file to disk, the raw\n        bytes from the returned buffer can be written into a binary file.\n        The Dataset can also be re-opened using this memory buffer.\n\n        **`encoding`**: encoding used to encode filename string into bytes.\n        Default is None (`sys.getdefaultfileencoding()` is used).\n\n        **`parallel`**: open for parallel access using MPI (requires mpi4py and\n        parallel-enabled netcdf-c and hdf5 libraries).  Default is `False`. If\n        `True`, `comm` and `info` kwargs may also be specified.\n\n        **`comm`**: MPI_Comm object for parallel access. Default `None`, which\n        means MPI_COMM_WORLD will be used.  Ignored if `parallel=False`.\n\n        **`info`**: MPI_Info object for parallel access. Default `None`, which\n        means MPI_INFO_NULL will be used.  Ignored if `parallel=False`.\n\n        **`auto_complex`**: if `True`, then automatically"" convert complex number types\n        ");
#if CYTHON_UPDATE_DESCRIPTOR_DOC
struct wrapperbase __pyx_wrapperbase_7netCDF4_8_netCDF4_7Dataset___init__;
#endif
static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_filename = 0;
  PyObject *__pyx_v_mode = 0;
  PyObject *__pyx_v_clobber = 0;
  PyObject *__pyx_v_format = 0;
  PyObject *__pyx_v_diskless = 0;
  PyObject *__pyx_v_persist = 0;
  PyObject *__pyx_v_keepweakref = 0;
  PyObject *__pyx_v_memory = 0;
  PyObject *__pyx_v_encoding = 0;
  PyObject *__pyx_v_parallel = 0;
  PyObject *__pyx_v_comm = 0;
  PyObject *__pyx_v_info = 0;
  PyObject *__pyx_v_auto_complex = 0;
  CYTHON_UNUSED PyObject *__pyx_v_kwargs = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[13] = {0,0,0,0,0,0,0,0,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("__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_filename,&__pyx_mstate_global->__pyx_n_u_mode,&__pyx_mstate_global->__pyx_n_u_clobber,&__pyx_mstate_global->__pyx_n_u_format,&__pyx_mstate_global->__pyx_n_u_diskless,&__pyx_mstate_global->__pyx_n_u_persist,&__pyx_mstate_global->__pyx_n_u_keepweakref,&__pyx_mstate_global->__pyx_n_u_memory,&__pyx_mstate_global->__pyx_n_u_encoding,&__pyx_mstate_global->__pyx_n_u_parallel,&__pyx_mstate_global->__pyx_n_u_comm,&__pyx_mstate_global->__pyx_n_u_info,&__pyx_mstate_global->__pyx_n_u_auto_complex,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 2300, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case 13:
        values[12] = __Pyx_ArgRef_VARARGS(__pyx_args, 12);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[12])) __PYX_ERR(0, 2300, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 12:
        values[11] = __Pyx_ArgRef_VARARGS(__pyx_args, 11);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[11])) __PYX_ERR(0, 2300, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 11:
        values[10] = __Pyx_ArgRef_VARARGS(__pyx_args, 10);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[10])) __PYX_ERR(0, 2300, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 10:
        values[9] = __Pyx_ArgRef_VARARGS(__pyx_args, 9);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[9])) __PYX_ERR(0, 2300, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  9:
        values[8] = __Pyx_ArgRef_VARARGS(__pyx_args, 8);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[8])) __PYX_ERR(0, 2300, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  8:
        values[7] = __Pyx_ArgRef_VARARGS(__pyx_args, 7);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[7])) __PYX_ERR(0, 2300, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  7:
        values[6] = __Pyx_ArgRef_VARARGS(__pyx_args, 6);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[6])) __PYX_ERR(0, 2300, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  6:
        values[5] = __Pyx_ArgRef_VARARGS(__pyx_args, 5);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(0, 2300, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  5:
        values[4] = __Pyx_ArgRef_VARARGS(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 2300, __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(0, 2300, __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(0, 2300, __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(0, 2300, __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(0, 2300, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        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_kwargs, values, kwd_pos_args, __pyx_kwds_len, "__init__", 1) < (0)) __PYX_ERR(0, 2300, __pyx_L3_error)
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_n_u_r));
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_True));
      if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_n_u_NETCDF4));

      /* "netCDF4/_netCDF4.pyx":2301
 * 
 *     def __init__(self, filename, mode='r', clobber=True, format='NETCDF4',
 *                      diskless=False, persist=False, keepweakref=False,             # <<<<<<<<<<<<<<
 *                      memory=None, encoding=None, parallel=False,
 *                      comm=None, info=None, auto_complex=False, **kwargs):
*/
      if (!values[4]) values[4] = __Pyx_NewRef(((PyObject *)Py_False));
      if (!values[5]) values[5] = __Pyx_NewRef(((PyObject *)Py_False));
      if (!values[6]) values[6] = __Pyx_NewRef(((PyObject *)Py_False));

      /* "netCDF4/_netCDF4.pyx":2302
 *     def __init__(self, filename, mode='r', clobber=True, format='NETCDF4',
 *                      diskless=False, persist=False, keepweakref=False,
 *                      memory=None, encoding=None, parallel=False,             # <<<<<<<<<<<<<<
 *                      comm=None, info=None, auto_complex=False, **kwargs):
 *         """
*/
      if (!values[7]) values[7] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[8]) values[8] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[9]) values[9] = __Pyx_NewRef(((PyObject *)Py_False));

      /* "netCDF4/_netCDF4.pyx":2303
 *                      diskless=False, persist=False, keepweakref=False,
 *                      memory=None, encoding=None, parallel=False,
 *                      comm=None, info=None, auto_complex=False, **kwargs):             # <<<<<<<<<<<<<<
 *         """
 *         **`__init__(self, filename, mode="r", clobber=True, diskless=False,
*/
      if (!values[10]) values[10] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[11]) values[11] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[12]) values[12] = __Pyx_NewRef(((PyObject *)Py_False));
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 13, i); __PYX_ERR(0, 2300, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case 13:
        values[12] = __Pyx_ArgRef_VARARGS(__pyx_args, 12);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[12])) __PYX_ERR(0, 2300, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 12:
        values[11] = __Pyx_ArgRef_VARARGS(__pyx_args, 11);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[11])) __PYX_ERR(0, 2300, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 11:
        values[10] = __Pyx_ArgRef_VARARGS(__pyx_args, 10);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[10])) __PYX_ERR(0, 2300, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 10:
        values[9] = __Pyx_ArgRef_VARARGS(__pyx_args, 9);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[9])) __PYX_ERR(0, 2300, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  9:
        values[8] = __Pyx_ArgRef_VARARGS(__pyx_args, 8);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[8])) __PYX_ERR(0, 2300, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  8:
        values[7] = __Pyx_ArgRef_VARARGS(__pyx_args, 7);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[7])) __PYX_ERR(0, 2300, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  7:
        values[6] = __Pyx_ArgRef_VARARGS(__pyx_args, 6);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[6])) __PYX_ERR(0, 2300, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  6:
        values[5] = __Pyx_ArgRef_VARARGS(__pyx_args, 5);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(0, 2300, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  5:
        values[4] = __Pyx_ArgRef_VARARGS(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 2300, __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(0, 2300, __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(0, 2300, __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(0, 2300, __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(0, 2300, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_n_u_r));

      /* "netCDF4/_netCDF4.pyx":2300
 *     keepweakref, _ncstring_attrs__, auto_complex
 * 
 *     def __init__(self, filename, mode='r', clobber=True, format='NETCDF4',             # <<<<<<<<<<<<<<
 *                      diskless=False, persist=False, keepweakref=False,
 *                      memory=None, encoding=None, parallel=False,
*/
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_True));
      if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_n_u_NETCDF4));

      /* "netCDF4/_netCDF4.pyx":2301
 * 
 *     def __init__(self, filename, mode='r', clobber=True, format='NETCDF4',
 *                      diskless=False, persist=False, keepweakref=False,             # <<<<<<<<<<<<<<
 *                      memory=None, encoding=None, parallel=False,
 *                      comm=None, info=None, auto_complex=False, **kwargs):
*/
      if (!values[4]) values[4] = __Pyx_NewRef(((PyObject *)Py_False));
      if (!values[5]) values[5] = __Pyx_NewRef(((PyObject *)Py_False));
      if (!values[6]) values[6] = __Pyx_NewRef(((PyObject *)Py_False));

      /* "netCDF4/_netCDF4.pyx":2302
 *     def __init__(self, filename, mode='r', clobber=True, format='NETCDF4',
 *                      diskless=False, persist=False, keepweakref=False,
 *                      memory=None, encoding=None, parallel=False,             # <<<<<<<<<<<<<<
 *                      comm=None, info=None, auto_complex=False, **kwargs):
 *         """
*/
      if (!values[7]) values[7] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[8]) values[8] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[9]) values[9] = __Pyx_NewRef(((PyObject *)Py_False));

      /* "netCDF4/_netCDF4.pyx":2303
 *                      diskless=False, persist=False, keepweakref=False,
 *                      memory=None, encoding=None, parallel=False,
 *                      comm=None, info=None, auto_complex=False, **kwargs):             # <<<<<<<<<<<<<<
 *         """
 *         **`__init__(self, filename, mode="r", clobber=True, diskless=False,
*/
      if (!values[10]) values[10] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[11]) values[11] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[12]) values[12] = __Pyx_NewRef(((PyObject *)Py_False));
    }
    __pyx_v_filename = values[0];
    __pyx_v_mode = values[1];
    __pyx_v_clobber = values[2];
    __pyx_v_format = values[3];
    __pyx_v_diskless = values[4];
    __pyx_v_persist = values[5];
    __pyx_v_keepweakref = values[6];
    __pyx_v_memory = values[7];
    __pyx_v_encoding = values[8];
    __pyx_v_parallel = values[9];
    __pyx_v_comm = values[10];
    __pyx_v_info = values[11];
    __pyx_v_auto_complex = values[12];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 13, __pyx_nargs); __PYX_ERR(0, 2300, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_XDECREF(__pyx_v_kwargs); __pyx_v_kwargs = 0;
  __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_7Dataset___init__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self), __pyx_v_filename, __pyx_v_mode, __pyx_v_clobber, __pyx_v_format, __pyx_v_diskless, __pyx_v_persist, __pyx_v_keepweakref, __pyx_v_memory, __pyx_v_encoding, __pyx_v_parallel, __pyx_v_comm, __pyx_v_info, __pyx_v_auto_complex, __pyx_v_kwargs);

  /* "netCDF4/_netCDF4.pyx":2300
 *     keepweakref, _ncstring_attrs__, auto_complex
 * 
 *     def __init__(self, filename, mode='r', clobber=True, format='NETCDF4',             # <<<<<<<<<<<<<<
 *                      diskless=False, persist=False, keepweakref=False,
 *                      memory=None, encoding=None, parallel=False,
*/

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

static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset___init__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_filename, PyObject *__pyx_v_mode, PyObject *__pyx_v_clobber, PyObject *__pyx_v_format, PyObject *__pyx_v_diskless, PyObject *__pyx_v_persist, PyObject *__pyx_v_keepweakref, PyObject *__pyx_v_memory, PyObject *__pyx_v_encoding, PyObject *__pyx_v_parallel, PyObject *__pyx_v_comm, PyObject *__pyx_v_info, PyObject *__pyx_v_auto_complex, CYTHON_UNUSED PyObject *__pyx_v_kwargs) {
  int __pyx_v_grpid;
  int __pyx_v_ierr;
  size_t __pyx_v_initialsize;
  char *__pyx_v_path;
  int __pyx_v_cmode;
  int __pyx_v_parmode;
  MPI_Comm __pyx_v_mpicomm;
  MPI_Info __pyx_v_mpiinfo;
  PyObject *__pyx_v_bytestr = NULL;
  int __pyx_v_read_mode;
  int __pyx_v_write_mode;
  int __pyx_v_append_mode;
  int __pyx_v_result;
  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;
  struct __pyx_opt_args_7netCDF4_8_netCDF4__strencode __pyx_t_8;
  char *__pyx_t_9;
  int __pyx_t_10;
  MPI_Comm __pyx_t_11;
  MPI_Info __pyx_t_12;
  int __pyx_t_13;
  PyObject *__pyx_t_14[3];
  int __pyx_t_15;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17 = NULL;
  PyObject *(*__pyx_t_18)(PyObject *);
  struct __pyx_opt_args_7netCDF4_8_netCDF4__get_vars __pyx_t_19;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);
  __Pyx_INCREF(__pyx_v_mode);
  __Pyx_INCREF(__pyx_v_clobber);
  __Pyx_INCREF(__pyx_v_encoding);

  /* "netCDF4/_netCDF4.pyx":2409
 *         cdef MPI_Info mpiinfo
 * 
 *         memset(&self._buffer, 0, sizeof(self._buffer))             # <<<<<<<<<<<<<<
 * 
 *         # flag to indicate that Variables in this Dataset support orthogonal indexing.
*/
  (void)(memset((&__pyx_v_self->_buffer), 0, (sizeof(__pyx_v_self->_buffer))));

  /* "netCDF4/_netCDF4.pyx":2412
 * 
 *         # flag to indicate that Variables in this Dataset support orthogonal indexing.
 *         self.__orthogonal_indexing__ = True             # <<<<<<<<<<<<<<
 *         if diskless and __netcdf4libversion__ < '4.2.1':
 *             #diskless = False # don't raise error, instead silently ignore
*/
  __Pyx_INCREF(Py_True);
  __Pyx_GIVEREF(Py_True);
  __Pyx_GOTREF(__pyx_v_self->__pyx___orthogonal_indexing__);
  __Pyx_DECREF(__pyx_v_self->__pyx___orthogonal_indexing__);
  __pyx_v_self->__pyx___orthogonal_indexing__ = Py_True;

  /* "netCDF4/_netCDF4.pyx":2413
 *         # flag to indicate that Variables in this Dataset support orthogonal indexing.
 *         self.__orthogonal_indexing__ = True
 *         if diskless and __netcdf4libversion__ < '4.2.1':             # <<<<<<<<<<<<<<
 *             #diskless = False # don't raise error, instead silently ignore
 *             raise ValueError('diskless mode requires netcdf lib >= 4.2.1, you have %s' % __netcdf4libversion__)
*/
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_diskless); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 2413, __pyx_L1_error)
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_netcdf4libversion); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2413, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyObject_RichCompare(__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_4_2_1, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2413, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 2413, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (unlikely(__pyx_t_1)) {

    /* "netCDF4/_netCDF4.pyx":2415
 *         if diskless and __netcdf4libversion__ < '4.2.1':
 *             #diskless = False # don't raise error, instead silently ignore
 *             raise ValueError('diskless mode requires netcdf lib >= 4.2.1, you have %s' % __netcdf4libversion__)             # <<<<<<<<<<<<<<
 *         # convert filename into string (from os.path object for example),
 *         # encode into bytes.
*/
    __pyx_t_3 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_netcdf4libversion); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2415, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __Pyx_PyUnicode_FormatSafe(__pyx_mstate_global->__pyx_kp_u_diskless_mode_requires_netcdf_li, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2415, __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_3, __pyx_t_6};
      __pyx_t_4 = __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_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2415, __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(0, 2415, __pyx_L1_error)

    /* "netCDF4/_netCDF4.pyx":2413
 *         # flag to indicate that Variables in this Dataset support orthogonal indexing.
 *         self.__orthogonal_indexing__ = True
 *         if diskless and __netcdf4libversion__ < '4.2.1':             # <<<<<<<<<<<<<<
 *             #diskless = False # don't raise error, instead silently ignore
 *             raise ValueError('diskless mode requires netcdf lib >= 4.2.1, you have %s' % __netcdf4libversion__)
*/
  }

  /* "netCDF4/_netCDF4.pyx":2418
 *         # convert filename into string (from os.path object for example),
 *         # encode into bytes.
 *         if encoding is None:             # <<<<<<<<<<<<<<
 *             encoding = sys.getfilesystemencoding()
 *         bytestr = _strencode(_tostr(filename), encoding=encoding)
*/
  __pyx_t_1 = (__pyx_v_encoding == Py_None);
  if (__pyx_t_1) {

    /* "netCDF4/_netCDF4.pyx":2419
 *         # encode into bytes.
 *         if encoding is None:
 *             encoding = sys.getfilesystemencoding()             # <<<<<<<<<<<<<<
 *         bytestr = _strencode(_tostr(filename), encoding=encoding)
 *         path = bytestr
*/
    __pyx_t_6 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_sys); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2419, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_getfilesystemencoding); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2419, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_7 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
      assert(__pyx_t_6);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
      __pyx_t_7 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL};
      __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_7, (1-__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_4)) __PYX_ERR(0, 2419, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_DECREF_SET(__pyx_v_encoding, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "netCDF4/_netCDF4.pyx":2418
 *         # convert filename into string (from os.path object for example),
 *         # encode into bytes.
 *         if encoding is None:             # <<<<<<<<<<<<<<
 *             encoding = sys.getfilesystemencoding()
 *         bytestr = _strencode(_tostr(filename), encoding=encoding)
*/
  }

  /* "netCDF4/_netCDF4.pyx":2420
 *         if encoding is None:
 *             encoding = sys.getfilesystemencoding()
 *         bytestr = _strencode(_tostr(filename), encoding=encoding)             # <<<<<<<<<<<<<<
 *         path = bytestr
 * 
*/
  __pyx_t_5 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_tostr); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2420, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = 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_7 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_filename};
    __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_6, __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_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2420, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
  }
  __pyx_t_8.__pyx_n = 1;
  __pyx_t_8.encoding = __pyx_v_encoding;
  __pyx_t_6 = __pyx_f_7netCDF4_8_netCDF4__strencode(__pyx_t_4, &__pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2420, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_v_bytestr = __pyx_t_6;
  __pyx_t_6 = 0;

  /* "netCDF4/_netCDF4.pyx":2421
 *             encoding = sys.getfilesystemencoding()
 *         bytestr = _strencode(_tostr(filename), encoding=encoding)
 *         path = bytestr             # <<<<<<<<<<<<<<
 * 
 *         if memory is not None and mode not in ('r', 'w'):
*/
  __pyx_t_9 = __Pyx_PyObject_AsWritableString(__pyx_v_bytestr); if (unlikely((!__pyx_t_9) && PyErr_Occurred())) __PYX_ERR(0, 2421, __pyx_L1_error)
  __pyx_v_path = __pyx_t_9;

  /* "netCDF4/_netCDF4.pyx":2423
 *         path = bytestr
 * 
 *         if memory is not None and mode not in ('r', 'w'):             # <<<<<<<<<<<<<<
 *             raise ValueError("if memory kwarg specified, mode must be 'r' or 'w'")
 * 
*/
  __pyx_t_2 = (__pyx_v_memory != Py_None);
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L8_bool_binop_done;
  }
  __Pyx_INCREF(__pyx_v_mode);
  __pyx_t_6 = __pyx_v_mode;
  __pyx_t_10 = (__Pyx_PyUnicode_Equals(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_r, Py_NE)); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 2423, __pyx_L1_error)
  if (__pyx_t_10) {
  } else {
    __pyx_t_2 = __pyx_t_10;
    goto __pyx_L10_bool_binop_done;
  }
  __pyx_t_10 = (__Pyx_PyUnicode_Equals(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_w, Py_NE)); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 2423, __pyx_L1_error)
  __pyx_t_2 = __pyx_t_10;
  __pyx_L10_bool_binop_done:;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_10 = __pyx_t_2;
  __pyx_t_1 = __pyx_t_10;
  __pyx_L8_bool_binop_done:;
  if (unlikely(__pyx_t_1)) {

    /* "netCDF4/_netCDF4.pyx":2424
 * 
 *         if memory is not None and mode not in ('r', 'w'):
 *             raise ValueError("if memory kwarg specified, mode must be 'r' or 'w'")             # <<<<<<<<<<<<<<
 * 
 *         if parallel:
*/
    __pyx_t_4 = NULL;
    __pyx_t_7 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_if_memory_kwarg_specified_mode_m};
      __pyx_t_6 = __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_6)) __PYX_ERR(0, 2424, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
    }
    __Pyx_Raise(__pyx_t_6, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __PYX_ERR(0, 2424, __pyx_L1_error)

    /* "netCDF4/_netCDF4.pyx":2423
 *         path = bytestr
 * 
 *         if memory is not None and mode not in ('r', 'w'):             # <<<<<<<<<<<<<<
 *             raise ValueError("if memory kwarg specified, mode must be 'r' or 'w'")
 * 
*/
  }

  /* "netCDF4/_netCDF4.pyx":2426
 *             raise ValueError("if memory kwarg specified, mode must be 'r' or 'w'")
 * 
 *         if parallel:             # <<<<<<<<<<<<<<
 *             if not __has_parallel_support__:
 *                 raise ValueError("parallel mode requires MPI enabled netcdf-c")
*/
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_parallel); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 2426, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "netCDF4/_netCDF4.pyx":2427
 * 
 *         if parallel:
 *             if not __has_parallel_support__:             # <<<<<<<<<<<<<<
 *                 raise ValueError("parallel mode requires MPI enabled netcdf-c")
 * 
*/
    __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_has_parallel_support); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2427, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 2427, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_10 = (!__pyx_t_1);
    if (unlikely(__pyx_t_10)) {

      /* "netCDF4/_netCDF4.pyx":2428
 *         if parallel:
 *             if not __has_parallel_support__:
 *                 raise ValueError("parallel mode requires MPI enabled netcdf-c")             # <<<<<<<<<<<<<<
 * 
 *             if format not in _parallel_formats:
*/
      __pyx_t_4 = NULL;
      __pyx_t_7 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_parallel_mode_requires_MPI_enabl};
        __pyx_t_6 = __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_6)) __PYX_ERR(0, 2428, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
      }
      __Pyx_Raise(__pyx_t_6, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __PYX_ERR(0, 2428, __pyx_L1_error)

      /* "netCDF4/_netCDF4.pyx":2427
 * 
 *         if parallel:
 *             if not __has_parallel_support__:             # <<<<<<<<<<<<<<
 *                 raise ValueError("parallel mode requires MPI enabled netcdf-c")
 * 
*/
    }

    /* "netCDF4/_netCDF4.pyx":2430
 *                 raise ValueError("parallel mode requires MPI enabled netcdf-c")
 * 
 *             if format not in _parallel_formats:             # <<<<<<<<<<<<<<
 *                 raise ValueError(
 *                     f"parallel mode only works with the following formats: {' '.join(_parallel_formats)}"
*/
    __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_parallel_formats); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2430, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_10 = (__Pyx_PySequence_ContainsTF(__pyx_v_format, __pyx_t_6, Py_NE)); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 2430, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(__pyx_t_10)) {

      /* "netCDF4/_netCDF4.pyx":2431
 * 
 *             if format not in _parallel_formats:
 *                 raise ValueError(             # <<<<<<<<<<<<<<
 *                     f"parallel mode only works with the following formats: {' '.join(_parallel_formats)}"
 *                 )
*/
      __pyx_t_4 = NULL;

      /* "netCDF4/_netCDF4.pyx":2432
 *             if format not in _parallel_formats:
 *                 raise ValueError(
 *                     f"parallel mode only works with the following formats: {' '.join(_parallel_formats)}"             # <<<<<<<<<<<<<<
 *                 )
 * 
*/
      __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_parallel_formats); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2432, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_3 = PyUnicode_Join(__pyx_mstate_global->__pyx_kp_u__8, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2432, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_5 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_parallel_mode_only_works_with_th, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2432, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_7 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_5};
        __pyx_t_6 = __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_5); __pyx_t_5 = 0;
        if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2431, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
      }
      __Pyx_Raise(__pyx_t_6, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __PYX_ERR(0, 2431, __pyx_L1_error)

      /* "netCDF4/_netCDF4.pyx":2430
 *                 raise ValueError("parallel mode requires MPI enabled netcdf-c")
 * 
 *             if format not in _parallel_formats:             # <<<<<<<<<<<<<<
 *                 raise ValueError(
 *                     f"parallel mode only works with the following formats: {' '.join(_parallel_formats)}"
*/
    }

    /* "netCDF4/_netCDF4.pyx":2435
 *                 )
 * 
 *             mpicomm = (<Comm?>comm).ob_mpi if comm is not None else MPI_COMM_WORLD             # <<<<<<<<<<<<<<
 *             mpiinfo = (<Info?>info).ob_mpi if info is not None else MPI_INFO_NULL
 *             parmode = NC_MPIIO | _cmode_dict[format]
*/
    __pyx_t_10 = (__pyx_v_comm != Py_None);
    if (__pyx_t_10) {
      if (!(likely(__Pyx_TypeTest(__pyx_v_comm, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm)))) __PYX_ERR(0, 2435, __pyx_L1_error)
      __pyx_t_11 = ((__pyx_t_7netCDF4_8_netCDF4_Comm)__pyx_v_comm)->ob_mpi;
    } else {
      __pyx_t_11 = MPI_COMM_WORLD;
    }
    __pyx_v_mpicomm = __pyx_t_11;

    /* "netCDF4/_netCDF4.pyx":2436
 * 
 *             mpicomm = (<Comm?>comm).ob_mpi if comm is not None else MPI_COMM_WORLD
 *             mpiinfo = (<Info?>info).ob_mpi if info is not None else MPI_INFO_NULL             # <<<<<<<<<<<<<<
 *             parmode = NC_MPIIO | _cmode_dict[format]
 * 
*/
    __pyx_t_10 = (__pyx_v_info != Py_None);
    if (__pyx_t_10) {
      if (!(likely(__Pyx_TypeTest(__pyx_v_info, __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info)))) __PYX_ERR(0, 2436, __pyx_L1_error)
      __pyx_t_12 = ((__pyx_t_7netCDF4_8_netCDF4_Info)__pyx_v_info)->ob_mpi;
    } else {
      __pyx_t_12 = MPI_INFO_NULL;
    }
    __pyx_v_mpiinfo = __pyx_t_12;

    /* "netCDF4/_netCDF4.pyx":2437
 *             mpicomm = (<Comm?>comm).ob_mpi if comm is not None else MPI_COMM_WORLD
 *             mpiinfo = (<Info?>info).ob_mpi if info is not None else MPI_INFO_NULL
 *             parmode = NC_MPIIO | _cmode_dict[format]             # <<<<<<<<<<<<<<
 * 
 *         self._inmemory = False
*/
    __pyx_t_6 = __Pyx_PyLong_From___pyx_anon_enum(NC_MPIIO); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2437, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_cmode_dict); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2437, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = __Pyx_PyObject_GetItem(__pyx_t_5, __pyx_v_format); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2437, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = PyNumber_Or(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2437, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_13 = __Pyx_PyLong_As_int(__pyx_t_5); if (unlikely((__pyx_t_13 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2437, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_v_parmode = __pyx_t_13;

    /* "netCDF4/_netCDF4.pyx":2426
 *             raise ValueError("if memory kwarg specified, mode must be 'r' or 'w'")
 * 
 *         if parallel:             # <<<<<<<<<<<<<<
 *             if not __has_parallel_support__:
 *                 raise ValueError("parallel mode requires MPI enabled netcdf-c")
*/
  }

  /* "netCDF4/_netCDF4.pyx":2439
 *             parmode = NC_MPIIO | _cmode_dict[format]
 * 
 *         self._inmemory = False             # <<<<<<<<<<<<<<
 *         self.auto_complex = auto_complex
 * 
*/
  __Pyx_INCREF(Py_False);
  __Pyx_GIVEREF(Py_False);
  __Pyx_GOTREF(__pyx_v_self->_inmemory);
  __Pyx_DECREF(__pyx_v_self->_inmemory);
  __pyx_v_self->_inmemory = Py_False;

  /* "netCDF4/_netCDF4.pyx":2440
 * 
 *         self._inmemory = False
 *         self.auto_complex = auto_complex             # <<<<<<<<<<<<<<
 * 
 *         # mode='x' is the same as mode='w' with clobber=False
*/
  __Pyx_INCREF(__pyx_v_auto_complex);
  __Pyx_GIVEREF(__pyx_v_auto_complex);
  __Pyx_GOTREF(__pyx_v_self->auto_complex);
  __Pyx_DECREF(__pyx_v_self->auto_complex);
  __pyx_v_self->auto_complex = __pyx_v_auto_complex;

  /* "netCDF4/_netCDF4.pyx":2443
 * 
 *         # mode='x' is the same as mode='w' with clobber=False
 *         if mode == "x":             # <<<<<<<<<<<<<<
 *             mode = "w"
 *             clobber = False
*/
  __pyx_t_10 = (__Pyx_PyUnicode_Equals(__pyx_v_mode, __pyx_mstate_global->__pyx_n_u_x, Py_EQ)); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 2443, __pyx_L1_error)
  if (__pyx_t_10) {

    /* "netCDF4/_netCDF4.pyx":2444
 *         # mode='x' is the same as mode='w' with clobber=False
 *         if mode == "x":
 *             mode = "w"             # <<<<<<<<<<<<<<
 *             clobber = False
 * 
*/
    __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_w);
    __Pyx_DECREF_SET(__pyx_v_mode, __pyx_mstate_global->__pyx_n_u_w);

    /* "netCDF4/_netCDF4.pyx":2445
 *         if mode == "x":
 *             mode = "w"
 *             clobber = False             # <<<<<<<<<<<<<<
 * 
 *         # r+ is synonym for append
*/
    __Pyx_INCREF(Py_False);
    __Pyx_DECREF_SET(__pyx_v_clobber, Py_False);

    /* "netCDF4/_netCDF4.pyx":2443
 * 
 *         # mode='x' is the same as mode='w' with clobber=False
 *         if mode == "x":             # <<<<<<<<<<<<<<
 *             mode = "w"
 *             clobber = False
*/
  }

  /* "netCDF4/_netCDF4.pyx":2448
 * 
 *         # r+ is synonym for append
 *         if "r+" in mode:             # <<<<<<<<<<<<<<
 *             mode = mode.replace("r+", "a")
 * 
*/
  __pyx_t_10 = (__Pyx_PySequence_ContainsTF(__pyx_mstate_global->__pyx_kp_u_r_2, __pyx_v_mode, Py_EQ)); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 2448, __pyx_L1_error)
  if (__pyx_t_10) {

    /* "netCDF4/_netCDF4.pyx":2449
 *         # r+ is synonym for append
 *         if "r+" in mode:
 *             mode = mode.replace("r+", "a")             # <<<<<<<<<<<<<<
 * 
 *         # If appending and the file doesn't exist, we need to create it
*/
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_mode, __pyx_mstate_global->__pyx_n_u_replace); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2449, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_mstate_global->__pyx_tuple[1], NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2449, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF_SET(__pyx_v_mode, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "netCDF4/_netCDF4.pyx":2448
 * 
 *         # r+ is synonym for append
 *         if "r+" in mode:             # <<<<<<<<<<<<<<
 *             mode = mode.replace("r+", "a")
 * 
*/
  }

  /* "netCDF4/_netCDF4.pyx":2452
 * 
 *         # If appending and the file doesn't exist, we need to create it
 *         if mode in ("a", "as") and not os.path.exists(filename):             # <<<<<<<<<<<<<<
 *             mode = mode.replace("a", "w")
 * 
*/
  __Pyx_INCREF(__pyx_v_mode);
  __pyx_t_4 = __pyx_v_mode;
  __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_a, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 2452, __pyx_L1_error)
  if (!__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L20_bool_binop_done;
  }
  __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_as, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 2452, __pyx_L1_error)
  __pyx_t_1 = __pyx_t_2;
  __pyx_L20_bool_binop_done:;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_2 = __pyx_t_1;
  if (__pyx_t_2) {
  } else {
    __pyx_t_10 = __pyx_t_2;
    goto __pyx_L18_bool_binop_done;
  }
  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_os); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2452, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_path); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2452, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_5 = __pyx_t_3;
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_7 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_filename};
    __pyx_t_4 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_exists, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2452, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
  }
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 2452, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = (!__pyx_t_2);
  __pyx_t_10 = __pyx_t_1;
  __pyx_L18_bool_binop_done:;
  if (__pyx_t_10) {

    /* "netCDF4/_netCDF4.pyx":2453
 *         # If appending and the file doesn't exist, we need to create it
 *         if mode in ("a", "as") and not os.path.exists(filename):
 *             mode = mode.replace("a", "w")             # <<<<<<<<<<<<<<
 * 
 *         read_mode = mode in ("r", "rs")
*/
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_mode, __pyx_mstate_global->__pyx_n_u_replace); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2453, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_mstate_global->__pyx_tuple[2], NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2453, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF_SET(__pyx_v_mode, __pyx_t_3);
    __pyx_t_3 = 0;

    /* "netCDF4/_netCDF4.pyx":2452
 * 
 *         # If appending and the file doesn't exist, we need to create it
 *         if mode in ("a", "as") and not os.path.exists(filename):             # <<<<<<<<<<<<<<
 *             mode = mode.replace("a", "w")
 * 
*/
  }

  /* "netCDF4/_netCDF4.pyx":2455
 *             mode = mode.replace("a", "w")
 * 
 *         read_mode = mode in ("r", "rs")             # <<<<<<<<<<<<<<
 *         write_mode = mode in ("w", "ws")
 *         append_mode = mode in ("a", "as")
*/
  __Pyx_INCREF(__pyx_v_mode);
  __pyx_t_3 = __pyx_v_mode;
  __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_r, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 2455, __pyx_L1_error)
  if (!__pyx_t_1) {
  } else {
    __pyx_t_10 = __pyx_t_1;
    goto __pyx_L22_bool_binop_done;
  }
  __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_rs, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 2455, __pyx_L1_error)
  __pyx_t_10 = __pyx_t_1;
  __pyx_L22_bool_binop_done:;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_read_mode = __pyx_t_10;

  /* "netCDF4/_netCDF4.pyx":2456
 * 
 *         read_mode = mode in ("r", "rs")
 *         write_mode = mode in ("w", "ws")             # <<<<<<<<<<<<<<
 *         append_mode = mode in ("a", "as")
 * 
*/
  __Pyx_INCREF(__pyx_v_mode);
  __pyx_t_3 = __pyx_v_mode;
  __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_w, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 2456, __pyx_L1_error)
  if (!__pyx_t_1) {
  } else {
    __pyx_t_10 = __pyx_t_1;
    goto __pyx_L24_bool_binop_done;
  }
  __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_ws, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 2456, __pyx_L1_error)
  __pyx_t_10 = __pyx_t_1;
  __pyx_L24_bool_binop_done:;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_write_mode = __pyx_t_10;

  /* "netCDF4/_netCDF4.pyx":2457
 *         read_mode = mode in ("r", "rs")
 *         write_mode = mode in ("w", "ws")
 *         append_mode = mode in ("a", "as")             # <<<<<<<<<<<<<<
 * 
 *         if not (read_mode or write_mode or append_mode):
*/
  __Pyx_INCREF(__pyx_v_mode);
  __pyx_t_3 = __pyx_v_mode;
  __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_a, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 2457, __pyx_L1_error)
  if (!__pyx_t_1) {
  } else {
    __pyx_t_10 = __pyx_t_1;
    goto __pyx_L26_bool_binop_done;
  }
  __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_as, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 2457, __pyx_L1_error)
  __pyx_t_10 = __pyx_t_1;
  __pyx_L26_bool_binop_done:;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_append_mode = __pyx_t_10;

  /* "netCDF4/_netCDF4.pyx":2459
 *         append_mode = mode in ("a", "as")
 * 
 *         if not (read_mode or write_mode or append_mode):             # <<<<<<<<<<<<<<
 *             raise ValueError(f"mode must be 'w', 'x', 'r', 'a' or 'r+', got '{mode}'")
 * 
*/
  if (!__pyx_v_read_mode) {
  } else {
    __pyx_t_10 = __pyx_v_read_mode;
    goto __pyx_L29_bool_binop_done;
  }
  if (!__pyx_v_write_mode) {
  } else {
    __pyx_t_10 = __pyx_v_write_mode;
    goto __pyx_L29_bool_binop_done;
  }
  __pyx_t_10 = __pyx_v_append_mode;
  __pyx_L29_bool_binop_done:;
  __pyx_t_1 = (!__pyx_t_10);
  if (unlikely(__pyx_t_1)) {

    /* "netCDF4/_netCDF4.pyx":2460
 * 
 *         if not (read_mode or write_mode or append_mode):
 *             raise ValueError(f"mode must be 'w', 'x', 'r', 'a' or 'r+', got '{mode}'")             # <<<<<<<<<<<<<<
 * 
 *         # Initial value for cmode
*/
    __pyx_t_4 = NULL;
    __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_v_mode, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2460, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_14[0] = __pyx_mstate_global->__pyx_kp_u_mode_must_be_w_x_r_a_or_r_got;
    __pyx_t_14[1] = __pyx_t_5;
    __pyx_t_14[2] = __pyx_mstate_global->__pyx_kp_u__9;
    __pyx_t_6 = __Pyx_PyUnicode_Join(__pyx_t_14, 3, 46 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5) + 1, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5));
    if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2460, __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(0, 2460, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(0, 2460, __pyx_L1_error)

    /* "netCDF4/_netCDF4.pyx":2459
 *         append_mode = mode in ("a", "as")
 * 
 *         if not (read_mode or write_mode or append_mode):             # <<<<<<<<<<<<<<
 *             raise ValueError(f"mode must be 'w', 'x', 'r', 'a' or 'r+', got '{mode}'")
 * 
*/
  }

  /* "netCDF4/_netCDF4.pyx":2463
 * 
 *         # Initial value for cmode
 *         if write_mode:             # <<<<<<<<<<<<<<
 *             cmode = NC_CLOBBER if clobber else NC_NOCLOBBER
 *         else:
*/
  if (__pyx_v_write_mode) {

    /* "netCDF4/_netCDF4.pyx":2464
 *         # Initial value for cmode
 *         if write_mode:
 *             cmode = NC_CLOBBER if clobber else NC_NOCLOBBER             # <<<<<<<<<<<<<<
 *         else:
 *             cmode = NC_WRITE if append_mode else NC_NOWRITE
*/
    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_clobber); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 2464, __pyx_L1_error)
    if (__pyx_t_1) {
      __pyx_t_15 = NC_CLOBBER;
    } else {
      __pyx_t_15 = NC_NOCLOBBER;
    }
    __pyx_v_cmode = __pyx_t_15;

    /* "netCDF4/_netCDF4.pyx":2463
 * 
 *         # Initial value for cmode
 *         if write_mode:             # <<<<<<<<<<<<<<
 *             cmode = NC_CLOBBER if clobber else NC_NOCLOBBER
 *         else:
*/
    goto __pyx_L32;
  }

  /* "netCDF4/_netCDF4.pyx":2466
 *             cmode = NC_CLOBBER if clobber else NC_NOCLOBBER
 *         else:
 *             cmode = NC_WRITE if append_mode else NC_NOWRITE             # <<<<<<<<<<<<<<
 *             if mode.endswith("s") and not parallel:
 *                 cmode |= NC_SHARE
*/
  /*else*/ {
    if (__pyx_v_append_mode) {
      __pyx_t_15 = NC_WRITE;
    } else {
      __pyx_t_15 = NC_NOWRITE;
    }
    __pyx_v_cmode = __pyx_t_15;

    /* "netCDF4/_netCDF4.pyx":2467
 *         else:
 *             cmode = NC_WRITE if append_mode else NC_NOWRITE
 *             if mode.endswith("s") and not parallel:             # <<<<<<<<<<<<<<
 *                 cmode |= NC_SHARE
 * 
*/
    __pyx_t_6 = __pyx_v_mode;
    __Pyx_INCREF(__pyx_t_6);
    __pyx_t_7 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_mstate_global->__pyx_n_u_s};
      __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_endswith, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2467, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 2467, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__pyx_t_10) {
    } else {
      __pyx_t_1 = __pyx_t_10;
      goto __pyx_L34_bool_binop_done;
    }
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_parallel); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 2467, __pyx_L1_error)
    __pyx_t_2 = (!__pyx_t_10);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L34_bool_binop_done:;
    if (__pyx_t_1) {

      /* "netCDF4/_netCDF4.pyx":2468
 *             cmode = NC_WRITE if append_mode else NC_NOWRITE
 *             if mode.endswith("s") and not parallel:
 *                 cmode |= NC_SHARE             # <<<<<<<<<<<<<<
 * 
 *         if diskless:
*/
      __pyx_v_cmode = (__pyx_v_cmode | NC_SHARE);

      /* "netCDF4/_netCDF4.pyx":2467
 *         else:
 *             cmode = NC_WRITE if append_mode else NC_NOWRITE
 *             if mode.endswith("s") and not parallel:             # <<<<<<<<<<<<<<
 *                 cmode |= NC_SHARE
 * 
*/
    }
  }
  __pyx_L32:;

  /* "netCDF4/_netCDF4.pyx":2470
 *                 cmode |= NC_SHARE
 * 
 *         if diskless:             # <<<<<<<<<<<<<<
 *             cmode |= NC_DISKLESS
 *             if write_mode and persist:
*/
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_diskless); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 2470, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "netCDF4/_netCDF4.pyx":2471
 * 
 *         if diskless:
 *             cmode |= NC_DISKLESS             # <<<<<<<<<<<<<<
 *             if write_mode and persist:
 *                 cmode |= NC_WRITE | NC_PERSIST
*/
    __pyx_t_3 = __Pyx_PyLong_From_int(__pyx_v_cmode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2471, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_NC_DISKLESS); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2471, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_4 = PyNumber_InPlaceOr(__pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2471, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_13 = __Pyx_PyLong_As_int(__pyx_t_4); if (unlikely((__pyx_t_13 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2471, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_cmode = __pyx_t_13;

    /* "netCDF4/_netCDF4.pyx":2472
 *         if diskless:
 *             cmode |= NC_DISKLESS
 *             if write_mode and persist:             # <<<<<<<<<<<<<<
 *                 cmode |= NC_WRITE | NC_PERSIST
 * 
*/
    if (__pyx_v_write_mode) {
    } else {
      __pyx_t_1 = __pyx_v_write_mode;
      goto __pyx_L38_bool_binop_done;
    }
    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_persist); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 2472, __pyx_L1_error)
    __pyx_t_1 = __pyx_t_2;
    __pyx_L38_bool_binop_done:;
    if (__pyx_t_1) {

      /* "netCDF4/_netCDF4.pyx":2473
 *             cmode |= NC_DISKLESS
 *             if write_mode and persist:
 *                 cmode |= NC_WRITE | NC_PERSIST             # <<<<<<<<<<<<<<
 * 
 *         if write_mode:
*/
      __pyx_t_4 = __Pyx_PyLong_From_int(__pyx_v_cmode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2473, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_6 = __Pyx_PyLong_From___pyx_anon_enum(NC_WRITE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2473, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_NC_PERSIST); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2473, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_5 = PyNumber_Or(__pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2473, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_3 = PyNumber_InPlaceOr(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2473, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_13 = __Pyx_PyLong_As_int(__pyx_t_3); if (unlikely((__pyx_t_13 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2473, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_v_cmode = __pyx_t_13;

      /* "netCDF4/_netCDF4.pyx":2472
 *         if diskless:
 *             cmode |= NC_DISKLESS
 *             if write_mode and persist:             # <<<<<<<<<<<<<<
 *                 cmode |= NC_WRITE | NC_PERSIST
 * 
*/
    }

    /* "netCDF4/_netCDF4.pyx":2470
 *                 cmode |= NC_SHARE
 * 
 *         if diskless:             # <<<<<<<<<<<<<<
 *             cmode |= NC_DISKLESS
 *             if write_mode and persist:
*/
  }

  /* "netCDF4/_netCDF4.pyx":2475
 *                 cmode |= NC_WRITE | NC_PERSIST
 * 
 *         if write_mode:             # <<<<<<<<<<<<<<
 *             _set_default_format(format=format)
 *             if memory is not None:
*/
  if (__pyx_v_write_mode) {

    /* "netCDF4/_netCDF4.pyx":2476
 * 
 *         if write_mode:
 *             _set_default_format(format=format)             # <<<<<<<<<<<<<<
 *             if memory is not None:
 *                 if not __has_nc_create_mem__:
*/
    __pyx_t_5 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_set_default_format); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2476, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_7 = 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_7 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_5, NULL};
      __pyx_t_6 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2476, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_format, __pyx_v_format, __pyx_t_6, __pyx_callargs+1, 0) < (0)) __PYX_ERR(0, 2476, __pyx_L1_error)
      __pyx_t_3 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_7, (1-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_6);
      __Pyx_XDECREF(__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(0, 2476, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "netCDF4/_netCDF4.pyx":2477
 *         if write_mode:
 *             _set_default_format(format=format)
 *             if memory is not None:             # <<<<<<<<<<<<<<
 *                 if not __has_nc_create_mem__:
 *                     raise NetCDF4MissingFeatureException("nc_create_mem", "4.6.2")
*/
    __pyx_t_1 = (__pyx_v_memory != Py_None);
    if (__pyx_t_1) {

      /* "netCDF4/_netCDF4.pyx":2478
 *             _set_default_format(format=format)
 *             if memory is not None:
 *                 if not __has_nc_create_mem__:             # <<<<<<<<<<<<<<
 *                     raise NetCDF4MissingFeatureException("nc_create_mem", "4.6.2")
 * 
*/
      __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_has_nc_create_mem); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2478, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 2478, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_2 = (!__pyx_t_1);
      if (unlikely(__pyx_t_2)) {

        /* "netCDF4/_netCDF4.pyx":2479
 *             if memory is not None:
 *                 if not __has_nc_create_mem__:
 *                     raise NetCDF4MissingFeatureException("nc_create_mem", "4.6.2")             # <<<<<<<<<<<<<<
 * 
 *                 # if memory is not None and mode='w', memory
*/
        __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_NetCDF4MissingFeatureException); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2479, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_mstate_global->__pyx_tuple[3], NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2479, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_Raise(__pyx_t_4, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __PYX_ERR(0, 2479, __pyx_L1_error)

        /* "netCDF4/_netCDF4.pyx":2478
 *             _set_default_format(format=format)
 *             if memory is not None:
 *                 if not __has_nc_create_mem__:             # <<<<<<<<<<<<<<
 *                     raise NetCDF4MissingFeatureException("nc_create_mem", "4.6.2")
 * 
*/
      }

      /* "netCDF4/_netCDF4.pyx":2483
 *                 # if memory is not None and mode='w', memory
 *                 # kwarg is interpreted as advisory size.
 *                 initialsize = <size_t>memory             # <<<<<<<<<<<<<<
 *                 with nogil:
 *                     ierr = nc_create_mem(path, 0, initialsize, &grpid)
*/
      __pyx_t_7 = __Pyx_PyLong_As_size_t(__pyx_v_memory); if (unlikely((__pyx_t_7 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2483, __pyx_L1_error)
      __pyx_v_initialsize = ((size_t)__pyx_t_7);

      /* "netCDF4/_netCDF4.pyx":2484
 *                 # kwarg is interpreted as advisory size.
 *                 initialsize = <size_t>memory
 *                 with nogil:             # <<<<<<<<<<<<<<
 *                     ierr = nc_create_mem(path, 0, initialsize, &grpid)
 *                 self._inmemory = True # checked in close method
*/
      {
          PyThreadState * _save;
          _save = PyEval_SaveThread();
          __Pyx_FastGIL_Remember();
          /*try:*/ {

            /* "netCDF4/_netCDF4.pyx":2485
 *                 initialsize = <size_t>memory
 *                 with nogil:
 *                     ierr = nc_create_mem(path, 0, initialsize, &grpid)             # <<<<<<<<<<<<<<
 *                 self._inmemory = True # checked in close method
 * 
*/
            __pyx_v_ierr = nc_create_mem(__pyx_v_path, 0, __pyx_v_initialsize, (&__pyx_v_grpid));
          }

          /* "netCDF4/_netCDF4.pyx":2484
 *                 # kwarg is interpreted as advisory size.
 *                 initialsize = <size_t>memory
 *                 with nogil:             # <<<<<<<<<<<<<<
 *                     ierr = nc_create_mem(path, 0, initialsize, &grpid)
 *                 self._inmemory = True # checked in close method
*/
          /*finally:*/ {
            /*normal exit:*/{
              __Pyx_FastGIL_Forget();
              PyEval_RestoreThread(_save);
              goto __pyx_L45;
            }
            __pyx_L45:;
          }
      }

      /* "netCDF4/_netCDF4.pyx":2486
 *                 with nogil:
 *                     ierr = nc_create_mem(path, 0, initialsize, &grpid)
 *                 self._inmemory = True # checked in close method             # <<<<<<<<<<<<<<
 * 
 *             else:
*/
      __Pyx_INCREF(Py_True);
      __Pyx_GIVEREF(Py_True);
      __Pyx_GOTREF(__pyx_v_self->_inmemory);
      __Pyx_DECREF(__pyx_v_self->_inmemory);
      __pyx_v_self->_inmemory = Py_True;

      /* "netCDF4/_netCDF4.pyx":2477
 *         if write_mode:
 *             _set_default_format(format=format)
 *             if memory is not None:             # <<<<<<<<<<<<<<
 *                 if not __has_nc_create_mem__:
 *                     raise NetCDF4MissingFeatureException("nc_create_mem", "4.6.2")
*/
      goto __pyx_L41;
    }

    /* "netCDF4/_netCDF4.pyx":2489
 * 
 *             else:
 *                 if parallel:             # <<<<<<<<<<<<<<
 *                     with nogil:
 *                         ierr = nc_create_par(path, cmode | parmode, mpicomm, mpiinfo, &grpid)
*/
    /*else*/ {
      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_parallel); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 2489, __pyx_L1_error)
      if (__pyx_t_2) {

        /* "netCDF4/_netCDF4.pyx":2490
 *             else:
 *                 if parallel:
 *                     with nogil:             # <<<<<<<<<<<<<<
 *                         ierr = nc_create_par(path, cmode | parmode, mpicomm, mpiinfo, &grpid)
 *                 else:
*/
        {
            PyThreadState * _save;
            _save = PyEval_SaveThread();
            __Pyx_FastGIL_Remember();
            /*try:*/ {

              /* "netCDF4/_netCDF4.pyx":2491
 *                 if parallel:
 *                     with nogil:
 *                         ierr = nc_create_par(path, cmode | parmode, mpicomm, mpiinfo, &grpid)             # <<<<<<<<<<<<<<
 *                 else:
 *                     with nogil:
*/
              __pyx_v_ierr = nc_create_par(__pyx_v_path, (__pyx_v_cmode | __pyx_v_parmode), __pyx_v_mpicomm, __pyx_v_mpiinfo, (&__pyx_v_grpid));
            }

            /* "netCDF4/_netCDF4.pyx":2490
 *             else:
 *                 if parallel:
 *                     with nogil:             # <<<<<<<<<<<<<<
 *                         ierr = nc_create_par(path, cmode | parmode, mpicomm, mpiinfo, &grpid)
 *                 else:
*/
            /*finally:*/ {
              /*normal exit:*/{
                __Pyx_FastGIL_Forget();
                PyEval_RestoreThread(_save);
                goto __pyx_L49;
              }
              __pyx_L49:;
            }
        }

        /* "netCDF4/_netCDF4.pyx":2489
 * 
 *             else:
 *                 if parallel:             # <<<<<<<<<<<<<<
 *                     with nogil:
 *                         ierr = nc_create_par(path, cmode | parmode, mpicomm, mpiinfo, &grpid)
*/
        goto __pyx_L46;
      }

      /* "netCDF4/_netCDF4.pyx":2493
 *                         ierr = nc_create_par(path, cmode | parmode, mpicomm, mpiinfo, &grpid)
 *                 else:
 *                     with nogil:             # <<<<<<<<<<<<<<
 *                         ierr = nc_create(path, cmode, &grpid)
 * 
*/
      /*else*/ {
        {
            PyThreadState * _save;
            _save = PyEval_SaveThread();
            __Pyx_FastGIL_Remember();
            /*try:*/ {

              /* "netCDF4/_netCDF4.pyx":2494
 *                 else:
 *                     with nogil:
 *                         ierr = nc_create(path, cmode, &grpid)             # <<<<<<<<<<<<<<
 * 
 *         elif read_mode and memory is not None:
*/
              __pyx_v_ierr = nc_create(__pyx_v_path, __pyx_v_cmode, (&__pyx_v_grpid));
            }

            /* "netCDF4/_netCDF4.pyx":2493
 *                         ierr = nc_create_par(path, cmode | parmode, mpicomm, mpiinfo, &grpid)
 *                 else:
 *                     with nogil:             # <<<<<<<<<<<<<<
 *                         ierr = nc_create(path, cmode, &grpid)
 * 
*/
            /*finally:*/ {
              /*normal exit:*/{
                __Pyx_FastGIL_Forget();
                PyEval_RestoreThread(_save);
                goto __pyx_L52;
              }
              __pyx_L52:;
            }
        }
      }
      __pyx_L46:;
    }
    __pyx_L41:;

    /* "netCDF4/_netCDF4.pyx":2475
 *                 cmode |= NC_WRITE | NC_PERSIST
 * 
 *         if write_mode:             # <<<<<<<<<<<<<<
 *             _set_default_format(format=format)
 *             if memory is not None:
*/
    goto __pyx_L40;
  }

  /* "netCDF4/_netCDF4.pyx":2496
 *                         ierr = nc_create(path, cmode, &grpid)
 * 
 *         elif read_mode and memory is not None:             # <<<<<<<<<<<<<<
 *             if not __has_nc_open_mem__:
 *                 raise NetCDF4MissingFeatureException("nc_open_mem", "4.4.1")
*/
  if (__pyx_v_read_mode) {
  } else {
    __pyx_t_2 = __pyx_v_read_mode;
    goto __pyx_L53_bool_binop_done;
  }
  __pyx_t_1 = (__pyx_v_memory != Py_None);
  __pyx_t_2 = __pyx_t_1;
  __pyx_L53_bool_binop_done:;
  if (__pyx_t_2) {

    /* "netCDF4/_netCDF4.pyx":2497
 * 
 *         elif read_mode and memory is not None:
 *             if not __has_nc_open_mem__:             # <<<<<<<<<<<<<<
 *                 raise NetCDF4MissingFeatureException("nc_open_mem", "4.4.1")
 * 
*/
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_has_nc_open_mem); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2497, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 2497, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_1 = (!__pyx_t_2);
    if (unlikely(__pyx_t_1)) {

      /* "netCDF4/_netCDF4.pyx":2498
 *         elif read_mode and memory is not None:
 *             if not __has_nc_open_mem__:
 *                 raise NetCDF4MissingFeatureException("nc_open_mem", "4.4.1")             # <<<<<<<<<<<<<<
 * 
 *             # Store reference to memory
*/
      __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_NetCDF4MissingFeatureException); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2498, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_mstate_global->__pyx_tuple[4], NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2498, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_Raise(__pyx_t_3, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __PYX_ERR(0, 2498, __pyx_L1_error)

      /* "netCDF4/_netCDF4.pyx":2497
 * 
 *         elif read_mode and memory is not None:
 *             if not __has_nc_open_mem__:             # <<<<<<<<<<<<<<
 *                 raise NetCDF4MissingFeatureException("nc_open_mem", "4.4.1")
 * 
*/
    }

    /* "netCDF4/_netCDF4.pyx":2501
 * 
 *             # Store reference to memory
 *             result = PyObject_GetBuffer(             # <<<<<<<<<<<<<<
 *                 memory, &self._buffer, PyBUF_SIMPLE | PyBUF_ANY_CONTIGUOUS
 *             )
*/
    __pyx_t_13 = PyObject_GetBuffer(__pyx_v_memory, (&__pyx_v_self->_buffer), (PyBUF_SIMPLE | PyBUF_ANY_CONTIGUOUS)); if (unlikely(__pyx_t_13 == ((int)-1))) __PYX_ERR(0, 2501, __pyx_L1_error)
    __pyx_v_result = __pyx_t_13;

    /* "netCDF4/_netCDF4.pyx":2504
 *                 memory, &self._buffer, PyBUF_SIMPLE | PyBUF_ANY_CONTIGUOUS
 *             )
 *             if result != 0:             # <<<<<<<<<<<<<<
 *                 raise ValueError(f"Unable to retrieve Buffer from {memory}")
 * 
*/
    __pyx_t_1 = (__pyx_v_result != 0);
    if (unlikely(__pyx_t_1)) {

      /* "netCDF4/_netCDF4.pyx":2505
 *             )
 *             if result != 0:
 *                 raise ValueError(f"Unable to retrieve Buffer from {memory}")             # <<<<<<<<<<<<<<
 * 
 *             with nogil:
*/
      __pyx_t_4 = NULL;
      __pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_v_memory, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2505, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_5 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_Unable_to_retrieve_Buffer_from, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2505, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_7 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_4, __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_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2505, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
      }
      __Pyx_Raise(__pyx_t_3, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __PYX_ERR(0, 2505, __pyx_L1_error)

      /* "netCDF4/_netCDF4.pyx":2504
 *                 memory, &self._buffer, PyBUF_SIMPLE | PyBUF_ANY_CONTIGUOUS
 *             )
 *             if result != 0:             # <<<<<<<<<<<<<<
 *                 raise ValueError(f"Unable to retrieve Buffer from {memory}")
 * 
*/
    }

    /* "netCDF4/_netCDF4.pyx":2507
 *                 raise ValueError(f"Unable to retrieve Buffer from {memory}")
 * 
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 ierr = nc_open_mem(
 *                     <char *>path, 0, self._buffer.len, <void *>self._buffer.buf, &grpid
*/
    {
        PyThreadState * _save;
        _save = PyEval_SaveThread();
        __Pyx_FastGIL_Remember();
        /*try:*/ {

          /* "netCDF4/_netCDF4.pyx":2508
 * 
 *             with nogil:
 *                 ierr = nc_open_mem(             # <<<<<<<<<<<<<<
 *                     <char *>path, 0, self._buffer.len, <void *>self._buffer.buf, &grpid
 *                 )
*/
          __pyx_v_ierr = nc_open_mem(((char *)__pyx_v_path), 0, __pyx_v_self->_buffer.len, ((void *)__pyx_v_self->_buffer.buf), (&__pyx_v_grpid));
        }

        /* "netCDF4/_netCDF4.pyx":2507
 *                 raise ValueError(f"Unable to retrieve Buffer from {memory}")
 * 
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 ierr = nc_open_mem(
 *                     <char *>path, 0, self._buffer.len, <void *>self._buffer.buf, &grpid
*/
        /*finally:*/ {
          /*normal exit:*/{
            __Pyx_FastGIL_Forget();
            PyEval_RestoreThread(_save);
            goto __pyx_L59;
          }
          __pyx_L59:;
        }
    }

    /* "netCDF4/_netCDF4.pyx":2496
 *                         ierr = nc_create(path, cmode, &grpid)
 * 
 *         elif read_mode and memory is not None:             # <<<<<<<<<<<<<<
 *             if not __has_nc_open_mem__:
 *                 raise NetCDF4MissingFeatureException("nc_open_mem", "4.4.1")
*/
    goto __pyx_L40;
  }

  /* "netCDF4/_netCDF4.pyx":2514
 *         else:
 *             # Read or append mode, flags already all set in cmode
 *             if parallel:             # <<<<<<<<<<<<<<
 *                 with nogil:
 *                     ierr = nc_open_par(path, cmode | NC_MPIIO, mpicomm, mpiinfo, &grpid)
*/
  /*else*/ {
    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_parallel); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 2514, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "netCDF4/_netCDF4.pyx":2515
 *             # Read or append mode, flags already all set in cmode
 *             if parallel:
 *                 with nogil:             # <<<<<<<<<<<<<<
 *                     ierr = nc_open_par(path, cmode | NC_MPIIO, mpicomm, mpiinfo, &grpid)
 *             else:
*/
      {
          PyThreadState * _save;
          _save = PyEval_SaveThread();
          __Pyx_FastGIL_Remember();
          /*try:*/ {

            /* "netCDF4/_netCDF4.pyx":2516
 *             if parallel:
 *                 with nogil:
 *                     ierr = nc_open_par(path, cmode | NC_MPIIO, mpicomm, mpiinfo, &grpid)             # <<<<<<<<<<<<<<
 *             else:
 *                 with nogil:
*/
            __pyx_v_ierr = nc_open_par(__pyx_v_path, (__pyx_v_cmode | NC_MPIIO), __pyx_v_mpicomm, __pyx_v_mpiinfo, (&__pyx_v_grpid));
          }

          /* "netCDF4/_netCDF4.pyx":2515
 *             # Read or append mode, flags already all set in cmode
 *             if parallel:
 *                 with nogil:             # <<<<<<<<<<<<<<
 *                     ierr = nc_open_par(path, cmode | NC_MPIIO, mpicomm, mpiinfo, &grpid)
 *             else:
*/
          /*finally:*/ {
            /*normal exit:*/{
              __Pyx_FastGIL_Forget();
              PyEval_RestoreThread(_save);
              goto __pyx_L63;
            }
            __pyx_L63:;
          }
      }

      /* "netCDF4/_netCDF4.pyx":2514
 *         else:
 *             # Read or append mode, flags already all set in cmode
 *             if parallel:             # <<<<<<<<<<<<<<
 *                 with nogil:
 *                     ierr = nc_open_par(path, cmode | NC_MPIIO, mpicomm, mpiinfo, &grpid)
*/
      goto __pyx_L60;
    }

    /* "netCDF4/_netCDF4.pyx":2518
 *                     ierr = nc_open_par(path, cmode | NC_MPIIO, mpicomm, mpiinfo, &grpid)
 *             else:
 *                 with nogil:             # <<<<<<<<<<<<<<
 *                     ierr = nc_open(path, cmode, &grpid)
 * 
*/
    /*else*/ {
      {
          PyThreadState * _save;
          _save = PyEval_SaveThread();
          __Pyx_FastGIL_Remember();
          /*try:*/ {

            /* "netCDF4/_netCDF4.pyx":2519
 *             else:
 *                 with nogil:
 *                     ierr = nc_open(path, cmode, &grpid)             # <<<<<<<<<<<<<<
 * 
 *         _ensure_nc_success(ierr, err_cls=OSError, filename=path)
*/
            __pyx_v_ierr = nc_open(__pyx_v_path, __pyx_v_cmode, (&__pyx_v_grpid));
          }

          /* "netCDF4/_netCDF4.pyx":2518
 *                     ierr = nc_open_par(path, cmode | NC_MPIIO, mpicomm, mpiinfo, &grpid)
 *             else:
 *                 with nogil:             # <<<<<<<<<<<<<<
 *                     ierr = nc_open(path, cmode, &grpid)
 * 
*/
          /*finally:*/ {
            /*normal exit:*/{
              __Pyx_FastGIL_Forget();
              PyEval_RestoreThread(_save);
              goto __pyx_L66;
            }
            __pyx_L66:;
          }
      }
    }
    __pyx_L60:;
  }
  __pyx_L40:;

  /* "netCDF4/_netCDF4.pyx":2521
 *                     ierr = nc_open(path, cmode, &grpid)
 * 
 *         _ensure_nc_success(ierr, err_cls=OSError, filename=path)             # <<<<<<<<<<<<<<
 * 
 *         # data model and file format attributes
*/
  __pyx_t_5 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2521, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2521, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_16 = __Pyx_PyBytes_FromString(__pyx_v_path); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 2521, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_16);
  __pyx_t_7 = 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_7 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 2 : 0)] = {__pyx_t_5, __pyx_t_6};
    __pyx_t_17 = __Pyx_MakeVectorcallBuilderKwds(2); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 2521, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_17);
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_err_cls, ((PyObject *)(((PyTypeObject*)PyExc_OSError))), __pyx_t_17, __pyx_callargs+2, 0) < (0)) __PYX_ERR(0, 2521, __pyx_L1_error)
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_filename, __pyx_t_16, __pyx_t_17, __pyx_callargs+2, 1) < (0)) __PYX_ERR(0, 2521, __pyx_L1_error)
    __pyx_t_3 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_17);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
    __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2521, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "netCDF4/_netCDF4.pyx":2524
 * 
 *         # data model and file format attributes
 *         self.data_model = _get_format(grpid)             # <<<<<<<<<<<<<<
 *         # data_model attribute used to be file_format (versions < 1.0.8), retain
 *         # file_format for backwards compatibility.
*/
  __pyx_t_3 = __pyx_f_7netCDF4_8_netCDF4__get_format(__pyx_v_grpid); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2524, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  __Pyx_GOTREF(__pyx_v_self->data_model);
  __Pyx_DECREF(__pyx_v_self->data_model);
  __pyx_v_self->data_model = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "netCDF4/_netCDF4.pyx":2527
 *         # data_model attribute used to be file_format (versions < 1.0.8), retain
 *         # file_format for backwards compatibility.
 *         self.file_format = self.data_model             # <<<<<<<<<<<<<<
 *         self.disk_format = _get_full_format(grpid)
 *         self._grpid = grpid
*/
  __pyx_t_3 = __pyx_v_self->data_model;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  __Pyx_GOTREF(__pyx_v_self->file_format);
  __Pyx_DECREF(__pyx_v_self->file_format);
  __pyx_v_self->file_format = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "netCDF4/_netCDF4.pyx":2528
 *         # file_format for backwards compatibility.
 *         self.file_format = self.data_model
 *         self.disk_format = _get_full_format(grpid)             # <<<<<<<<<<<<<<
 *         self._grpid = grpid
 *         self._isopen = 1
*/
  __pyx_t_3 = __pyx_f_7netCDF4_8_netCDF4__get_full_format(__pyx_v_grpid); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2528, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  __Pyx_GOTREF(__pyx_v_self->disk_format);
  __Pyx_DECREF(__pyx_v_self->disk_format);
  __pyx_v_self->disk_format = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "netCDF4/_netCDF4.pyx":2529
 *         self.file_format = self.data_model
 *         self.disk_format = _get_full_format(grpid)
 *         self._grpid = grpid             # <<<<<<<<<<<<<<
 *         self._isopen = 1
 *         self.path = '/'
*/
  __pyx_v_self->_grpid = __pyx_v_grpid;

  /* "netCDF4/_netCDF4.pyx":2530
 *         self.disk_format = _get_full_format(grpid)
 *         self._grpid = grpid
 *         self._isopen = 1             # <<<<<<<<<<<<<<
 *         self.path = '/'
 *         self.parent = None
*/
  __pyx_v_self->_isopen = 1;

  /* "netCDF4/_netCDF4.pyx":2531
 *         self._grpid = grpid
 *         self._isopen = 1
 *         self.path = '/'             # <<<<<<<<<<<<<<
 *         self.parent = None
 *         self.keepweakref = keepweakref
*/
  __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u__10);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_kp_u__10);
  __Pyx_GOTREF(__pyx_v_self->path);
  __Pyx_DECREF(__pyx_v_self->path);
  __pyx_v_self->path = __pyx_mstate_global->__pyx_kp_u__10;

  /* "netCDF4/_netCDF4.pyx":2532
 *         self._isopen = 1
 *         self.path = '/'
 *         self.parent = None             # <<<<<<<<<<<<<<
 *         self.keepweakref = keepweakref
 *         self._ncstring_attrs__ = False
*/
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->parent);
  __Pyx_DECREF(__pyx_v_self->parent);
  __pyx_v_self->parent = Py_None;

  /* "netCDF4/_netCDF4.pyx":2533
 *         self.path = '/'
 *         self.parent = None
 *         self.keepweakref = keepweakref             # <<<<<<<<<<<<<<
 *         self._ncstring_attrs__ = False
 *         # get compound, vlen and enum types in the root Group.
*/
  __Pyx_INCREF(__pyx_v_keepweakref);
  __Pyx_GIVEREF(__pyx_v_keepweakref);
  __Pyx_GOTREF(__pyx_v_self->keepweakref);
  __Pyx_DECREF(__pyx_v_self->keepweakref);
  __pyx_v_self->keepweakref = __pyx_v_keepweakref;

  /* "netCDF4/_netCDF4.pyx":2534
 *         self.parent = None
 *         self.keepweakref = keepweakref
 *         self._ncstring_attrs__ = False             # <<<<<<<<<<<<<<
 *         # get compound, vlen and enum types in the root Group.
 *         self.cmptypes, self.vltypes, self.enumtypes = _get_types(self)
*/
  __Pyx_INCREF(Py_False);
  __Pyx_GIVEREF(Py_False);
  __Pyx_GOTREF(__pyx_v_self->_ncstring_attrs__);
  __Pyx_DECREF(__pyx_v_self->_ncstring_attrs__);
  __pyx_v_self->_ncstring_attrs__ = Py_False;

  /* "netCDF4/_netCDF4.pyx":2536
 *         self._ncstring_attrs__ = False
 *         # get compound, vlen and enum types in the root Group.
 *         self.cmptypes, self.vltypes, self.enumtypes = _get_types(self)             # <<<<<<<<<<<<<<
 *         # get dimensions in the root group.
 *         self.dimensions = _get_dims(self)
*/
  __pyx_t_3 = __pyx_f_7netCDF4_8_netCDF4__get_types(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2536, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  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 != 3)) {
      if (size > 3) __Pyx_RaiseTooManyValuesError(3);
      else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
      __PYX_ERR(0, 2536, __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_17 = PyTuple_GET_ITEM(sequence, 1);
      __Pyx_INCREF(__pyx_t_17);
      __pyx_t_16 = PyTuple_GET_ITEM(sequence, 2);
      __Pyx_INCREF(__pyx_t_16);
    } else {
      __pyx_t_4 = __Pyx_PyList_GetItemRefFast(sequence, 0, __Pyx_ReferenceSharing_SharedReference);
      if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2536, __pyx_L1_error)
      __Pyx_XGOTREF(__pyx_t_4);
      __pyx_t_17 = __Pyx_PyList_GetItemRefFast(sequence, 1, __Pyx_ReferenceSharing_SharedReference);
      if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 2536, __pyx_L1_error)
      __Pyx_XGOTREF(__pyx_t_17);
      __pyx_t_16 = __Pyx_PyList_GetItemRefFast(sequence, 2, __Pyx_ReferenceSharing_SharedReference);
      if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 2536, __pyx_L1_error)
      __Pyx_XGOTREF(__pyx_t_16);
    }
    #else
    __pyx_t_4 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2536, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_17 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 2536, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_17);
    __pyx_t_16 = __Pyx_PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 2536, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_16);
    #endif
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else {
    Py_ssize_t index = -1;
    __pyx_t_6 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2536, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_18 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_6);
    index = 0; __pyx_t_4 = __pyx_t_18(__pyx_t_6); if (unlikely(!__pyx_t_4)) goto __pyx_L67_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_4);
    index = 1; __pyx_t_17 = __pyx_t_18(__pyx_t_6); if (unlikely(!__pyx_t_17)) goto __pyx_L67_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_17);
    index = 2; __pyx_t_16 = __pyx_t_18(__pyx_t_6); if (unlikely(!__pyx_t_16)) goto __pyx_L67_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_16);
    if (__Pyx_IternextUnpackEndCheck(__pyx_t_18(__pyx_t_6), 3) < (0)) __PYX_ERR(0, 2536, __pyx_L1_error)
    __pyx_t_18 = NULL;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    goto __pyx_L68_unpacking_done;
    __pyx_L67_unpacking_failed:;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_18 = NULL;
    if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
    __PYX_ERR(0, 2536, __pyx_L1_error)
    __pyx_L68_unpacking_done:;
  }
  __Pyx_GIVEREF(__pyx_t_4);
  __Pyx_GOTREF(__pyx_v_self->cmptypes);
  __Pyx_DECREF(__pyx_v_self->cmptypes);
  __pyx_v_self->cmptypes = __pyx_t_4;
  __pyx_t_4 = 0;
  __Pyx_GIVEREF(__pyx_t_17);
  __Pyx_GOTREF(__pyx_v_self->vltypes);
  __Pyx_DECREF(__pyx_v_self->vltypes);
  __pyx_v_self->vltypes = __pyx_t_17;
  __pyx_t_17 = 0;
  __Pyx_GIVEREF(__pyx_t_16);
  __Pyx_GOTREF(__pyx_v_self->enumtypes);
  __Pyx_DECREF(__pyx_v_self->enumtypes);
  __pyx_v_self->enumtypes = __pyx_t_16;
  __pyx_t_16 = 0;

  /* "netCDF4/_netCDF4.pyx":2538
 *         self.cmptypes, self.vltypes, self.enumtypes = _get_types(self)
 *         # get dimensions in the root group.
 *         self.dimensions = _get_dims(self)             # <<<<<<<<<<<<<<
 *         # get variables in the root Group.
 *         self.variables = _get_vars(self, self.auto_complex)
*/
  __pyx_t_3 = __pyx_f_7netCDF4_8_netCDF4__get_dims(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2538, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  __Pyx_GOTREF(__pyx_v_self->dimensions);
  __Pyx_DECREF(__pyx_v_self->dimensions);
  __pyx_v_self->dimensions = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "netCDF4/_netCDF4.pyx":2540
 *         self.dimensions = _get_dims(self)
 *         # get variables in the root Group.
 *         self.variables = _get_vars(self, self.auto_complex)             # <<<<<<<<<<<<<<
 *         # get groups in the root Group.
 *         if self.data_model == 'NETCDF4':
*/
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->auto_complex); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2540, __pyx_L1_error)
  __pyx_t_19.__pyx_n = 1;
  __pyx_t_19.auto_complex = __pyx_t_1;
  __pyx_t_3 = __pyx_f_7netCDF4_8_netCDF4__get_vars(((PyObject *)__pyx_v_self), &__pyx_t_19); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2540, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  __Pyx_GOTREF(__pyx_v_self->variables);
  __Pyx_DECREF(__pyx_v_self->variables);
  __pyx_v_self->variables = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "netCDF4/_netCDF4.pyx":2542
 *         self.variables = _get_vars(self, self.auto_complex)
 *         # get groups in the root Group.
 *         if self.data_model == 'NETCDF4':             # <<<<<<<<<<<<<<
 *             self.groups = _get_grps(self)
 *         else:
*/
  __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v_self->data_model, __pyx_mstate_global->__pyx_n_u_NETCDF4, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 2542, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "netCDF4/_netCDF4.pyx":2543
 *         # get groups in the root Group.
 *         if self.data_model == 'NETCDF4':
 *             self.groups = _get_grps(self)             # <<<<<<<<<<<<<<
 *         else:
 *             self.groups = dict()
*/
    __pyx_t_3 = __pyx_f_7netCDF4_8_netCDF4__get_grps(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2543, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __Pyx_GOTREF(__pyx_v_self->groups);
    __Pyx_DECREF(__pyx_v_self->groups);
    __pyx_v_self->groups = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "netCDF4/_netCDF4.pyx":2542
 *         self.variables = _get_vars(self, self.auto_complex)
 *         # get groups in the root Group.
 *         if self.data_model == 'NETCDF4':             # <<<<<<<<<<<<<<
 *             self.groups = _get_grps(self)
 *         else:
*/
    goto __pyx_L69;
  }

  /* "netCDF4/_netCDF4.pyx":2545
 *             self.groups = _get_grps(self)
 *         else:
 *             self.groups = dict()             # <<<<<<<<<<<<<<
 * 
 *     # these allow Dataset objects to be used via a "with" statement.
*/
  /*else*/ {
    __pyx_t_3 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2545, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __Pyx_GOTREF(__pyx_v_self->groups);
    __Pyx_DECREF(__pyx_v_self->groups);
    __pyx_v_self->groups = __pyx_t_3;
    __pyx_t_3 = 0;
  }
  __pyx_L69:;

  /* "netCDF4/_netCDF4.pyx":2300
 *     keepweakref, _ncstring_attrs__, auto_complex
 * 
 *     def __init__(self, filename, mode='r', clobber=True, format='NETCDF4',             # <<<<<<<<<<<<<<
 *                      diskless=False, persist=False, keepweakref=False,
 *                      memory=None, encoding=None, parallel=False,
*/

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_16);
  __Pyx_XDECREF(__pyx_t_17);
  __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_bytestr);
  __Pyx_XDECREF(__pyx_v_mode);
  __Pyx_XDECREF(__pyx_v_clobber);
  __Pyx_XDECREF(__pyx_v_encoding);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":2548
 * 
 *     # these allow Dataset objects to be used via a "with" statement.
 *     def __enter__(self):             # <<<<<<<<<<<<<<
 *         return self
 *     def __exit__(self,atype,value,traceback):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_3__enter__(PyObject *__pyx_v_self, 
#if 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_7netCDF4_8_netCDF4_7Dataset_3__enter__ = {"__enter__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_3__enter__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_3__enter__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__enter__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__enter__", 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("__enter__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_7Dataset_2__enter__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_2__enter__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__enter__", 0);

  /* "netCDF4/_netCDF4.pyx":2549
 *     # these allow Dataset objects to be used via a "with" statement.
 *     def __enter__(self):
 *         return self             # <<<<<<<<<<<<<<
 *     def __exit__(self,atype,value,traceback):
 *         self.close()
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_r = ((PyObject *)__pyx_v_self);
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":2548
 * 
 *     # these allow Dataset objects to be used via a "with" statement.
 *     def __enter__(self):             # <<<<<<<<<<<<<<
 *         return self
 *     def __exit__(self,atype,value,traceback):
*/

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

/* "netCDF4/_netCDF4.pyx":2550
 *     def __enter__(self):
 *         return self
 *     def __exit__(self,atype,value,traceback):             # <<<<<<<<<<<<<<
 *         self.close()
 * 
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_5__exit__(PyObject *__pyx_v_self, 
#if 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_7netCDF4_8_netCDF4_7Dataset_5__exit__ = {"__exit__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_5__exit__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_5__exit__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v_atype = 0;
  CYTHON_UNUSED PyObject *__pyx_v_value = 0;
  CYTHON_UNUSED PyObject *__pyx_v_traceback = 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("__exit__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_atype,&__pyx_mstate_global->__pyx_n_u_value,&__pyx_mstate_global->__pyx_n_u_traceback,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 2550, __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(0, 2550, __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(0, 2550, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 2550, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__exit__", 0) < (0)) __PYX_ERR(0, 2550, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 3; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, i); __PYX_ERR(0, 2550, __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(0, 2550, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 2550, __pyx_L3_error)
      values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 2550, __pyx_L3_error)
    }
    __pyx_v_atype = values[0];
    __pyx_v_value = values[1];
    __pyx_v_traceback = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, __pyx_nargs); __PYX_ERR(0, 2550, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.__exit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_7Dataset_4__exit__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self), __pyx_v_atype, __pyx_v_value, __pyx_v_traceback);

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_4__exit__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_atype, CYTHON_UNUSED PyObject *__pyx_v_value, CYTHON_UNUSED PyObject *__pyx_v_traceback) {
  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("__exit__", 0);

  /* "netCDF4/_netCDF4.pyx":2551
 *         return self
 *     def __exit__(self,atype,value,traceback):
 *         self.close()             # <<<<<<<<<<<<<<
 * 
 *     def __getitem__(self, elem):
*/
  __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_close, __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(0, 2551, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":2550
 *     def __enter__(self):
 *         return self
 *     def __exit__(self,atype,value,traceback):             # <<<<<<<<<<<<<<
 *         self.close()
 * 
*/

  /* 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("netCDF4._netCDF4.Dataset.__exit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":2553
 *         self.close()
 * 
 *     def __getitem__(self, elem):             # <<<<<<<<<<<<<<
 *         # return variable or group defined in relative path.
 *         # split out group names in unix path.
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_7__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_elem); /*proto*/
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_7__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_elem) {
  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_7netCDF4_8_netCDF4_7Dataset_6__getitem__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self), ((PyObject *)__pyx_v_elem));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_6__getitem__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_elem) {
  PyObject *__pyx_v_dirname = NULL;
  PyObject *__pyx_v_lastname = NULL;
  PyObject *__pyx_v_nestedgroups = NULL;
  PyObject *__pyx_v_group = NULL;
  PyObject *__pyx_v_g = NULL;
  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)(PyObject *);
  Py_ssize_t __pyx_t_7;
  PyObject *(*__pyx_t_8)(PyObject *);
  int __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11[3];
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__getitem__", 0);
  __Pyx_INCREF(__pyx_v_elem);

  /* "netCDF4/_netCDF4.pyx":2556
 *         # return variable or group defined in relative path.
 *         # split out group names in unix path.
 *         elem = posixpath.normpath(elem)             # <<<<<<<<<<<<<<
 *         # last name in path, could be a variable or group
 *         dirname, lastname = posixpath.split(elem)
*/
  __pyx_t_2 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_posixpath); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2556, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_normpath); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2556, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_5 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(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_5 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_elem};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_5, (2-__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;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2556, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF_SET(__pyx_v_elem, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":2558
 *         elem = posixpath.normpath(elem)
 *         # last name in path, could be a variable or group
 *         dirname, lastname = posixpath.split(elem)             # <<<<<<<<<<<<<<
 *         nestedgroups = dirname.split('/')
 *         group = self
*/
  __pyx_t_4 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_posixpath); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2558, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_split); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2558, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_5 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(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_elem};
    __pyx_t_1 = __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_1)) __PYX_ERR(0, 2558, __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(0, 2558, __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(0, 2558, __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(0, 2558, __pyx_L1_error)
      __Pyx_XGOTREF(__pyx_t_4);
    }
    #else
    __pyx_t_3 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2558, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2558, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    #endif
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  } else {
    Py_ssize_t index = -1;
    __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2558, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_6 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_2);
    index = 0; __pyx_t_3 = __pyx_t_6(__pyx_t_2); if (unlikely(!__pyx_t_3)) goto __pyx_L3_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_3);
    index = 1; __pyx_t_4 = __pyx_t_6(__pyx_t_2); if (unlikely(!__pyx_t_4)) goto __pyx_L3_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_4);
    if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_2), 2) < (0)) __PYX_ERR(0, 2558, __pyx_L1_error)
    __pyx_t_6 = NULL;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    goto __pyx_L4_unpacking_done;
    __pyx_L3_unpacking_failed:;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_6 = NULL;
    if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
    __PYX_ERR(0, 2558, __pyx_L1_error)
    __pyx_L4_unpacking_done:;
  }
  __pyx_v_dirname = __pyx_t_3;
  __pyx_t_3 = 0;
  __pyx_v_lastname = __pyx_t_4;
  __pyx_t_4 = 0;

  /* "netCDF4/_netCDF4.pyx":2559
 *         # last name in path, could be a variable or group
 *         dirname, lastname = posixpath.split(elem)
 *         nestedgroups = dirname.split('/')             # <<<<<<<<<<<<<<
 *         group = self
 *         # iterate over groups in path.
*/
  __pyx_t_4 = __pyx_v_dirname;
  __Pyx_INCREF(__pyx_t_4);
  __pyx_t_5 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u__10};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_split, __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_1)) __PYX_ERR(0, 2559, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_v_nestedgroups = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":2560
 *         dirname, lastname = posixpath.split(elem)
 *         nestedgroups = dirname.split('/')
 *         group = self             # <<<<<<<<<<<<<<
 *         # iterate over groups in path.
 *         for g in nestedgroups:
*/
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_v_group = ((PyObject *)__pyx_v_self);

  /* "netCDF4/_netCDF4.pyx":2562
 *         group = self
 *         # iterate over groups in path.
 *         for g in nestedgroups:             # <<<<<<<<<<<<<<
 *             if g: group = group.groups[g]
 *         # return last one, either a group or a variable.
*/
  if (likely(PyList_CheckExact(__pyx_v_nestedgroups)) || PyTuple_CheckExact(__pyx_v_nestedgroups)) {
    __pyx_t_1 = __pyx_v_nestedgroups; __Pyx_INCREF(__pyx_t_1);
    __pyx_t_7 = 0;
    __pyx_t_8 = NULL;
  } else {
    __pyx_t_7 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_nestedgroups); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2562, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_8 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2562, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_8)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 2562, __pyx_L1_error)
          #endif
          if (__pyx_t_7 >= __pyx_temp) break;
        }
        __pyx_t_4 = __Pyx_PyList_GetItemRefFast(__pyx_t_1, __pyx_t_7, __Pyx_ReferenceSharing_OwnStrongReference);
        ++__pyx_t_7;
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 2562, __pyx_L1_error)
          #endif
          if (__pyx_t_7 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_7));
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_7);
        #endif
        ++__pyx_t_7;
      }
      if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2562, __pyx_L1_error)
    } else {
      __pyx_t_4 = __pyx_t_8(__pyx_t_1);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 2562, __pyx_L1_error)
          PyErr_Clear();
        }
        break;
      }
    }
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_XDECREF_SET(__pyx_v_g, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "netCDF4/_netCDF4.pyx":2563
 *         # iterate over groups in path.
 *         for g in nestedgroups:
 *             if g: group = group.groups[g]             # <<<<<<<<<<<<<<
 *         # return last one, either a group or a variable.
 *         if lastname in group.groups:
*/
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_g); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 2563, __pyx_L1_error)
    if (__pyx_t_9) {
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_group, __pyx_mstate_global->__pyx_n_u_groups); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2563, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_t_4, __pyx_v_g); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2563, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF_SET(__pyx_v_group, __pyx_t_3);
      __pyx_t_3 = 0;
    }

    /* "netCDF4/_netCDF4.pyx":2562
 *         group = self
 *         # iterate over groups in path.
 *         for g in nestedgroups:             # <<<<<<<<<<<<<<
 *             if g: group = group.groups[g]
 *         # return last one, either a group or a variable.
*/
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":2565
 *             if g: group = group.groups[g]
 *         # return last one, either a group or a variable.
 *         if lastname in group.groups:             # <<<<<<<<<<<<<<
 *             return group.groups[lastname]
 *         elif lastname in group.variables:
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_group, __pyx_mstate_global->__pyx_n_u_groups); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2565, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_9 = (__Pyx_PySequence_ContainsTF(__pyx_v_lastname, __pyx_t_1, Py_EQ)); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 2565, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_9) {

    /* "netCDF4/_netCDF4.pyx":2566
 *         # return last one, either a group or a variable.
 *         if lastname in group.groups:
 *             return group.groups[lastname]             # <<<<<<<<<<<<<<
 *         elif lastname in group.variables:
 *             return group.variables[lastname]
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_group, __pyx_mstate_global->__pyx_n_u_groups); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2566, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_v_lastname); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2566, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "netCDF4/_netCDF4.pyx":2565
 *             if g: group = group.groups[g]
 *         # return last one, either a group or a variable.
 *         if lastname in group.groups:             # <<<<<<<<<<<<<<
 *             return group.groups[lastname]
 *         elif lastname in group.variables:
*/
  }

  /* "netCDF4/_netCDF4.pyx":2567
 *         if lastname in group.groups:
 *             return group.groups[lastname]
 *         elif lastname in group.variables:             # <<<<<<<<<<<<<<
 *             return group.variables[lastname]
 *         else:
*/
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_group, __pyx_mstate_global->__pyx_n_u_variables); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2567, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_9 = (__Pyx_PySequence_ContainsTF(__pyx_v_lastname, __pyx_t_3, Py_EQ)); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 2567, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (likely(__pyx_t_9)) {

    /* "netCDF4/_netCDF4.pyx":2568
 *             return group.groups[lastname]
 *         elif lastname in group.variables:
 *             return group.variables[lastname]             # <<<<<<<<<<<<<<
 *         else:
 *             raise IndexError('%s not found in %s' % (lastname,group.path))
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_group, __pyx_mstate_global->__pyx_n_u_variables); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2568, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_t_3, __pyx_v_lastname); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2568, __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;

    /* "netCDF4/_netCDF4.pyx":2567
 *         if lastname in group.groups:
 *             return group.groups[lastname]
 *         elif lastname in group.variables:             # <<<<<<<<<<<<<<
 *             return group.variables[lastname]
 *         else:
*/
  }

  /* "netCDF4/_netCDF4.pyx":2570
 *             return group.variables[lastname]
 *         else:
 *             raise IndexError('%s not found in %s' % (lastname,group.path))             # <<<<<<<<<<<<<<
 * 
 *     def filepath(self,encoding=None):
*/
  /*else*/ {
    __pyx_t_3 = NULL;
    __pyx_t_4 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Str(__pyx_v_lastname), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2570, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_group, __pyx_mstate_global->__pyx_n_u_path); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2570, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_10 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Str(__pyx_t_2), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2570, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_11[0] = __pyx_t_4;
    __pyx_t_11[1] = __pyx_mstate_global->__pyx_kp_u_not_found_in;
    __pyx_t_11[2] = __pyx_t_10;
    __pyx_t_2 = __Pyx_PyUnicode_Join(__pyx_t_11, 3, __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4) + 14 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_10), 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_10));
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2570, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __pyx_t_5 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_2};
      __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_IndexError)), __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__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(0, 2570, __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(0, 2570, __pyx_L1_error)
  }

  /* "netCDF4/_netCDF4.pyx":2553
 *         self.close()
 * 
 *     def __getitem__(self, elem):             # <<<<<<<<<<<<<<
 *         # return variable or group defined in relative path.
 *         # split out group names in unix path.
*/

  /* 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_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_dirname);
  __Pyx_XDECREF(__pyx_v_lastname);
  __Pyx_XDECREF(__pyx_v_nestedgroups);
  __Pyx_XDECREF(__pyx_v_group);
  __Pyx_XDECREF(__pyx_v_g);
  __Pyx_XDECREF(__pyx_v_elem);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":2572
 *             raise IndexError('%s not found in %s' % (lastname,group.path))
 * 
 *     def filepath(self,encoding=None):             # <<<<<<<<<<<<<<
 *         """**`filepath(self,encoding=None)`**
 * 
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_9filepath(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7netCDF4_8_netCDF4_7Dataset_8filepath, "**`filepath(self,encoding=None)`**\n\n        Get the file system path (or the opendap URL) which was used to\n        open/create the Dataset. Requires netcdf >= 4.1.2.  The path\n        is decoded into a string using `sys.getfilesystemencoding()` by default, this can be\n        changed using the `encoding` kwarg.\n        ");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_7Dataset_9filepath = {"filepath", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_9filepath, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_7Dataset_8filepath};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_9filepath(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_encoding = 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("filepath (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_encoding,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 2572, __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(0, 2572, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "filepath", 0) < (0)) __PYX_ERR(0, 2572, __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(0, 2572, __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_encoding = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("filepath", 0, 0, 1, __pyx_nargs); __PYX_ERR(0, 2572, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.filepath", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_7Dataset_8filepath(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self), __pyx_v_encoding);

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_8filepath(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_encoding) {
  int __pyx_v_ierr;
  size_t __pyx_v_pathlen;
  char *__pyx_v_c_path;
  PyObject *__pyx_v_py_path = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  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_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("filepath", 0);
  __Pyx_INCREF(__pyx_v_encoding);

  /* "netCDF4/_netCDF4.pyx":2580
 *         changed using the `encoding` kwarg.
 *         """
 *         if not __has_nc_inq_path__:             # <<<<<<<<<<<<<<
 *             raise NetCDF4MissingFeatureException("filepath method", "4.1.2")
 * 
*/
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_has_nc_inq_path); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2580, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 2580, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = (!__pyx_t_2);
  if (unlikely(__pyx_t_3)) {

    /* "netCDF4/_netCDF4.pyx":2581
 *         """
 *         if not __has_nc_inq_path__:
 *             raise NetCDF4MissingFeatureException("filepath method", "4.1.2")             # <<<<<<<<<<<<<<
 * 
 *         cdef int ierr
*/
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_NetCDF4MissingFeatureException); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2581, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_mstate_global->__pyx_tuple[5], NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2581, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __PYX_ERR(0, 2581, __pyx_L1_error)

    /* "netCDF4/_netCDF4.pyx":2580
 *         changed using the `encoding` kwarg.
 *         """
 *         if not __has_nc_inq_path__:             # <<<<<<<<<<<<<<
 *             raise NetCDF4MissingFeatureException("filepath method", "4.1.2")
 * 
*/
  }

  /* "netCDF4/_netCDF4.pyx":2586
 *         cdef size_t pathlen
 *         cdef char *c_path
 *         if encoding is None:             # <<<<<<<<<<<<<<
 *             encoding = sys.getfilesystemencoding()
 * 
*/
  __pyx_t_3 = (__pyx_v_encoding == Py_None);
  if (__pyx_t_3) {

    /* "netCDF4/_netCDF4.pyx":2587
 *         cdef char *c_path
 *         if encoding is None:
 *             encoding = sys.getfilesystemencoding()             # <<<<<<<<<<<<<<
 * 
 *         with nogil:
*/
    __pyx_t_1 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_sys); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2587, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_getfilesystemencoding); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2587, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_7 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6);
      assert(__pyx_t_1);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_6, __pyx__function);
      __pyx_t_7 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_1, NULL};
      __pyx_t_4 = __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_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2587, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_DECREF_SET(__pyx_v_encoding, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "netCDF4/_netCDF4.pyx":2586
 *         cdef size_t pathlen
 *         cdef char *c_path
 *         if encoding is None:             # <<<<<<<<<<<<<<
 *             encoding = sys.getfilesystemencoding()
 * 
*/
  }

  /* "netCDF4/_netCDF4.pyx":2589
 *             encoding = sys.getfilesystemencoding()
 * 
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_inq_path(self._grpid, &pathlen, NULL)
 *         _ensure_nc_success(ierr)
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "netCDF4/_netCDF4.pyx":2590
 * 
 *         with nogil:
 *             ierr = nc_inq_path(self._grpid, &pathlen, NULL)             # <<<<<<<<<<<<<<
 *         _ensure_nc_success(ierr)
 * 
*/
        __pyx_v_ierr = nc_inq_path(__pyx_v_self->_grpid, (&__pyx_v_pathlen), NULL);
      }

      /* "netCDF4/_netCDF4.pyx":2589
 *             encoding = sys.getfilesystemencoding()
 * 
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_inq_path(self._grpid, &pathlen, NULL)
 *         _ensure_nc_success(ierr)
*/
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L7;
        }
        __pyx_L7:;
      }
  }

  /* "netCDF4/_netCDF4.pyx":2591
 *         with nogil:
 *             ierr = nc_inq_path(self._grpid, &pathlen, NULL)
 *         _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 * 
 *         c_path = <char *>malloc(sizeof(char) * (pathlen + 1))
*/
  __pyx_t_6 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2591, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2591, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1);
    assert(__pyx_t_6);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_1);
    __Pyx_INCREF(__pyx_t_6);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_1, __pyx__function);
    __pyx_t_7 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_5};
    __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_1, __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;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2591, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "netCDF4/_netCDF4.pyx":2593
 *         _ensure_nc_success(ierr)
 * 
 *         c_path = <char *>malloc(sizeof(char) * (pathlen + 1))             # <<<<<<<<<<<<<<
 *         if not c_path:
 *             raise MemoryError()
*/
  __pyx_v_c_path = ((char *)malloc(((sizeof(char)) * (__pyx_v_pathlen + 1))));

  /* "netCDF4/_netCDF4.pyx":2594
 * 
 *         c_path = <char *>malloc(sizeof(char) * (pathlen + 1))
 *         if not c_path:             # <<<<<<<<<<<<<<
 *             raise MemoryError()
 *         try:
*/
  __pyx_t_3 = (!(__pyx_v_c_path != 0));
  if (unlikely(__pyx_t_3)) {

    /* "netCDF4/_netCDF4.pyx":2595
 *         c_path = <char *>malloc(sizeof(char) * (pathlen + 1))
 *         if not c_path:
 *             raise MemoryError()             # <<<<<<<<<<<<<<
 *         try:
 *             with nogil:
*/
    PyErr_NoMemory(); __PYX_ERR(0, 2595, __pyx_L1_error)

    /* "netCDF4/_netCDF4.pyx":2594
 * 
 *         c_path = <char *>malloc(sizeof(char) * (pathlen + 1))
 *         if not c_path:             # <<<<<<<<<<<<<<
 *             raise MemoryError()
 *         try:
*/
  }

  /* "netCDF4/_netCDF4.pyx":2596
 *         if not c_path:
 *             raise MemoryError()
 *         try:             # <<<<<<<<<<<<<<
 *             with nogil:
 *                 ierr = nc_inq_path(self._grpid, &pathlen, c_path)
*/
  /*try:*/ {

    /* "netCDF4/_netCDF4.pyx":2597
 *             raise MemoryError()
 *         try:
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 ierr = nc_inq_path(self._grpid, &pathlen, c_path)
 *             _ensure_nc_success(ierr)
*/
    {
        PyThreadState * _save;
        _save = PyEval_SaveThread();
        __Pyx_FastGIL_Remember();
        /*try:*/ {

          /* "netCDF4/_netCDF4.pyx":2598
 *         try:
 *             with nogil:
 *                 ierr = nc_inq_path(self._grpid, &pathlen, c_path)             # <<<<<<<<<<<<<<
 *             _ensure_nc_success(ierr)
 * 
*/
          __pyx_v_ierr = nc_inq_path(__pyx_v_self->_grpid, (&__pyx_v_pathlen), __pyx_v_c_path);
        }

        /* "netCDF4/_netCDF4.pyx":2597
 *             raise MemoryError()
 *         try:
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 ierr = nc_inq_path(self._grpid, &pathlen, c_path)
 *             _ensure_nc_success(ierr)
*/
        /*finally:*/ {
          /*normal exit:*/{
            __Pyx_FastGIL_Forget();
            PyEval_RestoreThread(_save);
            goto __pyx_L14;
          }
          __pyx_L14:;
        }
    }

    /* "netCDF4/_netCDF4.pyx":2599
 *             with nogil:
 *                 ierr = nc_inq_path(self._grpid, &pathlen, c_path)
 *             _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 * 
 *             py_path = c_path[:pathlen] # makes a copy of pathlen bytes from c_string
*/
    __pyx_t_1 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2599, __pyx_L10_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2599, __pyx_L10_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_5);
      assert(__pyx_t_1);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
      __pyx_t_7 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_t_6};
      __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2599, __pyx_L10_error)
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "netCDF4/_netCDF4.pyx":2601
 *             _ensure_nc_success(ierr)
 * 
 *             py_path = c_path[:pathlen] # makes a copy of pathlen bytes from c_string             # <<<<<<<<<<<<<<
 *         finally:
 *             free(c_path)
*/
    __pyx_t_4 = __Pyx_PyBytes_FromStringAndSize(__pyx_v_c_path + 0, __pyx_v_pathlen - 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2601, __pyx_L10_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_v_py_path = ((PyObject*)__pyx_t_4);
    __pyx_t_4 = 0;
  }

  /* "netCDF4/_netCDF4.pyx":2603
 *             py_path = c_path[:pathlen] # makes a copy of pathlen bytes from c_string
 *         finally:
 *             free(c_path)             # <<<<<<<<<<<<<<
 *         return py_path.decode(encoding)
 * 
*/
  /*finally:*/ {
    /*normal exit:*/{
      free(__pyx_v_c_path);
      goto __pyx_L11;
    }
    __pyx_L10_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_1); __pyx_t_1 = 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;
      {
        free(__pyx_v_c_path);
      }
      __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:;
  }

  /* "netCDF4/_netCDF4.pyx":2604
 *         finally:
 *             free(c_path)
 *         return py_path.decode(encoding)             # <<<<<<<<<<<<<<
 * 
 *     def __repr__(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_5 = __pyx_v_py_path;
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_7 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_encoding};
    __pyx_t_4 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_decode, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2604, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
  }
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":2572
 *             raise IndexError('%s not found in %s' % (lastname,group.path))
 * 
 *     def filepath(self,encoding=None):             # <<<<<<<<<<<<<<
 *         """**`filepath(self,encoding=None)`**
 * 
*/

  /* 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("netCDF4._netCDF4.Dataset.filepath", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_py_path);
  __Pyx_XDECREF(__pyx_v_encoding);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":2606
 *         return py_path.decode(encoding)
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return self.__str__()
 * 
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_11__repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_11__repr__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_7Dataset_10__repr__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_10__repr__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__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("__repr__", 0);

  /* "netCDF4/_netCDF4.pyx":2607
 * 
 *     def __repr__(self):
 *         return self.__str__()             # <<<<<<<<<<<<<<
 * 
 *     def __str__(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_str_2, __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(0, 2607, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":2606
 *         return py_path.decode(encoding)
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return self.__str__()
 * 
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":2609
 *         return self.__str__()
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         ncdump = [repr(type(self)).replace("._netCDF4", "")]
 *         dimnames = tuple(_tostr(dimname)+'(%s)'%len(self.dimensions[dimname])\
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_13__str__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_13__str__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__str__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_7Dataset_12__str__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_7netCDF4_8_netCDF4_7Dataset_7__str___2generator2(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "netCDF4/_netCDF4.pyx":2611
 *     def __str__(self):
 *         ncdump = [repr(type(self)).replace("._netCDF4", "")]
 *         dimnames = tuple(_tostr(dimname)+'(%s)'%len(self.dimensions[dimname])\             # <<<<<<<<<<<<<<
 *         for dimname in self.dimensions.keys())
 *         varnames = tuple(\
*/

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_7__str___genexpr(PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_4_genexpr *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("genexpr", 0);
  __pyx_cur_scope = (struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_4_genexpr *)__pyx_tp_new_7netCDF4_8_netCDF4___pyx_scope_struct_4_genexpr(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_4_genexpr, __pyx_mstate_global->__pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_4_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(0, 2611, __pyx_L1_error)
  } else {
    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_outer_scope = (struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_3___str__ *) __pyx_self;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_outer_scope);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_outer_scope);
  __pyx_cur_scope->__pyx_genexpr_arg_0 = __pyx_genexpr_arg_0;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_genexpr_arg_0);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_genexpr_arg_0);
  {
    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_7netCDF4_8_netCDF4_7Dataset_7__str___2generator2, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[2]), (PyObject *) __pyx_cur_scope, __pyx_mstate_global->__pyx_n_u_genexpr, __pyx_mstate_global->__pyx_n_u_str___locals_genexpr, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4); if (unlikely(!gen)) __PYX_ERR(0, 2611, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.__str__.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_7netCDF4_8_netCDF4_7Dataset_7__str___2generator2(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_4_genexpr *__pyx_cur_scope = ((struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_4_genexpr *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  size_t __pyx_t_9;
  Py_ssize_t __pyx_t_10;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("genexpr", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    case 1: goto __pyx_L6_resume_from_yield;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(__pyx_sent_value != Py_None)) {
    if (unlikely(__pyx_sent_value)) PyErr_SetString(PyExc_TypeError, "can't send non-None value to a just-started generator");
    __PYX_ERR(0, 2611, __pyx_L1_error)
  }

  /* "netCDF4/_netCDF4.pyx":2612
 *         ncdump = [repr(type(self)).replace("._netCDF4", "")]
 *         dimnames = tuple(_tostr(dimname)+'(%s)'%len(self.dimensions[dimname])\
 *         for dimname in self.dimensions.keys())             # <<<<<<<<<<<<<<
 *         varnames = tuple(\
 *         [_tostr(self.variables[varname].dtype)+' '+_tostr(varname)+
*/
  __pyx_t_2 = 0;
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(0, 2612, __pyx_L1_error) }
  if (unlikely(__pyx_cur_scope->__pyx_genexpr_arg_0 == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "keys");
    __PYX_ERR(0, 2612, __pyx_L1_error)
  }
  __pyx_t_5 = __Pyx_dict_iterator(__pyx_cur_scope->__pyx_genexpr_arg_0, 0, __pyx_mstate_global->__pyx_n_u_keys, (&__pyx_t_3), (&__pyx_t_4)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2612, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_1);
  __pyx_t_1 = __pyx_t_5;
  __pyx_t_5 = 0;
  while (1) {
    __pyx_t_6 = __Pyx_dict_iter_next(__pyx_t_1, __pyx_t_3, &__pyx_t_2, &__pyx_t_5, NULL, NULL, __pyx_t_4);
    if (unlikely(__pyx_t_6 == 0)) break;
    if (unlikely(__pyx_t_6 == -1)) __PYX_ERR(0, 2612, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_dimname);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_dimname, __pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_5);
    __pyx_t_5 = 0;

    /* "netCDF4/_netCDF4.pyx":2611
 *     def __str__(self):
 *         ncdump = [repr(type(self)).replace("._netCDF4", "")]
 *         dimnames = tuple(_tostr(dimname)+'(%s)'%len(self.dimensions[dimname])\             # <<<<<<<<<<<<<<
 *         for dimname in self.dimensions.keys())
 *         varnames = tuple(\
*/
    __pyx_t_7 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_tostr); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2611, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_9 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(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, __pyx_cur_scope->__pyx_v_dimname};
      __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_8, __pyx_callargs+__pyx_t_9, (2-__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_5)) __PYX_ERR(0, 2611, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
    }
    if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 2611, __pyx_L1_error) }
    __pyx_t_8 = __Pyx_PyObject_GetItem(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_self->dimensions, __pyx_cur_scope->__pyx_v_dimname); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2611, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_10 = PyObject_Length(__pyx_t_8); if (unlikely(__pyx_t_10 == ((Py_ssize_t)-1))) __PYX_ERR(0, 2611, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_8 = PyLong_FromSsize_t(__pyx_t_10); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2611, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_7 = PyUnicode_Format(__pyx_mstate_global->__pyx_kp_u_s_2, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2611, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_8 = PyNumber_Add(__pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2611, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_r = __pyx_t_8;
    __pyx_t_8 = 0;
    __Pyx_XGIVEREF(__pyx_t_1);
    __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
    __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
    __pyx_cur_scope->__pyx_t_2 = __pyx_t_3;
    __pyx_cur_scope->__pyx_t_3 = __pyx_t_4;
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
    /* return from generator, yielding value */
    __pyx_generator->resume_label = 1;
    return __pyx_r;
    __pyx_L6_resume_from_yield:;
    __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
    __pyx_cur_scope->__pyx_t_0 = 0;
    __Pyx_XGOTREF(__pyx_t_1);
    __pyx_t_2 = __pyx_cur_scope->__pyx_t_1;
    __pyx_t_3 = __pyx_cur_scope->__pyx_t_2;
    __pyx_t_4 = __pyx_cur_scope->__pyx_t_3;
    if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 2611, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);

  /* 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_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  if (__Pyx_PyErr_Occurred()) {
    __Pyx_Generator_Replace_StopIteration(0);
    __Pyx_AddTraceback("genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  }
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  #if !CYTHON_USE_EXC_INFO_STACK
  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
  #endif
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_7netCDF4_8_netCDF4_7Dataset_7__str___5generator3(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "netCDF4/_netCDF4.pyx":2617
 *          ((_tostr(self.variables[varname].dimensions)).replace(",)",")")).replace("'","")
 *          for varname in self.variables.keys()])
 *         grpnames = tuple(_tostr(grpname) for grpname in self.groups.keys())             # <<<<<<<<<<<<<<
 *         if self.path == '/':
 *             ncdump.append('root group (%s data model, file format %s):' %
*/

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_7__str___3genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_5_genexpr *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("genexpr", 0);
  __pyx_cur_scope = (struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_5_genexpr *)__pyx_tp_new_7netCDF4_8_netCDF4___pyx_scope_struct_5_genexpr(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_5_genexpr, __pyx_mstate_global->__pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_5_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(0, 2617, __pyx_L1_error)
  } else {
    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_genexpr_arg_0 = __pyx_genexpr_arg_0;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_genexpr_arg_0);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_genexpr_arg_0);
  {
    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_7netCDF4_8_netCDF4_7Dataset_7__str___5generator3, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[3]), (PyObject *) __pyx_cur_scope, __pyx_mstate_global->__pyx_n_u_genexpr, __pyx_mstate_global->__pyx_n_u_str___locals_genexpr, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4); if (unlikely(!gen)) __PYX_ERR(0, 2617, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.__str__.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_7netCDF4_8_netCDF4_7Dataset_7__str___5generator3(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_5_genexpr *__pyx_cur_scope = ((struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_5_genexpr *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  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_RefNannyDeclarations
  __Pyx_RefNannySetupContext("genexpr", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    case 1: goto __pyx_L6_resume_from_yield;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(__pyx_sent_value != Py_None)) {
    if (unlikely(__pyx_sent_value)) PyErr_SetString(PyExc_TypeError, "can't send non-None value to a just-started generator");
    __PYX_ERR(0, 2617, __pyx_L1_error)
  }
  __pyx_t_2 = 0;
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(0, 2617, __pyx_L1_error) }
  if (unlikely(__pyx_cur_scope->__pyx_genexpr_arg_0 == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "keys");
    __PYX_ERR(0, 2617, __pyx_L1_error)
  }
  __pyx_t_5 = __Pyx_dict_iterator(__pyx_cur_scope->__pyx_genexpr_arg_0, 0, __pyx_mstate_global->__pyx_n_u_keys, (&__pyx_t_3), (&__pyx_t_4)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2617, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_1);
  __pyx_t_1 = __pyx_t_5;
  __pyx_t_5 = 0;
  while (1) {
    __pyx_t_6 = __Pyx_dict_iter_next(__pyx_t_1, __pyx_t_3, &__pyx_t_2, &__pyx_t_5, NULL, NULL, __pyx_t_4);
    if (unlikely(__pyx_t_6 == 0)) break;
    if (unlikely(__pyx_t_6 == -1)) __PYX_ERR(0, 2617, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_grpname);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_grpname, __pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_7 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_tostr); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2617, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_9 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(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, __pyx_cur_scope->__pyx_v_grpname};
      __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_8, __pyx_callargs+__pyx_t_9, (2-__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_5)) __PYX_ERR(0, 2617, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
    }
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    __Pyx_XGIVEREF(__pyx_t_1);
    __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
    __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
    __pyx_cur_scope->__pyx_t_2 = __pyx_t_3;
    __pyx_cur_scope->__pyx_t_3 = __pyx_t_4;
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
    /* return from generator, yielding value */
    __pyx_generator->resume_label = 1;
    return __pyx_r;
    __pyx_L6_resume_from_yield:;
    __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
    __pyx_cur_scope->__pyx_t_0 = 0;
    __Pyx_XGOTREF(__pyx_t_1);
    __pyx_t_2 = __pyx_cur_scope->__pyx_t_1;
    __pyx_t_3 = __pyx_cur_scope->__pyx_t_2;
    __pyx_t_4 = __pyx_cur_scope->__pyx_t_3;
    if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 2617, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);

  /* 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_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  if (__Pyx_PyErr_Occurred()) {
    __Pyx_Generator_Replace_StopIteration(0);
    __Pyx_AddTraceback("genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  }
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  #if !CYTHON_USE_EXC_INFO_STACK
  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
  #endif
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":2609
 *         return self.__str__()
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         ncdump = [repr(type(self)).replace("._netCDF4", "")]
 *         dimnames = tuple(_tostr(dimname)+'(%s)'%len(self.dimensions[dimname])\
*/

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_12__str__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self) {
  struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_3___str__ *__pyx_cur_scope;
  PyObject *__pyx_v_ncdump = NULL;
  PyObject *__pyx_v_dimnames = NULL;
  PyObject *__pyx_v_varnames = NULL;
  PyObject *__pyx_v_grpnames = NULL;
  PyObject *__pyx_v_name = NULL;
  PyObject *__pyx_gb_7netCDF4_8_netCDF4_7Dataset_7__str___2generator2 = 0;
  PyObject *__pyx_8genexpr8__pyx_v_varname = NULL;
  PyObject *__pyx_gb_7netCDF4_8_netCDF4_7Dataset_7__str___5generator3 = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  size_t __pyx_t_12;
  PyObject *__pyx_t_13 = NULL;
  int __pyx_t_14;
  PyObject *__pyx_t_15[5];
  int __pyx_t_16;
  PyObject *(*__pyx_t_17)(PyObject *);
  PyObject *__pyx_t_18[4];
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__str__", 0);
  __pyx_cur_scope = (struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_3___str__ *)__pyx_tp_new_7netCDF4_8_netCDF4___pyx_scope_struct_3___str__(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_3___str__, __pyx_mstate_global->__pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_3___str__ *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(0, 2609, __pyx_L1_error)
  } else {
    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);

  /* "netCDF4/_netCDF4.pyx":2610
 * 
 *     def __str__(self):
 *         ncdump = [repr(type(self)).replace("._netCDF4", "")]             # <<<<<<<<<<<<<<
 *         dimnames = tuple(_tostr(dimname)+'(%s)'%len(self.dimensions[dimname])\
 *         for dimname in self.dimensions.keys())
*/
  __pyx_t_1 = PyObject_Repr(((PyObject *)Py_TYPE(((PyObject *)__pyx_cur_scope->__pyx_v_self)))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2610, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (unlikely(__pyx_t_1 == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "replace");
    __PYX_ERR(0, 2610, __pyx_L1_error)
  }
  __pyx_t_2 = PyUnicode_Replace(((PyObject*)__pyx_t_1), __pyx_mstate_global->__pyx_kp_u_netCDF4, __pyx_mstate_global->__pyx_kp_u__4, -1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2610, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2610, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_2);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, __pyx_t_2) != (0)) __PYX_ERR(0, 2610, __pyx_L1_error);
  __pyx_t_2 = 0;
  __pyx_v_ncdump = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":2611
 *     def __str__(self):
 *         ncdump = [repr(type(self)).replace("._netCDF4", "")]
 *         dimnames = tuple(_tostr(dimname)+'(%s)'%len(self.dimensions[dimname])\             # <<<<<<<<<<<<<<
 *         for dimname in self.dimensions.keys())
 *         varnames = tuple(\
*/
  __pyx_t_1 = __pyx_pf_7netCDF4_8_netCDF4_7Dataset_7__str___genexpr(((PyObject*)__pyx_cur_scope), __pyx_cur_scope->__pyx_v_self->dimensions); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2611, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PySequence_Tuple(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2611, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_dimnames = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":2613
 *         dimnames = tuple(_tostr(dimname)+'(%s)'%len(self.dimensions[dimname])\
 *         for dimname in self.dimensions.keys())
 *         varnames = tuple(\             # <<<<<<<<<<<<<<
 *         [_tostr(self.variables[varname].dtype)+' '+_tostr(varname)+
 *          ((_tostr(self.variables[varname].dimensions)).replace(",)",")")).replace("'","")
*/
  { /* enter inner scope */

    /* "netCDF4/_netCDF4.pyx":2614
 *         for dimname in self.dimensions.keys())
 *         varnames = tuple(\
 *         [_tostr(self.variables[varname].dtype)+' '+_tostr(varname)+             # <<<<<<<<<<<<<<
 *          ((_tostr(self.variables[varname].dimensions)).replace(",)",")")).replace("'","")
 *          for varname in self.variables.keys()])
*/
    __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2614, __pyx_L5_error)
    __Pyx_GOTREF(__pyx_t_2);

    /* "netCDF4/_netCDF4.pyx":2616
 *         [_tostr(self.variables[varname].dtype)+' '+_tostr(varname)+
 *          ((_tostr(self.variables[varname].dimensions)).replace(",)",")")).replace("'","")
 *          for varname in self.variables.keys()])             # <<<<<<<<<<<<<<
 *         grpnames = tuple(_tostr(grpname) for grpname in self.groups.keys())
 *         if self.path == '/':
*/
    __pyx_t_3 = 0;
    if (unlikely(__pyx_cur_scope->__pyx_v_self->variables == Py_None)) {
      PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "keys");
      __PYX_ERR(0, 2616, __pyx_L5_error)
    }
    __pyx_t_6 = __Pyx_dict_iterator(__pyx_cur_scope->__pyx_v_self->variables, 0, __pyx_mstate_global->__pyx_n_u_keys, (&__pyx_t_4), (&__pyx_t_5)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2616, __pyx_L5_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_1);
    __pyx_t_1 = __pyx_t_6;
    __pyx_t_6 = 0;
    while (1) {
      __pyx_t_7 = __Pyx_dict_iter_next(__pyx_t_1, __pyx_t_4, &__pyx_t_3, &__pyx_t_6, NULL, NULL, __pyx_t_5);
      if (unlikely(__pyx_t_7 == 0)) break;
      if (unlikely(__pyx_t_7 == -1)) __PYX_ERR(0, 2616, __pyx_L5_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_XDECREF_SET(__pyx_8genexpr8__pyx_v_varname, __pyx_t_6);
      __pyx_t_6 = 0;

      /* "netCDF4/_netCDF4.pyx":2614
 *         for dimname in self.dimensions.keys())
 *         varnames = tuple(\
 *         [_tostr(self.variables[varname].dtype)+' '+_tostr(varname)+             # <<<<<<<<<<<<<<
 *          ((_tostr(self.variables[varname].dimensions)).replace(",)",")")).replace("'","")
 *          for varname in self.variables.keys()])
*/
      __pyx_t_8 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_mstate_global->__pyx_n_u_tostr); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2614, __pyx_L5_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_10 = __Pyx_PyObject_GetItem(__pyx_cur_scope->__pyx_v_self->variables, __pyx_8genexpr8__pyx_v_varname); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2614, __pyx_L5_error)
      __Pyx_GOTREF(__pyx_t_10);
      __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_dtype); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2614, __pyx_L5_error)
      __Pyx_GOTREF(__pyx_t_11);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __pyx_t_12 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(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_12 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_11};
        __pyx_t_6 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_9, __pyx_callargs+__pyx_t_12, (2-__pyx_t_12) | (__pyx_t_12*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2614, __pyx_L5_error)
        __Pyx_GOTREF(__pyx_t_6);
      }
      __pyx_t_9 = PyNumber_Add(__pyx_t_6, __pyx_mstate_global->__pyx_kp_u__8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2614, __pyx_L5_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_11 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_tostr); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2614, __pyx_L5_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_12 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_8))) {
        __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_8);
        assert(__pyx_t_11);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_11);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_8, __pyx__function);
        __pyx_t_12 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_8genexpr8__pyx_v_varname};
        __pyx_t_6 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_8, __pyx_callargs+__pyx_t_12, (2-__pyx_t_12) | (__pyx_t_12*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2614, __pyx_L5_error)
        __Pyx_GOTREF(__pyx_t_6);
      }
      __pyx_t_8 = PyNumber_Add(__pyx_t_9, __pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2614, __pyx_L5_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

      /* "netCDF4/_netCDF4.pyx":2615
 *         varnames = tuple(\
 *         [_tostr(self.variables[varname].dtype)+' '+_tostr(varname)+
 *          ((_tostr(self.variables[varname].dimensions)).replace(",)",")")).replace("'","")             # <<<<<<<<<<<<<<
 *          for varname in self.variables.keys()])
 *         grpnames = tuple(_tostr(grpname) for grpname in self.groups.keys())
*/
      __pyx_t_9 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_tostr); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2615, __pyx_L5_error)
      __Pyx_GOTREF(__pyx_t_11);
      __pyx_t_10 = __Pyx_PyObject_GetItem(__pyx_cur_scope->__pyx_v_self->variables, __pyx_8genexpr8__pyx_v_varname); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2615, __pyx_L5_error)
      __Pyx_GOTREF(__pyx_t_10);
      __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_dimensions); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2615, __pyx_L5_error)
      __Pyx_GOTREF(__pyx_t_13);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __pyx_t_12 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_11))) {
        __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_11);
        assert(__pyx_t_9);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_11);
        __Pyx_INCREF(__pyx_t_9);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_11, __pyx__function);
        __pyx_t_12 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_t_13};
        __pyx_t_6 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_11, __pyx_callargs+__pyx_t_12, (2-__pyx_t_12) | (__pyx_t_12*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
        if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2615, __pyx_L5_error)
        __Pyx_GOTREF(__pyx_t_6);
      }
      __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_replace); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2615, __pyx_L5_error)
      __Pyx_GOTREF(__pyx_t_11);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_mstate_global->__pyx_tuple[6], NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2615, __pyx_L5_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_replace); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2615, __pyx_L5_error)
      __Pyx_GOTREF(__pyx_t_11);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_mstate_global->__pyx_tuple[7], NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2615, __pyx_L5_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

      /* "netCDF4/_netCDF4.pyx":2614
 *         for dimname in self.dimensions.keys())
 *         varnames = tuple(\
 *         [_tostr(self.variables[varname].dtype)+' '+_tostr(varname)+             # <<<<<<<<<<<<<<
 *          ((_tostr(self.variables[varname].dimensions)).replace(",)",")")).replace("'","")
 *          for varname in self.variables.keys()])
*/
      __pyx_t_11 = PyNumber_Add(__pyx_t_8, __pyx_t_6); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2614, __pyx_L5_error)
      __Pyx_GOTREF(__pyx_t_11);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_11))) __PYX_ERR(0, 2614, __pyx_L5_error)
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_8genexpr8__pyx_v_varname); __pyx_8genexpr8__pyx_v_varname = 0;
    goto __pyx_L8_exit_scope;
    __pyx_L5_error:;
    __Pyx_XDECREF(__pyx_8genexpr8__pyx_v_varname); __pyx_8genexpr8__pyx_v_varname = 0;
    goto __pyx_L1_error;
    __pyx_L8_exit_scope:;
  } /* exit inner scope */

  /* "netCDF4/_netCDF4.pyx":2613
 *         dimnames = tuple(_tostr(dimname)+'(%s)'%len(self.dimensions[dimname])\
 *         for dimname in self.dimensions.keys())
 *         varnames = tuple(\             # <<<<<<<<<<<<<<
 *         [_tostr(self.variables[varname].dtype)+' '+_tostr(varname)+
 *          ((_tostr(self.variables[varname].dimensions)).replace(",)",")")).replace("'","")
*/
  __pyx_t_1 = PyList_AsTuple(((PyObject*)__pyx_t_2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2613, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_varnames = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":2617
 *          ((_tostr(self.variables[varname].dimensions)).replace(",)",")")).replace("'","")
 *          for varname in self.variables.keys()])
 *         grpnames = tuple(_tostr(grpname) for grpname in self.groups.keys())             # <<<<<<<<<<<<<<
 *         if self.path == '/':
 *             ncdump.append('root group (%s data model, file format %s):' %
*/
  __pyx_t_1 = __pyx_pf_7netCDF4_8_netCDF4_7Dataset_7__str___3genexpr(NULL, __pyx_cur_scope->__pyx_v_self->groups); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2617, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PySequence_Tuple(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2617, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_grpnames = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":2618
 *          for varname in self.variables.keys()])
 *         grpnames = tuple(_tostr(grpname) for grpname in self.groups.keys())
 *         if self.path == '/':             # <<<<<<<<<<<<<<
 *             ncdump.append('root group (%s data model, file format %s):' %
 *                     (self.data_model, self.disk_format))
*/
  __pyx_t_14 = (__Pyx_PyUnicode_Equals(__pyx_cur_scope->__pyx_v_self->path, __pyx_mstate_global->__pyx_kp_u__10, Py_EQ)); if (unlikely((__pyx_t_14 < 0))) __PYX_ERR(0, 2618, __pyx_L1_error)
  if (__pyx_t_14) {

    /* "netCDF4/_netCDF4.pyx":2620
 *         if self.path == '/':
 *             ncdump.append('root group (%s data model, file format %s):' %
 *                     (self.data_model, self.disk_format))             # <<<<<<<<<<<<<<
 *         else:
 *             ncdump.append('group %s:' % self.path)
*/
    __pyx_t_2 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Str(__pyx_cur_scope->__pyx_v_self->data_model), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2620, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Str(__pyx_cur_scope->__pyx_v_self->disk_format), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2620, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_15[0] = __pyx_mstate_global->__pyx_kp_u_root_group;
    __pyx_t_15[1] = __pyx_t_2;
    __pyx_t_15[2] = __pyx_mstate_global->__pyx_kp_u_data_model_file_format;
    __pyx_t_15[3] = __pyx_t_1;
    __pyx_t_15[4] = __pyx_mstate_global->__pyx_kp_u__12;

    /* "netCDF4/_netCDF4.pyx":2619
 *         grpnames = tuple(_tostr(grpname) for grpname in self.groups.keys())
 *         if self.path == '/':
 *             ncdump.append('root group (%s data model, file format %s):' %             # <<<<<<<<<<<<<<
 *                     (self.data_model, self.disk_format))
 *         else:
*/
    __pyx_t_11 = __Pyx_PyUnicode_Join(__pyx_t_15, 5, 12 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_2) + 25 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_1) + 2, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1));
    if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2619, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_16 = __Pyx_PyList_Append(__pyx_v_ncdump, __pyx_t_11); if (unlikely(__pyx_t_16 == ((int)-1))) __PYX_ERR(0, 2619, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

    /* "netCDF4/_netCDF4.pyx":2618
 *          for varname in self.variables.keys()])
 *         grpnames = tuple(_tostr(grpname) for grpname in self.groups.keys())
 *         if self.path == '/':             # <<<<<<<<<<<<<<
 *             ncdump.append('root group (%s data model, file format %s):' %
 *                     (self.data_model, self.disk_format))
*/
    goto __pyx_L9;
  }

  /* "netCDF4/_netCDF4.pyx":2622
 *                     (self.data_model, self.disk_format))
 *         else:
 *             ncdump.append('group %s:' % self.path)             # <<<<<<<<<<<<<<
 *         for name in self.ncattrs():
 *             ncdump.append('    %s: %s' % (name, self.getncattr(name)))
*/
  /*else*/ {
    __pyx_t_11 = __Pyx_PyUnicode_FormatSafe(__pyx_mstate_global->__pyx_kp_u_group_s, __pyx_cur_scope->__pyx_v_self->path); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2622, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __pyx_t_16 = __Pyx_PyList_Append(__pyx_v_ncdump, __pyx_t_11); if (unlikely(__pyx_t_16 == ((int)-1))) __PYX_ERR(0, 2622, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  }
  __pyx_L9:;

  /* "netCDF4/_netCDF4.pyx":2623
 *         else:
 *             ncdump.append('group %s:' % self.path)
 *         for name in self.ncattrs():             # <<<<<<<<<<<<<<
 *             ncdump.append('    %s: %s' % (name, self.getncattr(name)))
 *         ncdump.append('    dimensions(sizes): %s' % ', '.join(dimnames))
*/
  __pyx_t_1 = ((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_12 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_1, NULL};
    __pyx_t_11 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_ncattrs, __pyx_callargs+__pyx_t_12, (1-__pyx_t_12) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2623, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
  }
  if (likely(PyList_CheckExact(__pyx_t_11)) || PyTuple_CheckExact(__pyx_t_11)) {
    __pyx_t_1 = __pyx_t_11; __Pyx_INCREF(__pyx_t_1);
    __pyx_t_4 = 0;
    __pyx_t_17 = NULL;
  } else {
    __pyx_t_4 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_11); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2623, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_17 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 2623, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  for (;;) {
    if (likely(!__pyx_t_17)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 2623, __pyx_L1_error)
          #endif
          if (__pyx_t_4 >= __pyx_temp) break;
        }
        __pyx_t_11 = __Pyx_PyList_GetItemRefFast(__pyx_t_1, __pyx_t_4, __Pyx_ReferenceSharing_OwnStrongReference);
        ++__pyx_t_4;
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 2623, __pyx_L1_error)
          #endif
          if (__pyx_t_4 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_11 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_4));
        #else
        __pyx_t_11 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_4);
        #endif
        ++__pyx_t_4;
      }
      if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2623, __pyx_L1_error)
    } else {
      __pyx_t_11 = __pyx_t_17(__pyx_t_1);
      if (unlikely(!__pyx_t_11)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 2623, __pyx_L1_error)
          PyErr_Clear();
        }
        break;
      }
    }
    __Pyx_GOTREF(__pyx_t_11);
    __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_11);
    __pyx_t_11 = 0;

    /* "netCDF4/_netCDF4.pyx":2624
 *             ncdump.append('group %s:' % self.path)
 *         for name in self.ncattrs():
 *             ncdump.append('    %s: %s' % (name, self.getncattr(name)))             # <<<<<<<<<<<<<<
 *         ncdump.append('    dimensions(sizes): %s' % ', '.join(dimnames))
 *         ncdump.append('    variables(dimensions): %s' % ', '.join(varnames))
*/
    __pyx_t_11 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Str(__pyx_v_name), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2624, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_mstate_global->__pyx_n_u_getncattr); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2624, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_name); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2624, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Str(__pyx_t_6), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2624, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_18[0] = __pyx_mstate_global->__pyx_kp_u__13;
    __pyx_t_18[1] = __pyx_t_11;
    __pyx_t_18[2] = __pyx_mstate_global->__pyx_kp_u__7;
    __pyx_t_18[3] = __pyx_t_2;
    __pyx_t_6 = __Pyx_PyUnicode_Join(__pyx_t_18, 4, 4 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_11) + 2 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_2), 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_11) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2));
    if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2624, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_16 = __Pyx_PyList_Append(__pyx_v_ncdump, __pyx_t_6); if (unlikely(__pyx_t_16 == ((int)-1))) __PYX_ERR(0, 2624, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

    /* "netCDF4/_netCDF4.pyx":2623
 *         else:
 *             ncdump.append('group %s:' % self.path)
 *         for name in self.ncattrs():             # <<<<<<<<<<<<<<
 *             ncdump.append('    %s: %s' % (name, self.getncattr(name)))
 *         ncdump.append('    dimensions(sizes): %s' % ', '.join(dimnames))
*/
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":2625
 *         for name in self.ncattrs():
 *             ncdump.append('    %s: %s' % (name, self.getncattr(name)))
 *         ncdump.append('    dimensions(sizes): %s' % ', '.join(dimnames))             # <<<<<<<<<<<<<<
 *         ncdump.append('    variables(dimensions): %s' % ', '.join(varnames))
 *         ncdump.append('    groups: %s' % ', '.join(grpnames))
*/
  __pyx_t_1 = PyUnicode_Join(__pyx_mstate_global->__pyx_kp_u__14, __pyx_v_dimnames); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2625, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = PyUnicode_Format(__pyx_mstate_global->__pyx_kp_u_dimensions_sizes_s, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2625, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_16 = __Pyx_PyList_Append(__pyx_v_ncdump, __pyx_t_6); if (unlikely(__pyx_t_16 == ((int)-1))) __PYX_ERR(0, 2625, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "netCDF4/_netCDF4.pyx":2626
 *             ncdump.append('    %s: %s' % (name, self.getncattr(name)))
 *         ncdump.append('    dimensions(sizes): %s' % ', '.join(dimnames))
 *         ncdump.append('    variables(dimensions): %s' % ', '.join(varnames))             # <<<<<<<<<<<<<<
 *         ncdump.append('    groups: %s' % ', '.join(grpnames))
 *         return '\n'.join(ncdump)
*/
  __pyx_t_6 = PyUnicode_Join(__pyx_mstate_global->__pyx_kp_u__14, __pyx_v_varnames); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2626, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_1 = PyUnicode_Format(__pyx_mstate_global->__pyx_kp_u_variables_dimensions_s, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2626, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_16 = __Pyx_PyList_Append(__pyx_v_ncdump, __pyx_t_1); if (unlikely(__pyx_t_16 == ((int)-1))) __PYX_ERR(0, 2626, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":2627
 *         ncdump.append('    dimensions(sizes): %s' % ', '.join(dimnames))
 *         ncdump.append('    variables(dimensions): %s' % ', '.join(varnames))
 *         ncdump.append('    groups: %s' % ', '.join(grpnames))             # <<<<<<<<<<<<<<
 *         return '\n'.join(ncdump)
 * 
*/
  __pyx_t_1 = PyUnicode_Join(__pyx_mstate_global->__pyx_kp_u__14, __pyx_v_grpnames); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2627, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = PyUnicode_Format(__pyx_mstate_global->__pyx_kp_u_groups_s, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2627, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_16 = __Pyx_PyList_Append(__pyx_v_ncdump, __pyx_t_6); if (unlikely(__pyx_t_16 == ((int)-1))) __PYX_ERR(0, 2627, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "netCDF4/_netCDF4.pyx":2628
 *         ncdump.append('    variables(dimensions): %s' % ', '.join(varnames))
 *         ncdump.append('    groups: %s' % ', '.join(grpnames))
 *         return '\n'.join(ncdump)             # <<<<<<<<<<<<<<
 * 
 *     def _close(self, check_err):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_6 = PyUnicode_Join(__pyx_mstate_global->__pyx_kp_u__15, __pyx_v_ncdump); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2628, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_r = __pyx_t_6;
  __pyx_t_6 = 0;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":2609
 *         return self.__str__()
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         ncdump = [repr(type(self)).replace("._netCDF4", "")]
 *         dimnames = tuple(_tostr(dimname)+'(%s)'%len(self.dimensions[dimname])\
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_ncdump);
  __Pyx_XDECREF(__pyx_v_dimnames);
  __Pyx_XDECREF(__pyx_v_varnames);
  __Pyx_XDECREF(__pyx_v_grpnames);
  __Pyx_XDECREF(__pyx_v_name);
  __Pyx_XDECREF(__pyx_gb_7netCDF4_8_netCDF4_7Dataset_7__str___2generator2);
  __Pyx_XDECREF(__pyx_8genexpr8__pyx_v_varname);
  __Pyx_XDECREF(__pyx_gb_7netCDF4_8_netCDF4_7Dataset_7__str___5generator3);
  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":2630
 *         return '\n'.join(ncdump)
 * 
 *     def _close(self, check_err):             # <<<<<<<<<<<<<<
 *         cdef int ierr
 *         with nogil:
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_15_close(PyObject *__pyx_v_self, 
#if 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_7netCDF4_8_netCDF4_7Dataset_15_close = {"_close", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_15_close, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_15_close(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_check_err = 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 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_check_err,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 2630, __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(0, 2630, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_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", 0) < (0)) __PYX_ERR(0, 2630, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("_close", 1, 1, 1, i); __PYX_ERR(0, 2630, __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(0, 2630, __pyx_L3_error)
    }
    __pyx_v_check_err = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_close", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 2630, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4.Dataset._close", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_7Dataset_14_close(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self), __pyx_v_check_err);

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_14_close(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_check_err) {
  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;
  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("_close", 0);

  /* "netCDF4/_netCDF4.pyx":2632
 *     def _close(self, check_err):
 *         cdef int ierr
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_close(self._grpid)
 * 
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "netCDF4/_netCDF4.pyx":2633
 *         cdef int ierr
 *         with nogil:
 *             ierr = nc_close(self._grpid)             # <<<<<<<<<<<<<<
 * 
 *         if check_err:
*/
        __pyx_v_ierr = nc_close(__pyx_v_self->_grpid);
      }

      /* "netCDF4/_netCDF4.pyx":2632
 *     def _close(self, check_err):
 *         cdef int ierr
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_close(self._grpid)
 * 
*/
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "netCDF4/_netCDF4.pyx":2635
 *             ierr = nc_close(self._grpid)
 * 
 *         if check_err:             # <<<<<<<<<<<<<<
 *             _ensure_nc_success(ierr)
 * 
*/
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_check_err); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 2635, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "netCDF4/_netCDF4.pyx":2636
 * 
 *         if check_err:
 *             _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 * 
 *         self._isopen = 0 # indicates file already closed, checked by __dealloc__
*/
    __pyx_t_3 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2636, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2636, __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(0, 2636, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "netCDF4/_netCDF4.pyx":2635
 *             ierr = nc_close(self._grpid)
 * 
 *         if check_err:             # <<<<<<<<<<<<<<
 *             _ensure_nc_success(ierr)
 * 
*/
  }

  /* "netCDF4/_netCDF4.pyx":2638
 *             _ensure_nc_success(ierr)
 * 
 *         self._isopen = 0 # indicates file already closed, checked by __dealloc__             # <<<<<<<<<<<<<<
 * 
 *         # Only release buffer if close succeeded
*/
  __pyx_v_self->_isopen = 0;

  /* "netCDF4/_netCDF4.pyx":2643
 *         # per impl of PyBuffer_Release: https://github.com/python/cpython/blob/master/Objects/abstract.c#L667
 *         # view.obj is checked, ref on obj is decremented and obj will be null'd out
 *         PyBuffer_Release(&self._buffer)             # <<<<<<<<<<<<<<
 * 
 *     def _close_mem(self, check_err):
*/
  PyBuffer_Release((&__pyx_v_self->_buffer));

  /* "netCDF4/_netCDF4.pyx":2630
 *         return '\n'.join(ncdump)
 * 
 *     def _close(self, check_err):             # <<<<<<<<<<<<<<
 *         cdef int ierr
 *         with nogil:
*/

  /* 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("netCDF4._netCDF4.Dataset._close", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":2645
 *         PyBuffer_Release(&self._buffer)
 * 
 *     def _close_mem(self, check_err):             # <<<<<<<<<<<<<<
 *         cdef int ierr
 *         cdef NC_memio memio
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_17_close_mem(PyObject *__pyx_v_self, 
#if 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_7netCDF4_8_netCDF4_7Dataset_17_close_mem = {"_close_mem", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_17_close_mem, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_17_close_mem(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_check_err = 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_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_check_err,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 2645, __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(0, 2645, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_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_mem", 0) < (0)) __PYX_ERR(0, 2645, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("_close_mem", 1, 1, 1, i); __PYX_ERR(0, 2645, __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(0, 2645, __pyx_L3_error)
    }
    __pyx_v_check_err = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_close_mem", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 2645, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4.Dataset._close_mem", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_7Dataset_16_close_mem(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self), __pyx_v_check_err);

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_16_close_mem(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_check_err) {
  int __pyx_v_ierr;
  NC_memio __pyx_v_memio;
  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("_close_mem", 0);

  /* "netCDF4/_netCDF4.pyx":2648
 *         cdef int ierr
 *         cdef NC_memio memio
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_close_memio(self._grpid, &memio)
 * 
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "netCDF4/_netCDF4.pyx":2649
 *         cdef NC_memio memio
 *         with nogil:
 *             ierr = nc_close_memio(self._grpid, &memio)             # <<<<<<<<<<<<<<
 * 
 *         if check_err:
*/
        __pyx_v_ierr = nc_close_memio(__pyx_v_self->_grpid, (&__pyx_v_memio));
      }

      /* "netCDF4/_netCDF4.pyx":2648
 *         cdef int ierr
 *         cdef NC_memio memio
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_close_memio(self._grpid, &memio)
 * 
*/
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "netCDF4/_netCDF4.pyx":2651
 *             ierr = nc_close_memio(self._grpid, &memio)
 * 
 *         if check_err:             # <<<<<<<<<<<<<<
 *             _ensure_nc_success(ierr)
 * 
*/
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_check_err); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 2651, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "netCDF4/_netCDF4.pyx":2652
 * 
 *         if check_err:
 *             _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 * 
 *         self._isopen = 0
*/
    __pyx_t_3 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2652, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2652, __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(0, 2652, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "netCDF4/_netCDF4.pyx":2651
 *             ierr = nc_close_memio(self._grpid, &memio)
 * 
 *         if check_err:             # <<<<<<<<<<<<<<
 *             _ensure_nc_success(ierr)
 * 
*/
  }

  /* "netCDF4/_netCDF4.pyx":2654
 *             _ensure_nc_success(ierr)
 * 
 *         self._isopen = 0             # <<<<<<<<<<<<<<
 *         PyBuffer_Release(&self._buffer)
 * 
*/
  __pyx_v_self->_isopen = 0;

  /* "netCDF4/_netCDF4.pyx":2655
 * 
 *         self._isopen = 0
 *         PyBuffer_Release(&self._buffer)             # <<<<<<<<<<<<<<
 * 
 *         # membuf_fromptr from membuf.pyx - creates a python memoryview
*/
  PyBuffer_Release((&__pyx_v_self->_buffer));

  /* "netCDF4/_netCDF4.pyx":2659
 *         # membuf_fromptr from membuf.pyx - creates a python memoryview
 *         # from a raw pointer without making a copy.
 *         return memview_fromptr(<char *>memio.memory, memio.size)             # <<<<<<<<<<<<<<
 * 
 *     def close(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_f_7netCDF4_8_netCDF4_memview_fromptr(((char *)__pyx_v_memio.memory), __pyx_v_memio.size); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2659, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":2645
 *         PyBuffer_Release(&self._buffer)
 * 
 *     def _close_mem(self, check_err):             # <<<<<<<<<<<<<<
 *         cdef int ierr
 *         cdef NC_memio memio
*/

  /* 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("netCDF4._netCDF4.Dataset._close_mem", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":2661
 *         return memview_fromptr(<char *>memio.memory, memio.size)
 * 
 *     def close(self):             # <<<<<<<<<<<<<<
 *         """**`close(self)`**
 * 
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_19close(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7netCDF4_8_netCDF4_7Dataset_18close, "**`close(self)`**\n\n        Close the Dataset.\n        ");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_7Dataset_19close = {"close", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_19close, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_7Dataset_18close};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_19close(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_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_7netCDF4_8_netCDF4_7Dataset_18close(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_18close(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self) {
  PyObject *__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;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("close", 0);

  /* "netCDF4/_netCDF4.pyx":2666
 *         Close the Dataset.
 *         """
 *         if __has_nc_create_mem__ and self._inmemory:             # <<<<<<<<<<<<<<
 *             return self._close_mem(True)
 * 
*/
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_has_nc_create_mem); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2666, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 2666, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__pyx_t_3) {
  } else {
    __pyx_t_1 = __pyx_t_3;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_self->_inmemory); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 2666, __pyx_L1_error)
  __pyx_t_1 = __pyx_t_3;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "netCDF4/_netCDF4.pyx":2667
 *         """
 *         if __has_nc_create_mem__ and self._inmemory:
 *             return self._close_mem(True)             # <<<<<<<<<<<<<<
 * 
 *         self._close(True)
*/
    __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, Py_True};
      __pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_close_mem, __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_2)) __PYX_ERR(0, 2667, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "netCDF4/_netCDF4.pyx":2666
 *         Close the Dataset.
 *         """
 *         if __has_nc_create_mem__ and self._inmemory:             # <<<<<<<<<<<<<<
 *             return self._close_mem(True)
 * 
*/
  }

  /* "netCDF4/_netCDF4.pyx":2669
 *             return self._close_mem(True)
 * 
 *         self._close(True)             # <<<<<<<<<<<<<<
 * 
 *     def isopen(self):
*/
  __pyx_t_4 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_4);
  __pyx_t_5 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, Py_True};
    __pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_close_2, __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_2)) __PYX_ERR(0, 2669, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":2661
 *         return memview_fromptr(<char *>memio.memory, memio.size)
 * 
 *     def close(self):             # <<<<<<<<<<<<<<
 *         """**`close(self)`**
 * 
*/

  /* 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_4);
  __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.close", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":2671
 *         self._close(True)
 * 
 *     def isopen(self):             # <<<<<<<<<<<<<<
 *         """
 * **`isopen(self)`**
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_21isopen(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7netCDF4_8_netCDF4_7Dataset_20isopen, "\n**`isopen(self)`**\n\nIs the Dataset open or closed?\n        ");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_7Dataset_21isopen = {"isopen", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_21isopen, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_7Dataset_20isopen};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_21isopen(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("isopen (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("isopen", 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("isopen", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_7Dataset_20isopen(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_20isopen(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__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("isopen", 0);

  /* "netCDF4/_netCDF4.pyx":2677
 * Is the Dataset open or closed?
 *         """
 *         return bool(self._isopen)             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong((!(!(__pyx_v_self->_isopen != 0)))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2677, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":2671
 *         self._close(True)
 * 
 *     def isopen(self):             # <<<<<<<<<<<<<<
 *         """
 * **`isopen(self)`**
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.isopen", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":2679
 *         return bool(self._isopen)
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         # close file when there are no references to object left and clear the cache.
 *         if self.get_variables_by_attributes:
*/

/* Python wrapper */
static void __pyx_pw_7netCDF4_8_netCDF4_7Dataset_23__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_7netCDF4_8_netCDF4_7Dataset_23__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_7netCDF4_8_netCDF4_7Dataset_22__dealloc__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self));

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

static void __pyx_pf_7netCDF4_8_netCDF4_7Dataset_22__dealloc__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self) {
  __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("__dealloc__", 0);

  /* "netCDF4/_netCDF4.pyx":2681
 *     def __dealloc__(self):
 *         # close file when there are no references to object left and clear the cache.
 *         if self.get_variables_by_attributes:             # <<<<<<<<<<<<<<
 *             self.get_variables_by_attributes.cache_clear()
 *         if self._isopen:
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_get_variables_by_attributes); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2681, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 2681, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {

    /* "netCDF4/_netCDF4.pyx":2682
 *         # close file when there are no references to object left and clear the cache.
 *         if self.get_variables_by_attributes:
 *             self.get_variables_by_attributes.cache_clear()             # <<<<<<<<<<<<<<
 *         if self._isopen:
 *            self._close(False)
*/
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_get_variables_by_attributes); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2682, __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, NULL};
      __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_cache_clear, __pyx_callargs+__pyx_t_5, (1-__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(0, 2682, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":2681
 *     def __dealloc__(self):
 *         # close file when there are no references to object left and clear the cache.
 *         if self.get_variables_by_attributes:             # <<<<<<<<<<<<<<
 *             self.get_variables_by_attributes.cache_clear()
 *         if self._isopen:
*/
  }

  /* "netCDF4/_netCDF4.pyx":2683
 *         if self.get_variables_by_attributes:
 *             self.get_variables_by_attributes.cache_clear()
 *         if self._isopen:             # <<<<<<<<<<<<<<
 *            self._close(False)
 * 
*/
  __pyx_t_2 = (__pyx_v_self->_isopen != 0);
  if (__pyx_t_2) {

    /* "netCDF4/_netCDF4.pyx":2684
 *             self.get_variables_by_attributes.cache_clear()
 *         if self._isopen:
 *            self._close(False)             # <<<<<<<<<<<<<<
 * 
 *     def __reduce__(self):
*/
    __pyx_t_4 = ((PyObject *)__pyx_v_self);
    __Pyx_INCREF(__pyx_t_4);
    __pyx_t_5 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, Py_False};
      __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_close_2, __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_1)) __PYX_ERR(0, 2684, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":2683
 *         if self.get_variables_by_attributes:
 *             self.get_variables_by_attributes.cache_clear()
 *         if self._isopen:             # <<<<<<<<<<<<<<
 *            self._close(False)
 * 
*/
  }

  /* "netCDF4/_netCDF4.pyx":2679
 *         return bool(self._isopen)
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         # close file when there are no references to object left and clear the cache.
 *         if self.get_variables_by_attributes:
*/

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_WriteUnraisable("netCDF4._netCDF4.Dataset.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
}

/* "netCDF4/_netCDF4.pyx":2686
 *            self._close(False)
 * 
 *     def __reduce__(self):             # <<<<<<<<<<<<<<
 *         # raise error is user tries to pickle a Dataset object.
 *         raise NotImplementedError('Dataset is not picklable')
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_25__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*/
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_7Dataset_25__reduce__ = {"__reduce__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_25__reduce__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_25__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_7netCDF4_8_netCDF4_7Dataset_24__reduce__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_24__reduce__(CYTHON_UNUSED struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__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("__reduce__", 0);

  /* "netCDF4/_netCDF4.pyx":2688
 *     def __reduce__(self):
 *         # raise error is user tries to pickle a Dataset object.
 *         raise NotImplementedError('Dataset is not picklable')             # <<<<<<<<<<<<<<
 * 
 *     def sync(self):
*/
  __pyx_t_2 = NULL;
  __pyx_t_3 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_Dataset_is_not_picklable};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_NotImplementedError)), __pyx_callargs+__pyx_t_3, (2-__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(0, 2688, __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(0, 2688, __pyx_L1_error)

  /* "netCDF4/_netCDF4.pyx":2686
 *            self._close(False)
 * 
 *     def __reduce__(self):             # <<<<<<<<<<<<<<
 *         # raise error is user tries to pickle a Dataset object.
 *         raise NotImplementedError('Dataset is not picklable')
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.__reduce__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":2690
 *         raise NotImplementedError('Dataset is not picklable')
 * 
 *     def sync(self):             # <<<<<<<<<<<<<<
 *         """
 * **`sync(self)`**
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_27sync(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7netCDF4_8_netCDF4_7Dataset_26sync, "\n**`sync(self)`**\n\nWrites all buffered data in the `Dataset` to the disk file.");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_7Dataset_27sync = {"sync", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_27sync, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_7Dataset_26sync};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_27sync(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_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_7netCDF4_8_netCDF4_7Dataset_26sync(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_26sync(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self) {
  int __pyx_v_ierr;
  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_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sync", 0);

  /* "netCDF4/_netCDF4.pyx":2696
 * Writes all buffered data in the `Dataset` to the disk file."""
 *         cdef int ierr
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_sync(self._grpid)
 *         _ensure_nc_success(ierr)
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "netCDF4/_netCDF4.pyx":2697
 *         cdef int ierr
 *         with nogil:
 *             ierr = nc_sync(self._grpid)             # <<<<<<<<<<<<<<
 *         _ensure_nc_success(ierr)
 * 
*/
        __pyx_v_ierr = nc_sync(__pyx_v_self->_grpid);
      }

      /* "netCDF4/_netCDF4.pyx":2696
 * Writes all buffered data in the `Dataset` to the disk file."""
 *         cdef int ierr
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_sync(self._grpid)
 *         _ensure_nc_success(ierr)
*/
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "netCDF4/_netCDF4.pyx":2698
 *         with nogil:
 *             ierr = nc_sync(self._grpid)
 *         _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 * 
 *     def _redef(self):
*/
  __pyx_t_2 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2698, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2698, __pyx_L1_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[2] = {__pyx_t_2, __pyx_t_4};
    __pyx_t_1 = __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_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(0, 2698, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":2690
 *         raise NotImplementedError('Dataset is not picklable')
 * 
 *     def sync(self):             # <<<<<<<<<<<<<<
 *         """
 * **`sync(self)`**
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.sync", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":2700
 *         _ensure_nc_success(ierr)
 * 
 *     def _redef(self):             # <<<<<<<<<<<<<<
 *         cdef int ierr
 *         with nogil:
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_29_redef(PyObject *__pyx_v_self, 
#if 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_7netCDF4_8_netCDF4_7Dataset_29_redef = {"_redef", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_29_redef, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_29_redef(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_redef (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("_redef", 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("_redef", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_7Dataset_28_redef(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_28_redef(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self) {
  CYTHON_UNUSED int __pyx_v_ierr;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_redef", 0);

  /* "netCDF4/_netCDF4.pyx":2702
 *     def _redef(self):
 *         cdef int ierr
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_redef(self._grpid)
 * 
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "netCDF4/_netCDF4.pyx":2703
 *         cdef int ierr
 *         with nogil:
 *             ierr = nc_redef(self._grpid)             # <<<<<<<<<<<<<<
 * 
 *     def _enddef(self):
*/
        __pyx_v_ierr = nc_redef(__pyx_v_self->_grpid);
      }

      /* "netCDF4/_netCDF4.pyx":2702
 *     def _redef(self):
 *         cdef int ierr
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_redef(self._grpid)
 * 
*/
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "netCDF4/_netCDF4.pyx":2700
 *         _ensure_nc_success(ierr)
 * 
 *     def _redef(self):             # <<<<<<<<<<<<<<
 *         cdef int ierr
 *         with nogil:
*/

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

/* "netCDF4/_netCDF4.pyx":2705
 *             ierr = nc_redef(self._grpid)
 * 
 *     def _enddef(self):             # <<<<<<<<<<<<<<
 *         cdef int ierr
 *         with nogil:
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_31_enddef(PyObject *__pyx_v_self, 
#if 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_7netCDF4_8_netCDF4_7Dataset_31_enddef = {"_enddef", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_31_enddef, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_31_enddef(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_enddef (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("_enddef", 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("_enddef", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_7Dataset_30_enddef(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_30_enddef(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self) {
  CYTHON_UNUSED int __pyx_v_ierr;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_enddef", 0);

  /* "netCDF4/_netCDF4.pyx":2707
 *     def _enddef(self):
 *         cdef int ierr
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_enddef(self._grpid)
 * 
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "netCDF4/_netCDF4.pyx":2708
 *         cdef int ierr
 *         with nogil:
 *             ierr = nc_enddef(self._grpid)             # <<<<<<<<<<<<<<
 * 
 *     def set_fill_on(self):
*/
        __pyx_v_ierr = nc_enddef(__pyx_v_self->_grpid);
      }

      /* "netCDF4/_netCDF4.pyx":2707
 *     def _enddef(self):
 *         cdef int ierr
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_enddef(self._grpid)
 * 
*/
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "netCDF4/_netCDF4.pyx":2705
 *             ierr = nc_redef(self._grpid)
 * 
 *     def _enddef(self):             # <<<<<<<<<<<<<<
 *         cdef int ierr
 *         with nogil:
*/

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

/* "netCDF4/_netCDF4.pyx":2710
 *             ierr = nc_enddef(self._grpid)
 * 
 *     def set_fill_on(self):             # <<<<<<<<<<<<<<
 *         """
 * **`set_fill_on(self)`**
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_33set_fill_on(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7netCDF4_8_netCDF4_7Dataset_32set_fill_on, "\n**`set_fill_on(self)`**\n\nSets the fill mode for a `Dataset` open for writing to `on`.\n\nThis causes data to be pre-filled with fill values. The fill values can be\ncontrolled by the variable's `_Fill_Value` attribute, but is usually\nsufficient to the use the netCDF default `_Fill_Value` (defined\nseparately for each variable type). The default behavior of the netCDF\nlibrary corresponds to `set_fill_on`.  Data which are equal to the\n`_Fill_Value` indicate that the variable was created, but never written\nto.");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_7Dataset_33set_fill_on = {"set_fill_on", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_33set_fill_on, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_7Dataset_32set_fill_on};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_33set_fill_on(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set_fill_on (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("set_fill_on", 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("set_fill_on", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_7Dataset_32set_fill_on(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_32set_fill_on(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self) {
  int __pyx_v_oldmode;
  int __pyx_v_ierr;
  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_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("set_fill_on", 0);

  /* "netCDF4/_netCDF4.pyx":2724
 * to."""
 *         cdef int oldmode, ierr
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_set_fill(self._grpid, NC_FILL, &oldmode)
 *         _ensure_nc_success(ierr)
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "netCDF4/_netCDF4.pyx":2725
 *         cdef int oldmode, ierr
 *         with nogil:
 *             ierr = nc_set_fill(self._grpid, NC_FILL, &oldmode)             # <<<<<<<<<<<<<<
 *         _ensure_nc_success(ierr)
 * 
*/
        __pyx_v_ierr = nc_set_fill(__pyx_v_self->_grpid, NC_FILL, (&__pyx_v_oldmode));
      }

      /* "netCDF4/_netCDF4.pyx":2724
 * to."""
 *         cdef int oldmode, ierr
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_set_fill(self._grpid, NC_FILL, &oldmode)
 *         _ensure_nc_success(ierr)
*/
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "netCDF4/_netCDF4.pyx":2726
 *         with nogil:
 *             ierr = nc_set_fill(self._grpid, NC_FILL, &oldmode)
 *         _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 * 
 *     def set_fill_off(self):
*/
  __pyx_t_2 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2726, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2726, __pyx_L1_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[2] = {__pyx_t_2, __pyx_t_4};
    __pyx_t_1 = __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_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(0, 2726, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":2710
 *             ierr = nc_enddef(self._grpid)
 * 
 *     def set_fill_on(self):             # <<<<<<<<<<<<<<
 *         """
 * **`set_fill_on(self)`**
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.set_fill_on", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":2728
 *         _ensure_nc_success(ierr)
 * 
 *     def set_fill_off(self):             # <<<<<<<<<<<<<<
 *         """
 * **`set_fill_off(self)`**
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_35set_fill_off(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7netCDF4_8_netCDF4_7Dataset_34set_fill_off, "\n**`set_fill_off(self)`**\n\nSets the fill mode for a `Dataset` open for writing to `off`.\n\nThis will prevent the data from being pre-filled with fill values, which\nmay result in some performance improvements. However, you must then make\nsure the data is actually written before being read.");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_7Dataset_35set_fill_off = {"set_fill_off", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_35set_fill_off, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_7Dataset_34set_fill_off};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_35set_fill_off(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set_fill_off (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("set_fill_off", 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("set_fill_off", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_7Dataset_34set_fill_off(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_34set_fill_off(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self) {
  int __pyx_v_oldmode;
  int __pyx_v_ierr;
  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_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("set_fill_off", 0);

  /* "netCDF4/_netCDF4.pyx":2738
 * sure the data is actually written before being read."""
 *         cdef int oldmode, ierr
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_set_fill(self._grpid, NC_NOFILL, &oldmode)
 *         _ensure_nc_success(ierr)
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "netCDF4/_netCDF4.pyx":2739
 *         cdef int oldmode, ierr
 *         with nogil:
 *             ierr = nc_set_fill(self._grpid, NC_NOFILL, &oldmode)             # <<<<<<<<<<<<<<
 *         _ensure_nc_success(ierr)
 * 
*/
        __pyx_v_ierr = nc_set_fill(__pyx_v_self->_grpid, NC_NOFILL, (&__pyx_v_oldmode));
      }

      /* "netCDF4/_netCDF4.pyx":2738
 * sure the data is actually written before being read."""
 *         cdef int oldmode, ierr
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_set_fill(self._grpid, NC_NOFILL, &oldmode)
 *         _ensure_nc_success(ierr)
*/
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "netCDF4/_netCDF4.pyx":2740
 *         with nogil:
 *             ierr = nc_set_fill(self._grpid, NC_NOFILL, &oldmode)
 *         _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 * 
 *     def createDimension(self, dimname, size=None):
*/
  __pyx_t_2 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2740, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2740, __pyx_L1_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[2] = {__pyx_t_2, __pyx_t_4};
    __pyx_t_1 = __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_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(0, 2740, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":2728
 *         _ensure_nc_success(ierr)
 * 
 *     def set_fill_off(self):             # <<<<<<<<<<<<<<
 *         """
 * **`set_fill_off(self)`**
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.set_fill_off", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":2742
 *         _ensure_nc_success(ierr)
 * 
 *     def createDimension(self, dimname, size=None):             # <<<<<<<<<<<<<<
 *         """
 * **`createDimension(self, dimname, size=None)`**
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_37createDimension(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7netCDF4_8_netCDF4_7Dataset_36createDimension, "\n**`createDimension(self, dimname, size=None)`**\n\nCreates a new dimension with the given `dimname` and `size`.\n\n`size` must be a positive integer or `None`, which stands for\n\"unlimited\" (default is `None`). Specifying a size of 0 also\nresults in an unlimited dimension. The return value is the `Dimension`\nclass instance describing the new dimension.  To determine the current\nmaximum size of the dimension, use the `len` function on the `Dimension`\ninstance. To determine if a dimension is 'unlimited', use the\n`Dimension.isunlimited` method of the `Dimension` instance.");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_7Dataset_37createDimension = {"createDimension", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_37createDimension, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_7Dataset_36createDimension};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_37createDimension(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_dimname = 0;
  PyObject *__pyx_v_size = 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("createDimension (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_dimname,&__pyx_mstate_global->__pyx_n_u_size,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 2742, __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(0, 2742, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 2742, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "createDimension", 0) < (0)) __PYX_ERR(0, 2742, __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("createDimension", 0, 1, 2, i); __PYX_ERR(0, 2742, __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(0, 2742, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 2742, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None));
    }
    __pyx_v_dimname = values[0];
    __pyx_v_size = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("createDimension", 0, 1, 2, __pyx_nargs); __PYX_ERR(0, 2742, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.createDimension", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_7Dataset_36createDimension(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self), __pyx_v_dimname, __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_7netCDF4_8_netCDF4_7Dataset_36createDimension(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_dimname, PyObject *__pyx_v_size) {
  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("createDimension", 0);

  /* "netCDF4/_netCDF4.pyx":2755
 * instance. To determine if a dimension is 'unlimited', use the
 * `Dimension.isunlimited` method of the `Dimension` instance."""
 *         self.dimensions[dimname] = Dimension(self, dimname, size=size)             # <<<<<<<<<<<<<<
 *         return self.dimensions[dimname]
 * 
*/
  __pyx_t_2 = NULL;
  __pyx_t_3 = 1;
  {
    PyObject *__pyx_callargs[3 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_2, ((PyObject *)__pyx_v_self), __pyx_v_dimname};
    __pyx_t_4 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2755, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_size, __pyx_v_size, __pyx_t_4, __pyx_callargs+3, 0) < (0)) __PYX_ERR(0, 2755, __pyx_L1_error)
    __pyx_t_1 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Dimension, __pyx_callargs+__pyx_t_3, (3-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_4);
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2755, __pyx_L1_error)
    __Pyx_GOTREF((PyObject *)__pyx_t_1);
  }
  if (unlikely((PyObject_SetItem(__pyx_v_self->dimensions, __pyx_v_dimname, ((PyObject *)__pyx_t_1)) < 0))) __PYX_ERR(0, 2755, __pyx_L1_error)
  __Pyx_DECREF((PyObject *)__pyx_t_1); __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":2756
 * `Dimension.isunlimited` method of the `Dimension` instance."""
 *         self.dimensions[dimname] = Dimension(self, dimname, size=size)
 *         return self.dimensions[dimname]             # <<<<<<<<<<<<<<
 * 
 *     def renameDimension(self, oldname, newname):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_v_self->dimensions, __pyx_v_dimname); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2756, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":2742
 *         _ensure_nc_success(ierr)
 * 
 *     def createDimension(self, dimname, size=None):             # <<<<<<<<<<<<<<
 *         """
 * **`createDimension(self, dimname, size=None)`**
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.createDimension", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":2758
 *         return self.dimensions[dimname]
 * 
 *     def renameDimension(self, oldname, newname):             # <<<<<<<<<<<<<<
 *         """
 * **`renameDimension(self, oldname, newname)`**
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_39renameDimension(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7netCDF4_8_netCDF4_7Dataset_38renameDimension, "\n**`renameDimension(self, oldname, newname)`**\n\nrename a `Dimension` named `oldname` to `newname`.");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_7Dataset_39renameDimension = {"renameDimension", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_39renameDimension, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_7Dataset_38renameDimension};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_39renameDimension(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_oldname = 0;
  PyObject *__pyx_v_newname = 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("renameDimension (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_oldname,&__pyx_mstate_global->__pyx_n_u_newname,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 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(0, 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(0, 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, "renameDimension", 0) < (0)) __PYX_ERR(0, 2758, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("renameDimension", 1, 2, 2, i); __PYX_ERR(0, 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(0, 2758, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 2758, __pyx_L3_error)
    }
    __pyx_v_oldname = values[0];
    __pyx_v_newname = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("renameDimension", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 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("netCDF4._netCDF4.Dataset.renameDimension", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_7Dataset_38renameDimension(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self), __pyx_v_oldname, __pyx_v_newname);

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_38renameDimension(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_oldname, PyObject *__pyx_v_newname) {
  char *__pyx_v_namstring;
  struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *__pyx_v_dim = 0;
  PyObject *__pyx_v_bytestr = NULL;
  int __pyx_v_ierr;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  char *__pyx_t_2;
  int __pyx_t_3;
  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;
  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("renameDimension", 0);

  /* "netCDF4/_netCDF4.pyx":2765
 *         cdef char *namstring
 *         cdef Dimension dim
 *         bytestr = _strencode(newname)             # <<<<<<<<<<<<<<
 *         namstring = bytestr
 *         if self.data_model != 'NETCDF4': self._redef()
*/
  __pyx_t_1 = __pyx_f_7netCDF4_8_netCDF4__strencode(__pyx_v_newname, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2765, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_bytestr = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":2766
 *         cdef Dimension dim
 *         bytestr = _strencode(newname)
 *         namstring = bytestr             # <<<<<<<<<<<<<<
 *         if self.data_model != 'NETCDF4': self._redef()
 *         try:
*/
  __pyx_t_2 = __Pyx_PyObject_AsWritableString(__pyx_v_bytestr); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 2766, __pyx_L1_error)
  __pyx_v_namstring = __pyx_t_2;

  /* "netCDF4/_netCDF4.pyx":2767
 *         bytestr = _strencode(newname)
 *         namstring = bytestr
 *         if self.data_model != 'NETCDF4': self._redef()             # <<<<<<<<<<<<<<
 *         try:
 *             dim = self.dimensions[oldname]
*/
  __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_v_self->data_model, __pyx_mstate_global->__pyx_n_u_NETCDF4, Py_NE)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 2767, __pyx_L1_error)
  if (__pyx_t_3) {
    __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_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_redef, __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_1)) __PYX_ERR(0, 2767, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }

  /* "netCDF4/_netCDF4.pyx":2768
 *         namstring = bytestr
 *         if self.data_model != 'NETCDF4': self._redef()
 *         try:             # <<<<<<<<<<<<<<
 *             dim = self.dimensions[oldname]
 *         except KeyError:
*/
  {
    __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:*/ {

      /* "netCDF4/_netCDF4.pyx":2769
 *         if self.data_model != 'NETCDF4': self._redef()
 *         try:
 *             dim = self.dimensions[oldname]             # <<<<<<<<<<<<<<
 *         except KeyError:
 *             raise KeyError('%s not a valid dimension name' % oldname)
*/
      __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_v_self->dimensions, __pyx_v_oldname); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2769, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Dimension))))) __PYX_ERR(0, 2769, __pyx_L4_error)
      __pyx_v_dim = ((struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *)__pyx_t_1);
      __pyx_t_1 = 0;

      /* "netCDF4/_netCDF4.pyx":2768
 *         namstring = bytestr
 *         if self.data_model != 'NETCDF4': self._redef()
 *         try:             # <<<<<<<<<<<<<<
 *             dim = self.dimensions[oldname]
 *         except KeyError:
*/
    }
    __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_L9_try_end;
    __pyx_L4_error:;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "netCDF4/_netCDF4.pyx":2770
 *         try:
 *             dim = self.dimensions[oldname]
 *         except KeyError:             # <<<<<<<<<<<<<<
 *             raise KeyError('%s not a valid dimension name' % oldname)
 *         with nogil:
*/
    __pyx_t_9 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_KeyError))));
    if (__pyx_t_9) {
      __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.renameDimension", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_10) < 0) __PYX_ERR(0, 2770, __pyx_L6_except_error)
      __Pyx_XGOTREF(__pyx_t_1);
      __Pyx_XGOTREF(__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_10);

      /* "netCDF4/_netCDF4.pyx":2771
 *             dim = self.dimensions[oldname]
 *         except KeyError:
 *             raise KeyError('%s not a valid dimension name' % oldname)             # <<<<<<<<<<<<<<
 *         with nogil:
 *             ierr = nc_rename_dim(self._grpid, dim._dimid, namstring)
*/
      __pyx_t_12 = NULL;
      __pyx_t_13 = __Pyx_PyUnicode_FormatSafe(__pyx_mstate_global->__pyx_kp_u_s_not_a_valid_dimension_name, __pyx_v_oldname); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2771, __pyx_L6_except_error)
      __Pyx_GOTREF(__pyx_t_13);
      __pyx_t_5 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_12, __pyx_t_13};
        __pyx_t_11 = __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_12); __pyx_t_12 = 0;
        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
        if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2771, __pyx_L6_except_error)
        __Pyx_GOTREF(__pyx_t_11);
      }
      __Pyx_Raise(__pyx_t_11, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __PYX_ERR(0, 2771, __pyx_L6_except_error)
    }
    goto __pyx_L6_except_error;

    /* "netCDF4/_netCDF4.pyx":2768
 *         namstring = bytestr
 *         if self.data_model != 'NETCDF4': self._redef()
 *         try:             # <<<<<<<<<<<<<<
 *             dim = self.dimensions[oldname]
 *         except KeyError:
*/
    __pyx_L6_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_L9_try_end:;
  }

  /* "netCDF4/_netCDF4.pyx":2772
 *         except KeyError:
 *             raise KeyError('%s not a valid dimension name' % oldname)
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_rename_dim(self._grpid, dim._dimid, namstring)
 *         if self.data_model != 'NETCDF4': self._enddef()
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "netCDF4/_netCDF4.pyx":2773
 *             raise KeyError('%s not a valid dimension name' % oldname)
 *         with nogil:
 *             ierr = nc_rename_dim(self._grpid, dim._dimid, namstring)             # <<<<<<<<<<<<<<
 *         if self.data_model != 'NETCDF4': self._enddef()
 * 
*/
        __pyx_v_ierr = nc_rename_dim(__pyx_v_self->_grpid, __pyx_v_dim->_dimid, __pyx_v_namstring);
      }

      /* "netCDF4/_netCDF4.pyx":2772
 *         except KeyError:
 *             raise KeyError('%s not a valid dimension name' % oldname)
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_rename_dim(self._grpid, dim._dimid, namstring)
 *         if self.data_model != 'NETCDF4': self._enddef()
*/
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L14;
        }
        __pyx_L14:;
      }
  }

  /* "netCDF4/_netCDF4.pyx":2774
 *         with nogil:
 *             ierr = nc_rename_dim(self._grpid, dim._dimid, namstring)
 *         if self.data_model != 'NETCDF4': self._enddef()             # <<<<<<<<<<<<<<
 * 
 *         _ensure_nc_success(ierr)
*/
  __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_v_self->data_model, __pyx_mstate_global->__pyx_n_u_NETCDF4, Py_NE)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 2774, __pyx_L1_error)
  if (__pyx_t_3) {
    __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_10 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_enddef, __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_10)) __PYX_ERR(0, 2774, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
    }
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  }

  /* "netCDF4/_netCDF4.pyx":2776
 *         if self.data_model != 'NETCDF4': self._enddef()
 * 
 *         _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 *         # remove old key from dimensions dict.
 *         self.dimensions.pop(oldname)
*/
  __pyx_t_4 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2776, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_11 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2776, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_5 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1);
    assert(__pyx_t_4);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_1);
    __Pyx_INCREF(__pyx_t_4);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_1, __pyx__function);
    __pyx_t_5 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_11};
    __pyx_t_10 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_1, __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_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2776, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
  }
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

  /* "netCDF4/_netCDF4.pyx":2778
 *         _ensure_nc_success(ierr)
 *         # remove old key from dimensions dict.
 *         self.dimensions.pop(oldname)             # <<<<<<<<<<<<<<
 *         # add new key.
 *         self.dimensions[newname] = dim
*/
  __pyx_t_1 = __pyx_v_self->dimensions;
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_5 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_v_oldname};
    __pyx_t_10 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_pop, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2778, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
  }
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

  /* "netCDF4/_netCDF4.pyx":2780
 *         self.dimensions.pop(oldname)
 *         # add new key.
 *         self.dimensions[newname] = dim             # <<<<<<<<<<<<<<
 *         # Variable.dimensions is determined by a method that
 *         # looks in the file, so no need to manually update.
*/
  if (unlikely((PyObject_SetItem(__pyx_v_self->dimensions, __pyx_v_newname, ((PyObject *)__pyx_v_dim)) < 0))) __PYX_ERR(0, 2780, __pyx_L1_error)

  /* "netCDF4/_netCDF4.pyx":2758
 *         return self.dimensions[dimname]
 * 
 *     def renameDimension(self, oldname, newname):             # <<<<<<<<<<<<<<
 *         """
 * **`renameDimension(self, oldname, newname)`**
*/

  /* 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_4);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.renameDimension", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_dim);
  __Pyx_XDECREF(__pyx_v_bytestr);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":2784
 *         # looks in the file, so no need to manually update.
 * 
 *     def createCompoundType(self, datatype, datatype_name):             # <<<<<<<<<<<<<<
 *         """
 * **`createCompoundType(self, datatype, datatype_name)`**
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_41createCompoundType(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7netCDF4_8_netCDF4_7Dataset_40createCompoundType, "\n**`createCompoundType(self, datatype, datatype_name)`**\n\nCreates a new compound data type named `datatype_name` from the numpy\ndtype object `datatype`.\n\n***Note***: If the new compound data type contains other compound data types\n(i.e. it is a 'nested' compound type, where not all of the elements\nare homogeneous numeric data types), then the 'inner' compound types **must** be\ncreated first.\n\nThe return value is the `CompoundType` class instance describing the new\ndatatype.");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_7Dataset_41createCompoundType = {"createCompoundType", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_41createCompoundType, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_7Dataset_40createCompoundType};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_41createCompoundType(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_datatype = 0;
  PyObject *__pyx_v_datatype_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("createCompoundType (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 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_datatype_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(0, 2784, __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(0, 2784, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 2784, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "createCompoundType", 0) < (0)) __PYX_ERR(0, 2784, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("createCompoundType", 1, 2, 2, i); __PYX_ERR(0, 2784, __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(0, 2784, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 2784, __pyx_L3_error)
    }
    __pyx_v_datatype = values[0];
    __pyx_v_datatype_name = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("createCompoundType", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 2784, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.createCompoundType", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_7Dataset_40createCompoundType(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self), __pyx_v_datatype, __pyx_v_datatype_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_7netCDF4_8_netCDF4_7Dataset_40createCompoundType(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_datatype, PyObject *__pyx_v_datatype_name) {
  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("createCompoundType", 0);

  /* "netCDF4/_netCDF4.pyx":2798
 * The return value is the `CompoundType` class instance describing the new
 * datatype."""
 *         self.cmptypes[datatype_name] = CompoundType(self, datatype,\             # <<<<<<<<<<<<<<
 *                 datatype_name)
 *         return self.cmptypes[datatype_name]
*/
  __pyx_t_2 = NULL;

  /* "netCDF4/_netCDF4.pyx":2799
 * datatype."""
 *         self.cmptypes[datatype_name] = CompoundType(self, datatype,\
 *                 datatype_name)             # <<<<<<<<<<<<<<
 *         return self.cmptypes[datatype_name]
 * 
*/
  __pyx_t_3 = 1;
  {
    PyObject *__pyx_callargs[4] = {__pyx_t_2, ((PyObject *)__pyx_v_self), __pyx_v_datatype, __pyx_v_datatype_name};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_CompoundType, __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(0, 2798, __pyx_L1_error)
    __Pyx_GOTREF((PyObject *)__pyx_t_1);
  }

  /* "netCDF4/_netCDF4.pyx":2798
 * The return value is the `CompoundType` class instance describing the new
 * datatype."""
 *         self.cmptypes[datatype_name] = CompoundType(self, datatype,\             # <<<<<<<<<<<<<<
 *                 datatype_name)
 *         return self.cmptypes[datatype_name]
*/
  if (unlikely((PyObject_SetItem(__pyx_v_self->cmptypes, __pyx_v_datatype_name, ((PyObject *)__pyx_t_1)) < 0))) __PYX_ERR(0, 2798, __pyx_L1_error)
  __Pyx_DECREF((PyObject *)__pyx_t_1); __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":2800
 *         self.cmptypes[datatype_name] = CompoundType(self, datatype,\
 *                 datatype_name)
 *         return self.cmptypes[datatype_name]             # <<<<<<<<<<<<<<
 * 
 *     def createVLType(self, datatype, datatype_name):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_v_self->cmptypes, __pyx_v_datatype_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2800, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":2784
 *         # looks in the file, so no need to manually update.
 * 
 *     def createCompoundType(self, datatype, datatype_name):             # <<<<<<<<<<<<<<
 *         """
 * **`createCompoundType(self, datatype, datatype_name)`**
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.createCompoundType", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":2802
 *         return self.cmptypes[datatype_name]
 * 
 *     def createVLType(self, datatype, datatype_name):             # <<<<<<<<<<<<<<
 *         """
 * **`createVLType(self, datatype, datatype_name)`**
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_43createVLType(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7netCDF4_8_netCDF4_7Dataset_42createVLType, "\n**`createVLType(self, datatype, datatype_name)`**\n\nCreates a new VLEN data type named `datatype_name` from a numpy\ndtype object `datatype`.\n\nThe return value is the `VLType` class instance describing the new\ndatatype.");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_7Dataset_43createVLType = {"createVLType", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_43createVLType, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_7Dataset_42createVLType};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_43createVLType(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_datatype = 0;
  PyObject *__pyx_v_datatype_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("createVLType (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 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_datatype_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(0, 2802, __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(0, 2802, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 2802, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "createVLType", 0) < (0)) __PYX_ERR(0, 2802, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("createVLType", 1, 2, 2, i); __PYX_ERR(0, 2802, __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(0, 2802, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 2802, __pyx_L3_error)
    }
    __pyx_v_datatype = values[0];
    __pyx_v_datatype_name = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("createVLType", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 2802, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.createVLType", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_7Dataset_42createVLType(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self), __pyx_v_datatype, __pyx_v_datatype_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_7netCDF4_8_netCDF4_7Dataset_42createVLType(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_datatype, PyObject *__pyx_v_datatype_name) {
  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("createVLType", 0);

  /* "netCDF4/_netCDF4.pyx":2811
 * The return value is the `VLType` class instance describing the new
 * datatype."""
 *         self.vltypes[datatype_name] = VLType(self, datatype, datatype_name)             # <<<<<<<<<<<<<<
 *         return self.vltypes[datatype_name]
 * 
*/
  __pyx_t_2 = NULL;
  __pyx_t_3 = 1;
  {
    PyObject *__pyx_callargs[4] = {__pyx_t_2, ((PyObject *)__pyx_v_self), __pyx_v_datatype, __pyx_v_datatype_name};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_VLType, __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(0, 2811, __pyx_L1_error)
    __Pyx_GOTREF((PyObject *)__pyx_t_1);
  }
  if (unlikely((PyObject_SetItem(__pyx_v_self->vltypes, __pyx_v_datatype_name, ((PyObject *)__pyx_t_1)) < 0))) __PYX_ERR(0, 2811, __pyx_L1_error)
  __Pyx_DECREF((PyObject *)__pyx_t_1); __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":2812
 * datatype."""
 *         self.vltypes[datatype_name] = VLType(self, datatype, datatype_name)
 *         return self.vltypes[datatype_name]             # <<<<<<<<<<<<<<
 * 
 *     def createEnumType(self, datatype, datatype_name, enum_dict):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_v_self->vltypes, __pyx_v_datatype_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2812, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":2802
 *         return self.cmptypes[datatype_name]
 * 
 *     def createVLType(self, datatype, datatype_name):             # <<<<<<<<<<<<<<
 *         """
 * **`createVLType(self, datatype, datatype_name)`**
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.createVLType", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":2814
 *         return self.vltypes[datatype_name]
 * 
 *     def createEnumType(self, datatype, datatype_name, enum_dict):             # <<<<<<<<<<<<<<
 *         """
 * **`createEnumType(self, datatype, datatype_name, enum_dict)`**
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_45createEnumType(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7netCDF4_8_netCDF4_7Dataset_44createEnumType, "\n**`createEnumType(self, datatype, datatype_name, enum_dict)`**\n\nCreates a new Enum data type named `datatype_name` from a numpy\ninteger dtype object `datatype`, and a python dictionary\ndefining the enum fields and values.\n\nThe return value is the `EnumType` class instance describing the new\ndatatype.");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_7Dataset_45createEnumType = {"createEnumType", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_45createEnumType, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_7Dataset_44createEnumType};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_45createEnumType(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_datatype = 0;
  PyObject *__pyx_v_datatype_name = 0;
  PyObject *__pyx_v_enum_dict = 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("createEnumType (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 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_datatype_name,&__pyx_mstate_global->__pyx_n_u_enum_dict,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 2814, __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(0, 2814, __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(0, 2814, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 2814, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "createEnumType", 0) < (0)) __PYX_ERR(0, 2814, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 3; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("createEnumType", 1, 3, 3, i); __PYX_ERR(0, 2814, __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(0, 2814, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 2814, __pyx_L3_error)
      values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 2814, __pyx_L3_error)
    }
    __pyx_v_datatype = values[0];
    __pyx_v_datatype_name = values[1];
    __pyx_v_enum_dict = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("createEnumType", 1, 3, 3, __pyx_nargs); __PYX_ERR(0, 2814, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.createEnumType", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_7Dataset_44createEnumType(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self), __pyx_v_datatype, __pyx_v_datatype_name, __pyx_v_enum_dict);

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_44createEnumType(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_datatype, PyObject *__pyx_v_datatype_name, PyObject *__pyx_v_enum_dict) {
  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("createEnumType", 0);

  /* "netCDF4/_netCDF4.pyx":2824
 * The return value is the `EnumType` class instance describing the new
 * datatype."""
 *         self.enumtypes[datatype_name] = EnumType(self, datatype, datatype_name,             # <<<<<<<<<<<<<<
 *                 enum_dict)
 *         return self.enumtypes[datatype_name]
*/
  __pyx_t_2 = NULL;

  /* "netCDF4/_netCDF4.pyx":2825
 * datatype."""
 *         self.enumtypes[datatype_name] = EnumType(self, datatype, datatype_name,
 *                 enum_dict)             # <<<<<<<<<<<<<<
 *         return self.enumtypes[datatype_name]
 * 
*/
  __pyx_t_3 = 1;
  {
    PyObject *__pyx_callargs[5] = {__pyx_t_2, ((PyObject *)__pyx_v_self), __pyx_v_datatype, __pyx_v_datatype_name, __pyx_v_enum_dict};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_EnumType, __pyx_callargs+__pyx_t_3, (5-__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(0, 2824, __pyx_L1_error)
    __Pyx_GOTREF((PyObject *)__pyx_t_1);
  }

  /* "netCDF4/_netCDF4.pyx":2824
 * The return value is the `EnumType` class instance describing the new
 * datatype."""
 *         self.enumtypes[datatype_name] = EnumType(self, datatype, datatype_name,             # <<<<<<<<<<<<<<
 *                 enum_dict)
 *         return self.enumtypes[datatype_name]
*/
  if (unlikely((PyObject_SetItem(__pyx_v_self->enumtypes, __pyx_v_datatype_name, ((PyObject *)__pyx_t_1)) < 0))) __PYX_ERR(0, 2824, __pyx_L1_error)
  __Pyx_DECREF((PyObject *)__pyx_t_1); __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":2826
 *         self.enumtypes[datatype_name] = EnumType(self, datatype, datatype_name,
 *                 enum_dict)
 *         return self.enumtypes[datatype_name]             # <<<<<<<<<<<<<<
 * 
 *     def createVariable(self, varname, datatype, dimensions=(),
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_v_self->enumtypes, __pyx_v_datatype_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2826, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":2814
 *         return self.vltypes[datatype_name]
 * 
 *     def createEnumType(self, datatype, datatype_name, enum_dict):             # <<<<<<<<<<<<<<
 *         """
 * **`createEnumType(self, datatype, datatype_name, enum_dict)`**
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.createEnumType", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":2828
 *         return self.enumtypes[datatype_name]
 * 
 *     def createVariable(self, varname, datatype, dimensions=(),             # <<<<<<<<<<<<<<
 *             compression=None, zlib=False,
 *             complevel=4, shuffle=True,
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_47createVariable(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7netCDF4_8_netCDF4_7Dataset_46createVariable, "\n**`createVariable(self, varname, datatype, dimensions=(), compression=None, zlib=False,\ncomplevel=4, shuffle=True, fletcher32=False, contiguous=False, chunksizes=None,\nszip_coding='nn', szip_pixels_per_block=8, blosc_shuffle=1,\nendian='native', least_significant_digit=None, significant_digits=None, quantize_mode='BitGroom',\nfill_value=None, chunk_cache=None)`**\n\nCreates a new variable with the given `varname`, `datatype`, and\n`dimensions`. If dimensions are not given, the variable is assumed to be\na scalar.\n\nIf `varname` is specified as a path, using forward slashes as in unix to\nseparate components, then intermediate groups will be created as necessary\nFor example, `createVariable('/GroupA/GroupB/VarC', float, ('x','y'))` will create groups `GroupA`\nand `GroupA/GroupB`, plus the variable `GroupA/GroupB/VarC`, if the preceding\ngroups don't already exist.\n\nThe `datatype` can be a numpy datatype object, or a string that describes\na numpy dtype object (like the `dtype.str` attribute of a numpy array).\nSupported specifiers include: `'S1' or 'c' (NC_CHAR), 'i1' or 'b' or 'B'\n(NC_BYTE), 'u1' (NC_UBYTE), 'i2' or 'h' or 's' (NC_SHORT), 'u2'\n(NC_USHORT), 'i4' or 'i' or 'l' (NC_INT), 'u4' (NC_UINT), 'i8' (NC_INT64),\n'u8' (NC_UINT64), 'f4' or 'f' (NC_FLOAT), 'f8' or 'd' (NC_DOUBLE)`.\n`datatype` can also be a `CompoundType` instance\n(for a structured, or compound array), a `VLType` instance\n(for a variable-length array), or the python `str` builtin\n(for a variable-length string array). Numpy string and unicode datatypes with\nlength greater than one are aliases for `str`.\n\nData from netCDF variables is presented to python as numpy arrays with\nthe corresponding data type.\n\n`dimensions` must be a tuple containing `Dimension` instances and/or\ndimension names (strings) that have been defined\npreviously using `Dataset.createDimension`. The default value\nis an empty tuple, which means the variable is a scalar.\n\nIf the optional keyword argument `co""mpression` is set, the data will be\ncompressed in the netCDF file using the specified compression algorithm.\nCurrently `zlib`,`szip`,`zstd`,`bzip2`,`blosc_lz`,`blosc_lz4`,`blosc_lz4hc`,\n`blosc_zlib` and `blosc_zstd` are supported.\nDefault is `None` (no compression).  All of the compressors except\n`zlib` and `szip` use the HDF5 plugin architecture.\n\nIf the optional keyword `zlib` is `True`, the data will be compressed in\nthe netCDF file using zlib compression (default `False`).  The use of this option is\ndeprecated in favor of `compression='zlib'`.\n\nThe optional keyword `complevel` is an integer between 0 and 9 describing\nthe level of compression desired (default 4). Ignored if `compression=None`.\nA value of zero disables compression.\n\nIf the optional keyword `shuffle` is `True`, the HDF5 shuffle filter\nwill be applied before compressing the data with zlib (default `True`).  This\nsignificantly improves compression. Default is `True`. Ignored if\n`zlib=False`.\n\nThe optional kwarg `blosc_shuffle`is  ignored\nunless the blosc compressor is used. `blosc_shuffle` can be 0 (no shuffle),\n1 (byte-wise shuffle) or 2 (bit-wise shuffle). Default is 1.\n\nThe optional kwargs `szip_coding` and `szip_pixels_per_block` are ignored\nunless the szip compressor is used. `szip_coding` can be `ec` (entropy coding)\nor `nn` (nearest neighbor coding). Default is `nn`. `szip_pixels_per_block`\ncan be 4, 8, 16 or 32 (default 8).\n\nIf the optional keyword `fletcher32` is `True`, the Fletcher32 HDF5\nchecksum algorithm is activated to detect errors. Default `False`.\n\nIf the optional keyword `contiguous` is `True`, the variable data is\nstored contiguously on disk.  Default `False`. Setting to `True` for\na variable with an unlimited dimension will trigger an error.\nFixed size variables (with no unlimited dimension) with no compression filters\nare contiguous by default.\n\nThe optional keyword `chunksizes` can be used to manually specify the\nHDF5 chunksizes for each d""imension of the variable.\nA detailed discussion of HDF chunking and I/O performance is available\n[here](https://support.hdfgroup.org/HDF5/doc/Advanced/Chunking).\nThe default chunking scheme in the netcdf-c library is discussed\n[here](https://www.unidata.ucar.edu/software/netcdf/documentation/NUG/netcdf_perf_chunking.html).\nBasically, you want the chunk size for each dimension to match as\nclosely as possible the size of the data block that users will read\nfrom the file. `chunksizes` cannot be set if `contiguous=True`.\n\nThe optional keyword `endian` can be used to control whether the\ndata is stored in little or big endian format on disk. Possible\nvalues are `little, big` or `native` (default). The library\nwill automatically handle endian conversions when the data is read,\nbut if the data is always going to be read on a computer with the\nopposite format as the one used to create the file, there may be\nsome performance advantage to be gained by setting the endian-ness.\n\nThe optional keyword `fill_value` can be used to override the default\nnetCDF `_FillValue` (the value that the variable gets filled with before\nany data is written to it, defaults given in the dict `netCDF4.default_fillvals`).\nIf fill_value is set to `False`, then the variable is not pre-filled.\n\nIf the optional keyword parameters `least_significant_digit` or `significant_digits` are\nspecified, variable data will be truncated (quantized). In conjunction\nwith `compression='zlib'` this produces 'lossy', but significantly more\nefficient compression. For example, if `least_significant_digit=1`,\ndata will be quantized using `numpy.around(scale*data)/scale`, where\nscale = 2**bits, and bits is determined so that a precision of 0.1 is\nretained (in this case bits=4). From the\n[PSL metadata conventions](http://www.esrl.noaa.gov/psl/data/gridded/conventions/cdc_netcdf_standard.shtml):\n\"least_significant_digit -- power of ten of the smallest decimal place\nin unpacked data that is a rel""iable value.\" Default is `None`, or no\nquantization, or 'lossless' compression.  If `significant_digits=3`\nthen the data will be quantized so that three significant digits are retained, independent\nof the floating point exponent. The keyword argument `quantize_mode` controls\nthe quantization algorithm (default 'BitGroom', 'BitRound' and\n'GranularBitRound' also available).  The 'GranularBitRound'\nalgorithm may result in better compression for typical geophysical datasets.\nThis `significant_digits` kwarg is only available  with netcdf-c >= 4.9.0, and\nonly works with `NETCDF4` or `NETCDF4_CLASSIC` formatted files.\n\nWhen creating variables in a `NETCDF4` or `NETCDF4_CLASSIC` formatted file,\nHDF5 creates something called a 'chunk cache' for each variable.  The\ndefault size of the chunk cache may be large enough to completely fill\navailable memory when creating thousands of variables.  The optional\nkeyword `chunk_cache` allows you to reduce (or increase) the size of\nthe default chunk cache when creating a variable.  The setting only\npersists as long as the Dataset is open - you can use the set_var_chunk_cache\nmethod to change it the next time the Dataset is opened.\nWarning - messing with this parameter can seriously degrade performance.\n\nThe return value is the `Variable` class instance describing the new\nvariable.\n\nA list of names corresponding to netCDF variable attributes can be\nobtained with the `Variable` method `Variable.ncattrs`. A dictionary\ncontaining all the netCDF attribute name/value pairs is provided by\nthe `__dict__` attribute of a `Variable` instance.\n\n`Variable` instances behave much like array objects. Data can be\nassigned to or retrieved from a variable with indexing and slicing\noperations on the `Variable` instance. A `Variable` instance has six\nDataset standard attributes: `dimensions, dtype, shape, ndim, name` and\n`least_significant_digit`. Application programs should never modify\nthese attributes. The `dimensions` at""tribute is a tuple containing the\nnames of the dimensions associated with this variable. The `dtype`\nattribute is a string describing the variable's data type (`i4, f8,\nS1,` etc). The `shape` attribute is a tuple describing the current\nsizes of all the variable's dimensions. The `name` attribute is a\nstring containing the name of the Variable instance.\nThe `least_significant_digit`\nattributes describes the power of ten of the smallest decimal place in\nthe data the contains a reliable value.  assigned to the `Variable`\ninstance. The `ndim` attribute\nis the number of variable dimensions.");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_7Dataset_47createVariable = {"createVariable", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_47createVariable, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_7Dataset_46createVariable};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_47createVariable(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_varname = 0;
  PyObject *__pyx_v_datatype = 0;
  PyObject *__pyx_v_dimensions = 0;
  PyObject *__pyx_v_compression = 0;
  PyObject *__pyx_v_zlib = 0;
  PyObject *__pyx_v_complevel = 0;
  PyObject *__pyx_v_shuffle = 0;
  PyObject *__pyx_v_szip_coding = 0;
  PyObject *__pyx_v_szip_pixels_per_block = 0;
  PyObject *__pyx_v_blosc_shuffle = 0;
  PyObject *__pyx_v_fletcher32 = 0;
  PyObject *__pyx_v_contiguous = 0;
  PyObject *__pyx_v_chunksizes = 0;
  PyObject *__pyx_v_endian = 0;
  PyObject *__pyx_v_least_significant_digit = 0;
  PyObject *__pyx_v_significant_digits = 0;
  PyObject *__pyx_v_quantize_mode = 0;
  PyObject *__pyx_v_fill_value = 0;
  PyObject *__pyx_v_chunk_cache = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[19] = {0,0,0,0,0,0,0,0,0,0,0,0,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("createVariable (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_varname,&__pyx_mstate_global->__pyx_n_u_datatype,&__pyx_mstate_global->__pyx_n_u_dimensions,&__pyx_mstate_global->__pyx_n_u_compression,&__pyx_mstate_global->__pyx_n_u_zlib,&__pyx_mstate_global->__pyx_n_u_complevel,&__pyx_mstate_global->__pyx_n_u_shuffle,&__pyx_mstate_global->__pyx_n_u_szip_coding,&__pyx_mstate_global->__pyx_n_u_szip_pixels_per_block,&__pyx_mstate_global->__pyx_n_u_blosc_shuffle,&__pyx_mstate_global->__pyx_n_u_fletcher32,&__pyx_mstate_global->__pyx_n_u_contiguous,&__pyx_mstate_global->__pyx_n_u_chunksizes,&__pyx_mstate_global->__pyx_n_u_endian,&__pyx_mstate_global->__pyx_n_u_least_significant_digit,&__pyx_mstate_global->__pyx_n_u_significant_digits,&__pyx_mstate_global->__pyx_n_u_quantize_mode,&__pyx_mstate_global->__pyx_n_u_fill_value,&__pyx_mstate_global->__pyx_n_u_chunk_cache,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 2828, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case 19:
        values[18] = __Pyx_ArgRef_FASTCALL(__pyx_args, 18);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[18])) __PYX_ERR(0, 2828, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 18:
        values[17] = __Pyx_ArgRef_FASTCALL(__pyx_args, 17);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[17])) __PYX_ERR(0, 2828, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 17:
        values[16] = __Pyx_ArgRef_FASTCALL(__pyx_args, 16);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[16])) __PYX_ERR(0, 2828, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 16:
        values[15] = __Pyx_ArgRef_FASTCALL(__pyx_args, 15);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[15])) __PYX_ERR(0, 2828, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 15:
        values[14] = __Pyx_ArgRef_FASTCALL(__pyx_args, 14);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[14])) __PYX_ERR(0, 2828, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 14:
        values[13] = __Pyx_ArgRef_FASTCALL(__pyx_args, 13);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[13])) __PYX_ERR(0, 2828, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 13:
        values[12] = __Pyx_ArgRef_FASTCALL(__pyx_args, 12);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[12])) __PYX_ERR(0, 2828, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 12:
        values[11] = __Pyx_ArgRef_FASTCALL(__pyx_args, 11);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[11])) __PYX_ERR(0, 2828, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 11:
        values[10] = __Pyx_ArgRef_FASTCALL(__pyx_args, 10);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[10])) __PYX_ERR(0, 2828, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 10:
        values[9] = __Pyx_ArgRef_FASTCALL(__pyx_args, 9);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[9])) __PYX_ERR(0, 2828, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  9:
        values[8] = __Pyx_ArgRef_FASTCALL(__pyx_args, 8);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[8])) __PYX_ERR(0, 2828, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  8:
        values[7] = __Pyx_ArgRef_FASTCALL(__pyx_args, 7);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[7])) __PYX_ERR(0, 2828, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  7:
        values[6] = __Pyx_ArgRef_FASTCALL(__pyx_args, 6);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[6])) __PYX_ERR(0, 2828, __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(0, 2828, __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(0, 2828, __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(0, 2828, __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(0, 2828, __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(0, 2828, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 2828, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "createVariable", 0) < (0)) __PYX_ERR(0, 2828, __pyx_L3_error)
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_empty_tuple));

      /* "netCDF4/_netCDF4.pyx":2829
 * 
 *     def createVariable(self, varname, datatype, dimensions=(),
 *             compression=None, zlib=False,             # <<<<<<<<<<<<<<
 *             complevel=4, shuffle=True,
 *             szip_coding='nn',szip_pixels_per_block=8,
*/
      if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[4]) values[4] = __Pyx_NewRef(((PyObject *)Py_False));
      if (!values[5]) values[5] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_4));

      /* "netCDF4/_netCDF4.pyx":2830
 *     def createVariable(self, varname, datatype, dimensions=(),
 *             compression=None, zlib=False,
 *             complevel=4, shuffle=True,             # <<<<<<<<<<<<<<
 *             szip_coding='nn',szip_pixels_per_block=8,
 *             blosc_shuffle=1,fletcher32=False, contiguous=False,
*/
      if (!values[6]) values[6] = __Pyx_NewRef(((PyObject *)Py_True));
      if (!values[7]) values[7] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_n_u_nn));
      if (!values[8]) values[8] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_8));
      if (!values[9]) values[9] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_1));

      /* "netCDF4/_netCDF4.pyx":2832
 *             complevel=4, shuffle=True,
 *             szip_coding='nn',szip_pixels_per_block=8,
 *             blosc_shuffle=1,fletcher32=False, contiguous=False,             # <<<<<<<<<<<<<<
 *             chunksizes=None, endian='native', least_significant_digit=None,
 *             significant_digits=None,quantize_mode='BitGroom',fill_value=None, chunk_cache=None):
*/
      if (!values[10]) values[10] = __Pyx_NewRef(((PyObject *)Py_False));
      if (!values[11]) values[11] = __Pyx_NewRef(((PyObject *)Py_False));

      /* "netCDF4/_netCDF4.pyx":2833
 *             szip_coding='nn',szip_pixels_per_block=8,
 *             blosc_shuffle=1,fletcher32=False, contiguous=False,
 *             chunksizes=None, endian='native', least_significant_digit=None,             # <<<<<<<<<<<<<<
 *             significant_digits=None,quantize_mode='BitGroom',fill_value=None, chunk_cache=None):
 *         """
*/
      if (!values[12]) values[12] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[13]) values[13] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_n_u_native));
      if (!values[14]) values[14] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "netCDF4/_netCDF4.pyx":2834
 *             blosc_shuffle=1,fletcher32=False, contiguous=False,
 *             chunksizes=None, endian='native', least_significant_digit=None,
 *             significant_digits=None,quantize_mode='BitGroom',fill_value=None, chunk_cache=None):             # <<<<<<<<<<<<<<
 *         """
 * **`createVariable(self, varname, datatype, dimensions=(), compression=None, zlib=False,
*/
      if (!values[15]) values[15] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[16]) values[16] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_n_u_BitGroom));
      if (!values[17]) values[17] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[18]) values[18] = __Pyx_NewRef(((PyObject *)Py_None));
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("createVariable", 0, 2, 19, i); __PYX_ERR(0, 2828, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case 19:
        values[18] = __Pyx_ArgRef_FASTCALL(__pyx_args, 18);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[18])) __PYX_ERR(0, 2828, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 18:
        values[17] = __Pyx_ArgRef_FASTCALL(__pyx_args, 17);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[17])) __PYX_ERR(0, 2828, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 17:
        values[16] = __Pyx_ArgRef_FASTCALL(__pyx_args, 16);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[16])) __PYX_ERR(0, 2828, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 16:
        values[15] = __Pyx_ArgRef_FASTCALL(__pyx_args, 15);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[15])) __PYX_ERR(0, 2828, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 15:
        values[14] = __Pyx_ArgRef_FASTCALL(__pyx_args, 14);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[14])) __PYX_ERR(0, 2828, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 14:
        values[13] = __Pyx_ArgRef_FASTCALL(__pyx_args, 13);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[13])) __PYX_ERR(0, 2828, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 13:
        values[12] = __Pyx_ArgRef_FASTCALL(__pyx_args, 12);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[12])) __PYX_ERR(0, 2828, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 12:
        values[11] = __Pyx_ArgRef_FASTCALL(__pyx_args, 11);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[11])) __PYX_ERR(0, 2828, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 11:
        values[10] = __Pyx_ArgRef_FASTCALL(__pyx_args, 10);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[10])) __PYX_ERR(0, 2828, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 10:
        values[9] = __Pyx_ArgRef_FASTCALL(__pyx_args, 9);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[9])) __PYX_ERR(0, 2828, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  9:
        values[8] = __Pyx_ArgRef_FASTCALL(__pyx_args, 8);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[8])) __PYX_ERR(0, 2828, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  8:
        values[7] = __Pyx_ArgRef_FASTCALL(__pyx_args, 7);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[7])) __PYX_ERR(0, 2828, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  7:
        values[6] = __Pyx_ArgRef_FASTCALL(__pyx_args, 6);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[6])) __PYX_ERR(0, 2828, __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(0, 2828, __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(0, 2828, __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(0, 2828, __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(0, 2828, __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(0, 2828, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 2828, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }

      /* "netCDF4/_netCDF4.pyx":2828
 *         return self.enumtypes[datatype_name]
 * 
 *     def createVariable(self, varname, datatype, dimensions=(),             # <<<<<<<<<<<<<<
 *             compression=None, zlib=False,
 *             complevel=4, shuffle=True,
*/
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_empty_tuple));

      /* "netCDF4/_netCDF4.pyx":2829
 * 
 *     def createVariable(self, varname, datatype, dimensions=(),
 *             compression=None, zlib=False,             # <<<<<<<<<<<<<<
 *             complevel=4, shuffle=True,
 *             szip_coding='nn',szip_pixels_per_block=8,
*/
      if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[4]) values[4] = __Pyx_NewRef(((PyObject *)Py_False));
      if (!values[5]) values[5] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_4));

      /* "netCDF4/_netCDF4.pyx":2830
 *     def createVariable(self, varname, datatype, dimensions=(),
 *             compression=None, zlib=False,
 *             complevel=4, shuffle=True,             # <<<<<<<<<<<<<<
 *             szip_coding='nn',szip_pixels_per_block=8,
 *             blosc_shuffle=1,fletcher32=False, contiguous=False,
*/
      if (!values[6]) values[6] = __Pyx_NewRef(((PyObject *)Py_True));
      if (!values[7]) values[7] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_n_u_nn));
      if (!values[8]) values[8] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_8));
      if (!values[9]) values[9] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_1));

      /* "netCDF4/_netCDF4.pyx":2832
 *             complevel=4, shuffle=True,
 *             szip_coding='nn',szip_pixels_per_block=8,
 *             blosc_shuffle=1,fletcher32=False, contiguous=False,             # <<<<<<<<<<<<<<
 *             chunksizes=None, endian='native', least_significant_digit=None,
 *             significant_digits=None,quantize_mode='BitGroom',fill_value=None, chunk_cache=None):
*/
      if (!values[10]) values[10] = __Pyx_NewRef(((PyObject *)Py_False));
      if (!values[11]) values[11] = __Pyx_NewRef(((PyObject *)Py_False));

      /* "netCDF4/_netCDF4.pyx":2833
 *             szip_coding='nn',szip_pixels_per_block=8,
 *             blosc_shuffle=1,fletcher32=False, contiguous=False,
 *             chunksizes=None, endian='native', least_significant_digit=None,             # <<<<<<<<<<<<<<
 *             significant_digits=None,quantize_mode='BitGroom',fill_value=None, chunk_cache=None):
 *         """
*/
      if (!values[12]) values[12] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[13]) values[13] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_n_u_native));
      if (!values[14]) values[14] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "netCDF4/_netCDF4.pyx":2834
 *             blosc_shuffle=1,fletcher32=False, contiguous=False,
 *             chunksizes=None, endian='native', least_significant_digit=None,
 *             significant_digits=None,quantize_mode='BitGroom',fill_value=None, chunk_cache=None):             # <<<<<<<<<<<<<<
 *         """
 * **`createVariable(self, varname, datatype, dimensions=(), compression=None, zlib=False,
*/
      if (!values[15]) values[15] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[16]) values[16] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_n_u_BitGroom));
      if (!values[17]) values[17] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[18]) values[18] = __Pyx_NewRef(((PyObject *)Py_None));
    }
    __pyx_v_varname = values[0];
    __pyx_v_datatype = values[1];
    __pyx_v_dimensions = values[2];
    __pyx_v_compression = values[3];
    __pyx_v_zlib = values[4];
    __pyx_v_complevel = values[5];
    __pyx_v_shuffle = values[6];
    __pyx_v_szip_coding = values[7];
    __pyx_v_szip_pixels_per_block = values[8];
    __pyx_v_blosc_shuffle = values[9];
    __pyx_v_fletcher32 = values[10];
    __pyx_v_contiguous = values[11];
    __pyx_v_chunksizes = values[12];
    __pyx_v_endian = values[13];
    __pyx_v_least_significant_digit = values[14];
    __pyx_v_significant_digits = values[15];
    __pyx_v_quantize_mode = values[16];
    __pyx_v_fill_value = values[17];
    __pyx_v_chunk_cache = values[18];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("createVariable", 0, 2, 19, __pyx_nargs); __PYX_ERR(0, 2828, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.createVariable", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_7Dataset_46createVariable(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self), __pyx_v_varname, __pyx_v_datatype, __pyx_v_dimensions, __pyx_v_compression, __pyx_v_zlib, __pyx_v_complevel, __pyx_v_shuffle, __pyx_v_szip_coding, __pyx_v_szip_pixels_per_block, __pyx_v_blosc_shuffle, __pyx_v_fletcher32, __pyx_v_contiguous, __pyx_v_chunksizes, __pyx_v_endian, __pyx_v_least_significant_digit, __pyx_v_significant_digits, __pyx_v_quantize_mode, __pyx_v_fill_value, __pyx_v_chunk_cache);

  /* "netCDF4/_netCDF4.pyx":2828
 *         return self.enumtypes[datatype_name]
 * 
 *     def createVariable(self, varname, datatype, dimensions=(),             # <<<<<<<<<<<<<<
 *             compression=None, zlib=False,
 *             complevel=4, shuffle=True,
*/

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_7netCDF4_8_netCDF4_7Dataset_14createVariable_2generator4(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "netCDF4/_netCDF4.pyx":3005
 *         # found there, looks in parent (and it's parent, etc, back to root).
 *         dimensions =\
 *         tuple(_find_dim(group,d) if isinstance(d,(str,bytes)) else d for d in dimensions)             # <<<<<<<<<<<<<<
 *         # create variable.
 *         group.variables[varname] = Variable(group, varname, datatype,
*/

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_14createVariable_genexpr(PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_7_genexpr *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("genexpr", 0);
  __pyx_cur_scope = (struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_7_genexpr *)__pyx_tp_new_7netCDF4_8_netCDF4___pyx_scope_struct_7_genexpr(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_7_genexpr, __pyx_mstate_global->__pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_7_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(0, 3005, __pyx_L1_error)
  } else {
    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_outer_scope = (struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_6_createVariable *) __pyx_self;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_outer_scope);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_outer_scope);
  __pyx_cur_scope->__pyx_genexpr_arg_0 = __pyx_genexpr_arg_0;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_genexpr_arg_0);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_genexpr_arg_0);
  {
    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_7netCDF4_8_netCDF4_7Dataset_14createVariable_2generator4, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[4]), (PyObject *) __pyx_cur_scope, __pyx_mstate_global->__pyx_n_u_genexpr, __pyx_mstate_global->__pyx_n_u_createVariable_locals_genexpr, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4); if (unlikely(!gen)) __PYX_ERR(0, 3005, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.createVariable.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_7netCDF4_8_netCDF4_7Dataset_14createVariable_2generator4(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_7_genexpr *__pyx_cur_scope = ((struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_7_genexpr *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  PyObject *(*__pyx_t_3)(PyObject *);
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  size_t __pyx_t_10;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("genexpr", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    case 1: goto __pyx_L8_resume_from_yield;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(__pyx_sent_value != Py_None)) {
    if (unlikely(__pyx_sent_value)) PyErr_SetString(PyExc_TypeError, "can't send non-None value to a just-started generator");
    __PYX_ERR(0, 3005, __pyx_L1_error)
  }
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(0, 3005, __pyx_L1_error) }
  if (likely(PyList_CheckExact(__pyx_cur_scope->__pyx_genexpr_arg_0)) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_genexpr_arg_0)) {
    __pyx_t_1 = __pyx_cur_scope->__pyx_genexpr_arg_0; __Pyx_INCREF(__pyx_t_1);
    __pyx_t_2 = 0;
    __pyx_t_3 = NULL;
  } else {
    __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_cur_scope->__pyx_genexpr_arg_0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3005, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3005, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 3005, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) break;
        }
        __pyx_t_4 = __Pyx_PyList_GetItemRefFast(__pyx_t_1, __pyx_t_2, __Pyx_ReferenceSharing_OwnStrongReference);
        ++__pyx_t_2;
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 3005, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2));
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2);
        #endif
        ++__pyx_t_2;
      }
      if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3005, __pyx_L1_error)
    } else {
      __pyx_t_4 = __pyx_t_3(__pyx_t_1);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 3005, __pyx_L1_error)
          PyErr_Clear();
        }
        break;
      }
    }
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_d);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_d, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_6 = PyUnicode_Check(__pyx_cur_scope->__pyx_v_d); 
    if (!__pyx_t_6) {
    } else {
      __pyx_t_5 = __pyx_t_6;
      goto __pyx_L6_bool_binop_done;
    }
    __pyx_t_6 = PyBytes_Check(__pyx_cur_scope->__pyx_v_d); 
    __pyx_t_5 = __pyx_t_6;
    __pyx_L6_bool_binop_done:;
    if (__pyx_t_5) {
      __pyx_t_8 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_mstate_global->__pyx_n_u_find_dim); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3005, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_group)) { __Pyx_RaiseClosureNameError("group"); __PYX_ERR(0, 3005, __pyx_L1_error) }
      __pyx_t_10 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(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[3] = {__pyx_t_8, __pyx_cur_scope->__pyx_outer_scope->__pyx_v_group, __pyx_cur_scope->__pyx_v_d};
        __pyx_t_7 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_9, __pyx_callargs+__pyx_t_10, (3-__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(0, 3005, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
      }
      __pyx_t_4 = __pyx_t_7;
      __pyx_t_7 = 0;
    } else {
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_d);
      __pyx_t_4 = __pyx_cur_scope->__pyx_v_d;
    }
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    __Pyx_XGIVEREF(__pyx_t_1);
    __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
    __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
    __pyx_cur_scope->__pyx_t_2 = __pyx_t_3;
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
    /* return from generator, yielding value */
    __pyx_generator->resume_label = 1;
    return __pyx_r;
    __pyx_L8_resume_from_yield:;
    __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
    __pyx_cur_scope->__pyx_t_0 = 0;
    __Pyx_XGOTREF(__pyx_t_1);
    __pyx_t_2 = __pyx_cur_scope->__pyx_t_1;
    __pyx_t_3 = __pyx_cur_scope->__pyx_t_2;
    if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 3005, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);

  /* 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_4);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  if (__Pyx_PyErr_Occurred()) {
    __Pyx_Generator_Replace_StopIteration(0);
    __Pyx_AddTraceback("genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  }
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  #if !CYTHON_USE_EXC_INFO_STACK
  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
  #endif
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":2828
 *         return self.enumtypes[datatype_name]
 * 
 *     def createVariable(self, varname, datatype, dimensions=(),             # <<<<<<<<<<<<<<
 *             compression=None, zlib=False,
 *             complevel=4, shuffle=True,
*/

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_46createVariable(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_varname, PyObject *__pyx_v_datatype, PyObject *__pyx_v_dimensions, PyObject *__pyx_v_compression, PyObject *__pyx_v_zlib, PyObject *__pyx_v_complevel, PyObject *__pyx_v_shuffle, PyObject *__pyx_v_szip_coding, PyObject *__pyx_v_szip_pixels_per_block, PyObject *__pyx_v_blosc_shuffle, PyObject *__pyx_v_fletcher32, PyObject *__pyx_v_contiguous, PyObject *__pyx_v_chunksizes, PyObject *__pyx_v_endian, PyObject *__pyx_v_least_significant_digit, PyObject *__pyx_v_significant_digits, PyObject *__pyx_v_quantize_mode, PyObject *__pyx_v_fill_value, PyObject *__pyx_v_chunk_cache) {
  struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_6_createVariable *__pyx_cur_scope;
  PyObject *__pyx_v_dirname = NULL;
  PyObject *__pyx_gb_7netCDF4_8_netCDF4_7Dataset_14createVariable_2generator4 = 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)(PyObject *);
  int __pyx_t_7;
  int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("createVariable", 0);
  __pyx_cur_scope = (struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_6_createVariable *)__pyx_tp_new_7netCDF4_8_netCDF4___pyx_scope_struct_6_createVariable(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_6_createVariable, __pyx_mstate_global->__pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_6_createVariable *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(0, 2828, __pyx_L1_error)
  } else {
    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
  }
  __Pyx_INCREF(__pyx_v_varname);
  __Pyx_INCREF(__pyx_v_dimensions);

  /* "netCDF4/_netCDF4.pyx":2987
 * is the number of variable dimensions."""
 *         # if varname specified as a path, split out group names.
 *         varname = posixpath.normpath(varname)             # <<<<<<<<<<<<<<
 *         dirname, varname = posixpath.split(varname) # varname is last.
 *         # create parent groups (like mkdir -p).
*/
  __pyx_t_2 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_posixpath); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2987, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_normpath); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2987, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_5 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(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_5 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_varname};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_5, (2-__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;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2987, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF_SET(__pyx_v_varname, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":2988
 *         # if varname specified as a path, split out group names.
 *         varname = posixpath.normpath(varname)
 *         dirname, varname = posixpath.split(varname) # varname is last.             # <<<<<<<<<<<<<<
 *         # create parent groups (like mkdir -p).
 *         if not dirname:
*/
  __pyx_t_4 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_posixpath); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2988, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_split); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2988, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_5 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(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_varname};
    __pyx_t_1 = __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_1)) __PYX_ERR(0, 2988, __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(0, 2988, __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(0, 2988, __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(0, 2988, __pyx_L1_error)
      __Pyx_XGOTREF(__pyx_t_4);
    }
    #else
    __pyx_t_3 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2988, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2988, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    #endif
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  } else {
    Py_ssize_t index = -1;
    __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2988, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_6 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_2);
    index = 0; __pyx_t_3 = __pyx_t_6(__pyx_t_2); if (unlikely(!__pyx_t_3)) goto __pyx_L3_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_3);
    index = 1; __pyx_t_4 = __pyx_t_6(__pyx_t_2); if (unlikely(!__pyx_t_4)) goto __pyx_L3_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_4);
    if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_2), 2) < (0)) __PYX_ERR(0, 2988, __pyx_L1_error)
    __pyx_t_6 = NULL;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    goto __pyx_L4_unpacking_done;
    __pyx_L3_unpacking_failed:;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_6 = NULL;
    if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
    __PYX_ERR(0, 2988, __pyx_L1_error)
    __pyx_L4_unpacking_done:;
  }
  __pyx_v_dirname = __pyx_t_3;
  __pyx_t_3 = 0;
  __Pyx_DECREF_SET(__pyx_v_varname, __pyx_t_4);
  __pyx_t_4 = 0;

  /* "netCDF4/_netCDF4.pyx":2990
 *         dirname, varname = posixpath.split(varname) # varname is last.
 *         # create parent groups (like mkdir -p).
 *         if not dirname:             # <<<<<<<<<<<<<<
 *             group = self
 *         else:
*/
  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_dirname); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 2990, __pyx_L1_error)
  __pyx_t_8 = (!__pyx_t_7);
  if (__pyx_t_8) {

    /* "netCDF4/_netCDF4.pyx":2991
 *         # create parent groups (like mkdir -p).
 *         if not dirname:
 *             group = self             # <<<<<<<<<<<<<<
 *         else:
 *             group = self.createGroup(dirname)
*/
    __Pyx_INCREF((PyObject *)__pyx_v_self);
    __Pyx_GIVEREF((PyObject *)__pyx_v_self);
    __pyx_cur_scope->__pyx_v_group = ((PyObject *)__pyx_v_self);

    /* "netCDF4/_netCDF4.pyx":2990
 *         dirname, varname = posixpath.split(varname) # varname is last.
 *         # create parent groups (like mkdir -p).
 *         if not dirname:             # <<<<<<<<<<<<<<
 *             group = self
 *         else:
*/
    goto __pyx_L5;
  }

  /* "netCDF4/_netCDF4.pyx":2993
 *             group = self
 *         else:
 *             group = self.createGroup(dirname)             # <<<<<<<<<<<<<<
 *         # if dimensions is a single string or Dimension instance,
 *         # convert to a tuple.
*/
  /*else*/ {
    __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_dirname};
      __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_createGroup, __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_1)) __PYX_ERR(0, 2993, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_cur_scope->__pyx_v_group = __pyx_t_1;
    __pyx_t_1 = 0;
  }
  __pyx_L5:;

  /* "netCDF4/_netCDF4.pyx":2998
 *         # This prevents a common error that occurs when
 *         # dimensions = 'lat' instead of ('lat',)
 *         if isinstance(dimensions, (str, bytes, Dimension)):             # <<<<<<<<<<<<<<
 *             dimensions = dimensions,
 *         # convert elements of dimensions tuple to Dimension
*/
  __pyx_t_7 = PyUnicode_Check(__pyx_v_dimensions); 
  if (!__pyx_t_7) {
  } else {
    __pyx_t_8 = __pyx_t_7;
    goto __pyx_L7_bool_binop_done;
  }
  __pyx_t_7 = PyBytes_Check(__pyx_v_dimensions); 
  if (!__pyx_t_7) {
  } else {
    __pyx_t_8 = __pyx_t_7;
    goto __pyx_L7_bool_binop_done;
  }
  __pyx_t_7 = __Pyx_TypeCheck(__pyx_v_dimensions, __pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Dimension); 
  __pyx_t_8 = __pyx_t_7;
  __pyx_L7_bool_binop_done:;
  if (__pyx_t_8) {

    /* "netCDF4/_netCDF4.pyx":2999
 *         # dimensions = 'lat' instead of ('lat',)
 *         if isinstance(dimensions, (str, bytes, Dimension)):
 *             dimensions = dimensions,             # <<<<<<<<<<<<<<
 *         # convert elements of dimensions tuple to Dimension
 *         # instances if they are strings.
*/
    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2999, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_v_dimensions);
    __Pyx_GIVEREF(__pyx_v_dimensions);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_dimensions) != (0)) __PYX_ERR(0, 2999, __pyx_L1_error);
    __Pyx_DECREF_SET(__pyx_v_dimensions, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":2998
 *         # This prevents a common error that occurs when
 *         # dimensions = 'lat' instead of ('lat',)
 *         if isinstance(dimensions, (str, bytes, Dimension)):             # <<<<<<<<<<<<<<
 *             dimensions = dimensions,
 *         # convert elements of dimensions tuple to Dimension
*/
  }

  /* "netCDF4/_netCDF4.pyx":3005
 *         # found there, looks in parent (and it's parent, etc, back to root).
 *         dimensions =\
 *         tuple(_find_dim(group,d) if isinstance(d,(str,bytes)) else d for d in dimensions)             # <<<<<<<<<<<<<<
 *         # create variable.
 *         group.variables[varname] = Variable(group, varname, datatype,
*/
  __pyx_t_1 = __pyx_pf_7netCDF4_8_netCDF4_7Dataset_14createVariable_genexpr(((PyObject*)__pyx_cur_scope), __pyx_v_dimensions); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3005, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3005, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF_SET(__pyx_v_dimensions, __pyx_t_4);
  __pyx_t_4 = 0;

  /* "netCDF4/_netCDF4.pyx":3007
 *         tuple(_find_dim(group,d) if isinstance(d,(str,bytes)) else d for d in dimensions)
 *         # create variable.
 *         group.variables[varname] = Variable(group, varname, datatype,             # <<<<<<<<<<<<<<
 *         dimensions=dimensions, compression=compression, zlib=zlib, complevel=complevel, shuffle=shuffle,
 *         szip_coding=szip_coding, szip_pixels_per_block=szip_pixels_per_block,
*/
  __pyx_t_1 = NULL;

  /* "netCDF4/_netCDF4.pyx":3013
 *         fletcher32=fletcher32, contiguous=contiguous, chunksizes=chunksizes,
 *         endian=endian, least_significant_digit=least_significant_digit,
 *         significant_digits=significant_digits,quantize_mode=quantize_mode,fill_value=fill_value, chunk_cache=chunk_cache)             # <<<<<<<<<<<<<<
 *         return group.variables[varname]
 * 
*/
  __pyx_t_5 = 1;
  {
    PyObject *__pyx_callargs[4 + ((CYTHON_VECTORCALL) ? 17 : 0)] = {__pyx_t_1, __pyx_cur_scope->__pyx_v_group, __pyx_v_varname, __pyx_v_datatype};
    __pyx_t_3 = __Pyx_MakeVectorcallBuilderKwds(17); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3007, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_dimensions, __pyx_v_dimensions, __pyx_t_3, __pyx_callargs+4, 0) < (0)) __PYX_ERR(0, 3007, __pyx_L1_error)
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_compression, __pyx_v_compression, __pyx_t_3, __pyx_callargs+4, 1) < (0)) __PYX_ERR(0, 3007, __pyx_L1_error)
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_zlib, __pyx_v_zlib, __pyx_t_3, __pyx_callargs+4, 2) < (0)) __PYX_ERR(0, 3007, __pyx_L1_error)
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_complevel, __pyx_v_complevel, __pyx_t_3, __pyx_callargs+4, 3) < (0)) __PYX_ERR(0, 3007, __pyx_L1_error)
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_shuffle, __pyx_v_shuffle, __pyx_t_3, __pyx_callargs+4, 4) < (0)) __PYX_ERR(0, 3007, __pyx_L1_error)
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_szip_coding, __pyx_v_szip_coding, __pyx_t_3, __pyx_callargs+4, 5) < (0)) __PYX_ERR(0, 3007, __pyx_L1_error)
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_szip_pixels_per_block, __pyx_v_szip_pixels_per_block, __pyx_t_3, __pyx_callargs+4, 6) < (0)) __PYX_ERR(0, 3007, __pyx_L1_error)
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_blosc_shuffle, __pyx_v_blosc_shuffle, __pyx_t_3, __pyx_callargs+4, 7) < (0)) __PYX_ERR(0, 3007, __pyx_L1_error)
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_fletcher32, __pyx_v_fletcher32, __pyx_t_3, __pyx_callargs+4, 8) < (0)) __PYX_ERR(0, 3007, __pyx_L1_error)
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_contiguous, __pyx_v_contiguous, __pyx_t_3, __pyx_callargs+4, 9) < (0)) __PYX_ERR(0, 3007, __pyx_L1_error)
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_chunksizes, __pyx_v_chunksizes, __pyx_t_3, __pyx_callargs+4, 10) < (0)) __PYX_ERR(0, 3007, __pyx_L1_error)
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_endian, __pyx_v_endian, __pyx_t_3, __pyx_callargs+4, 11) < (0)) __PYX_ERR(0, 3007, __pyx_L1_error)
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_least_significant_digit, __pyx_v_least_significant_digit, __pyx_t_3, __pyx_callargs+4, 12) < (0)) __PYX_ERR(0, 3007, __pyx_L1_error)
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_significant_digits, __pyx_v_significant_digits, __pyx_t_3, __pyx_callargs+4, 13) < (0)) __PYX_ERR(0, 3007, __pyx_L1_error)
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_quantize_mode, __pyx_v_quantize_mode, __pyx_t_3, __pyx_callargs+4, 14) < (0)) __PYX_ERR(0, 3007, __pyx_L1_error)
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_fill_value, __pyx_v_fill_value, __pyx_t_3, __pyx_callargs+4, 15) < (0)) __PYX_ERR(0, 3007, __pyx_L1_error)
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_chunk_cache, __pyx_v_chunk_cache, __pyx_t_3, __pyx_callargs+4, 16) < (0)) __PYX_ERR(0, 3007, __pyx_L1_error)
    __pyx_t_4 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Variable, __pyx_callargs+__pyx_t_5, (4-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_3);
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3007, __pyx_L1_error)
    __Pyx_GOTREF((PyObject *)__pyx_t_4);
  }

  /* "netCDF4/_netCDF4.pyx":3007
 *         tuple(_find_dim(group,d) if isinstance(d,(str,bytes)) else d for d in dimensions)
 *         # create variable.
 *         group.variables[varname] = Variable(group, varname, datatype,             # <<<<<<<<<<<<<<
 *         dimensions=dimensions, compression=compression, zlib=zlib, complevel=complevel, shuffle=shuffle,
 *         szip_coding=szip_coding, szip_pixels_per_block=szip_pixels_per_block,
*/
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_group, __pyx_mstate_global->__pyx_n_u_variables); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3007, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (unlikely((PyObject_SetItem(__pyx_t_3, __pyx_v_varname, ((PyObject *)__pyx_t_4)) < 0))) __PYX_ERR(0, 3007, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF((PyObject *)__pyx_t_4); __pyx_t_4 = 0;

  /* "netCDF4/_netCDF4.pyx":3014
 *         endian=endian, least_significant_digit=least_significant_digit,
 *         significant_digits=significant_digits,quantize_mode=quantize_mode,fill_value=fill_value, chunk_cache=chunk_cache)
 *         return group.variables[varname]             # <<<<<<<<<<<<<<
 * 
 *     def renameVariable(self, oldname, newname):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_group, __pyx_mstate_global->__pyx_n_u_variables); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3014, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_t_4, __pyx_v_varname); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3014, __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;

  /* "netCDF4/_netCDF4.pyx":2828
 *         return self.enumtypes[datatype_name]
 * 
 *     def createVariable(self, varname, datatype, dimensions=(),             # <<<<<<<<<<<<<<
 *             compression=None, zlib=False,
 *             complevel=4, shuffle=True,
*/

  /* 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("netCDF4._netCDF4.Dataset.createVariable", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_dirname);
  __Pyx_XDECREF(__pyx_gb_7netCDF4_8_netCDF4_7Dataset_14createVariable_2generator4);
  __Pyx_XDECREF(__pyx_v_varname);
  __Pyx_XDECREF(__pyx_v_dimensions);
  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":3016
 *         return group.variables[varname]
 * 
 *     def renameVariable(self, oldname, newname):             # <<<<<<<<<<<<<<
 *         """
 * **`renameVariable(self, oldname, newname)`**
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_49renameVariable(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7netCDF4_8_netCDF4_7Dataset_48renameVariable, "\n**`renameVariable(self, oldname, newname)`**\n\nrename a `Variable` named `oldname` to `newname`");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_7Dataset_49renameVariable = {"renameVariable", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_49renameVariable, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_7Dataset_48renameVariable};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_49renameVariable(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_oldname = 0;
  PyObject *__pyx_v_newname = 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("renameVariable (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_oldname,&__pyx_mstate_global->__pyx_n_u_newname,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 3016, __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(0, 3016, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 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, "renameVariable", 0) < (0)) __PYX_ERR(0, 3016, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("renameVariable", 1, 2, 2, i); __PYX_ERR(0, 3016, __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(0, 3016, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 3016, __pyx_L3_error)
    }
    __pyx_v_oldname = values[0];
    __pyx_v_newname = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("renameVariable", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 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("netCDF4._netCDF4.Dataset.renameVariable", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_7Dataset_48renameVariable(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self), __pyx_v_oldname, __pyx_v_newname);

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_48renameVariable(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_oldname, PyObject *__pyx_v_newname) {
  char *__pyx_v_namstring;
  struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_var = 0;
  PyObject *__pyx_v_bytestr = NULL;
  int __pyx_v_ierr;
  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;
  size_t __pyx_t_11;
  char *__pyx_t_12;
  int __pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("renameVariable", 0);

  /* "netCDF4/_netCDF4.pyx":3023
 *         cdef char *namstring
 *         cdef Variable var
 *         try:             # <<<<<<<<<<<<<<
 *             var = self.variables[oldname]
 *         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:*/ {

      /* "netCDF4/_netCDF4.pyx":3024
 *         cdef Variable var
 *         try:
 *             var = self.variables[oldname]             # <<<<<<<<<<<<<<
 *         except KeyError:
 *             raise KeyError('%s not a valid variable name' % oldname)
*/
      __pyx_t_4 = __Pyx_PyObject_GetItem(__pyx_v_self->variables, __pyx_v_oldname); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3024, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Variable))))) __PYX_ERR(0, 3024, __pyx_L3_error)
      __pyx_v_var = ((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_t_4);
      __pyx_t_4 = 0;

      /* "netCDF4/_netCDF4.pyx":3023
 *         cdef char *namstring
 *         cdef Variable var
 *         try:             # <<<<<<<<<<<<<<
 *             var = self.variables[oldname]
 *         except KeyError:
*/
    }
    __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;

    /* "netCDF4/_netCDF4.pyx":3025
 *         try:
 *             var = self.variables[oldname]
 *         except KeyError:             # <<<<<<<<<<<<<<
 *             raise KeyError('%s not a valid variable name' % oldname)
 *         bytestr = _strencode(newname)
*/
    __pyx_t_5 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_KeyError))));
    if (__pyx_t_5) {
      __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.renameVariable", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(0, 3025, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);

      /* "netCDF4/_netCDF4.pyx":3026
 *             var = self.variables[oldname]
 *         except KeyError:
 *             raise KeyError('%s not a valid variable name' % oldname)             # <<<<<<<<<<<<<<
 *         bytestr = _strencode(newname)
 *         namstring = bytestr
*/
      __pyx_t_9 = NULL;
      __pyx_t_10 = __Pyx_PyUnicode_FormatSafe(__pyx_mstate_global->__pyx_kp_u_s_not_a_valid_variable_name, __pyx_v_oldname); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3026, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_10);
      __pyx_t_11 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_t_10};
        __pyx_t_8 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_KeyError)), __pyx_callargs+__pyx_t_11, (2-__pyx_t_11) | (__pyx_t_11*__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_8)) __PYX_ERR(0, 3026, __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(0, 3026, __pyx_L5_except_error)
    }
    goto __pyx_L5_except_error;

    /* "netCDF4/_netCDF4.pyx":3023
 *         cdef char *namstring
 *         cdef Variable var
 *         try:             # <<<<<<<<<<<<<<
 *             var = self.variables[oldname]
 *         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_L8_try_end:;
  }

  /* "netCDF4/_netCDF4.pyx":3027
 *         except KeyError:
 *             raise KeyError('%s not a valid variable name' % oldname)
 *         bytestr = _strencode(newname)             # <<<<<<<<<<<<<<
 *         namstring = bytestr
 *         if self.data_model != 'NETCDF4': self._redef()
*/
  __pyx_t_7 = __pyx_f_7netCDF4_8_netCDF4__strencode(__pyx_v_newname, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3027, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_v_bytestr = __pyx_t_7;
  __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":3028
 *             raise KeyError('%s not a valid variable name' % oldname)
 *         bytestr = _strencode(newname)
 *         namstring = bytestr             # <<<<<<<<<<<<<<
 *         if self.data_model != 'NETCDF4': self._redef()
 *         with nogil:
*/
  __pyx_t_12 = __Pyx_PyObject_AsWritableString(__pyx_v_bytestr); if (unlikely((!__pyx_t_12) && PyErr_Occurred())) __PYX_ERR(0, 3028, __pyx_L1_error)
  __pyx_v_namstring = __pyx_t_12;

  /* "netCDF4/_netCDF4.pyx":3029
 *         bytestr = _strencode(newname)
 *         namstring = bytestr
 *         if self.data_model != 'NETCDF4': self._redef()             # <<<<<<<<<<<<<<
 *         with nogil:
 *             ierr = nc_rename_var(self._grpid, var._varid, namstring)
*/
  __pyx_t_13 = (__Pyx_PyUnicode_Equals(__pyx_v_self->data_model, __pyx_mstate_global->__pyx_n_u_NETCDF4, Py_NE)); if (unlikely((__pyx_t_13 < 0))) __PYX_ERR(0, 3029, __pyx_L1_error)
  if (__pyx_t_13) {
    __pyx_t_6 = ((PyObject *)__pyx_v_self);
    __Pyx_INCREF(__pyx_t_6);
    __pyx_t_11 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL};
      __pyx_t_7 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_redef, __pyx_callargs+__pyx_t_11, (1-__pyx_t_11) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3029, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
    }
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  }

  /* "netCDF4/_netCDF4.pyx":3030
 *         namstring = bytestr
 *         if self.data_model != 'NETCDF4': self._redef()
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_rename_var(self._grpid, var._varid, namstring)
 *         if self.data_model != 'NETCDF4': self._enddef()
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "netCDF4/_netCDF4.pyx":3031
 *         if self.data_model != 'NETCDF4': self._redef()
 *         with nogil:
 *             ierr = nc_rename_var(self._grpid, var._varid, namstring)             # <<<<<<<<<<<<<<
 *         if self.data_model != 'NETCDF4': self._enddef()
 * 
*/
        __pyx_v_ierr = nc_rename_var(__pyx_v_self->_grpid, __pyx_v_var->_varid, __pyx_v_namstring);
      }

      /* "netCDF4/_netCDF4.pyx":3030
 *         namstring = bytestr
 *         if self.data_model != 'NETCDF4': self._redef()
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_rename_var(self._grpid, var._varid, namstring)
 *         if self.data_model != 'NETCDF4': self._enddef()
*/
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L14;
        }
        __pyx_L14:;
      }
  }

  /* "netCDF4/_netCDF4.pyx":3032
 *         with nogil:
 *             ierr = nc_rename_var(self._grpid, var._varid, namstring)
 *         if self.data_model != 'NETCDF4': self._enddef()             # <<<<<<<<<<<<<<
 * 
 *         _ensure_nc_success(ierr)
*/
  __pyx_t_13 = (__Pyx_PyUnicode_Equals(__pyx_v_self->data_model, __pyx_mstate_global->__pyx_n_u_NETCDF4, Py_NE)); if (unlikely((__pyx_t_13 < 0))) __PYX_ERR(0, 3032, __pyx_L1_error)
  if (__pyx_t_13) {
    __pyx_t_6 = ((PyObject *)__pyx_v_self);
    __Pyx_INCREF(__pyx_t_6);
    __pyx_t_11 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL};
      __pyx_t_7 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_enddef, __pyx_callargs+__pyx_t_11, (1-__pyx_t_11) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3032, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
    }
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  }

  /* "netCDF4/_netCDF4.pyx":3034
 *         if self.data_model != 'NETCDF4': self._enddef()
 * 
 *         _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 *         # remove old key from dimensions dict.
 *         self.variables.pop(oldname)
*/
  __pyx_t_6 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3034, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_8 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3034, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_11 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(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_11 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_8};
    __pyx_t_7 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __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_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3034, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
  }
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":3036
 *         _ensure_nc_success(ierr)
 *         # remove old key from dimensions dict.
 *         self.variables.pop(oldname)             # <<<<<<<<<<<<<<
 *         # add new key.
 *         self.variables[newname] = var
*/
  __pyx_t_4 = __pyx_v_self->variables;
  __Pyx_INCREF(__pyx_t_4);
  __pyx_t_11 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_oldname};
    __pyx_t_7 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_pop, __pyx_callargs+__pyx_t_11, (2-__pyx_t_11) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3036, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
  }
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":3038
 *         self.variables.pop(oldname)
 *         # add new key.
 *         self.variables[newname] = var             # <<<<<<<<<<<<<<
 * 
 *     def createGroup(self, groupname):
*/
  if (unlikely((PyObject_SetItem(__pyx_v_self->variables, __pyx_v_newname, ((PyObject *)__pyx_v_var)) < 0))) __PYX_ERR(0, 3038, __pyx_L1_error)

  /* "netCDF4/_netCDF4.pyx":3016
 *         return group.variables[varname]
 * 
 *     def renameVariable(self, oldname, newname):             # <<<<<<<<<<<<<<
 *         """
 * **`renameVariable(self, oldname, newname)`**
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __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_AddTraceback("netCDF4._netCDF4.Dataset.renameVariable", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_var);
  __Pyx_XDECREF(__pyx_v_bytestr);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":3040
 *         self.variables[newname] = var
 * 
 *     def createGroup(self, groupname):             # <<<<<<<<<<<<<<
 *         """
 * **`createGroup(self, groupname)`**
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_51createGroup(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7netCDF4_8_netCDF4_7Dataset_50createGroup, "\n**`createGroup(self, groupname)`**\n\nCreates a new `Group` with the given `groupname`.\n\nIf `groupname` is specified as a path, using forward slashes as in unix to\nseparate components, then intermediate groups will be created as necessary\n(analogous to `mkdir -p` in unix).  For example,\n`createGroup('/GroupA/GroupB/GroupC')` will create `GroupA`,\n`GroupA/GroupB`, and `GroupA/GroupB/GroupC`, if they don't already exist.\nIf the specified path describes a group that already exists, no error is\nraised.\n\nThe return value is a `Group` class instance.");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_7Dataset_51createGroup = {"createGroup", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_51createGroup, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_7Dataset_50createGroup};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_51createGroup(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_groupname = 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("createGroup (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_groupname,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 3040, __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(0, 3040, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "createGroup", 0) < (0)) __PYX_ERR(0, 3040, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("createGroup", 1, 1, 1, i); __PYX_ERR(0, 3040, __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(0, 3040, __pyx_L3_error)
    }
    __pyx_v_groupname = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("createGroup", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 3040, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.createGroup", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_7Dataset_50createGroup(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self), __pyx_v_groupname);

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_50createGroup(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_groupname) {
  PyObject *__pyx_v_nestedgroups = NULL;
  PyObject *__pyx_v_group = NULL;
  PyObject *__pyx_v_g = NULL;
  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;
  Py_ssize_t __pyx_t_6;
  PyObject *(*__pyx_t_7)(PyObject *);
  int __pyx_t_8;
  int __pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("createGroup", 0);
  __Pyx_INCREF(__pyx_v_groupname);

  /* "netCDF4/_netCDF4.pyx":3056
 * The return value is a `Group` class instance."""
 *         # if group specified as a path, split out group names
 *         groupname = posixpath.normpath(groupname)             # <<<<<<<<<<<<<<
 *         nestedgroups = groupname.split('/')
 *         group = self
*/
  __pyx_t_2 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_posixpath); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3056, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_normpath); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3056, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_5 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(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_5 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_groupname};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_5, (2-__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;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3056, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF_SET(__pyx_v_groupname, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":3057
 *         # if group specified as a path, split out group names
 *         groupname = posixpath.normpath(groupname)
 *         nestedgroups = groupname.split('/')             # <<<<<<<<<<<<<<
 *         group = self
 *         # loop over group names, create parent groups if they do not already
*/
  __pyx_t_4 = __pyx_v_groupname;
  __Pyx_INCREF(__pyx_t_4);
  __pyx_t_5 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u__10};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_split, __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_1)) __PYX_ERR(0, 3057, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_v_nestedgroups = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":3058
 *         groupname = posixpath.normpath(groupname)
 *         nestedgroups = groupname.split('/')
 *         group = self             # <<<<<<<<<<<<<<
 *         # loop over group names, create parent groups if they do not already
 *         # exist.
*/
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_v_group = ((PyObject *)__pyx_v_self);

  /* "netCDF4/_netCDF4.pyx":3061
 *         # loop over group names, create parent groups if they do not already
 *         # exist.
 *         for g in nestedgroups:             # <<<<<<<<<<<<<<
 *             if not g: continue
 *             if g not in group.groups:
*/
  if (likely(PyList_CheckExact(__pyx_v_nestedgroups)) || PyTuple_CheckExact(__pyx_v_nestedgroups)) {
    __pyx_t_1 = __pyx_v_nestedgroups; __Pyx_INCREF(__pyx_t_1);
    __pyx_t_6 = 0;
    __pyx_t_7 = NULL;
  } else {
    __pyx_t_6 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_nestedgroups); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3061, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_7 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3061, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_7)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 3061, __pyx_L1_error)
          #endif
          if (__pyx_t_6 >= __pyx_temp) break;
        }
        __pyx_t_4 = __Pyx_PyList_GetItemRefFast(__pyx_t_1, __pyx_t_6, __Pyx_ReferenceSharing_OwnStrongReference);
        ++__pyx_t_6;
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 3061, __pyx_L1_error)
          #endif
          if (__pyx_t_6 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_6));
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_6);
        #endif
        ++__pyx_t_6;
      }
      if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3061, __pyx_L1_error)
    } else {
      __pyx_t_4 = __pyx_t_7(__pyx_t_1);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 3061, __pyx_L1_error)
          PyErr_Clear();
        }
        break;
      }
    }
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_XDECREF_SET(__pyx_v_g, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "netCDF4/_netCDF4.pyx":3062
 *         # exist.
 *         for g in nestedgroups:
 *             if not g: continue             # <<<<<<<<<<<<<<
 *             if g not in group.groups:
 *                 group.groups[g] = Group(group, g)
*/
    __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_g); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 3062, __pyx_L1_error)
    __pyx_t_9 = (!__pyx_t_8);
    if (__pyx_t_9) {
      goto __pyx_L3_continue;
    }

    /* "netCDF4/_netCDF4.pyx":3063
 *         for g in nestedgroups:
 *             if not g: continue
 *             if g not in group.groups:             # <<<<<<<<<<<<<<
 *                 group.groups[g] = Group(group, g)
 *             group = group.groups[g]
*/
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_group, __pyx_mstate_global->__pyx_n_u_groups); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3063, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_9 = (__Pyx_PySequence_ContainsTF(__pyx_v_g, __pyx_t_4, Py_NE)); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 3063, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (__pyx_t_9) {

      /* "netCDF4/_netCDF4.pyx":3064
 *             if not g: continue
 *             if g not in group.groups:
 *                 group.groups[g] = Group(group, g)             # <<<<<<<<<<<<<<
 *             group = group.groups[g]
 *         # if group already exists, just return the group
*/
      __pyx_t_2 = NULL;
      __pyx_t_5 = 1;
      {
        PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_v_group, __pyx_v_g};
        __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Group, __pyx_callargs+__pyx_t_5, (3-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3064, __pyx_L1_error)
        __Pyx_GOTREF((PyObject *)__pyx_t_4);
      }
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_group, __pyx_mstate_global->__pyx_n_u_groups); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3064, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      if (unlikely((PyObject_SetItem(__pyx_t_2, __pyx_v_g, ((PyObject *)__pyx_t_4)) < 0))) __PYX_ERR(0, 3064, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF((PyObject *)__pyx_t_4); __pyx_t_4 = 0;

      /* "netCDF4/_netCDF4.pyx":3063
 *         for g in nestedgroups:
 *             if not g: continue
 *             if g not in group.groups:             # <<<<<<<<<<<<<<
 *                 group.groups[g] = Group(group, g)
 *             group = group.groups[g]
*/
    }

    /* "netCDF4/_netCDF4.pyx":3065
 *             if g not in group.groups:
 *                 group.groups[g] = Group(group, g)
 *             group = group.groups[g]             # <<<<<<<<<<<<<<
 *         # if group already exists, just return the group
 *         # (prior to 1.1.8, this would have raised an error)
*/
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_group, __pyx_mstate_global->__pyx_n_u_groups); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3065, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_2 = __Pyx_PyObject_GetItem(__pyx_t_4, __pyx_v_g); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3065, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF_SET(__pyx_v_group, __pyx_t_2);
    __pyx_t_2 = 0;

    /* "netCDF4/_netCDF4.pyx":3061
 *         # loop over group names, create parent groups if they do not already
 *         # exist.
 *         for g in nestedgroups:             # <<<<<<<<<<<<<<
 *             if not g: continue
 *             if g not in group.groups:
*/
    __pyx_L3_continue:;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":3068
 *         # if group already exists, just return the group
 *         # (prior to 1.1.8, this would have raised an error)
 *         return group             # <<<<<<<<<<<<<<
 * 
 *     def ncattrs(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_group);
  __pyx_r = __pyx_v_group;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":3040
 *         self.variables[newname] = var
 * 
 *     def createGroup(self, groupname):             # <<<<<<<<<<<<<<
 *         """
 * **`createGroup(self, groupname)`**
*/

  /* 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("netCDF4._netCDF4.Dataset.createGroup", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_nestedgroups);
  __Pyx_XDECREF(__pyx_v_group);
  __Pyx_XDECREF(__pyx_v_g);
  __Pyx_XDECREF(__pyx_v_groupname);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":3070
 *         return group
 * 
 *     def ncattrs(self):             # <<<<<<<<<<<<<<
 *         """
 * **`ncattrs(self)`**
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_53ncattrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7netCDF4_8_netCDF4_7Dataset_52ncattrs, "\n**`ncattrs(self)`**\n\nreturn netCDF global attribute names for this `Dataset` or `Group` in a list.");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_7Dataset_53ncattrs = {"ncattrs", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_53ncattrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_7Dataset_52ncattrs};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_53ncattrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ncattrs (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("ncattrs", 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("ncattrs", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_7Dataset_52ncattrs(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_52ncattrs(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__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("ncattrs", 0);

  /* "netCDF4/_netCDF4.pyx":3075
 * 
 * return netCDF global attribute names for this `Dataset` or `Group` in a list."""
 *         return _get_att_names(self._grpid, NC_GLOBAL)             # <<<<<<<<<<<<<<
 * 
 *     def setncattr(self,name,value):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_7netCDF4_8_netCDF4__get_att_names(__pyx_v_self->_grpid, NC_GLOBAL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3075, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":3070
 *         return group
 * 
 *     def ncattrs(self):             # <<<<<<<<<<<<<<
 *         """
 * **`ncattrs(self)`**
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.ncattrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":3077
 *         return _get_att_names(self._grpid, NC_GLOBAL)
 * 
 *     def setncattr(self,name,value):             # <<<<<<<<<<<<<<
 *         """
 * **`setncattr(self,name,value)`**
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_55setncattr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7netCDF4_8_netCDF4_7Dataset_54setncattr, "\n**`setncattr(self,name,value)`**\n\nset a netCDF dataset or group attribute using name,value pair.\nUse if you need to set a netCDF attribute with the\nwith the same name as one of the reserved python attributes.");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_7Dataset_55setncattr = {"setncattr", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_55setncattr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_7Dataset_54setncattr};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_55setncattr(PyObject *__pyx_v_self, 
#if CYTHON_METH_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;
  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("setncattr (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 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,&__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(0, 3077, __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(0, 3077, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 3077, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "setncattr", 0) < (0)) __PYX_ERR(0, 3077, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("setncattr", 1, 2, 2, i); __PYX_ERR(0, 3077, __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(0, 3077, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 3077, __pyx_L3_error)
    }
    __pyx_v_name = values[0];
    __pyx_v_value = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setncattr", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 3077, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.setncattr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_7Dataset_54setncattr(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self), __pyx_v_name, __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_7netCDF4_8_netCDF4_7Dataset_54setncattr(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_value) {
  nc_type __pyx_v_xtype;
  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;
  struct __pyx_opt_args_7netCDF4_8_netCDF4__set_att __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setncattr", 0);

  /* "netCDF4/_netCDF4.pyx":3085
 * with the same name as one of the reserved python attributes."""
 *         cdef nc_type xtype
 *         xtype=-99             # <<<<<<<<<<<<<<
 *         if self.data_model != 'NETCDF4': self._redef()
 *         _set_att(self, NC_GLOBAL, name, value, xtype=xtype, force_ncstring=self._ncstring_attrs__)
*/
  __pyx_v_xtype = -99;

  /* "netCDF4/_netCDF4.pyx":3086
 *         cdef nc_type xtype
 *         xtype=-99
 *         if self.data_model != 'NETCDF4': self._redef()             # <<<<<<<<<<<<<<
 *         _set_att(self, NC_GLOBAL, name, value, xtype=xtype, force_ncstring=self._ncstring_attrs__)
 *         if self.data_model !=  'NETCDF4': self._enddef()
*/
  __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v_self->data_model, __pyx_mstate_global->__pyx_n_u_NETCDF4, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 3086, __pyx_L1_error)
  if (__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_redef, __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(0, 3086, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }

  /* "netCDF4/_netCDF4.pyx":3087
 *         xtype=-99
 *         if self.data_model != 'NETCDF4': self._redef()
 *         _set_att(self, NC_GLOBAL, name, value, xtype=xtype, force_ncstring=self._ncstring_attrs__)             # <<<<<<<<<<<<<<
 *         if self.data_model !=  'NETCDF4': self._enddef()
 * 
*/
  __pyx_t_2 = __pyx_v_self->_ncstring_attrs__;
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_5.__pyx_n = 2;
  __pyx_t_5.xtype = __pyx_v_xtype;
  __pyx_t_5.force_ncstring = __pyx_t_2;
  __pyx_t_3 = __pyx_f_7netCDF4_8_netCDF4__set_att(((PyObject *)__pyx_v_self), NC_GLOBAL, __pyx_v_name, __pyx_v_value, &__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3087, __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;

  /* "netCDF4/_netCDF4.pyx":3088
 *         if self.data_model != 'NETCDF4': self._redef()
 *         _set_att(self, NC_GLOBAL, name, value, xtype=xtype, force_ncstring=self._ncstring_attrs__)
 *         if self.data_model !=  'NETCDF4': self._enddef()             # <<<<<<<<<<<<<<
 * 
 *     def setncattr_string(self,name,value):
*/
  __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v_self->data_model, __pyx_mstate_global->__pyx_n_u_NETCDF4, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 3088, __pyx_L1_error)
  if (__pyx_t_1) {
    __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_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_enddef, __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_3)) __PYX_ERR(0, 3088, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }

  /* "netCDF4/_netCDF4.pyx":3077
 *         return _get_att_names(self._grpid, NC_GLOBAL)
 * 
 *     def setncattr(self,name,value):             # <<<<<<<<<<<<<<
 *         """
 * **`setncattr(self,name,value)`**
*/

  /* 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_AddTraceback("netCDF4._netCDF4.Dataset.setncattr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":3090
 *         if self.data_model !=  'NETCDF4': self._enddef()
 * 
 *     def setncattr_string(self,name,value):             # <<<<<<<<<<<<<<
 *         """
 * **`setncattr_string(self,name,value)`**
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_57setncattr_string(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7netCDF4_8_netCDF4_7Dataset_56setncattr_string, "\n**`setncattr_string(self,name,value)`**\n\nset a netCDF dataset or group string attribute using name,value pair.\nUse if you need to ensure that a netCDF attribute is created with type\n`NC_STRING` if the file format is `NETCDF4`.");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_7Dataset_57setncattr_string = {"setncattr_string", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_57setncattr_string, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_7Dataset_56setncattr_string};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_57setncattr_string(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_name = 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("setncattr_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_name,&__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(0, 3090, __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(0, 3090, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 3090, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "setncattr_string", 0) < (0)) __PYX_ERR(0, 3090, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("setncattr_string", 1, 2, 2, i); __PYX_ERR(0, 3090, __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(0, 3090, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 3090, __pyx_L3_error)
    }
    __pyx_v_name = values[0];
    __pyx_v_value = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setncattr_string", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 3090, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.setncattr_string", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_7Dataset_56setncattr_string(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self), __pyx_v_name, __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_7netCDF4_8_netCDF4_7Dataset_56setncattr_string(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_value) {
  nc_type __pyx_v_xtype;
  PyObject *__pyx_v_msg = NULL;
  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;
  struct __pyx_opt_args_7netCDF4_8_netCDF4__set_att __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setncattr_string", 0);

  /* "netCDF4/_netCDF4.pyx":3098
 * `NC_STRING` if the file format is `NETCDF4`."""
 *         cdef nc_type xtype
 *         xtype=-99             # <<<<<<<<<<<<<<
 *         if self.data_model != 'NETCDF4':
 *             msg='file format does not support NC_STRING attributes'
*/
  __pyx_v_xtype = -99;

  /* "netCDF4/_netCDF4.pyx":3099
 *         cdef nc_type xtype
 *         xtype=-99
 *         if self.data_model != 'NETCDF4':             # <<<<<<<<<<<<<<
 *             msg='file format does not support NC_STRING attributes'
 *             raise OSError(msg)
*/
  __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v_self->data_model, __pyx_mstate_global->__pyx_n_u_NETCDF4, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 3099, __pyx_L1_error)
  if (unlikely(__pyx_t_1)) {

    /* "netCDF4/_netCDF4.pyx":3100
 *         xtype=-99
 *         if self.data_model != 'NETCDF4':
 *             msg='file format does not support NC_STRING attributes'             # <<<<<<<<<<<<<<
 *             raise OSError(msg)
 *         _set_att(self, NC_GLOBAL, name, value, xtype=xtype, force_ncstring=True)
*/
    __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u_file_format_does_not_support_NC);
    __pyx_v_msg = __pyx_mstate_global->__pyx_kp_u_file_format_does_not_support_NC;

    /* "netCDF4/_netCDF4.pyx":3101
 *         if self.data_model != 'NETCDF4':
 *             msg='file format does not support NC_STRING attributes'
 *             raise OSError(msg)             # <<<<<<<<<<<<<<
 *         _set_att(self, NC_GLOBAL, name, value, xtype=xtype, force_ncstring=True)
 * 
*/
    __pyx_t_3 = NULL;
    __pyx_t_4 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_msg};
      __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_OSError)), __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(0, 3101, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(0, 3101, __pyx_L1_error)

    /* "netCDF4/_netCDF4.pyx":3099
 *         cdef nc_type xtype
 *         xtype=-99
 *         if self.data_model != 'NETCDF4':             # <<<<<<<<<<<<<<
 *             msg='file format does not support NC_STRING attributes'
 *             raise OSError(msg)
*/
  }

  /* "netCDF4/_netCDF4.pyx":3102
 *             msg='file format does not support NC_STRING attributes'
 *             raise OSError(msg)
 *         _set_att(self, NC_GLOBAL, name, value, xtype=xtype, force_ncstring=True)             # <<<<<<<<<<<<<<
 * 
 *     def setncatts(self,attdict):
*/
  __pyx_t_5.__pyx_n = 2;
  __pyx_t_5.xtype = __pyx_v_xtype;
  __pyx_t_5.force_ncstring = Py_True;
  __pyx_t_2 = __pyx_f_7netCDF4_8_netCDF4__set_att(((PyObject *)__pyx_v_self), NC_GLOBAL, __pyx_v_name, __pyx_v_value, &__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3102, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":3090
 *         if self.data_model !=  'NETCDF4': self._enddef()
 * 
 *     def setncattr_string(self,name,value):             # <<<<<<<<<<<<<<
 *         """
 * **`setncattr_string(self,name,value)`**
*/

  /* 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_AddTraceback("netCDF4._netCDF4.Dataset.setncattr_string", __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;
}

/* "netCDF4/_netCDF4.pyx":3104
 *         _set_att(self, NC_GLOBAL, name, value, xtype=xtype, force_ncstring=True)
 * 
 *     def setncatts(self,attdict):             # <<<<<<<<<<<<<<
 *         """
 * **`setncatts(self,attdict)`**
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_59setncatts(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7netCDF4_8_netCDF4_7Dataset_58setncatts, "\n**`setncatts(self,attdict)`**\n\nset a bunch of netCDF dataset or group attributes at once using a python dictionary.\nThis may be faster when setting a lot of attributes for a `NETCDF3`\nformatted file, since nc_redef/nc_enddef is not called in between setting\neach attribute");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_7Dataset_59setncatts = {"setncatts", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_59setncatts, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_7Dataset_58setncatts};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_59setncatts(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_attdict = 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("setncatts (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_attdict,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 3104, __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(0, 3104, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "setncatts", 0) < (0)) __PYX_ERR(0, 3104, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("setncatts", 1, 1, 1, i); __PYX_ERR(0, 3104, __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(0, 3104, __pyx_L3_error)
    }
    __pyx_v_attdict = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setncatts", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 3104, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.setncatts", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_7Dataset_58setncatts(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self), __pyx_v_attdict);

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_58setncatts(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_attdict) {
  PyObject *__pyx_v_name = NULL;
  PyObject *__pyx_v_value = NULL;
  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;
  Py_ssize_t __pyx_t_5;
  Py_ssize_t __pyx_t_6;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setncatts", 0);

  /* "netCDF4/_netCDF4.pyx":3112
 * formatted file, since nc_redef/nc_enddef is not called in between setting
 * each attribute"""
 *         if self.data_model != 'NETCDF4': self._redef()             # <<<<<<<<<<<<<<
 *         for name, value in attdict.items():
 *             _set_att(self, NC_GLOBAL, name, value)
*/
  __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v_self->data_model, __pyx_mstate_global->__pyx_n_u_NETCDF4, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 3112, __pyx_L1_error)
  if (__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_redef, __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(0, 3112, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }

  /* "netCDF4/_netCDF4.pyx":3113
 * each attribute"""
 *         if self.data_model != 'NETCDF4': self._redef()
 *         for name, value in attdict.items():             # <<<<<<<<<<<<<<
 *             _set_att(self, NC_GLOBAL, name, value)
 *         if self.data_model != 'NETCDF4': self._enddef()
*/
  __pyx_t_5 = 0;
  if (unlikely(__pyx_v_attdict == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "items");
    __PYX_ERR(0, 3113, __pyx_L1_error)
  }
  __pyx_t_3 = __Pyx_dict_iterator(__pyx_v_attdict, 0, __pyx_mstate_global->__pyx_n_u_items, (&__pyx_t_6), (&__pyx_t_7)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3113, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_2);
  __pyx_t_2 = __pyx_t_3;
  __pyx_t_3 = 0;
  while (1) {
    __pyx_t_9 = __Pyx_dict_iter_next(__pyx_t_2, __pyx_t_6, &__pyx_t_5, &__pyx_t_3, &__pyx_t_8, NULL, __pyx_t_7);
    if (unlikely(__pyx_t_9 == 0)) break;
    if (unlikely(__pyx_t_9 == -1)) __PYX_ERR(0, 3113, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_3);
    __pyx_t_3 = 0;
    __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_8);
    __pyx_t_8 = 0;

    /* "netCDF4/_netCDF4.pyx":3114
 *         if self.data_model != 'NETCDF4': self._redef()
 *         for name, value in attdict.items():
 *             _set_att(self, NC_GLOBAL, name, value)             # <<<<<<<<<<<<<<
 *         if self.data_model != 'NETCDF4': self._enddef()
 * 
*/
    __pyx_t_8 = __pyx_f_7netCDF4_8_netCDF4__set_att(((PyObject *)__pyx_v_self), NC_GLOBAL, __pyx_v_name, __pyx_v_value, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3114, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":3115
 *         for name, value in attdict.items():
 *             _set_att(self, NC_GLOBAL, name, value)
 *         if self.data_model != 'NETCDF4': self._enddef()             # <<<<<<<<<<<<<<
 * 
 *     def getncattr(self,name,encoding='utf-8'):
*/
  __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v_self->data_model, __pyx_mstate_global->__pyx_n_u_NETCDF4, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 3115, __pyx_L1_error)
  if (__pyx_t_1) {
    __pyx_t_8 = ((PyObject *)__pyx_v_self);
    __Pyx_INCREF(__pyx_t_8);
    __pyx_t_4 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_8, NULL};
      __pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_enddef, __pyx_callargs+__pyx_t_4, (1-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3115, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }

  /* "netCDF4/_netCDF4.pyx":3104
 *         _set_att(self, NC_GLOBAL, name, value, xtype=xtype, force_ncstring=True)
 * 
 *     def setncatts(self,attdict):             # <<<<<<<<<<<<<<
 *         """
 * **`setncatts(self,attdict)`**
*/

  /* 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_8);
  __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.setncatts", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_name);
  __Pyx_XDECREF(__pyx_v_value);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":3117
 *         if self.data_model != 'NETCDF4': self._enddef()
 * 
 *     def getncattr(self,name,encoding='utf-8'):             # <<<<<<<<<<<<<<
 *         """
 * **`getncattr(self,name)`**
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_61getncattr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7netCDF4_8_netCDF4_7Dataset_60getncattr, "\n**`getncattr(self,name)`**\n\nretrieve a netCDF dataset or group attribute.\nUse if you need to get a netCDF attribute with the same\nname as one of the reserved python attributes.\n\noption kwarg `encoding` can be used to specify the\ncharacter encoding of a string attribute (default is `utf-8`).");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_7Dataset_61getncattr = {"getncattr", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_61getncattr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_7Dataset_60getncattr};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_61getncattr(PyObject *__pyx_v_self, 
#if CYTHON_METH_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;
  PyObject *__pyx_v_encoding = 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("getncattr (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 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,&__pyx_mstate_global->__pyx_n_u_encoding,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 3117, __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(0, 3117, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 3117, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "getncattr", 0) < (0)) __PYX_ERR(0, 3117, __pyx_L3_error)
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_kp_u_utf_8));
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("getncattr", 0, 1, 2, i); __PYX_ERR(0, 3117, __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(0, 3117, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 3117, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_kp_u_utf_8));
    }
    __pyx_v_name = values[0];
    __pyx_v_encoding = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getncattr", 0, 1, 2, __pyx_nargs); __PYX_ERR(0, 3117, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.getncattr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_7Dataset_60getncattr(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self), __pyx_v_name, __pyx_v_encoding);

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_60getncattr(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_encoding) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  struct __pyx_opt_args_7netCDF4_8_netCDF4__get_att __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getncattr", 0);

  /* "netCDF4/_netCDF4.pyx":3127
 * option kwarg `encoding` can be used to specify the
 * character encoding of a string attribute (default is `utf-8`)."""
 *         return _get_att(self, NC_GLOBAL, name, encoding=encoding)             # <<<<<<<<<<<<<<
 * 
 *     def __delattr__(self,name):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2.__pyx_n = 1;
  __pyx_t_2.encoding = __pyx_v_encoding;
  __pyx_t_1 = __pyx_f_7netCDF4_8_netCDF4__get_att(((PyObject *)__pyx_v_self), NC_GLOBAL, __pyx_v_name, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3127, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":3117
 *         if self.data_model != 'NETCDF4': self._enddef()
 * 
 *     def getncattr(self,name,encoding='utf-8'):             # <<<<<<<<<<<<<<
 *         """
 * **`getncattr(self,name)`**
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.getncattr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":3129
 *         return _get_att(self, NC_GLOBAL, name, encoding=encoding)
 * 
 *     def __delattr__(self,name):             # <<<<<<<<<<<<<<
 *         # if it's a netCDF attribute, remove it
 *         if name not in _private_atts:
*/

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_63__delattr__(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_63__delattr__(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__delattr__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_7Dataset_62__delattr__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self), ((PyObject *)__pyx_v_name));

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

static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_62__delattr__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_name) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  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;
  PyObject *__pyx_t_8[5];
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__delattr__", 0);

  /* "netCDF4/_netCDF4.pyx":3131
 *     def __delattr__(self,name):
 *         # if it's a netCDF attribute, remove it
 *         if name not in _private_atts:             # <<<<<<<<<<<<<<
 *             self.delncattr(name)
 *         else:
*/
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_private_atts); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3131, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_v_name, __pyx_t_1, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 3131, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (likely(__pyx_t_2)) {

    /* "netCDF4/_netCDF4.pyx":3132
 *         # if it's a netCDF attribute, remove it
 *         if name not in _private_atts:
 *             self.delncattr(name)             # <<<<<<<<<<<<<<
 *         else:
 *             raise AttributeError(
*/
    __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_name};
      __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_delncattr, __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_1)) __PYX_ERR(0, 3132, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":3131
 *     def __delattr__(self,name):
 *         # if it's a netCDF attribute, remove it
 *         if name not in _private_atts:             # <<<<<<<<<<<<<<
 *             self.delncattr(name)
 *         else:
*/
    goto __pyx_L3;
  }

  /* "netCDF4/_netCDF4.pyx":3134
 *             self.delncattr(name)
 *         else:
 *             raise AttributeError(             # <<<<<<<<<<<<<<
 *             "'%s' is one of the reserved attributes %s, cannot delete. Use delncattr instead." % (name, tuple(_private_atts)))
 * 
*/
  /*else*/ {
    __pyx_t_3 = NULL;

    /* "netCDF4/_netCDF4.pyx":3135
 *         else:
 *             raise AttributeError(
 *             "'%s' is one of the reserved attributes %s, cannot delete. Use delncattr instead." % (name, tuple(_private_atts)))             # <<<<<<<<<<<<<<
 * 
 *     def delncattr(self, name):
*/
    __pyx_t_5 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Str(__pyx_v_name), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3135, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_private_atts); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3135, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = __Pyx_PySequence_Tuple(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3135, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Str(__pyx_t_7), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3135, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_8[0] = __pyx_mstate_global->__pyx_kp_u__9;
    __pyx_t_8[1] = __pyx_t_5;
    __pyx_t_8[2] = __pyx_mstate_global->__pyx_kp_u_is_one_of_the_reserved_attribut;
    __pyx_t_8[3] = __pyx_t_6;
    __pyx_t_8[4] = __pyx_mstate_global->__pyx_kp_u_cannot_delete_Use_delncattr_ins;
    __pyx_t_7 = __Pyx_PyUnicode_Join(__pyx_t_8, 5, 1 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5) + 36 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6) + 39, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6));
    if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3135, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __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_7};
      __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_AttributeError)), __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_7); __pyx_t_7 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3134, __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(0, 3134, __pyx_L1_error)
  }
  __pyx_L3:;

  /* "netCDF4/_netCDF4.pyx":3129
 *         return _get_att(self, NC_GLOBAL, name, encoding=encoding)
 * 
 *     def __delattr__(self,name):             # <<<<<<<<<<<<<<
 *         # if it's a netCDF attribute, remove it
 *         if name not in _private_atts:
*/

  /* 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_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.__delattr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":3137
 *             "'%s' is one of the reserved attributes %s, cannot delete. Use delncattr instead." % (name, tuple(_private_atts)))
 * 
 *     def delncattr(self, name):             # <<<<<<<<<<<<<<
 *         """
 * **`delncattr(self,name,value)`**
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_65delncattr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7netCDF4_8_netCDF4_7Dataset_64delncattr, "\n**`delncattr(self,name,value)`**\n\ndelete a netCDF dataset or group attribute.  Use if you need to delete a\nnetCDF attribute with the same name as one of the reserved python\nattributes.");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_7Dataset_65delncattr = {"delncattr", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_65delncattr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_7Dataset_64delncattr};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_65delncattr(PyObject *__pyx_v_self, 
#if CYTHON_METH_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("delncattr (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 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,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 3137, __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(0, 3137, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "delncattr", 0) < (0)) __PYX_ERR(0, 3137, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("delncattr", 1, 1, 1, i); __PYX_ERR(0, 3137, __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(0, 3137, __pyx_L3_error)
    }
    __pyx_v_name = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("delncattr", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 3137, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.delncattr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_7Dataset_64delncattr(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__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_7netCDF4_8_netCDF4_7Dataset_64delncattr(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_name) {
  char *__pyx_v_attname;
  int __pyx_v_ierr;
  PyObject *__pyx_v_bytestr = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  char *__pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  size_t __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("delncattr", 0);

  /* "netCDF4/_netCDF4.pyx":3146
 *         cdef char *attname
 *         cdef int ierr
 *         bytestr = _strencode(name)             # <<<<<<<<<<<<<<
 *         attname = bytestr
 *         if self.data_model != 'NETCDF4': self._redef()
*/
  __pyx_t_1 = __pyx_f_7netCDF4_8_netCDF4__strencode(__pyx_v_name, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3146, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_bytestr = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":3147
 *         cdef int ierr
 *         bytestr = _strencode(name)
 *         attname = bytestr             # <<<<<<<<<<<<<<
 *         if self.data_model != 'NETCDF4': self._redef()
 *         with nogil:
*/
  __pyx_t_2 = __Pyx_PyObject_AsWritableString(__pyx_v_bytestr); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 3147, __pyx_L1_error)
  __pyx_v_attname = __pyx_t_2;

  /* "netCDF4/_netCDF4.pyx":3148
 *         bytestr = _strencode(name)
 *         attname = bytestr
 *         if self.data_model != 'NETCDF4': self._redef()             # <<<<<<<<<<<<<<
 *         with nogil:
 *             ierr = nc_del_att(self._grpid, NC_GLOBAL, attname)
*/
  __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_v_self->data_model, __pyx_mstate_global->__pyx_n_u_NETCDF4, Py_NE)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 3148, __pyx_L1_error)
  if (__pyx_t_3) {
    __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_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_redef, __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_1)) __PYX_ERR(0, 3148, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }

  /* "netCDF4/_netCDF4.pyx":3149
 *         attname = bytestr
 *         if self.data_model != 'NETCDF4': self._redef()
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_del_att(self._grpid, NC_GLOBAL, attname)
 *         if self.data_model != 'NETCDF4': self._enddef()
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "netCDF4/_netCDF4.pyx":3150
 *         if self.data_model != 'NETCDF4': self._redef()
 *         with nogil:
 *             ierr = nc_del_att(self._grpid, NC_GLOBAL, attname)             # <<<<<<<<<<<<<<
 *         if self.data_model != 'NETCDF4': self._enddef()
 *         _ensure_nc_success(ierr)
*/
        __pyx_v_ierr = nc_del_att(__pyx_v_self->_grpid, NC_GLOBAL, __pyx_v_attname);
      }

      /* "netCDF4/_netCDF4.pyx":3149
 *         attname = bytestr
 *         if self.data_model != 'NETCDF4': self._redef()
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_del_att(self._grpid, NC_GLOBAL, attname)
 *         if self.data_model != 'NETCDF4': self._enddef()
*/
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L6;
        }
        __pyx_L6:;
      }
  }

  /* "netCDF4/_netCDF4.pyx":3151
 *         with nogil:
 *             ierr = nc_del_att(self._grpid, NC_GLOBAL, attname)
 *         if self.data_model != 'NETCDF4': self._enddef()             # <<<<<<<<<<<<<<
 *         _ensure_nc_success(ierr)
 * 
*/
  __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_v_self->data_model, __pyx_mstate_global->__pyx_n_u_NETCDF4, Py_NE)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 3151, __pyx_L1_error)
  if (__pyx_t_3) {
    __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_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_enddef, __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_1)) __PYX_ERR(0, 3151, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }

  /* "netCDF4/_netCDF4.pyx":3152
 *             ierr = nc_del_att(self._grpid, NC_GLOBAL, attname)
 *         if self.data_model != 'NETCDF4': self._enddef()
 *         _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 * 
 *     def __setattr__(self,name,value):
*/
  __pyx_t_4 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3152, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3152, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(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_5 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_7};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_6, __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_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3152, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":3137
 *             "'%s' is one of the reserved attributes %s, cannot delete. Use delncattr instead." % (name, tuple(_private_atts)))
 * 
 *     def delncattr(self, name):             # <<<<<<<<<<<<<<
 *         """
 * **`delncattr(self,name,value)`**
*/

  /* 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_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.delncattr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_bytestr);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":3154
 *         _ensure_nc_success(ierr)
 * 
 *     def __setattr__(self,name,value):             # <<<<<<<<<<<<<<
 *         # if name in _private_atts, it is stored at the python
 *         # level and not in the netCDF file.
*/

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_67__setattr__(PyObject *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_67__setattr__(PyObject *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_value) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setattr__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_7Dataset_66__setattr__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self), ((PyObject *)__pyx_v_name), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_66__setattr__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_value) {
  int __pyx_r;
  __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;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9[5];
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setattr__", 0);

  /* "netCDF4/_netCDF4.pyx":3157
 *         # if name in _private_atts, it is stored at the python
 *         # level and not in the netCDF file.
 *         if name not in _private_atts:             # <<<<<<<<<<<<<<
 *             self.setncattr(name, value)
 *         elif not name.endswith('__'):
*/
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_private_atts); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3157, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_v_name, __pyx_t_1, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 3157, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {

    /* "netCDF4/_netCDF4.pyx":3158
 *         # level and not in the netCDF file.
 *         if name not in _private_atts:
 *             self.setncattr(name, value)             # <<<<<<<<<<<<<<
 *         elif not name.endswith('__'):
 *             if hasattr(self,name):
*/
    __pyx_t_3 = ((PyObject *)__pyx_v_self);
    __Pyx_INCREF(__pyx_t_3);
    __pyx_t_4 = 0;
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_v_name, __pyx_v_value};
      __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_setncattr, __pyx_callargs+__pyx_t_4, (3-__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(0, 3158, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":3157
 *         # if name in _private_atts, it is stored at the python
 *         # level and not in the netCDF file.
 *         if name not in _private_atts:             # <<<<<<<<<<<<<<
 *             self.setncattr(name, value)
 *         elif not name.endswith('__'):
*/
    goto __pyx_L3;
  }

  /* "netCDF4/_netCDF4.pyx":3159
 *         if name not in _private_atts:
 *             self.setncattr(name, value)
 *         elif not name.endswith('__'):             # <<<<<<<<<<<<<<
 *             if hasattr(self,name):
 *                 raise AttributeError(
*/
  __pyx_t_3 = __pyx_v_name;
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_4 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_n_u__16};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_endswith, __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_1)) __PYX_ERR(0, 3159, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 3159, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_5 = (!__pyx_t_2);
  if (__pyx_t_5) {

    /* "netCDF4/_netCDF4.pyx":3160
 *             self.setncattr(name, value)
 *         elif not name.endswith('__'):
 *             if hasattr(self,name):             # <<<<<<<<<<<<<<
 *                 raise AttributeError(
 *             "'%s' is one of the reserved attributes %s, cannot rebind. Use setncattr instead." % (name, tuple(_private_atts)))
*/
    __pyx_t_5 = __Pyx_HasAttr(((PyObject *)__pyx_v_self), __pyx_v_name); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 3160, __pyx_L1_error)
    if (unlikely(__pyx_t_5)) {

      /* "netCDF4/_netCDF4.pyx":3161
 *         elif not name.endswith('__'):
 *             if hasattr(self,name):
 *                 raise AttributeError(             # <<<<<<<<<<<<<<
 *             "'%s' is one of the reserved attributes %s, cannot rebind. Use setncattr instead." % (name, tuple(_private_atts)))
 *             else:
*/
      __pyx_t_3 = NULL;

      /* "netCDF4/_netCDF4.pyx":3162
 *             if hasattr(self,name):
 *                 raise AttributeError(
 *             "'%s' is one of the reserved attributes %s, cannot rebind. Use setncattr instead." % (name, tuple(_private_atts)))             # <<<<<<<<<<<<<<
 *             else:
 *                 self.__dict__[name]=value
*/
      __pyx_t_6 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Str(__pyx_v_name), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3162, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_private_atts); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3162, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_8 = __Pyx_PySequence_Tuple(__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3162, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_7 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Str(__pyx_t_8), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3162, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __pyx_t_9[0] = __pyx_mstate_global->__pyx_kp_u__9;
      __pyx_t_9[1] = __pyx_t_6;
      __pyx_t_9[2] = __pyx_mstate_global->__pyx_kp_u_is_one_of_the_reserved_attribut;
      __pyx_t_9[3] = __pyx_t_7;
      __pyx_t_9[4] = __pyx_mstate_global->__pyx_kp_u_cannot_rebind_Use_setncattr_ins;
      __pyx_t_8 = __Pyx_PyUnicode_Join(__pyx_t_9, 5, 1 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6) + 36 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_7) + 39, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_7));
      if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3162, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_4 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_8};
        __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_AttributeError)), __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_1)) __PYX_ERR(0, 3161, __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(0, 3161, __pyx_L1_error)

      /* "netCDF4/_netCDF4.pyx":3160
 *             self.setncattr(name, value)
 *         elif not name.endswith('__'):
 *             if hasattr(self,name):             # <<<<<<<<<<<<<<
 *                 raise AttributeError(
 *             "'%s' is one of the reserved attributes %s, cannot rebind. Use setncattr instead." % (name, tuple(_private_atts)))
*/
    }

    /* "netCDF4/_netCDF4.pyx":3164
 *             "'%s' is one of the reserved attributes %s, cannot rebind. Use setncattr instead." % (name, tuple(_private_atts)))
 *             else:
 *                 self.__dict__[name]=value             # <<<<<<<<<<<<<<
 * 
 *     def __getattr__(self,name):
*/
    /*else*/ {
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_dict); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3164, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (unlikely((PyObject_SetItem(__pyx_t_1, __pyx_v_name, __pyx_v_value) < 0))) __PYX_ERR(0, 3164, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    }

    /* "netCDF4/_netCDF4.pyx":3159
 *         if name not in _private_atts:
 *             self.setncattr(name, value)
 *         elif not name.endswith('__'):             # <<<<<<<<<<<<<<
 *             if hasattr(self,name):
 *                 raise AttributeError(
*/
  }
  __pyx_L3:;

  /* "netCDF4/_netCDF4.pyx":3154
 *         _ensure_nc_success(ierr)
 * 
 *     def __setattr__(self,name,value):             # <<<<<<<<<<<<<<
 *         # if name in _private_atts, it is stored at the python
 *         # level and not in the netCDF file.
*/

  /* 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_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.__setattr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":3166
 *                 self.__dict__[name]=value
 * 
 *     def __getattr__(self,name):             # <<<<<<<<<<<<<<
 *         # if name in _private_atts, it is stored at the python
 *         # level and not in the netCDF file.
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_69__getattr__(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_69__getattr__(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__getattr__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_7Dataset_68__getattr__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self), ((PyObject *)__pyx_v_name));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_68__getattr__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_v_names = NULL;
  PyObject *__pyx_v_values = NULL;
  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;
  Py_ssize_t __pyx_t_6;
  PyObject *(*__pyx_t_7)(PyObject *);
  int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__getattr__", 0);
  __Pyx_INCREF(__pyx_v_name);

  /* "netCDF4/_netCDF4.pyx":3169
 *         # if name in _private_atts, it is stored at the python
 *         # level and not in the netCDF file.
 *         if name.startswith('__') and name.endswith('__'):             # <<<<<<<<<<<<<<
 *             # if __dict__ requested, return a dict with netCDF attributes.
 *             if name == '__dict__':
*/
  __pyx_t_3 = __pyx_v_name;
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_4 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_n_u__16};
    __pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_startswith, __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(0, 3169, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 3169, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__pyx_t_5) {
  } else {
    __pyx_t_1 = __pyx_t_5;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_3 = __pyx_v_name;
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_4 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_n_u__16};
    __pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_endswith, __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(0, 3169, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 3169, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_1 = __pyx_t_5;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "netCDF4/_netCDF4.pyx":3171
 *         if name.startswith('__') and name.endswith('__'):
 *             # if __dict__ requested, return a dict with netCDF attributes.
 *             if name == '__dict__':             # <<<<<<<<<<<<<<
 *                 names = self.ncattrs()
 *                 values = []
*/
    __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v_name, __pyx_mstate_global->__pyx_n_u_dict, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 3171, __pyx_L1_error)
    if (likely(__pyx_t_1)) {

      /* "netCDF4/_netCDF4.pyx":3172
 *             # if __dict__ requested, return a dict with netCDF attributes.
 *             if name == '__dict__':
 *                 names = self.ncattrs()             # <<<<<<<<<<<<<<
 *                 values = []
 *                 for name in names:
*/
      __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_ncattrs, __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(0, 3172, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
      }
      __pyx_v_names = __pyx_t_2;
      __pyx_t_2 = 0;

      /* "netCDF4/_netCDF4.pyx":3173
 *             if name == '__dict__':
 *                 names = self.ncattrs()
 *                 values = []             # <<<<<<<<<<<<<<
 *                 for name in names:
 *                     values.append(_get_att(self, NC_GLOBAL, name))
*/
      __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3173, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_v_values = ((PyObject*)__pyx_t_2);
      __pyx_t_2 = 0;

      /* "netCDF4/_netCDF4.pyx":3174
 *                 names = self.ncattrs()
 *                 values = []
 *                 for name in names:             # <<<<<<<<<<<<<<
 *                     values.append(_get_att(self, NC_GLOBAL, name))
 *                 return dict(zip(names, values))
*/
      if (likely(PyList_CheckExact(__pyx_v_names)) || PyTuple_CheckExact(__pyx_v_names)) {
        __pyx_t_2 = __pyx_v_names; __Pyx_INCREF(__pyx_t_2);
        __pyx_t_6 = 0;
        __pyx_t_7 = NULL;
      } else {
        __pyx_t_6 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_names); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3174, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __pyx_t_7 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3174, __pyx_L1_error)
      }
      for (;;) {
        if (likely(!__pyx_t_7)) {
          if (likely(PyList_CheckExact(__pyx_t_2))) {
            {
              Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2);
              #if !CYTHON_ASSUME_SAFE_SIZE
              if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 3174, __pyx_L1_error)
              #endif
              if (__pyx_t_6 >= __pyx_temp) break;
            }
            __pyx_t_3 = __Pyx_PyList_GetItemRefFast(__pyx_t_2, __pyx_t_6, __Pyx_ReferenceSharing_OwnStrongReference);
            ++__pyx_t_6;
          } 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(0, 3174, __pyx_L1_error)
              #endif
              if (__pyx_t_6 >= __pyx_temp) break;
            }
            #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
            __pyx_t_3 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_6));
            #else
            __pyx_t_3 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_6);
            #endif
            ++__pyx_t_6;
          }
          if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3174, __pyx_L1_error)
        } else {
          __pyx_t_3 = __pyx_t_7(__pyx_t_2);
          if (unlikely(!__pyx_t_3)) {
            PyObject* exc_type = PyErr_Occurred();
            if (exc_type) {
              if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 3174, __pyx_L1_error)
              PyErr_Clear();
            }
            break;
          }
        }
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF_SET(__pyx_v_name, __pyx_t_3);
        __pyx_t_3 = 0;

        /* "netCDF4/_netCDF4.pyx":3175
 *                 values = []
 *                 for name in names:
 *                     values.append(_get_att(self, NC_GLOBAL, name))             # <<<<<<<<<<<<<<
 *                 return dict(zip(names, values))
 *             else:
*/
        __pyx_t_3 = __pyx_f_7netCDF4_8_netCDF4__get_att(((PyObject *)__pyx_v_self), NC_GLOBAL, __pyx_v_name, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3175, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_values, __pyx_t_3); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(0, 3175, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

        /* "netCDF4/_netCDF4.pyx":3174
 *                 names = self.ncattrs()
 *                 values = []
 *                 for name in names:             # <<<<<<<<<<<<<<
 *                     values.append(_get_att(self, NC_GLOBAL, name))
 *                 return dict(zip(names, values))
*/
      }
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

      /* "netCDF4/_netCDF4.pyx":3176
 *                 for name in names:
 *                     values.append(_get_att(self, NC_GLOBAL, name))
 *                 return dict(zip(names, values))             # <<<<<<<<<<<<<<
 *             else:
 *                 raise AttributeError
*/
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_3 = NULL;
      __pyx_t_10 = NULL;
      __pyx_t_4 = 1;
      {
        PyObject *__pyx_callargs[3] = {__pyx_t_10, __pyx_v_names, __pyx_v_values};
        __pyx_t_9 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_zip, __pyx_callargs+__pyx_t_4, (3-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3176, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
      }
      __pyx_t_4 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_9};
        __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(&PyDict_Type), __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_9); __pyx_t_9 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3176, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
      }
      __pyx_r = __pyx_t_2;
      __pyx_t_2 = 0;
      goto __pyx_L0;

      /* "netCDF4/_netCDF4.pyx":3171
 *         if name.startswith('__') and name.endswith('__'):
 *             # if __dict__ requested, return a dict with netCDF attributes.
 *             if name == '__dict__':             # <<<<<<<<<<<<<<
 *                 names = self.ncattrs()
 *                 values = []
*/
    }

    /* "netCDF4/_netCDF4.pyx":3178
 *                 return dict(zip(names, values))
 *             else:
 *                 raise AttributeError             # <<<<<<<<<<<<<<
 *         elif name in _private_atts:
 *             return self.__dict__[name]
*/
    /*else*/ {
      __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_AttributeError))), 0, 0, 0);
      __PYX_ERR(0, 3178, __pyx_L1_error)
    }

    /* "netCDF4/_netCDF4.pyx":3169
 *         # if name in _private_atts, it is stored at the python
 *         # level and not in the netCDF file.
 *         if name.startswith('__') and name.endswith('__'):             # <<<<<<<<<<<<<<
 *             # if __dict__ requested, return a dict with netCDF attributes.
 *             if name == '__dict__':
*/
  }

  /* "netCDF4/_netCDF4.pyx":3179
 *             else:
 *                 raise AttributeError
 *         elif name in _private_atts:             # <<<<<<<<<<<<<<
 *             return self.__dict__[name]
 *         else:
*/
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_private_atts); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3179, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_v_name, __pyx_t_2, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 3179, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__pyx_t_1) {

    /* "netCDF4/_netCDF4.pyx":3180
 *                 raise AttributeError
 *         elif name in _private_atts:
 *             return self.__dict__[name]             # <<<<<<<<<<<<<<
 *         else:
 *             return self.getncattr(name)
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_dict); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3180, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_9 = __Pyx_PyObject_GetItem(__pyx_t_2, __pyx_v_name); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3180, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_r = __pyx_t_9;
    __pyx_t_9 = 0;
    goto __pyx_L0;

    /* "netCDF4/_netCDF4.pyx":3179
 *             else:
 *                 raise AttributeError
 *         elif name in _private_atts:             # <<<<<<<<<<<<<<
 *             return self.__dict__[name]
 *         else:
*/
  }

  /* "netCDF4/_netCDF4.pyx":3182
 *             return self.__dict__[name]
 *         else:
 *             return self.getncattr(name)             # <<<<<<<<<<<<<<
 * 
 *     def renameAttribute(self, oldname, newname):
*/
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = ((PyObject *)__pyx_v_self);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_t_4 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_name};
      __pyx_t_9 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_getncattr, __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_9)) __PYX_ERR(0, 3182, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
    }
    __pyx_r = __pyx_t_9;
    __pyx_t_9 = 0;
    goto __pyx_L0;
  }

  /* "netCDF4/_netCDF4.pyx":3166
 *                 self.__dict__[name]=value
 * 
 *     def __getattr__(self,name):             # <<<<<<<<<<<<<<
 *         # if name in _private_atts, it is stored at the python
 *         # level and not in the netCDF file.
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.__getattr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_names);
  __Pyx_XDECREF(__pyx_v_values);
  __Pyx_XDECREF(__pyx_v_name);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":3184
 *             return self.getncattr(name)
 * 
 *     def renameAttribute(self, oldname, newname):             # <<<<<<<<<<<<<<
 *         """
 * **`renameAttribute(self, oldname, newname)`**
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_71renameAttribute(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7netCDF4_8_netCDF4_7Dataset_70renameAttribute, "\n**`renameAttribute(self, oldname, newname)`**\n\nrename a `Dataset` or `Group` attribute named `oldname` to `newname`.");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_7Dataset_71renameAttribute = {"renameAttribute", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_71renameAttribute, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_7Dataset_70renameAttribute};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_71renameAttribute(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_oldname = 0;
  PyObject *__pyx_v_newname = 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("renameAttribute (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_oldname,&__pyx_mstate_global->__pyx_n_u_newname,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 3184, __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(0, 3184, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 3184, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "renameAttribute", 0) < (0)) __PYX_ERR(0, 3184, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("renameAttribute", 1, 2, 2, i); __PYX_ERR(0, 3184, __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(0, 3184, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 3184, __pyx_L3_error)
    }
    __pyx_v_oldname = values[0];
    __pyx_v_newname = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("renameAttribute", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 3184, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.renameAttribute", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_7Dataset_70renameAttribute(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self), __pyx_v_oldname, __pyx_v_newname);

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_70renameAttribute(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_oldname, PyObject *__pyx_v_newname) {
  char *__pyx_v_oldnamec;
  char *__pyx_v_newnamec;
  int __pyx_v_ierr;
  PyObject *__pyx_v_bytestr = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  char *__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("renameAttribute", 0);

  /* "netCDF4/_netCDF4.pyx":3192
 *         cdef char *newnamec
 *         cdef int ierr
 *         bytestr = _strencode(oldname)             # <<<<<<<<<<<<<<
 *         oldnamec = bytestr
 *         bytestr = _strencode(newname)
*/
  __pyx_t_1 = __pyx_f_7netCDF4_8_netCDF4__strencode(__pyx_v_oldname, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3192, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_bytestr = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":3193
 *         cdef int ierr
 *         bytestr = _strencode(oldname)
 *         oldnamec = bytestr             # <<<<<<<<<<<<<<
 *         bytestr = _strencode(newname)
 *         newnamec = bytestr
*/
  __pyx_t_2 = __Pyx_PyObject_AsWritableString(__pyx_v_bytestr); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 3193, __pyx_L1_error)
  __pyx_v_oldnamec = __pyx_t_2;

  /* "netCDF4/_netCDF4.pyx":3194
 *         bytestr = _strencode(oldname)
 *         oldnamec = bytestr
 *         bytestr = _strencode(newname)             # <<<<<<<<<<<<<<
 *         newnamec = bytestr
 *         with nogil:
*/
  __pyx_t_1 = __pyx_f_7netCDF4_8_netCDF4__strencode(__pyx_v_newname, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3194, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_bytestr, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":3195
 *         oldnamec = bytestr
 *         bytestr = _strencode(newname)
 *         newnamec = bytestr             # <<<<<<<<<<<<<<
 *         with nogil:
 *             ierr = nc_rename_att(self._grpid, NC_GLOBAL, oldnamec, newnamec)
*/
  __pyx_t_2 = __Pyx_PyObject_AsWritableString(__pyx_v_bytestr); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 3195, __pyx_L1_error)
  __pyx_v_newnamec = __pyx_t_2;

  /* "netCDF4/_netCDF4.pyx":3196
 *         bytestr = _strencode(newname)
 *         newnamec = bytestr
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_rename_att(self._grpid, NC_GLOBAL, oldnamec, newnamec)
 *         _ensure_nc_success(ierr)
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "netCDF4/_netCDF4.pyx":3197
 *         newnamec = bytestr
 *         with nogil:
 *             ierr = nc_rename_att(self._grpid, NC_GLOBAL, oldnamec, newnamec)             # <<<<<<<<<<<<<<
 *         _ensure_nc_success(ierr)
 * 
*/
        __pyx_v_ierr = nc_rename_att(__pyx_v_self->_grpid, NC_GLOBAL, __pyx_v_oldnamec, __pyx_v_newnamec);
      }

      /* "netCDF4/_netCDF4.pyx":3196
 *         bytestr = _strencode(newname)
 *         newnamec = bytestr
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_rename_att(self._grpid, NC_GLOBAL, oldnamec, newnamec)
 *         _ensure_nc_success(ierr)
*/
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "netCDF4/_netCDF4.pyx":3198
 *         with nogil:
 *             ierr = nc_rename_att(self._grpid, NC_GLOBAL, oldnamec, newnamec)
 *         _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 * 
 *     def renameGroup(self, oldname, newname):
*/
  __pyx_t_3 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3198, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3198, __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_1 = __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_1)) __PYX_ERR(0, 3198, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":3184
 *             return self.getncattr(name)
 * 
 *     def renameAttribute(self, oldname, newname):             # <<<<<<<<<<<<<<
 *         """
 * **`renameAttribute(self, oldname, newname)`**
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.renameAttribute", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_bytestr);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":3200
 *         _ensure_nc_success(ierr)
 * 
 *     def renameGroup(self, oldname, newname):             # <<<<<<<<<<<<<<
 *         """
 * **`renameGroup(self, oldname, newname)`**
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_73renameGroup(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7netCDF4_8_netCDF4_7Dataset_72renameGroup, "\n**`renameGroup(self, oldname, newname)`**\n\nrename a `Group` named `oldname` to `newname` (requires netcdf >= 4.3.1).");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_7Dataset_73renameGroup = {"renameGroup", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_73renameGroup, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_7Dataset_72renameGroup};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_73renameGroup(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_oldname = 0;
  PyObject *__pyx_v_newname = 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("renameGroup (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_oldname,&__pyx_mstate_global->__pyx_n_u_newname,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 3200, __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(0, 3200, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 3200, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "renameGroup", 0) < (0)) __PYX_ERR(0, 3200, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("renameGroup", 1, 2, 2, i); __PYX_ERR(0, 3200, __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(0, 3200, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 3200, __pyx_L3_error)
    }
    __pyx_v_oldname = values[0];
    __pyx_v_newname = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("renameGroup", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 3200, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.renameGroup", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_7Dataset_72renameGroup(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self), __pyx_v_oldname, __pyx_v_newname);

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_72renameGroup(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_oldname, PyObject *__pyx_v_newname) {
  char *__pyx_v_newnamec;
  int __pyx_v_grpid;
  int __pyx_v_ierr;
  PyObject *__pyx_v_bytestr = NULL;
  PyObject *__pyx_v_grp = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  size_t __pyx_t_5;
  char *__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;
  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("renameGroup", 0);

  /* "netCDF4/_netCDF4.pyx":3208
 *         cdef int grpid
 *         cdef int ierr
 *         if not __has_rename_grp__:             # <<<<<<<<<<<<<<
 *             raise ValueError(
 *                 "renameGroup method not enabled.  To enable, install Cython, make sure you have"
*/
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_has_rename_grp); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3208, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 3208, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = (!__pyx_t_2);
  if (unlikely(__pyx_t_3)) {

    /* "netCDF4/_netCDF4.pyx":3209
 *         cdef int ierr
 *         if not __has_rename_grp__:
 *             raise ValueError(             # <<<<<<<<<<<<<<
 *                 "renameGroup method not enabled.  To enable, install Cython, make sure you have"
 *                 "version 4.3.1 or higher of the netcdf C lib, and rebuild netcdf4-python."
*/
    __pyx_t_4 = NULL;
    __pyx_t_5 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_renameGroup_method_not_enabled_T};
      __pyx_t_1 = __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_1)) __PYX_ERR(0, 3209, __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(0, 3209, __pyx_L1_error)

    /* "netCDF4/_netCDF4.pyx":3208
 *         cdef int grpid
 *         cdef int ierr
 *         if not __has_rename_grp__:             # <<<<<<<<<<<<<<
 *             raise ValueError(
 *                 "renameGroup method not enabled.  To enable, install Cython, make sure you have"
*/
  }

  /* "netCDF4/_netCDF4.pyx":3214
 *             )
 * 
 *         bytestr = _strencode(newname)             # <<<<<<<<<<<<<<
 *         newnamec = bytestr
 *         try:
*/
  __pyx_t_1 = __pyx_f_7netCDF4_8_netCDF4__strencode(__pyx_v_newname, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3214, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_bytestr = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":3215
 * 
 *         bytestr = _strencode(newname)
 *         newnamec = bytestr             # <<<<<<<<<<<<<<
 *         try:
 *             grp = self.groups[oldname]
*/
  __pyx_t_6 = __Pyx_PyObject_AsWritableString(__pyx_v_bytestr); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(0, 3215, __pyx_L1_error)
  __pyx_v_newnamec = __pyx_t_6;

  /* "netCDF4/_netCDF4.pyx":3216
 *         bytestr = _strencode(newname)
 *         newnamec = bytestr
 *         try:             # <<<<<<<<<<<<<<
 *             grp = self.groups[oldname]
 *             grpid = grp._grpid
*/
  {
    __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:*/ {

      /* "netCDF4/_netCDF4.pyx":3217
 *         newnamec = bytestr
 *         try:
 *             grp = self.groups[oldname]             # <<<<<<<<<<<<<<
 *             grpid = grp._grpid
 *         except KeyError:
*/
      __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_v_self->groups, __pyx_v_oldname); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3217, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_v_grp = __pyx_t_1;
      __pyx_t_1 = 0;

      /* "netCDF4/_netCDF4.pyx":3218
 *         try:
 *             grp = self.groups[oldname]
 *             grpid = grp._grpid             # <<<<<<<<<<<<<<
 *         except KeyError:
 *             raise KeyError('%s not a valid group name' % oldname)
*/
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_mstate_global->__pyx_n_u_grpid); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3218, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_10 = __Pyx_PyLong_As_int(__pyx_t_1); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3218, __pyx_L4_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_v_grpid = __pyx_t_10;

      /* "netCDF4/_netCDF4.pyx":3216
 *         bytestr = _strencode(newname)
 *         newnamec = bytestr
 *         try:             # <<<<<<<<<<<<<<
 *             grp = self.groups[oldname]
 *             grpid = grp._grpid
*/
    }
    __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_L9_try_end;
    __pyx_L4_error:;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "netCDF4/_netCDF4.pyx":3219
 *             grp = self.groups[oldname]
 *             grpid = grp._grpid
 *         except KeyError:             # <<<<<<<<<<<<<<
 *             raise KeyError('%s not a valid group name' % oldname)
 *         with nogil:
*/
    __pyx_t_10 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_KeyError))));
    if (__pyx_t_10) {
      __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.renameGroup", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_11) < 0) __PYX_ERR(0, 3219, __pyx_L6_except_error)
      __Pyx_XGOTREF(__pyx_t_1);
      __Pyx_XGOTREF(__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_11);

      /* "netCDF4/_netCDF4.pyx":3220
 *             grpid = grp._grpid
 *         except KeyError:
 *             raise KeyError('%s not a valid group name' % oldname)             # <<<<<<<<<<<<<<
 *         with nogil:
 *             ierr = nc_rename_grp(grpid, newnamec)
*/
      __pyx_t_13 = NULL;
      __pyx_t_14 = __Pyx_PyUnicode_FormatSafe(__pyx_mstate_global->__pyx_kp_u_s_not_a_valid_group_name, __pyx_v_oldname); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 3220, __pyx_L6_except_error)
      __Pyx_GOTREF(__pyx_t_14);
      __pyx_t_5 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_13, __pyx_t_14};
        __pyx_t_12 = __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_13); __pyx_t_13 = 0;
        __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
        if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3220, __pyx_L6_except_error)
        __Pyx_GOTREF(__pyx_t_12);
      }
      __Pyx_Raise(__pyx_t_12, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __PYX_ERR(0, 3220, __pyx_L6_except_error)
    }
    goto __pyx_L6_except_error;

    /* "netCDF4/_netCDF4.pyx":3216
 *         bytestr = _strencode(newname)
 *         newnamec = bytestr
 *         try:             # <<<<<<<<<<<<<<
 *             grp = self.groups[oldname]
 *             grpid = grp._grpid
*/
    __pyx_L6_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_try_end:;
  }

  /* "netCDF4/_netCDF4.pyx":3221
 *         except KeyError:
 *             raise KeyError('%s not a valid group name' % oldname)
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_rename_grp(grpid, newnamec)
 *         _ensure_nc_success(ierr)
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "netCDF4/_netCDF4.pyx":3222
 *             raise KeyError('%s not a valid group name' % oldname)
 *         with nogil:
 *             ierr = nc_rename_grp(grpid, newnamec)             # <<<<<<<<<<<<<<
 *         _ensure_nc_success(ierr)
 *         # remove old key from groups dict.
*/
        __pyx_v_ierr = nc_rename_grp(__pyx_v_grpid, __pyx_v_newnamec);
      }

      /* "netCDF4/_netCDF4.pyx":3221
 *         except KeyError:
 *             raise KeyError('%s not a valid group name' % oldname)
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_rename_grp(grpid, newnamec)
 *         _ensure_nc_success(ierr)
*/
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L14;
        }
        __pyx_L14:;
      }
  }

  /* "netCDF4/_netCDF4.pyx":3223
 *         with nogil:
 *             ierr = nc_rename_grp(grpid, newnamec)
 *         _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 *         # remove old key from groups dict.
 *         self.groups.pop(oldname)
*/
  __pyx_t_4 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3223, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_12 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3223, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __pyx_t_5 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1);
    assert(__pyx_t_4);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_1);
    __Pyx_INCREF(__pyx_t_4);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_1, __pyx__function);
    __pyx_t_5 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_12};
    __pyx_t_11 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_1, __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_12); __pyx_t_12 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 3223, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
  }
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "netCDF4/_netCDF4.pyx":3225
 *         _ensure_nc_success(ierr)
 *         # remove old key from groups dict.
 *         self.groups.pop(oldname)             # <<<<<<<<<<<<<<
 *         # add new key.
 *         self.groups[newname] = grp
*/
  __pyx_t_1 = __pyx_v_self->groups;
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_5 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_v_oldname};
    __pyx_t_11 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_pop, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 3225, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
  }
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "netCDF4/_netCDF4.pyx":3227
 *         self.groups.pop(oldname)
 *         # add new key.
 *         self.groups[newname] = grp             # <<<<<<<<<<<<<<
 * 
 *     def set_auto_chartostring(self, value):
*/
  if (unlikely((PyObject_SetItem(__pyx_v_self->groups, __pyx_v_newname, __pyx_v_grp) < 0))) __PYX_ERR(0, 3227, __pyx_L1_error)

  /* "netCDF4/_netCDF4.pyx":3200
 *         _ensure_nc_success(ierr)
 * 
 *     def renameGroup(self, oldname, newname):             # <<<<<<<<<<<<<<
 *         """
 * **`renameGroup(self, oldname, newname)`**
*/

  /* 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_4);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.renameGroup", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_bytestr);
  __Pyx_XDECREF(__pyx_v_grp);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":3229
 *         self.groups[newname] = grp
 * 
 *     def set_auto_chartostring(self, value):             # <<<<<<<<<<<<<<
 *         """
 * **`set_auto_chartostring(self, True_or_False)`**
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_75set_auto_chartostring(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7netCDF4_8_netCDF4_7Dataset_74set_auto_chartostring, "\n**`set_auto_chartostring(self, True_or_False)`**\n\nCall `Variable.set_auto_chartostring` for all variables contained in this `Dataset` or\n`Group`, as well as for all variables in all its subgroups.\n\n**`True_or_False`**: Boolean determining if automatic conversion of\nall character arrays <--> string arrays should be performed for\ncharacter variables (variables of type `NC_CHAR` or `S1`) with the\n`_Encoding` attribute set.\n\n***Note***: Calling this function only affects existing variables. Variables created\nafter calling this function will follow the default behaviour.\n        ");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_7Dataset_75set_auto_chartostring = {"set_auto_chartostring", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_75set_auto_chartostring, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_7Dataset_74set_auto_chartostring};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_75set_auto_chartostring(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  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[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set_auto_chartostring (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 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,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 3229, __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(0, 3229, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_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_auto_chartostring", 0) < (0)) __PYX_ERR(0, 3229, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("set_auto_chartostring", 1, 1, 1, i); __PYX_ERR(0, 3229, __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(0, 3229, __pyx_L3_error)
    }
    __pyx_v_value = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("set_auto_chartostring", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 3229, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.set_auto_chartostring", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_7Dataset_74set_auto_chartostring(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self), __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_7netCDF4_8_netCDF4_7Dataset_74set_auto_chartostring(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_value) {
  PyObject *__pyx_v__vars = NULL;
  PyObject *__pyx_v_var = NULL;
  PyObject *__pyx_v_groups = NULL;
  PyObject *__pyx_v_group = NULL;
  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;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  size_t __pyx_t_9;
  PyObject *(*__pyx_t_10)(PyObject *);
  PyObject *(*__pyx_t_11)(PyObject *);
  Py_ssize_t __pyx_t_12;
  Py_ssize_t __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_RefNannySetupContext("set_auto_chartostring", 0);

  /* "netCDF4/_netCDF4.pyx":3247
 *         # this is a hack to make inheritance work in MFDataset
 *         # (which stores variables in _vars)
 *         _vars = self.variables             # <<<<<<<<<<<<<<
 *         if _vars is None: _vars = self._vars
 *         for var in _vars.values():
*/
  __pyx_t_1 = __pyx_v_self->variables;
  __Pyx_INCREF(__pyx_t_1);
  __pyx_v__vars = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":3248
 *         # (which stores variables in _vars)
 *         _vars = self.variables
 *         if _vars is None: _vars = self._vars             # <<<<<<<<<<<<<<
 *         for var in _vars.values():
 *             var.set_auto_chartostring(value)
*/
  __pyx_t_2 = (__pyx_v__vars == Py_None);
  if (__pyx_t_2) {
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_vars); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3248, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v__vars, __pyx_t_1);
    __pyx_t_1 = 0;
  }

  /* "netCDF4/_netCDF4.pyx":3249
 *         _vars = self.variables
 *         if _vars is None: _vars = self._vars
 *         for var in _vars.values():             # <<<<<<<<<<<<<<
 *             var.set_auto_chartostring(value)
 * 
*/
  __pyx_t_3 = 0;
  if (unlikely(__pyx_v__vars == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "values");
    __PYX_ERR(0, 3249, __pyx_L1_error)
  }
  __pyx_t_6 = __Pyx_dict_iterator(__pyx_v__vars, 0, __pyx_mstate_global->__pyx_n_u_values, (&__pyx_t_4), (&__pyx_t_5)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3249, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_1);
  __pyx_t_1 = __pyx_t_6;
  __pyx_t_6 = 0;
  while (1) {
    __pyx_t_7 = __Pyx_dict_iter_next(__pyx_t_1, __pyx_t_4, &__pyx_t_3, NULL, &__pyx_t_6, NULL, __pyx_t_5);
    if (unlikely(__pyx_t_7 == 0)) break;
    if (unlikely(__pyx_t_7 == -1)) __PYX_ERR(0, 3249, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_XDECREF_SET(__pyx_v_var, __pyx_t_6);
    __pyx_t_6 = 0;

    /* "netCDF4/_netCDF4.pyx":3250
 *         if _vars is None: _vars = self._vars
 *         for var in _vars.values():
 *             var.set_auto_chartostring(value)             # <<<<<<<<<<<<<<
 * 
 *         for groups in _walk_grps(self):
*/
    __pyx_t_8 = __pyx_v_var;
    __Pyx_INCREF(__pyx_t_8);
    __pyx_t_9 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_v_value};
      __pyx_t_6 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_set_auto_chartostring, __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3250, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
    }
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":3252
 *             var.set_auto_chartostring(value)
 * 
 *         for groups in _walk_grps(self):             # <<<<<<<<<<<<<<
 *             for group in groups:
 *                 for var in group.variables.values():
*/
  __pyx_t_6 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_walk_grps); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3252, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_9 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_8))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_8);
    assert(__pyx_t_6);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_8);
    __Pyx_INCREF(__pyx_t_6);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_8, __pyx__function);
    __pyx_t_9 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_6, ((PyObject *)__pyx_v_self)};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_8, __pyx_callargs+__pyx_t_9, (2-__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;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3252, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
    __pyx_t_8 = __pyx_t_1; __Pyx_INCREF(__pyx_t_8);
    __pyx_t_4 = 0;
    __pyx_t_10 = NULL;
  } else {
    __pyx_t_4 = -1; __pyx_t_8 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3252, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_10 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_8); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3252, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  for (;;) {
    if (likely(!__pyx_t_10)) {
      if (likely(PyList_CheckExact(__pyx_t_8))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_8);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 3252, __pyx_L1_error)
          #endif
          if (__pyx_t_4 >= __pyx_temp) break;
        }
        __pyx_t_1 = __Pyx_PyList_GetItemRefFast(__pyx_t_8, __pyx_t_4, __Pyx_ReferenceSharing_OwnStrongReference);
        ++__pyx_t_4;
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_8);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 3252, __pyx_L1_error)
          #endif
          if (__pyx_t_4 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_1 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_8, __pyx_t_4));
        #else
        __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_8, __pyx_t_4);
        #endif
        ++__pyx_t_4;
      }
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3252, __pyx_L1_error)
    } else {
      __pyx_t_1 = __pyx_t_10(__pyx_t_8);
      if (unlikely(!__pyx_t_1)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 3252, __pyx_L1_error)
          PyErr_Clear();
        }
        break;
      }
    }
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_XDECREF_SET(__pyx_v_groups, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":3253
 * 
 *         for groups in _walk_grps(self):
 *             for group in groups:             # <<<<<<<<<<<<<<
 *                 for var in group.variables.values():
 *                     var.set_auto_chartostring(value)
*/
    if (likely(PyList_CheckExact(__pyx_v_groups)) || PyTuple_CheckExact(__pyx_v_groups)) {
      __pyx_t_1 = __pyx_v_groups; __Pyx_INCREF(__pyx_t_1);
      __pyx_t_3 = 0;
      __pyx_t_11 = NULL;
    } else {
      __pyx_t_3 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_groups); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3253, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_11 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 3253, __pyx_L1_error)
    }
    for (;;) {
      if (likely(!__pyx_t_11)) {
        if (likely(PyList_CheckExact(__pyx_t_1))) {
          {
            Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
            #if !CYTHON_ASSUME_SAFE_SIZE
            if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 3253, __pyx_L1_error)
            #endif
            if (__pyx_t_3 >= __pyx_temp) break;
          }
          __pyx_t_6 = __Pyx_PyList_GetItemRefFast(__pyx_t_1, __pyx_t_3, __Pyx_ReferenceSharing_OwnStrongReference);
          ++__pyx_t_3;
        } else {
          {
            Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
            #if !CYTHON_ASSUME_SAFE_SIZE
            if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 3253, __pyx_L1_error)
            #endif
            if (__pyx_t_3 >= __pyx_temp) break;
          }
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_6 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_3));
          #else
          __pyx_t_6 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_3);
          #endif
          ++__pyx_t_3;
        }
        if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3253, __pyx_L1_error)
      } else {
        __pyx_t_6 = __pyx_t_11(__pyx_t_1);
        if (unlikely(!__pyx_t_6)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 3253, __pyx_L1_error)
            PyErr_Clear();
          }
          break;
        }
      }
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_XDECREF_SET(__pyx_v_group, __pyx_t_6);
      __pyx_t_6 = 0;

      /* "netCDF4/_netCDF4.pyx":3254
 *         for groups in _walk_grps(self):
 *             for group in groups:
 *                 for var in group.variables.values():             # <<<<<<<<<<<<<<
 *                     var.set_auto_chartostring(value)
 * 
*/
      __pyx_t_12 = 0;
      __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_v_group, __pyx_mstate_global->__pyx_n_u_variables); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 3254, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_14);
      if (unlikely(__pyx_t_14 == Py_None)) {
        PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "values");
        __PYX_ERR(0, 3254, __pyx_L1_error)
      }
      __pyx_t_15 = __Pyx_dict_iterator(__pyx_t_14, 0, __pyx_mstate_global->__pyx_n_u_values, (&__pyx_t_13), (&__pyx_t_5)); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 3254, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_15);
      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
      __Pyx_XDECREF(__pyx_t_6);
      __pyx_t_6 = __pyx_t_15;
      __pyx_t_15 = 0;
      while (1) {
        __pyx_t_7 = __Pyx_dict_iter_next(__pyx_t_6, __pyx_t_13, &__pyx_t_12, NULL, &__pyx_t_15, NULL, __pyx_t_5);
        if (unlikely(__pyx_t_7 == 0)) break;
        if (unlikely(__pyx_t_7 == -1)) __PYX_ERR(0, 3254, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_15);
        __Pyx_XDECREF_SET(__pyx_v_var, __pyx_t_15);
        __pyx_t_15 = 0;

        /* "netCDF4/_netCDF4.pyx":3255
 *             for group in groups:
 *                 for var in group.variables.values():
 *                     var.set_auto_chartostring(value)             # <<<<<<<<<<<<<<
 * 
 *     def set_auto_maskandscale(self, value):
*/
        __pyx_t_14 = __pyx_v_var;
        __Pyx_INCREF(__pyx_t_14);
        __pyx_t_9 = 0;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_14, __pyx_v_value};
          __pyx_t_15 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_set_auto_chartostring, __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
          if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 3255, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_15);
        }
        __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
      }
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

      /* "netCDF4/_netCDF4.pyx":3253
 * 
 *         for groups in _walk_grps(self):
 *             for group in groups:             # <<<<<<<<<<<<<<
 *                 for var in group.variables.values():
 *                     var.set_auto_chartostring(value)
*/
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":3252
 *             var.set_auto_chartostring(value)
 * 
 *         for groups in _walk_grps(self):             # <<<<<<<<<<<<<<
 *             for group in groups:
 *                 for var in group.variables.values():
*/
  }
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "netCDF4/_netCDF4.pyx":3229
 *         self.groups[newname] = grp
 * 
 *     def set_auto_chartostring(self, value):             # <<<<<<<<<<<<<<
 *         """
 * **`set_auto_chartostring(self, True_or_False)`**
*/

  /* 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_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_XDECREF(__pyx_t_15);
  __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.set_auto_chartostring", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v__vars);
  __Pyx_XDECREF(__pyx_v_var);
  __Pyx_XDECREF(__pyx_v_groups);
  __Pyx_XDECREF(__pyx_v_group);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":3257
 *                     var.set_auto_chartostring(value)
 * 
 *     def set_auto_maskandscale(self, value):             # <<<<<<<<<<<<<<
 *         """
 * **`set_auto_maskandscale(self, True_or_False)`**
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_77set_auto_maskandscale(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7netCDF4_8_netCDF4_7Dataset_76set_auto_maskandscale, "\n**`set_auto_maskandscale(self, True_or_False)`**\n\nCall `Variable.set_auto_maskandscale` for all variables contained in this `Dataset` or\n`Group`, as well as for all variables in all its subgroups.\n\n**`True_or_False`**: Boolean determining if automatic conversion to masked arrays\nand variable scaling shall be applied for all variables.\n\n***Note***: Calling this function only affects existing variables. Variables created\nafter calling this function will follow the default behaviour.\n        ");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_7Dataset_77set_auto_maskandscale = {"set_auto_maskandscale", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_77set_auto_maskandscale, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_7Dataset_76set_auto_maskandscale};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_77set_auto_maskandscale(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  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[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set_auto_maskandscale (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 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,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 3257, __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(0, 3257, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_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_auto_maskandscale", 0) < (0)) __PYX_ERR(0, 3257, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("set_auto_maskandscale", 1, 1, 1, i); __PYX_ERR(0, 3257, __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(0, 3257, __pyx_L3_error)
    }
    __pyx_v_value = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("set_auto_maskandscale", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 3257, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.set_auto_maskandscale", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_7Dataset_76set_auto_maskandscale(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self), __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_7netCDF4_8_netCDF4_7Dataset_76set_auto_maskandscale(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_value) {
  PyObject *__pyx_v__vars = NULL;
  PyObject *__pyx_v_var = NULL;
  PyObject *__pyx_v_groups = NULL;
  PyObject *__pyx_v_group = NULL;
  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;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  size_t __pyx_t_9;
  PyObject *(*__pyx_t_10)(PyObject *);
  PyObject *(*__pyx_t_11)(PyObject *);
  Py_ssize_t __pyx_t_12;
  Py_ssize_t __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_RefNannySetupContext("set_auto_maskandscale", 0);

  /* "netCDF4/_netCDF4.pyx":3273
 *         # this is a hack to make inheritance work in MFDataset
 *         # (which stores variables in _vars)
 *         _vars = self.variables             # <<<<<<<<<<<<<<
 *         if _vars is None: _vars = self._vars
 *         for var in _vars.values():
*/
  __pyx_t_1 = __pyx_v_self->variables;
  __Pyx_INCREF(__pyx_t_1);
  __pyx_v__vars = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":3274
 *         # (which stores variables in _vars)
 *         _vars = self.variables
 *         if _vars is None: _vars = self._vars             # <<<<<<<<<<<<<<
 *         for var in _vars.values():
 *             var.set_auto_maskandscale(value)
*/
  __pyx_t_2 = (__pyx_v__vars == Py_None);
  if (__pyx_t_2) {
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_vars); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3274, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v__vars, __pyx_t_1);
    __pyx_t_1 = 0;
  }

  /* "netCDF4/_netCDF4.pyx":3275
 *         _vars = self.variables
 *         if _vars is None: _vars = self._vars
 *         for var in _vars.values():             # <<<<<<<<<<<<<<
 *             var.set_auto_maskandscale(value)
 * 
*/
  __pyx_t_3 = 0;
  if (unlikely(__pyx_v__vars == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "values");
    __PYX_ERR(0, 3275, __pyx_L1_error)
  }
  __pyx_t_6 = __Pyx_dict_iterator(__pyx_v__vars, 0, __pyx_mstate_global->__pyx_n_u_values, (&__pyx_t_4), (&__pyx_t_5)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3275, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_1);
  __pyx_t_1 = __pyx_t_6;
  __pyx_t_6 = 0;
  while (1) {
    __pyx_t_7 = __Pyx_dict_iter_next(__pyx_t_1, __pyx_t_4, &__pyx_t_3, NULL, &__pyx_t_6, NULL, __pyx_t_5);
    if (unlikely(__pyx_t_7 == 0)) break;
    if (unlikely(__pyx_t_7 == -1)) __PYX_ERR(0, 3275, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_XDECREF_SET(__pyx_v_var, __pyx_t_6);
    __pyx_t_6 = 0;

    /* "netCDF4/_netCDF4.pyx":3276
 *         if _vars is None: _vars = self._vars
 *         for var in _vars.values():
 *             var.set_auto_maskandscale(value)             # <<<<<<<<<<<<<<
 * 
 *         for groups in _walk_grps(self):
*/
    __pyx_t_8 = __pyx_v_var;
    __Pyx_INCREF(__pyx_t_8);
    __pyx_t_9 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_v_value};
      __pyx_t_6 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_set_auto_maskandscale, __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3276, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
    }
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":3278
 *             var.set_auto_maskandscale(value)
 * 
 *         for groups in _walk_grps(self):             # <<<<<<<<<<<<<<
 *             for group in groups:
 *                 for var in group.variables.values():
*/
  __pyx_t_6 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_walk_grps); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3278, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_9 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_8))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_8);
    assert(__pyx_t_6);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_8);
    __Pyx_INCREF(__pyx_t_6);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_8, __pyx__function);
    __pyx_t_9 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_6, ((PyObject *)__pyx_v_self)};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_8, __pyx_callargs+__pyx_t_9, (2-__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;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3278, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
    __pyx_t_8 = __pyx_t_1; __Pyx_INCREF(__pyx_t_8);
    __pyx_t_4 = 0;
    __pyx_t_10 = NULL;
  } else {
    __pyx_t_4 = -1; __pyx_t_8 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3278, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_10 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_8); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3278, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  for (;;) {
    if (likely(!__pyx_t_10)) {
      if (likely(PyList_CheckExact(__pyx_t_8))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_8);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 3278, __pyx_L1_error)
          #endif
          if (__pyx_t_4 >= __pyx_temp) break;
        }
        __pyx_t_1 = __Pyx_PyList_GetItemRefFast(__pyx_t_8, __pyx_t_4, __Pyx_ReferenceSharing_OwnStrongReference);
        ++__pyx_t_4;
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_8);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 3278, __pyx_L1_error)
          #endif
          if (__pyx_t_4 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_1 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_8, __pyx_t_4));
        #else
        __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_8, __pyx_t_4);
        #endif
        ++__pyx_t_4;
      }
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3278, __pyx_L1_error)
    } else {
      __pyx_t_1 = __pyx_t_10(__pyx_t_8);
      if (unlikely(!__pyx_t_1)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 3278, __pyx_L1_error)
          PyErr_Clear();
        }
        break;
      }
    }
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_XDECREF_SET(__pyx_v_groups, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":3279
 * 
 *         for groups in _walk_grps(self):
 *             for group in groups:             # <<<<<<<<<<<<<<
 *                 for var in group.variables.values():
 *                     var.set_auto_maskandscale(value)
*/
    if (likely(PyList_CheckExact(__pyx_v_groups)) || PyTuple_CheckExact(__pyx_v_groups)) {
      __pyx_t_1 = __pyx_v_groups; __Pyx_INCREF(__pyx_t_1);
      __pyx_t_3 = 0;
      __pyx_t_11 = NULL;
    } else {
      __pyx_t_3 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_groups); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3279, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_11 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 3279, __pyx_L1_error)
    }
    for (;;) {
      if (likely(!__pyx_t_11)) {
        if (likely(PyList_CheckExact(__pyx_t_1))) {
          {
            Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
            #if !CYTHON_ASSUME_SAFE_SIZE
            if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 3279, __pyx_L1_error)
            #endif
            if (__pyx_t_3 >= __pyx_temp) break;
          }
          __pyx_t_6 = __Pyx_PyList_GetItemRefFast(__pyx_t_1, __pyx_t_3, __Pyx_ReferenceSharing_OwnStrongReference);
          ++__pyx_t_3;
        } else {
          {
            Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
            #if !CYTHON_ASSUME_SAFE_SIZE
            if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 3279, __pyx_L1_error)
            #endif
            if (__pyx_t_3 >= __pyx_temp) break;
          }
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_6 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_3));
          #else
          __pyx_t_6 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_3);
          #endif
          ++__pyx_t_3;
        }
        if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3279, __pyx_L1_error)
      } else {
        __pyx_t_6 = __pyx_t_11(__pyx_t_1);
        if (unlikely(!__pyx_t_6)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 3279, __pyx_L1_error)
            PyErr_Clear();
          }
          break;
        }
      }
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_XDECREF_SET(__pyx_v_group, __pyx_t_6);
      __pyx_t_6 = 0;

      /* "netCDF4/_netCDF4.pyx":3280
 *         for groups in _walk_grps(self):
 *             for group in groups:
 *                 for var in group.variables.values():             # <<<<<<<<<<<<<<
 *                     var.set_auto_maskandscale(value)
 * 
*/
      __pyx_t_12 = 0;
      __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_v_group, __pyx_mstate_global->__pyx_n_u_variables); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 3280, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_14);
      if (unlikely(__pyx_t_14 == Py_None)) {
        PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "values");
        __PYX_ERR(0, 3280, __pyx_L1_error)
      }
      __pyx_t_15 = __Pyx_dict_iterator(__pyx_t_14, 0, __pyx_mstate_global->__pyx_n_u_values, (&__pyx_t_13), (&__pyx_t_5)); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 3280, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_15);
      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
      __Pyx_XDECREF(__pyx_t_6);
      __pyx_t_6 = __pyx_t_15;
      __pyx_t_15 = 0;
      while (1) {
        __pyx_t_7 = __Pyx_dict_iter_next(__pyx_t_6, __pyx_t_13, &__pyx_t_12, NULL, &__pyx_t_15, NULL, __pyx_t_5);
        if (unlikely(__pyx_t_7 == 0)) break;
        if (unlikely(__pyx_t_7 == -1)) __PYX_ERR(0, 3280, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_15);
        __Pyx_XDECREF_SET(__pyx_v_var, __pyx_t_15);
        __pyx_t_15 = 0;

        /* "netCDF4/_netCDF4.pyx":3281
 *             for group in groups:
 *                 for var in group.variables.values():
 *                     var.set_auto_maskandscale(value)             # <<<<<<<<<<<<<<
 * 
 * 
*/
        __pyx_t_14 = __pyx_v_var;
        __Pyx_INCREF(__pyx_t_14);
        __pyx_t_9 = 0;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_14, __pyx_v_value};
          __pyx_t_15 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_set_auto_maskandscale, __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
          if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 3281, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_15);
        }
        __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
      }
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

      /* "netCDF4/_netCDF4.pyx":3279
 * 
 *         for groups in _walk_grps(self):
 *             for group in groups:             # <<<<<<<<<<<<<<
 *                 for var in group.variables.values():
 *                     var.set_auto_maskandscale(value)
*/
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":3278
 *             var.set_auto_maskandscale(value)
 * 
 *         for groups in _walk_grps(self):             # <<<<<<<<<<<<<<
 *             for group in groups:
 *                 for var in group.variables.values():
*/
  }
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "netCDF4/_netCDF4.pyx":3257
 *                     var.set_auto_chartostring(value)
 * 
 *     def set_auto_maskandscale(self, value):             # <<<<<<<<<<<<<<
 *         """
 * **`set_auto_maskandscale(self, True_or_False)`**
*/

  /* 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_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_XDECREF(__pyx_t_15);
  __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.set_auto_maskandscale", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v__vars);
  __Pyx_XDECREF(__pyx_v_var);
  __Pyx_XDECREF(__pyx_v_groups);
  __Pyx_XDECREF(__pyx_v_group);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":3284
 * 
 * 
 *     def set_auto_mask(self, value):             # <<<<<<<<<<<<<<
 *         """
 * **`set_auto_mask(self, True_or_False)`**
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_79set_auto_mask(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7netCDF4_8_netCDF4_7Dataset_78set_auto_mask, "\n**`set_auto_mask(self, True_or_False)`**\n\nCall `Variable.set_auto_mask` for all variables contained in this `Dataset` or\n`Group`, as well as for all variables in all its subgroups. Only affects\nVariables with primitive or enum types (not compound or vlen Variables).\n\n**`True_or_False`**: Boolean determining if automatic conversion to masked arrays\nshall be applied for all variables.\n\n***Note***: Calling this function only affects existing variables. Variables created\nafter calling this function will follow the default behaviour.\n        ");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_7Dataset_79set_auto_mask = {"set_auto_mask", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_79set_auto_mask, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_7Dataset_78set_auto_mask};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_79set_auto_mask(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  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[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set_auto_mask (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 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,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 3284, __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(0, 3284, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_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_auto_mask", 0) < (0)) __PYX_ERR(0, 3284, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("set_auto_mask", 1, 1, 1, i); __PYX_ERR(0, 3284, __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(0, 3284, __pyx_L3_error)
    }
    __pyx_v_value = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("set_auto_mask", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 3284, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.set_auto_mask", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_7Dataset_78set_auto_mask(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self), __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_7netCDF4_8_netCDF4_7Dataset_78set_auto_mask(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_value) {
  PyObject *__pyx_v__vars = NULL;
  PyObject *__pyx_v_var = NULL;
  PyObject *__pyx_v_groups = NULL;
  PyObject *__pyx_v_group = NULL;
  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;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  size_t __pyx_t_9;
  PyObject *(*__pyx_t_10)(PyObject *);
  PyObject *(*__pyx_t_11)(PyObject *);
  Py_ssize_t __pyx_t_12;
  Py_ssize_t __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_RefNannySetupContext("set_auto_mask", 0);

  /* "netCDF4/_netCDF4.pyx":3301
 *         # this is a hack to make inheritance work in MFDataset
 *         # (which stores variables in _vars)
 *         _vars = self.variables             # <<<<<<<<<<<<<<
 *         if _vars is None: _vars = self._vars
 *         for var in _vars.values():
*/
  __pyx_t_1 = __pyx_v_self->variables;
  __Pyx_INCREF(__pyx_t_1);
  __pyx_v__vars = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":3302
 *         # (which stores variables in _vars)
 *         _vars = self.variables
 *         if _vars is None: _vars = self._vars             # <<<<<<<<<<<<<<
 *         for var in _vars.values():
 *             var.set_auto_mask(value)
*/
  __pyx_t_2 = (__pyx_v__vars == Py_None);
  if (__pyx_t_2) {
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_vars); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3302, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v__vars, __pyx_t_1);
    __pyx_t_1 = 0;
  }

  /* "netCDF4/_netCDF4.pyx":3303
 *         _vars = self.variables
 *         if _vars is None: _vars = self._vars
 *         for var in _vars.values():             # <<<<<<<<<<<<<<
 *             var.set_auto_mask(value)
 * 
*/
  __pyx_t_3 = 0;
  if (unlikely(__pyx_v__vars == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "values");
    __PYX_ERR(0, 3303, __pyx_L1_error)
  }
  __pyx_t_6 = __Pyx_dict_iterator(__pyx_v__vars, 0, __pyx_mstate_global->__pyx_n_u_values, (&__pyx_t_4), (&__pyx_t_5)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3303, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_1);
  __pyx_t_1 = __pyx_t_6;
  __pyx_t_6 = 0;
  while (1) {
    __pyx_t_7 = __Pyx_dict_iter_next(__pyx_t_1, __pyx_t_4, &__pyx_t_3, NULL, &__pyx_t_6, NULL, __pyx_t_5);
    if (unlikely(__pyx_t_7 == 0)) break;
    if (unlikely(__pyx_t_7 == -1)) __PYX_ERR(0, 3303, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_XDECREF_SET(__pyx_v_var, __pyx_t_6);
    __pyx_t_6 = 0;

    /* "netCDF4/_netCDF4.pyx":3304
 *         if _vars is None: _vars = self._vars
 *         for var in _vars.values():
 *             var.set_auto_mask(value)             # <<<<<<<<<<<<<<
 * 
 *         for groups in _walk_grps(self):
*/
    __pyx_t_8 = __pyx_v_var;
    __Pyx_INCREF(__pyx_t_8);
    __pyx_t_9 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_v_value};
      __pyx_t_6 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_set_auto_mask, __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3304, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
    }
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":3306
 *             var.set_auto_mask(value)
 * 
 *         for groups in _walk_grps(self):             # <<<<<<<<<<<<<<
 *             for group in groups:
 *                 for var in group.variables.values():
*/
  __pyx_t_6 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_walk_grps); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3306, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_9 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_8))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_8);
    assert(__pyx_t_6);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_8);
    __Pyx_INCREF(__pyx_t_6);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_8, __pyx__function);
    __pyx_t_9 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_6, ((PyObject *)__pyx_v_self)};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_8, __pyx_callargs+__pyx_t_9, (2-__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;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3306, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
    __pyx_t_8 = __pyx_t_1; __Pyx_INCREF(__pyx_t_8);
    __pyx_t_4 = 0;
    __pyx_t_10 = NULL;
  } else {
    __pyx_t_4 = -1; __pyx_t_8 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3306, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_10 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_8); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3306, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  for (;;) {
    if (likely(!__pyx_t_10)) {
      if (likely(PyList_CheckExact(__pyx_t_8))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_8);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 3306, __pyx_L1_error)
          #endif
          if (__pyx_t_4 >= __pyx_temp) break;
        }
        __pyx_t_1 = __Pyx_PyList_GetItemRefFast(__pyx_t_8, __pyx_t_4, __Pyx_ReferenceSharing_OwnStrongReference);
        ++__pyx_t_4;
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_8);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 3306, __pyx_L1_error)
          #endif
          if (__pyx_t_4 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_1 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_8, __pyx_t_4));
        #else
        __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_8, __pyx_t_4);
        #endif
        ++__pyx_t_4;
      }
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3306, __pyx_L1_error)
    } else {
      __pyx_t_1 = __pyx_t_10(__pyx_t_8);
      if (unlikely(!__pyx_t_1)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 3306, __pyx_L1_error)
          PyErr_Clear();
        }
        break;
      }
    }
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_XDECREF_SET(__pyx_v_groups, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":3307
 * 
 *         for groups in _walk_grps(self):
 *             for group in groups:             # <<<<<<<<<<<<<<
 *                 for var in group.variables.values():
 *                     var.set_auto_mask(value)
*/
    if (likely(PyList_CheckExact(__pyx_v_groups)) || PyTuple_CheckExact(__pyx_v_groups)) {
      __pyx_t_1 = __pyx_v_groups; __Pyx_INCREF(__pyx_t_1);
      __pyx_t_3 = 0;
      __pyx_t_11 = NULL;
    } else {
      __pyx_t_3 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_groups); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3307, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_11 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 3307, __pyx_L1_error)
    }
    for (;;) {
      if (likely(!__pyx_t_11)) {
        if (likely(PyList_CheckExact(__pyx_t_1))) {
          {
            Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
            #if !CYTHON_ASSUME_SAFE_SIZE
            if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 3307, __pyx_L1_error)
            #endif
            if (__pyx_t_3 >= __pyx_temp) break;
          }
          __pyx_t_6 = __Pyx_PyList_GetItemRefFast(__pyx_t_1, __pyx_t_3, __Pyx_ReferenceSharing_OwnStrongReference);
          ++__pyx_t_3;
        } else {
          {
            Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
            #if !CYTHON_ASSUME_SAFE_SIZE
            if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 3307, __pyx_L1_error)
            #endif
            if (__pyx_t_3 >= __pyx_temp) break;
          }
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_6 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_3));
          #else
          __pyx_t_6 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_3);
          #endif
          ++__pyx_t_3;
        }
        if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3307, __pyx_L1_error)
      } else {
        __pyx_t_6 = __pyx_t_11(__pyx_t_1);
        if (unlikely(!__pyx_t_6)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 3307, __pyx_L1_error)
            PyErr_Clear();
          }
          break;
        }
      }
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_XDECREF_SET(__pyx_v_group, __pyx_t_6);
      __pyx_t_6 = 0;

      /* "netCDF4/_netCDF4.pyx":3308
 *         for groups in _walk_grps(self):
 *             for group in groups:
 *                 for var in group.variables.values():             # <<<<<<<<<<<<<<
 *                     var.set_auto_mask(value)
 * 
*/
      __pyx_t_12 = 0;
      __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_v_group, __pyx_mstate_global->__pyx_n_u_variables); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 3308, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_14);
      if (unlikely(__pyx_t_14 == Py_None)) {
        PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "values");
        __PYX_ERR(0, 3308, __pyx_L1_error)
      }
      __pyx_t_15 = __Pyx_dict_iterator(__pyx_t_14, 0, __pyx_mstate_global->__pyx_n_u_values, (&__pyx_t_13), (&__pyx_t_5)); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 3308, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_15);
      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
      __Pyx_XDECREF(__pyx_t_6);
      __pyx_t_6 = __pyx_t_15;
      __pyx_t_15 = 0;
      while (1) {
        __pyx_t_7 = __Pyx_dict_iter_next(__pyx_t_6, __pyx_t_13, &__pyx_t_12, NULL, &__pyx_t_15, NULL, __pyx_t_5);
        if (unlikely(__pyx_t_7 == 0)) break;
        if (unlikely(__pyx_t_7 == -1)) __PYX_ERR(0, 3308, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_15);
        __Pyx_XDECREF_SET(__pyx_v_var, __pyx_t_15);
        __pyx_t_15 = 0;

        /* "netCDF4/_netCDF4.pyx":3309
 *             for group in groups:
 *                 for var in group.variables.values():
 *                     var.set_auto_mask(value)             # <<<<<<<<<<<<<<
 * 
 *     def set_auto_scale(self, value):
*/
        __pyx_t_14 = __pyx_v_var;
        __Pyx_INCREF(__pyx_t_14);
        __pyx_t_9 = 0;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_14, __pyx_v_value};
          __pyx_t_15 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_set_auto_mask, __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
          if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 3309, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_15);
        }
        __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
      }
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

      /* "netCDF4/_netCDF4.pyx":3307
 * 
 *         for groups in _walk_grps(self):
 *             for group in groups:             # <<<<<<<<<<<<<<
 *                 for var in group.variables.values():
 *                     var.set_auto_mask(value)
*/
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":3306
 *             var.set_auto_mask(value)
 * 
 *         for groups in _walk_grps(self):             # <<<<<<<<<<<<<<
 *             for group in groups:
 *                 for var in group.variables.values():
*/
  }
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "netCDF4/_netCDF4.pyx":3284
 * 
 * 
 *     def set_auto_mask(self, value):             # <<<<<<<<<<<<<<
 *         """
 * **`set_auto_mask(self, True_or_False)`**
*/

  /* 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_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_XDECREF(__pyx_t_15);
  __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.set_auto_mask", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v__vars);
  __Pyx_XDECREF(__pyx_v_var);
  __Pyx_XDECREF(__pyx_v_groups);
  __Pyx_XDECREF(__pyx_v_group);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":3311
 *                     var.set_auto_mask(value)
 * 
 *     def set_auto_scale(self, value):             # <<<<<<<<<<<<<<
 *         """
 * **`set_auto_scale(self, True_or_False)`**
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_81set_auto_scale(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7netCDF4_8_netCDF4_7Dataset_80set_auto_scale, "\n**`set_auto_scale(self, True_or_False)`**\n\nCall `Variable.set_auto_scale` for all variables contained in this `Dataset` or\n`Group`, as well as for all variables in all its subgroups.\n\n**`True_or_False`**: Boolean determining if automatic variable scaling\nshall be applied for all variables.\n\n***Note***: Calling this function only affects existing variables. Variables created\nafter calling this function will follow the default behaviour.\n        ");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_7Dataset_81set_auto_scale = {"set_auto_scale", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_81set_auto_scale, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_7Dataset_80set_auto_scale};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_81set_auto_scale(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  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[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set_auto_scale (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 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,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 3311, __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(0, 3311, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_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_auto_scale", 0) < (0)) __PYX_ERR(0, 3311, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("set_auto_scale", 1, 1, 1, i); __PYX_ERR(0, 3311, __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(0, 3311, __pyx_L3_error)
    }
    __pyx_v_value = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("set_auto_scale", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 3311, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.set_auto_scale", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_7Dataset_80set_auto_scale(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self), __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_7netCDF4_8_netCDF4_7Dataset_80set_auto_scale(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_value) {
  PyObject *__pyx_v__vars = NULL;
  PyObject *__pyx_v_var = NULL;
  PyObject *__pyx_v_groups = NULL;
  PyObject *__pyx_v_group = NULL;
  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;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  size_t __pyx_t_9;
  PyObject *(*__pyx_t_10)(PyObject *);
  PyObject *(*__pyx_t_11)(PyObject *);
  Py_ssize_t __pyx_t_12;
  Py_ssize_t __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_RefNannySetupContext("set_auto_scale", 0);

  /* "netCDF4/_netCDF4.pyx":3327
 *         # this is a hack to make inheritance work in MFDataset
 *         # (which stores variables in _vars)
 *         _vars = self.variables             # <<<<<<<<<<<<<<
 *         if _vars is None: _vars = self._vars
 *         for var in _vars.values():
*/
  __pyx_t_1 = __pyx_v_self->variables;
  __Pyx_INCREF(__pyx_t_1);
  __pyx_v__vars = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":3328
 *         # (which stores variables in _vars)
 *         _vars = self.variables
 *         if _vars is None: _vars = self._vars             # <<<<<<<<<<<<<<
 *         for var in _vars.values():
 *             var.set_auto_scale(value)
*/
  __pyx_t_2 = (__pyx_v__vars == Py_None);
  if (__pyx_t_2) {
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_vars); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3328, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v__vars, __pyx_t_1);
    __pyx_t_1 = 0;
  }

  /* "netCDF4/_netCDF4.pyx":3329
 *         _vars = self.variables
 *         if _vars is None: _vars = self._vars
 *         for var in _vars.values():             # <<<<<<<<<<<<<<
 *             var.set_auto_scale(value)
 * 
*/
  __pyx_t_3 = 0;
  if (unlikely(__pyx_v__vars == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "values");
    __PYX_ERR(0, 3329, __pyx_L1_error)
  }
  __pyx_t_6 = __Pyx_dict_iterator(__pyx_v__vars, 0, __pyx_mstate_global->__pyx_n_u_values, (&__pyx_t_4), (&__pyx_t_5)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3329, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_1);
  __pyx_t_1 = __pyx_t_6;
  __pyx_t_6 = 0;
  while (1) {
    __pyx_t_7 = __Pyx_dict_iter_next(__pyx_t_1, __pyx_t_4, &__pyx_t_3, NULL, &__pyx_t_6, NULL, __pyx_t_5);
    if (unlikely(__pyx_t_7 == 0)) break;
    if (unlikely(__pyx_t_7 == -1)) __PYX_ERR(0, 3329, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_XDECREF_SET(__pyx_v_var, __pyx_t_6);
    __pyx_t_6 = 0;

    /* "netCDF4/_netCDF4.pyx":3330
 *         if _vars is None: _vars = self._vars
 *         for var in _vars.values():
 *             var.set_auto_scale(value)             # <<<<<<<<<<<<<<
 * 
 *         for groups in _walk_grps(self):
*/
    __pyx_t_8 = __pyx_v_var;
    __Pyx_INCREF(__pyx_t_8);
    __pyx_t_9 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_v_value};
      __pyx_t_6 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_set_auto_scale, __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3330, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
    }
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":3332
 *             var.set_auto_scale(value)
 * 
 *         for groups in _walk_grps(self):             # <<<<<<<<<<<<<<
 *             for group in groups:
 *                 for var in group.variables.values():
*/
  __pyx_t_6 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_walk_grps); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3332, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_9 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_8))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_8);
    assert(__pyx_t_6);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_8);
    __Pyx_INCREF(__pyx_t_6);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_8, __pyx__function);
    __pyx_t_9 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_6, ((PyObject *)__pyx_v_self)};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_8, __pyx_callargs+__pyx_t_9, (2-__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;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3332, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
    __pyx_t_8 = __pyx_t_1; __Pyx_INCREF(__pyx_t_8);
    __pyx_t_4 = 0;
    __pyx_t_10 = NULL;
  } else {
    __pyx_t_4 = -1; __pyx_t_8 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3332, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_10 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_8); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3332, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  for (;;) {
    if (likely(!__pyx_t_10)) {
      if (likely(PyList_CheckExact(__pyx_t_8))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_8);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 3332, __pyx_L1_error)
          #endif
          if (__pyx_t_4 >= __pyx_temp) break;
        }
        __pyx_t_1 = __Pyx_PyList_GetItemRefFast(__pyx_t_8, __pyx_t_4, __Pyx_ReferenceSharing_OwnStrongReference);
        ++__pyx_t_4;
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_8);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 3332, __pyx_L1_error)
          #endif
          if (__pyx_t_4 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_1 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_8, __pyx_t_4));
        #else
        __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_8, __pyx_t_4);
        #endif
        ++__pyx_t_4;
      }
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3332, __pyx_L1_error)
    } else {
      __pyx_t_1 = __pyx_t_10(__pyx_t_8);
      if (unlikely(!__pyx_t_1)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 3332, __pyx_L1_error)
          PyErr_Clear();
        }
        break;
      }
    }
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_XDECREF_SET(__pyx_v_groups, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":3333
 * 
 *         for groups in _walk_grps(self):
 *             for group in groups:             # <<<<<<<<<<<<<<
 *                 for var in group.variables.values():
 *                     var.set_auto_scale(value)
*/
    if (likely(PyList_CheckExact(__pyx_v_groups)) || PyTuple_CheckExact(__pyx_v_groups)) {
      __pyx_t_1 = __pyx_v_groups; __Pyx_INCREF(__pyx_t_1);
      __pyx_t_3 = 0;
      __pyx_t_11 = NULL;
    } else {
      __pyx_t_3 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_groups); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3333, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_11 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 3333, __pyx_L1_error)
    }
    for (;;) {
      if (likely(!__pyx_t_11)) {
        if (likely(PyList_CheckExact(__pyx_t_1))) {
          {
            Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
            #if !CYTHON_ASSUME_SAFE_SIZE
            if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 3333, __pyx_L1_error)
            #endif
            if (__pyx_t_3 >= __pyx_temp) break;
          }
          __pyx_t_6 = __Pyx_PyList_GetItemRefFast(__pyx_t_1, __pyx_t_3, __Pyx_ReferenceSharing_OwnStrongReference);
          ++__pyx_t_3;
        } else {
          {
            Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
            #if !CYTHON_ASSUME_SAFE_SIZE
            if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 3333, __pyx_L1_error)
            #endif
            if (__pyx_t_3 >= __pyx_temp) break;
          }
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_6 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_3));
          #else
          __pyx_t_6 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_3);
          #endif
          ++__pyx_t_3;
        }
        if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3333, __pyx_L1_error)
      } else {
        __pyx_t_6 = __pyx_t_11(__pyx_t_1);
        if (unlikely(!__pyx_t_6)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 3333, __pyx_L1_error)
            PyErr_Clear();
          }
          break;
        }
      }
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_XDECREF_SET(__pyx_v_group, __pyx_t_6);
      __pyx_t_6 = 0;

      /* "netCDF4/_netCDF4.pyx":3334
 *         for groups in _walk_grps(self):
 *             for group in groups:
 *                 for var in group.variables.values():             # <<<<<<<<<<<<<<
 *                     var.set_auto_scale(value)
 * 
*/
      __pyx_t_12 = 0;
      __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_v_group, __pyx_mstate_global->__pyx_n_u_variables); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 3334, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_14);
      if (unlikely(__pyx_t_14 == Py_None)) {
        PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "values");
        __PYX_ERR(0, 3334, __pyx_L1_error)
      }
      __pyx_t_15 = __Pyx_dict_iterator(__pyx_t_14, 0, __pyx_mstate_global->__pyx_n_u_values, (&__pyx_t_13), (&__pyx_t_5)); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 3334, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_15);
      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
      __Pyx_XDECREF(__pyx_t_6);
      __pyx_t_6 = __pyx_t_15;
      __pyx_t_15 = 0;
      while (1) {
        __pyx_t_7 = __Pyx_dict_iter_next(__pyx_t_6, __pyx_t_13, &__pyx_t_12, NULL, &__pyx_t_15, NULL, __pyx_t_5);
        if (unlikely(__pyx_t_7 == 0)) break;
        if (unlikely(__pyx_t_7 == -1)) __PYX_ERR(0, 3334, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_15);
        __Pyx_XDECREF_SET(__pyx_v_var, __pyx_t_15);
        __pyx_t_15 = 0;

        /* "netCDF4/_netCDF4.pyx":3335
 *             for group in groups:
 *                 for var in group.variables.values():
 *                     var.set_auto_scale(value)             # <<<<<<<<<<<<<<
 * 
 *     def set_always_mask(self, value):
*/
        __pyx_t_14 = __pyx_v_var;
        __Pyx_INCREF(__pyx_t_14);
        __pyx_t_9 = 0;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_14, __pyx_v_value};
          __pyx_t_15 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_set_auto_scale, __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
          if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 3335, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_15);
        }
        __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
      }
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

      /* "netCDF4/_netCDF4.pyx":3333
 * 
 *         for groups in _walk_grps(self):
 *             for group in groups:             # <<<<<<<<<<<<<<
 *                 for var in group.variables.values():
 *                     var.set_auto_scale(value)
*/
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":3332
 *             var.set_auto_scale(value)
 * 
 *         for groups in _walk_grps(self):             # <<<<<<<<<<<<<<
 *             for group in groups:
 *                 for var in group.variables.values():
*/
  }
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "netCDF4/_netCDF4.pyx":3311
 *                     var.set_auto_mask(value)
 * 
 *     def set_auto_scale(self, value):             # <<<<<<<<<<<<<<
 *         """
 * **`set_auto_scale(self, True_or_False)`**
*/

  /* 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_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_XDECREF(__pyx_t_15);
  __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.set_auto_scale", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v__vars);
  __Pyx_XDECREF(__pyx_v_var);
  __Pyx_XDECREF(__pyx_v_groups);
  __Pyx_XDECREF(__pyx_v_group);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":3337
 *                     var.set_auto_scale(value)
 * 
 *     def set_always_mask(self, value):             # <<<<<<<<<<<<<<
 *         """
 * **`set_always_mask(self, True_or_False)`**
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_83set_always_mask(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7netCDF4_8_netCDF4_7Dataset_82set_always_mask, "\n**`set_always_mask(self, True_or_False)`**\n\nCall `Variable.set_always_mask` for all variables contained in\nthis `Dataset` or `Group`, as well as for all\nvariables in all its subgroups.\n\n**`True_or_False`**: Boolean determining if automatic conversion of\nmasked arrays with no missing values to regular numpy arrays shall be\napplied for all variables. Default True. Set to False to restore the default behaviour\nin versions prior to 1.4.1 (numpy array returned unless missing values are present,\notherwise masked array returned).\n\n***Note***: Calling this function only affects existing\nvariables. Variables created after calling this function will follow\nthe default behaviour.\n        ");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_7Dataset_83set_always_mask = {"set_always_mask", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_83set_always_mask, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_7Dataset_82set_always_mask};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_83set_always_mask(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  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[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set_always_mask (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 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,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 3337, __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(0, 3337, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_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_always_mask", 0) < (0)) __PYX_ERR(0, 3337, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("set_always_mask", 1, 1, 1, i); __PYX_ERR(0, 3337, __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(0, 3337, __pyx_L3_error)
    }
    __pyx_v_value = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("set_always_mask", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 3337, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.set_always_mask", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_7Dataset_82set_always_mask(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self), __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_7netCDF4_8_netCDF4_7Dataset_82set_always_mask(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_value) {
  PyObject *__pyx_v__vars = NULL;
  PyObject *__pyx_v_var = NULL;
  PyObject *__pyx_v_groups = NULL;
  PyObject *__pyx_v_group = NULL;
  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;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  size_t __pyx_t_9;
  PyObject *(*__pyx_t_10)(PyObject *);
  PyObject *(*__pyx_t_11)(PyObject *);
  Py_ssize_t __pyx_t_12;
  Py_ssize_t __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_RefNannySetupContext("set_always_mask", 0);

  /* "netCDF4/_netCDF4.pyx":3358
 *         # this is a hack to make inheritance work in MFDataset
 *         # (which stores variables in _vars)
 *         _vars = self.variables             # <<<<<<<<<<<<<<
 *         if _vars is None: _vars = self._vars
 *         for var in _vars.values():
*/
  __pyx_t_1 = __pyx_v_self->variables;
  __Pyx_INCREF(__pyx_t_1);
  __pyx_v__vars = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":3359
 *         # (which stores variables in _vars)
 *         _vars = self.variables
 *         if _vars is None: _vars = self._vars             # <<<<<<<<<<<<<<
 *         for var in _vars.values():
 *             var.set_always_mask(value)
*/
  __pyx_t_2 = (__pyx_v__vars == Py_None);
  if (__pyx_t_2) {
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_vars); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3359, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v__vars, __pyx_t_1);
    __pyx_t_1 = 0;
  }

  /* "netCDF4/_netCDF4.pyx":3360
 *         _vars = self.variables
 *         if _vars is None: _vars = self._vars
 *         for var in _vars.values():             # <<<<<<<<<<<<<<
 *             var.set_always_mask(value)
 * 
*/
  __pyx_t_3 = 0;
  if (unlikely(__pyx_v__vars == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "values");
    __PYX_ERR(0, 3360, __pyx_L1_error)
  }
  __pyx_t_6 = __Pyx_dict_iterator(__pyx_v__vars, 0, __pyx_mstate_global->__pyx_n_u_values, (&__pyx_t_4), (&__pyx_t_5)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3360, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_1);
  __pyx_t_1 = __pyx_t_6;
  __pyx_t_6 = 0;
  while (1) {
    __pyx_t_7 = __Pyx_dict_iter_next(__pyx_t_1, __pyx_t_4, &__pyx_t_3, NULL, &__pyx_t_6, NULL, __pyx_t_5);
    if (unlikely(__pyx_t_7 == 0)) break;
    if (unlikely(__pyx_t_7 == -1)) __PYX_ERR(0, 3360, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_XDECREF_SET(__pyx_v_var, __pyx_t_6);
    __pyx_t_6 = 0;

    /* "netCDF4/_netCDF4.pyx":3361
 *         if _vars is None: _vars = self._vars
 *         for var in _vars.values():
 *             var.set_always_mask(value)             # <<<<<<<<<<<<<<
 * 
 *         for groups in _walk_grps(self):
*/
    __pyx_t_8 = __pyx_v_var;
    __Pyx_INCREF(__pyx_t_8);
    __pyx_t_9 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_v_value};
      __pyx_t_6 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_set_always_mask, __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3361, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
    }
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":3363
 *             var.set_always_mask(value)
 * 
 *         for groups in _walk_grps(self):             # <<<<<<<<<<<<<<
 *             for group in groups:
 *                 for var in group.variables.values():
*/
  __pyx_t_6 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_walk_grps); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3363, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_9 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_8))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_8);
    assert(__pyx_t_6);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_8);
    __Pyx_INCREF(__pyx_t_6);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_8, __pyx__function);
    __pyx_t_9 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_6, ((PyObject *)__pyx_v_self)};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_8, __pyx_callargs+__pyx_t_9, (2-__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;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3363, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
    __pyx_t_8 = __pyx_t_1; __Pyx_INCREF(__pyx_t_8);
    __pyx_t_4 = 0;
    __pyx_t_10 = NULL;
  } else {
    __pyx_t_4 = -1; __pyx_t_8 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3363, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_10 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_8); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3363, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  for (;;) {
    if (likely(!__pyx_t_10)) {
      if (likely(PyList_CheckExact(__pyx_t_8))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_8);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 3363, __pyx_L1_error)
          #endif
          if (__pyx_t_4 >= __pyx_temp) break;
        }
        __pyx_t_1 = __Pyx_PyList_GetItemRefFast(__pyx_t_8, __pyx_t_4, __Pyx_ReferenceSharing_OwnStrongReference);
        ++__pyx_t_4;
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_8);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 3363, __pyx_L1_error)
          #endif
          if (__pyx_t_4 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_1 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_8, __pyx_t_4));
        #else
        __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_8, __pyx_t_4);
        #endif
        ++__pyx_t_4;
      }
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3363, __pyx_L1_error)
    } else {
      __pyx_t_1 = __pyx_t_10(__pyx_t_8);
      if (unlikely(!__pyx_t_1)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 3363, __pyx_L1_error)
          PyErr_Clear();
        }
        break;
      }
    }
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_XDECREF_SET(__pyx_v_groups, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":3364
 * 
 *         for groups in _walk_grps(self):
 *             for group in groups:             # <<<<<<<<<<<<<<
 *                 for var in group.variables.values():
 *                     var.set_always_mask(value)
*/
    if (likely(PyList_CheckExact(__pyx_v_groups)) || PyTuple_CheckExact(__pyx_v_groups)) {
      __pyx_t_1 = __pyx_v_groups; __Pyx_INCREF(__pyx_t_1);
      __pyx_t_3 = 0;
      __pyx_t_11 = NULL;
    } else {
      __pyx_t_3 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_groups); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3364, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_11 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 3364, __pyx_L1_error)
    }
    for (;;) {
      if (likely(!__pyx_t_11)) {
        if (likely(PyList_CheckExact(__pyx_t_1))) {
          {
            Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
            #if !CYTHON_ASSUME_SAFE_SIZE
            if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 3364, __pyx_L1_error)
            #endif
            if (__pyx_t_3 >= __pyx_temp) break;
          }
          __pyx_t_6 = __Pyx_PyList_GetItemRefFast(__pyx_t_1, __pyx_t_3, __Pyx_ReferenceSharing_OwnStrongReference);
          ++__pyx_t_3;
        } else {
          {
            Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
            #if !CYTHON_ASSUME_SAFE_SIZE
            if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 3364, __pyx_L1_error)
            #endif
            if (__pyx_t_3 >= __pyx_temp) break;
          }
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_6 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_3));
          #else
          __pyx_t_6 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_3);
          #endif
          ++__pyx_t_3;
        }
        if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3364, __pyx_L1_error)
      } else {
        __pyx_t_6 = __pyx_t_11(__pyx_t_1);
        if (unlikely(!__pyx_t_6)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 3364, __pyx_L1_error)
            PyErr_Clear();
          }
          break;
        }
      }
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_XDECREF_SET(__pyx_v_group, __pyx_t_6);
      __pyx_t_6 = 0;

      /* "netCDF4/_netCDF4.pyx":3365
 *         for groups in _walk_grps(self):
 *             for group in groups:
 *                 for var in group.variables.values():             # <<<<<<<<<<<<<<
 *                     var.set_always_mask(value)
 * 
*/
      __pyx_t_12 = 0;
      __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_v_group, __pyx_mstate_global->__pyx_n_u_variables); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 3365, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_14);
      if (unlikely(__pyx_t_14 == Py_None)) {
        PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "values");
        __PYX_ERR(0, 3365, __pyx_L1_error)
      }
      __pyx_t_15 = __Pyx_dict_iterator(__pyx_t_14, 0, __pyx_mstate_global->__pyx_n_u_values, (&__pyx_t_13), (&__pyx_t_5)); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 3365, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_15);
      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
      __Pyx_XDECREF(__pyx_t_6);
      __pyx_t_6 = __pyx_t_15;
      __pyx_t_15 = 0;
      while (1) {
        __pyx_t_7 = __Pyx_dict_iter_next(__pyx_t_6, __pyx_t_13, &__pyx_t_12, NULL, &__pyx_t_15, NULL, __pyx_t_5);
        if (unlikely(__pyx_t_7 == 0)) break;
        if (unlikely(__pyx_t_7 == -1)) __PYX_ERR(0, 3365, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_15);
        __Pyx_XDECREF_SET(__pyx_v_var, __pyx_t_15);
        __pyx_t_15 = 0;

        /* "netCDF4/_netCDF4.pyx":3366
 *             for group in groups:
 *                 for var in group.variables.values():
 *                     var.set_always_mask(value)             # <<<<<<<<<<<<<<
 * 
 *     def set_ncstring_attrs(self, value):
*/
        __pyx_t_14 = __pyx_v_var;
        __Pyx_INCREF(__pyx_t_14);
        __pyx_t_9 = 0;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_14, __pyx_v_value};
          __pyx_t_15 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_set_always_mask, __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
          if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 3366, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_15);
        }
        __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
      }
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

      /* "netCDF4/_netCDF4.pyx":3364
 * 
 *         for groups in _walk_grps(self):
 *             for group in groups:             # <<<<<<<<<<<<<<
 *                 for var in group.variables.values():
 *                     var.set_always_mask(value)
*/
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":3363
 *             var.set_always_mask(value)
 * 
 *         for groups in _walk_grps(self):             # <<<<<<<<<<<<<<
 *             for group in groups:
 *                 for var in group.variables.values():
*/
  }
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "netCDF4/_netCDF4.pyx":3337
 *                     var.set_auto_scale(value)
 * 
 *     def set_always_mask(self, value):             # <<<<<<<<<<<<<<
 *         """
 * **`set_always_mask(self, True_or_False)`**
*/

  /* 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_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_XDECREF(__pyx_t_15);
  __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.set_always_mask", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v__vars);
  __Pyx_XDECREF(__pyx_v_var);
  __Pyx_XDECREF(__pyx_v_groups);
  __Pyx_XDECREF(__pyx_v_group);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":3368
 *                     var.set_always_mask(value)
 * 
 *     def set_ncstring_attrs(self, value):             # <<<<<<<<<<<<<<
 *         """
 * **`set_ncstring_attrs(self, True_or_False)`**
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_85set_ncstring_attrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7netCDF4_8_netCDF4_7Dataset_84set_ncstring_attrs, "\n**`set_ncstring_attrs(self, True_or_False)`**\n\nCall `Variable.set_ncstring_attrs` for all variables contained in\nthis `Dataset` or `Group`, as well as for all its\nsubgroups and their variables.\n\n**`True_or_False`**: Boolean determining if all string attributes are\ncreated as variable-length NC_STRINGs, (if True), or if ascii text\nattributes are stored as NC_CHARs (if False; default)\n\n***Note***: Calling this function only affects newly created attributes\nof existing (sub-) groups and their variables.\n        ");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_7Dataset_85set_ncstring_attrs = {"set_ncstring_attrs", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_85set_ncstring_attrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_7Dataset_84set_ncstring_attrs};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_85set_ncstring_attrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  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[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set_ncstring_attrs (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 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,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 3368, __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(0, 3368, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_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_ncstring_attrs", 0) < (0)) __PYX_ERR(0, 3368, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("set_ncstring_attrs", 1, 1, 1, i); __PYX_ERR(0, 3368, __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(0, 3368, __pyx_L3_error)
    }
    __pyx_v_value = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("set_ncstring_attrs", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 3368, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.set_ncstring_attrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_7Dataset_84set_ncstring_attrs(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self), __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_7netCDF4_8_netCDF4_7Dataset_84set_ncstring_attrs(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_value) {
  PyObject *__pyx_v__vars = NULL;
  PyObject *__pyx_v_var = NULL;
  PyObject *__pyx_v_groups = NULL;
  PyObject *__pyx_v_group = NULL;
  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;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  size_t __pyx_t_9;
  PyObject *(*__pyx_t_10)(PyObject *);
  PyObject *(*__pyx_t_11)(PyObject *);
  PyObject *__pyx_t_12 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("set_ncstring_attrs", 0);

  /* "netCDF4/_netCDF4.pyx":3384
 *         """
 * 
 *         self._ncstring_attrs__ = bool(value)             # <<<<<<<<<<<<<<
 * 
 *         # this is a hack to make inheritance work in MFDataset
*/
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_value); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 3384, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyBool_FromLong((!(!__pyx_t_1))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3384, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __Pyx_GOTREF(__pyx_v_self->_ncstring_attrs__);
  __Pyx_DECREF(__pyx_v_self->_ncstring_attrs__);
  __pyx_v_self->_ncstring_attrs__ = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":3388
 *         # this is a hack to make inheritance work in MFDataset
 *         # (which stores variables in _vars)
 *         _vars = self.variables             # <<<<<<<<<<<<<<
 *         if _vars is None:
 *             _vars = self._vars
*/
  __pyx_t_2 = __pyx_v_self->variables;
  __Pyx_INCREF(__pyx_t_2);
  __pyx_v__vars = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":3389
 *         # (which stores variables in _vars)
 *         _vars = self.variables
 *         if _vars is None:             # <<<<<<<<<<<<<<
 *             _vars = self._vars
 *         for var in _vars.values():
*/
  __pyx_t_1 = (__pyx_v__vars == Py_None);
  if (__pyx_t_1) {

    /* "netCDF4/_netCDF4.pyx":3390
 *         _vars = self.variables
 *         if _vars is None:
 *             _vars = self._vars             # <<<<<<<<<<<<<<
 *         for var in _vars.values():
 *             var.set_ncstring_attrs(value)
*/
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_vars); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3390, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF_SET(__pyx_v__vars, __pyx_t_2);
    __pyx_t_2 = 0;

    /* "netCDF4/_netCDF4.pyx":3389
 *         # (which stores variables in _vars)
 *         _vars = self.variables
 *         if _vars is None:             # <<<<<<<<<<<<<<
 *             _vars = self._vars
 *         for var in _vars.values():
*/
  }

  /* "netCDF4/_netCDF4.pyx":3391
 *         if _vars is None:
 *             _vars = self._vars
 *         for var in _vars.values():             # <<<<<<<<<<<<<<
 *             var.set_ncstring_attrs(value)
 * 
*/
  __pyx_t_3 = 0;
  if (unlikely(__pyx_v__vars == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "values");
    __PYX_ERR(0, 3391, __pyx_L1_error)
  }
  __pyx_t_6 = __Pyx_dict_iterator(__pyx_v__vars, 0, __pyx_mstate_global->__pyx_n_u_values, (&__pyx_t_4), (&__pyx_t_5)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3391, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_2);
  __pyx_t_2 = __pyx_t_6;
  __pyx_t_6 = 0;
  while (1) {
    __pyx_t_7 = __Pyx_dict_iter_next(__pyx_t_2, __pyx_t_4, &__pyx_t_3, NULL, &__pyx_t_6, NULL, __pyx_t_5);
    if (unlikely(__pyx_t_7 == 0)) break;
    if (unlikely(__pyx_t_7 == -1)) __PYX_ERR(0, 3391, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_XDECREF_SET(__pyx_v_var, __pyx_t_6);
    __pyx_t_6 = 0;

    /* "netCDF4/_netCDF4.pyx":3392
 *             _vars = self._vars
 *         for var in _vars.values():
 *             var.set_ncstring_attrs(value)             # <<<<<<<<<<<<<<
 * 
 *         for groups in _walk_grps(self):
*/
    __pyx_t_8 = __pyx_v_var;
    __Pyx_INCREF(__pyx_t_8);
    __pyx_t_9 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_v_value};
      __pyx_t_6 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_set_ncstring_attrs, __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3392, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
    }
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":3394
 *             var.set_ncstring_attrs(value)
 * 
 *         for groups in _walk_grps(self):             # <<<<<<<<<<<<<<
 *             for group in groups:
 *                 group.set_ncstring_attrs(value) # recurse into subgroups...
*/
  __pyx_t_6 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_walk_grps); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3394, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_9 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_8))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_8);
    assert(__pyx_t_6);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_8);
    __Pyx_INCREF(__pyx_t_6);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_8, __pyx__function);
    __pyx_t_9 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_6, ((PyObject *)__pyx_v_self)};
    __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_8, __pyx_callargs+__pyx_t_9, (2-__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;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3394, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  if (likely(PyList_CheckExact(__pyx_t_2)) || PyTuple_CheckExact(__pyx_t_2)) {
    __pyx_t_8 = __pyx_t_2; __Pyx_INCREF(__pyx_t_8);
    __pyx_t_4 = 0;
    __pyx_t_10 = NULL;
  } else {
    __pyx_t_4 = -1; __pyx_t_8 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3394, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_10 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_8); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3394, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  for (;;) {
    if (likely(!__pyx_t_10)) {
      if (likely(PyList_CheckExact(__pyx_t_8))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_8);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 3394, __pyx_L1_error)
          #endif
          if (__pyx_t_4 >= __pyx_temp) break;
        }
        __pyx_t_2 = __Pyx_PyList_GetItemRefFast(__pyx_t_8, __pyx_t_4, __Pyx_ReferenceSharing_OwnStrongReference);
        ++__pyx_t_4;
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_8);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 3394, __pyx_L1_error)
          #endif
          if (__pyx_t_4 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_2 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_8, __pyx_t_4));
        #else
        __pyx_t_2 = __Pyx_PySequence_ITEM(__pyx_t_8, __pyx_t_4);
        #endif
        ++__pyx_t_4;
      }
      if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3394, __pyx_L1_error)
    } else {
      __pyx_t_2 = __pyx_t_10(__pyx_t_8);
      if (unlikely(!__pyx_t_2)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 3394, __pyx_L1_error)
          PyErr_Clear();
        }
        break;
      }
    }
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_XDECREF_SET(__pyx_v_groups, __pyx_t_2);
    __pyx_t_2 = 0;

    /* "netCDF4/_netCDF4.pyx":3395
 * 
 *         for groups in _walk_grps(self):
 *             for group in groups:             # <<<<<<<<<<<<<<
 *                 group.set_ncstring_attrs(value) # recurse into subgroups...
 * 
*/
    if (likely(PyList_CheckExact(__pyx_v_groups)) || PyTuple_CheckExact(__pyx_v_groups)) {
      __pyx_t_2 = __pyx_v_groups; __Pyx_INCREF(__pyx_t_2);
      __pyx_t_3 = 0;
      __pyx_t_11 = NULL;
    } else {
      __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_groups); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3395, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_11 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 3395, __pyx_L1_error)
    }
    for (;;) {
      if (likely(!__pyx_t_11)) {
        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(0, 3395, __pyx_L1_error)
            #endif
            if (__pyx_t_3 >= __pyx_temp) break;
          }
          __pyx_t_6 = __Pyx_PyList_GetItemRefFast(__pyx_t_2, __pyx_t_3, __Pyx_ReferenceSharing_OwnStrongReference);
          ++__pyx_t_3;
        } 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(0, 3395, __pyx_L1_error)
            #endif
            if (__pyx_t_3 >= __pyx_temp) break;
          }
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_6 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3));
          #else
          __pyx_t_6 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3);
          #endif
          ++__pyx_t_3;
        }
        if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3395, __pyx_L1_error)
      } else {
        __pyx_t_6 = __pyx_t_11(__pyx_t_2);
        if (unlikely(!__pyx_t_6)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 3395, __pyx_L1_error)
            PyErr_Clear();
          }
          break;
        }
      }
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_XDECREF_SET(__pyx_v_group, __pyx_t_6);
      __pyx_t_6 = 0;

      /* "netCDF4/_netCDF4.pyx":3396
 *         for groups in _walk_grps(self):
 *             for group in groups:
 *                 group.set_ncstring_attrs(value) # recurse into subgroups...             # <<<<<<<<<<<<<<
 * 
 *     @functools.lru_cache(maxsize=128)
*/
      __pyx_t_12 = __pyx_v_group;
      __Pyx_INCREF(__pyx_t_12);
      __pyx_t_9 = 0;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_12, __pyx_v_value};
        __pyx_t_6 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_set_ncstring_attrs, __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
        if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3396, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
      }
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

      /* "netCDF4/_netCDF4.pyx":3395
 * 
 *         for groups in _walk_grps(self):
 *             for group in groups:             # <<<<<<<<<<<<<<
 *                 group.set_ncstring_attrs(value) # recurse into subgroups...
 * 
*/
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "netCDF4/_netCDF4.pyx":3394
 *             var.set_ncstring_attrs(value)
 * 
 *         for groups in _walk_grps(self):             # <<<<<<<<<<<<<<
 *             for group in groups:
 *                 group.set_ncstring_attrs(value) # recurse into subgroups...
*/
  }
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "netCDF4/_netCDF4.pyx":3368
 *                     var.set_always_mask(value)
 * 
 *     def set_ncstring_attrs(self, value):             # <<<<<<<<<<<<<<
 *         """
 * **`set_ncstring_attrs(self, True_or_False)`**
*/

  /* 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_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.set_ncstring_attrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v__vars);
  __Pyx_XDECREF(__pyx_v_var);
  __Pyx_XDECREF(__pyx_v_groups);
  __Pyx_XDECREF(__pyx_v_group);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":3398
 *                 group.set_ncstring_attrs(value) # recurse into subgroups...
 * 
 *     @functools.lru_cache(maxsize=128)             # <<<<<<<<<<<<<<
 *     def get_variables_by_attributes(self, **kwargs):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_87get_variables_by_attributes(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7netCDF4_8_netCDF4_7Dataset_86get_variables_by_attributes, "\n**`get_variables_by_attributes(self, **kwargs)`**\n\nReturns a list of variables that match specific conditions.\n\nCan pass in key=value parameters and variables are returned that\ncontain all of the matches. For example,\n\n```python\n>>> # Get variables with x-axis attribute.\n>>> vs = nc.get_variables_by_attributes(axis='X')\n>>> # Get variables with matching \"standard_name\" attribute\n>>> vs = nc.get_variables_by_attributes(standard_name='northward_sea_water_velocity')\n```\n\nCan pass in key=callable parameter and variables are returned if the\ncallable returns True.  The callable should accept a single parameter,\nthe attribute value.  None is given as the attribute value when the\nattribute does not exist on the variable. For example,\n\n```python\n>>> # Get Axis variables\n>>> vs = nc.get_variables_by_attributes(axis=lambda v: v in ['X', 'Y', 'Z', 'T'])\n>>> # Get variables that don't have an \"axis\" attribute\n>>> vs = nc.get_variables_by_attributes(axis=lambda v: v is None)\n>>> # Get variables that have a \"grid_mapping\" attribute\n>>> vs = nc.get_variables_by_attributes(grid_mapping=lambda v: v is not None)\n```\n");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_7Dataset_87get_variables_by_attributes = {"get_variables_by_attributes", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_87get_variables_by_attributes, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_7Dataset_86get_variables_by_attributes};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_87get_variables_by_attributes(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_kwargs = 0;
  #if !CYTHON_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_variables_by_attributes (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (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_variables_by_attributes", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (__pyx_kwds_len > 0) {
    if (unlikely(__Pyx_CheckKeywordStrings("get_variables_by_attributes", __pyx_kwds) == -1)) return NULL;
    __pyx_v_kwargs = __Pyx_KwargsAsDict_FASTCALL(__pyx_kwds, __pyx_kwvalues);
    if (unlikely(!__pyx_v_kwargs)) return NULL;
    __Pyx_GOTREF(__pyx_v_kwargs);
  } else {
    __pyx_v_kwargs = PyDict_New();
    if (unlikely(!__pyx_v_kwargs)) return NULL;
    __Pyx_GOTREF(__pyx_v_kwargs);
  }
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_7Dataset_86get_variables_by_attributes(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self), __pyx_v_kwargs);

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_86get_variables_by_attributes(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_kwargs) {
  PyObject *__pyx_v_vs = NULL;
  PyObject *__pyx_v_has_value_flag = NULL;
  PyObject *__pyx_v__vars = NULL;
  PyObject *__pyx_v_vname = NULL;
  PyObject *__pyx_v_var = NULL;
  PyObject *__pyx_v_k = NULL;
  PyObject *__pyx_v_v = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  PyObject *(*__pyx_t_4)(PyObject *);
  PyObject *__pyx_t_5 = NULL;
  Py_ssize_t __pyx_t_6;
  Py_ssize_t __pyx_t_7;
  int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_t_11;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  size_t __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("get_variables_by_attributes", 0);

  /* "netCDF4/_netCDF4.pyx":3429
 * ```
 * """
 *         vs = []             # <<<<<<<<<<<<<<
 * 
 *         has_value_flag  = False
*/
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3429, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_vs = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":3431
 *         vs = []
 * 
 *         has_value_flag  = False             # <<<<<<<<<<<<<<
 *         # this is a hack to make inheritance work in MFDataset
 *         # (which stores variables in _vars)
*/
  __Pyx_INCREF(Py_False);
  __pyx_v_has_value_flag = Py_False;

  /* "netCDF4/_netCDF4.pyx":3434
 *         # this is a hack to make inheritance work in MFDataset
 *         # (which stores variables in _vars)
 *         _vars = self.variables             # <<<<<<<<<<<<<<
 *         if _vars is None: _vars = self._vars
 *         for vname in _vars:
*/
  __pyx_t_1 = __pyx_v_self->variables;
  __Pyx_INCREF(__pyx_t_1);
  __pyx_v__vars = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":3435
 *         # (which stores variables in _vars)
 *         _vars = self.variables
 *         if _vars is None: _vars = self._vars             # <<<<<<<<<<<<<<
 *         for vname in _vars:
 *             var = _vars[vname]
*/
  __pyx_t_2 = (__pyx_v__vars == Py_None);
  if (__pyx_t_2) {
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_vars); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3435, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v__vars, __pyx_t_1);
    __pyx_t_1 = 0;
  }

  /* "netCDF4/_netCDF4.pyx":3436
 *         _vars = self.variables
 *         if _vars is None: _vars = self._vars
 *         for vname in _vars:             # <<<<<<<<<<<<<<
 *             var = _vars[vname]
 *             for k, v in kwargs.items():
*/
  if (likely(PyList_CheckExact(__pyx_v__vars)) || PyTuple_CheckExact(__pyx_v__vars)) {
    __pyx_t_1 = __pyx_v__vars; __Pyx_INCREF(__pyx_t_1);
    __pyx_t_3 = 0;
    __pyx_t_4 = NULL;
  } else {
    __pyx_t_3 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v__vars); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3436, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_4 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3436, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_4)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 3436, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        __pyx_t_5 = __Pyx_PyList_GetItemRefFast(__pyx_t_1, __pyx_t_3, __Pyx_ReferenceSharing_OwnStrongReference);
        ++__pyx_t_3;
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 3436, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_3));
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_3);
        #endif
        ++__pyx_t_3;
      }
      if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3436, __pyx_L1_error)
    } else {
      __pyx_t_5 = __pyx_t_4(__pyx_t_1);
      if (unlikely(!__pyx_t_5)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 3436, __pyx_L1_error)
          PyErr_Clear();
        }
        break;
      }
    }
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_XDECREF_SET(__pyx_v_vname, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "netCDF4/_netCDF4.pyx":3437
 *         if _vars is None: _vars = self._vars
 *         for vname in _vars:
 *             var = _vars[vname]             # <<<<<<<<<<<<<<
 *             for k, v in kwargs.items():
 *                 if callable(v):
*/
    __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_v__vars, __pyx_v_vname); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3437, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_XDECREF_SET(__pyx_v_var, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "netCDF4/_netCDF4.pyx":3438
 *         for vname in _vars:
 *             var = _vars[vname]
 *             for k, v in kwargs.items():             # <<<<<<<<<<<<<<
 *                 if callable(v):
 *                     has_value_flag = v(getattr(var, k, None))
*/
    __pyx_t_6 = 0;
    __pyx_t_9 = __Pyx_dict_iterator(__pyx_v_kwargs, 1, __pyx_mstate_global->__pyx_n_u_items, (&__pyx_t_7), (&__pyx_t_8)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3438, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_XDECREF(__pyx_t_5);
    __pyx_t_5 = __pyx_t_9;
    __pyx_t_9 = 0;
    while (1) {
      __pyx_t_11 = __Pyx_dict_iter_next(__pyx_t_5, __pyx_t_7, &__pyx_t_6, &__pyx_t_9, &__pyx_t_10, NULL, __pyx_t_8);
      if (unlikely(__pyx_t_11 == 0)) break;
      if (unlikely(__pyx_t_11 == -1)) __PYX_ERR(0, 3438, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_XDECREF_SET(__pyx_v_k, __pyx_t_9);
      __pyx_t_9 = 0;
      __Pyx_XDECREF_SET(__pyx_v_v, __pyx_t_10);
      __pyx_t_10 = 0;

      /* "netCDF4/_netCDF4.pyx":3439
 *             var = _vars[vname]
 *             for k, v in kwargs.items():
 *                 if callable(v):             # <<<<<<<<<<<<<<
 *                     has_value_flag = v(getattr(var, k, None))
 *                     if has_value_flag is False:
*/
      __pyx_t_2 = __Pyx_PyCallable_Check(__pyx_v_v); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 3439, __pyx_L1_error)
      if (__pyx_t_2) {

        /* "netCDF4/_netCDF4.pyx":3440
 *             for k, v in kwargs.items():
 *                 if callable(v):
 *                     has_value_flag = v(getattr(var, k, None))             # <<<<<<<<<<<<<<
 *                     if has_value_flag is False:
 *                         break
*/
        __pyx_t_9 = NULL;
        __Pyx_INCREF(__pyx_v_v);
        __pyx_t_12 = __pyx_v_v; 
        __pyx_t_13 = __Pyx_GetAttr3(__pyx_v_var, __pyx_v_k, Py_None); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 3440, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_13);
        __pyx_t_14 = 1;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_12))) {
          __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_12);
          assert(__pyx_t_9);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_12);
          __Pyx_INCREF(__pyx_t_9);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_12, __pyx__function);
          __pyx_t_14 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_t_13};
          __pyx_t_10 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_12, __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;
          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
          if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3440, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_10);
        }
        __Pyx_DECREF_SET(__pyx_v_has_value_flag, __pyx_t_10);
        __pyx_t_10 = 0;

        /* "netCDF4/_netCDF4.pyx":3441
 *                 if callable(v):
 *                     has_value_flag = v(getattr(var, k, None))
 *                     if has_value_flag is False:             # <<<<<<<<<<<<<<
 *                         break
 *                 elif hasattr(var, k) and getattr(var, k) == v:
*/
        __pyx_t_2 = (__pyx_v_has_value_flag == Py_False);
        if (__pyx_t_2) {

          /* "netCDF4/_netCDF4.pyx":3442
 *                     has_value_flag = v(getattr(var, k, None))
 *                     if has_value_flag is False:
 *                         break             # <<<<<<<<<<<<<<
 *                 elif hasattr(var, k) and getattr(var, k) == v:
 *                     has_value_flag = True
*/
          goto __pyx_L7_break;

          /* "netCDF4/_netCDF4.pyx":3441
 *                 if callable(v):
 *                     has_value_flag = v(getattr(var, k, None))
 *                     if has_value_flag is False:             # <<<<<<<<<<<<<<
 *                         break
 *                 elif hasattr(var, k) and getattr(var, k) == v:
*/
        }

        /* "netCDF4/_netCDF4.pyx":3439
 *             var = _vars[vname]
 *             for k, v in kwargs.items():
 *                 if callable(v):             # <<<<<<<<<<<<<<
 *                     has_value_flag = v(getattr(var, k, None))
 *                     if has_value_flag is False:
*/
        goto __pyx_L8;
      }

      /* "netCDF4/_netCDF4.pyx":3443
 *                     if has_value_flag is False:
 *                         break
 *                 elif hasattr(var, k) and getattr(var, k) == v:             # <<<<<<<<<<<<<<
 *                     has_value_flag = True
 *                 else:
*/
      __pyx_t_15 = __Pyx_HasAttr(__pyx_v_var, __pyx_v_k); if (unlikely(__pyx_t_15 == ((int)-1))) __PYX_ERR(0, 3443, __pyx_L1_error)
      if (__pyx_t_15) {
      } else {
        __pyx_t_2 = __pyx_t_15;
        goto __pyx_L10_bool_binop_done;
      }
      __pyx_t_10 = __Pyx_GetAttr(__pyx_v_var, __pyx_v_k); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3443, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __pyx_t_12 = PyObject_RichCompare(__pyx_t_10, __pyx_v_v, Py_EQ); __Pyx_XGOTREF(__pyx_t_12); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3443, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __pyx_t_15 = __Pyx_PyObject_IsTrue(__pyx_t_12); if (unlikely((__pyx_t_15 < 0))) __PYX_ERR(0, 3443, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __pyx_t_2 = __pyx_t_15;
      __pyx_L10_bool_binop_done:;
      if (__pyx_t_2) {

        /* "netCDF4/_netCDF4.pyx":3444
 *                         break
 *                 elif hasattr(var, k) and getattr(var, k) == v:
 *                     has_value_flag = True             # <<<<<<<<<<<<<<
 *                 else:
 *                     has_value_flag = False
*/
        __Pyx_INCREF(Py_True);
        __Pyx_DECREF_SET(__pyx_v_has_value_flag, Py_True);

        /* "netCDF4/_netCDF4.pyx":3443
 *                     if has_value_flag is False:
 *                         break
 *                 elif hasattr(var, k) and getattr(var, k) == v:             # <<<<<<<<<<<<<<
 *                     has_value_flag = True
 *                 else:
*/
        goto __pyx_L8;
      }

      /* "netCDF4/_netCDF4.pyx":3446
 *                     has_value_flag = True
 *                 else:
 *                     has_value_flag = False             # <<<<<<<<<<<<<<
 *                     break
 * 
*/
      /*else*/ {
        __Pyx_INCREF(Py_False);
        __Pyx_DECREF_SET(__pyx_v_has_value_flag, Py_False);

        /* "netCDF4/_netCDF4.pyx":3447
 *                 else:
 *                     has_value_flag = False
 *                     break             # <<<<<<<<<<<<<<
 * 
 *             if has_value_flag is True:
*/
        goto __pyx_L7_break;
      }
      __pyx_L8:;
    }
    __pyx_L7_break:;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "netCDF4/_netCDF4.pyx":3449
 *                     break
 * 
 *             if has_value_flag is True:             # <<<<<<<<<<<<<<
 *                 vs.append(_vars[vname])
 * 
*/
    __pyx_t_2 = (__pyx_v_has_value_flag == Py_True);
    if (__pyx_t_2) {

      /* "netCDF4/_netCDF4.pyx":3450
 * 
 *             if has_value_flag is True:
 *                 vs.append(_vars[vname])             # <<<<<<<<<<<<<<
 * 
 *         return vs
*/
      __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_v__vars, __pyx_v_vname); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3450, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_16 = __Pyx_PyList_Append(__pyx_v_vs, __pyx_t_5); if (unlikely(__pyx_t_16 == ((int)-1))) __PYX_ERR(0, 3450, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "netCDF4/_netCDF4.pyx":3449
 *                     break
 * 
 *             if has_value_flag is True:             # <<<<<<<<<<<<<<
 *                 vs.append(_vars[vname])
 * 
*/
    }

    /* "netCDF4/_netCDF4.pyx":3436
 *         _vars = self.variables
 *         if _vars is None: _vars = self._vars
 *         for vname in _vars:             # <<<<<<<<<<<<<<
 *             var = _vars[vname]
 *             for k, v in kwargs.items():
*/
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":3452
 *                 vs.append(_vars[vname])
 * 
 *         return vs             # <<<<<<<<<<<<<<
 * 
 *     def _getname(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_vs);
  __pyx_r = __pyx_v_vs;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":3398
 *                 group.set_ncstring_attrs(value) # recurse into subgroups...
 * 
 *     @functools.lru_cache(maxsize=128)             # <<<<<<<<<<<<<<
 *     def get_variables_by_attributes(self, **kwargs):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.get_variables_by_attributes", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_vs);
  __Pyx_XDECREF(__pyx_v_has_value_flag);
  __Pyx_XDECREF(__pyx_v__vars);
  __Pyx_XDECREF(__pyx_v_vname);
  __Pyx_XDECREF(__pyx_v_var);
  __Pyx_XDECREF(__pyx_v_k);
  __Pyx_XDECREF(__pyx_v_v);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":3454
 *         return vs
 * 
 *     def _getname(self):             # <<<<<<<<<<<<<<
 *         # private method to get name associated with instance.
 *         cdef int ierr
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_89_getname(PyObject *__pyx_v_self, 
#if 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_7netCDF4_8_netCDF4_7Dataset_89_getname = {"_getname", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_89_getname, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_89_getname(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_getname (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("_getname", 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("_getname", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_7Dataset_88_getname(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_88_getname(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self) {
  int __pyx_v_ierr;
  char __pyx_v_namstring[(NC_MAX_NAME + 1)];
  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;
  Py_ssize_t __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_getname", 0);

  /* "netCDF4/_netCDF4.pyx":3458
 *         cdef int ierr
 *         cdef char namstring[NC_MAX_NAME+1]
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_inq_grpname(self._grpid, namstring)
 *         _ensure_nc_success(ierr)
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "netCDF4/_netCDF4.pyx":3459
 *         cdef char namstring[NC_MAX_NAME+1]
 *         with nogil:
 *             ierr = nc_inq_grpname(self._grpid, namstring)             # <<<<<<<<<<<<<<
 *         _ensure_nc_success(ierr)
 *         return namstring.decode('utf-8')
*/
        __pyx_v_ierr = nc_inq_grpname(__pyx_v_self->_grpid, __pyx_v_namstring);
      }

      /* "netCDF4/_netCDF4.pyx":3458
 *         cdef int ierr
 *         cdef char namstring[NC_MAX_NAME+1]
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_inq_grpname(self._grpid, namstring)
 *         _ensure_nc_success(ierr)
*/
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "netCDF4/_netCDF4.pyx":3460
 *         with nogil:
 *             ierr = nc_inq_grpname(self._grpid, namstring)
 *         _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 *         return namstring.decode('utf-8')
 * 
*/
  __pyx_t_2 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3460, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3460, __pyx_L1_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[2] = {__pyx_t_2, __pyx_t_4};
    __pyx_t_1 = __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_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(0, 3460, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":3461
 *             ierr = nc_inq_grpname(self._grpid, namstring)
 *         _ensure_nc_success(ierr)
 *         return namstring.decode('utf-8')             # <<<<<<<<<<<<<<
 * 
 *     property name:
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_6 = __Pyx_ssize_strlen(__pyx_v_namstring); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 3461, __pyx_L1_error)
  __pyx_t_1 = __Pyx_decode_c_string(__pyx_v_namstring, 0, __pyx_t_6, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3461, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":3454
 *         return vs
 * 
 *     def _getname(self):             # <<<<<<<<<<<<<<
 *         # private method to get name associated with instance.
 *         cdef int ierr
*/

  /* 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("netCDF4._netCDF4.Dataset._getname", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":3465
 *     property name:
 *         """string name of Group instance"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._getname()
 *         def __set__(self,value):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_4name_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_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_7netCDF4_8_netCDF4_7Dataset_4name___get__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_4name___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__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);

  /* "netCDF4/_netCDF4.pyx":3466
 *         """string name of Group instance"""
 *         def __get__(self):
 *             return self._getname()             # <<<<<<<<<<<<<<
 *         def __set__(self,value):
 *             raise AttributeError("name cannot be altered")
*/
  __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_getname, __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(0, 3466, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":3465
 *     property name:
 *         """string name of Group instance"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._getname()
 *         def __set__(self,value):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.name.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":3467
 *         def __get__(self):
 *             return self._getname()
 *         def __set__(self,value):             # <<<<<<<<<<<<<<
 *             raise AttributeError("name cannot be altered")
 * 
*/

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_4name_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_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_7netCDF4_8_netCDF4_7Dataset_4name_2__set__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_4name_2__set__(CYTHON_UNUSED struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, CYTHON_UNUSED 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);

  /* "netCDF4/_netCDF4.pyx":3468
 *             return self._getname()
 *         def __set__(self,value):
 *             raise AttributeError("name cannot be altered")             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
*/
  __pyx_t_2 = NULL;
  __pyx_t_3 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_name_cannot_be_altered};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_AttributeError)), __pyx_callargs+__pyx_t_3, (2-__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(0, 3468, __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(0, 3468, __pyx_L1_error)

  /* "netCDF4/_netCDF4.pyx":3467
 *         def __get__(self):
 *             return self._getname()
 *         def __set__(self,value):             # <<<<<<<<<<<<<<
 *             raise AttributeError("name cannot be altered")
 * 
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.name.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":3470
 *             raise AttributeError("name cannot be altered")
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def fromcdl(cdlfilename,ncfilename=None,mode='a',format='NETCDF4'):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_91fromcdl(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_7netCDF4_8_netCDF4_7Dataset_90fromcdl, "\n**`fromcdl(cdlfilename, ncfilename=None, mode='a',format='NETCDF4')`**\n\ncall [ncgen][ncgen] via subprocess to create Dataset from [CDL][cdl]\ntext representation. Requires [ncgen][ncgen] to be installed and in `$PATH`.\n\n**`cdlfilename`**:  CDL file.\n\n**`ncfilename`**: netCDF file to create. If not given, CDL filename with\nsuffix replaced by `.nc` is used..\n\n**`mode`**:  Access mode to open Dataset (Default `'a'`).\n\n**`format`**: underlying file format to use (one of `'NETCDF4',\n'NETCDF4_CLASSIC', 'NETCDF3_CLASSIC'`, `'NETCDF3_64BIT_OFFSET'` or\n`'NETCDF3_64BIT_DATA'`. Default `'NETCDF4'`.\n\nDataset instance for `ncfilename` is returned.\n\n[ncgen]: https://www.unidata.ucar.edu/software/netcdf/docs/netcdf_utilities_guide.html#ncgen_guide\n[cdl]: https://www.unidata.ucar.edu/software/netcdf/docs/netcdf_utilities_guide.html#cdl_guide\n        ");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_7Dataset_91fromcdl = {"fromcdl", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_91fromcdl, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_7Dataset_90fromcdl};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_91fromcdl(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_cdlfilename = 0;
  PyObject *__pyx_v_ncfilename = 0;
  PyObject *__pyx_v_mode = 0;
  PyObject *__pyx_v_format = 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("fromcdl (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_cdlfilename,&__pyx_mstate_global->__pyx_n_u_ncfilename,&__pyx_mstate_global->__pyx_n_u_mode,&__pyx_mstate_global->__pyx_n_u_format,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 3470, __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(0, 3470, __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(0, 3470, __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(0, 3470, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 3470, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "fromcdl", 0) < (0)) __PYX_ERR(0, 3470, __pyx_L3_error)

      /* "netCDF4/_netCDF4.pyx":3471
 * 
 *     @staticmethod
 *     def fromcdl(cdlfilename,ncfilename=None,mode='a',format='NETCDF4'):             # <<<<<<<<<<<<<<
 *         """
 * **`fromcdl(cdlfilename, ncfilename=None, mode='a',format='NETCDF4')`**
*/
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_n_u_a));
      if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_n_u_NETCDF4));
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("fromcdl", 0, 1, 4, i); __PYX_ERR(0, 3470, __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(0, 3470, __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(0, 3470, __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(0, 3470, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 3470, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_n_u_a));
      if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_n_u_NETCDF4));
    }
    __pyx_v_cdlfilename = values[0];
    __pyx_v_ncfilename = values[1];
    __pyx_v_mode = values[2];
    __pyx_v_format = values[3];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("fromcdl", 0, 1, 4, __pyx_nargs); __PYX_ERR(0, 3470, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.fromcdl", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_7Dataset_90fromcdl(__pyx_v_cdlfilename, __pyx_v_ncfilename, __pyx_v_mode, __pyx_v_format);

  /* "netCDF4/_netCDF4.pyx":3470
 *             raise AttributeError("name cannot be altered")
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def fromcdl(cdlfilename,ncfilename=None,mode='a',format='NETCDF4'):
 *         """
*/

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_90fromcdl(PyObject *__pyx_v_cdlfilename, PyObject *__pyx_v_ncfilename, PyObject *__pyx_v_mode, PyObject *__pyx_v_format) {
  PyObject *__pyx_v_filepath = NULL;
  PyObject *__pyx_v_formatcodes = NULL;
  PyObject *__pyx_v_ncgenargs = NULL;
  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 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("fromcdl", 0);
  __Pyx_INCREF(__pyx_v_ncfilename);

  /* "netCDF4/_netCDF4.pyx":3494
 * [cdl]: https://www.unidata.ucar.edu/software/netcdf/docs/netcdf_utilities_guide.html#cdl_guide
 *         """
 *         if ncfilename is None:             # <<<<<<<<<<<<<<
 *             filepath = pathlib.Path(cdlfilename)
 *             ncfilename = filepath.with_suffix('.nc')
*/
  __pyx_t_1 = (__pyx_v_ncfilename == Py_None);
  if (__pyx_t_1) {

    /* "netCDF4/_netCDF4.pyx":3495
 *         """
 *         if ncfilename is None:
 *             filepath = pathlib.Path(cdlfilename)             # <<<<<<<<<<<<<<
 *             ncfilename = filepath.with_suffix('.nc')
 *         formatcodes = {'NETCDF4': 4,
*/
    __pyx_t_3 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_pathlib); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3495, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_Path); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3495, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_6 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
      assert(__pyx_t_3);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
      __pyx_t_6 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_cdlfilename};
      __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __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(0, 3495, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __pyx_v_filepath = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "netCDF4/_netCDF4.pyx":3496
 *         if ncfilename is None:
 *             filepath = pathlib.Path(cdlfilename)
 *             ncfilename = filepath.with_suffix('.nc')             # <<<<<<<<<<<<<<
 *         formatcodes = {'NETCDF4': 4,
 *                        'NETCDF4_CLASSIC': 7,
*/
    __pyx_t_5 = __pyx_v_filepath;
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_6 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_nc};
      __pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_with_suffix, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3496, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __Pyx_DECREF_SET(__pyx_v_ncfilename, __pyx_t_2);
    __pyx_t_2 = 0;

    /* "netCDF4/_netCDF4.pyx":3494
 * [cdl]: https://www.unidata.ucar.edu/software/netcdf/docs/netcdf_utilities_guide.html#cdl_guide
 *         """
 *         if ncfilename is None:             # <<<<<<<<<<<<<<
 *             filepath = pathlib.Path(cdlfilename)
 *             ncfilename = filepath.with_suffix('.nc')
*/
  }

  /* "netCDF4/_netCDF4.pyx":3497
 *             filepath = pathlib.Path(cdlfilename)
 *             ncfilename = filepath.with_suffix('.nc')
 *         formatcodes = {'NETCDF4': 4,             # <<<<<<<<<<<<<<
 *                        'NETCDF4_CLASSIC': 7,
 *                        'NETCDF3_CLASSIC': 3,
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3497, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_NETCDF4, __pyx_mstate_global->__pyx_int_4) < (0)) __PYX_ERR(0, 3497, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_NETCDF4_CLASSIC, __pyx_mstate_global->__pyx_int_7) < (0)) __PYX_ERR(0, 3497, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_NETCDF3_CLASSIC, __pyx_mstate_global->__pyx_int_3) < (0)) __PYX_ERR(0, 3497, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_NETCDF3_64BIT, __pyx_mstate_global->__pyx_int_6) < (0)) __PYX_ERR(0, 3497, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_NETCDF3_64BIT_OFFSET, __pyx_mstate_global->__pyx_int_6) < (0)) __PYX_ERR(0, 3497, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_NETCDF3_64BIT_DATA, __pyx_mstate_global->__pyx_int_5) < (0)) __PYX_ERR(0, 3497, __pyx_L1_error)
  __pyx_v_formatcodes = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":3503
 *                        'NETCDF3_64BIT_OFFSET': 6,
 *                        'NETCDF3_64BIT_DATA': 5}
 *         if format not in formatcodes:             # <<<<<<<<<<<<<<
 *             raise ValueError('illegal format requested')
 *         ncgenargs="-knc%s" % formatcodes[format]
*/
  __pyx_t_1 = (__Pyx_PyDict_ContainsTF(__pyx_v_format, __pyx_v_formatcodes, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 3503, __pyx_L1_error)
  if (unlikely(__pyx_t_1)) {

    /* "netCDF4/_netCDF4.pyx":3504
 *                        'NETCDF3_64BIT_DATA': 5}
 *         if format not in formatcodes:
 *             raise ValueError('illegal format requested')             # <<<<<<<<<<<<<<
 *         ncgenargs="-knc%s" % formatcodes[format]
 *         subprocess.run(["ncgen", ncgenargs, "-o", ncfilename, cdlfilename], check=True)
*/
    __pyx_t_5 = NULL;
    __pyx_t_6 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_illegal_format_requested};
      __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_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3504, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(0, 3504, __pyx_L1_error)

    /* "netCDF4/_netCDF4.pyx":3503
 *                        'NETCDF3_64BIT_OFFSET': 6,
 *                        'NETCDF3_64BIT_DATA': 5}
 *         if format not in formatcodes:             # <<<<<<<<<<<<<<
 *             raise ValueError('illegal format requested')
 *         ncgenargs="-knc%s" % formatcodes[format]
*/
  }

  /* "netCDF4/_netCDF4.pyx":3505
 *         if format not in formatcodes:
 *             raise ValueError('illegal format requested')
 *         ncgenargs="-knc%s" % formatcodes[format]             # <<<<<<<<<<<<<<
 *         subprocess.run(["ncgen", ncgenargs, "-o", ncfilename, cdlfilename], check=True)
 *         return Dataset(ncfilename, mode=mode)
*/
  __pyx_t_2 = __Pyx_PyDict_GetItem(__pyx_v_formatcodes, __pyx_v_format); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3505, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_5 = __Pyx_PyUnicode_FormatSafe(__pyx_mstate_global->__pyx_kp_u_knc_s, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3505, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_ncgenargs = ((PyObject*)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "netCDF4/_netCDF4.pyx":3506
 *             raise ValueError('illegal format requested')
 *         ncgenargs="-knc%s" % formatcodes[format]
 *         subprocess.run(["ncgen", ncgenargs, "-o", ncfilename, cdlfilename], check=True)             # <<<<<<<<<<<<<<
 *         return Dataset(ncfilename, mode=mode)
 * 
*/
  __pyx_t_2 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_subprocess); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3506, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_run); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3506, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = PyList_New(5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3506, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_ncgen);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_n_u_ncgen);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_mstate_global->__pyx_n_u_ncgen) != (0)) __PYX_ERR(0, 3506, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_ncgenargs);
  __Pyx_GIVEREF(__pyx_v_ncgenargs);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 1, __pyx_v_ncgenargs) != (0)) __PYX_ERR(0, 3506, __pyx_L1_error);
  __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u_o);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_kp_u_o);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 2, __pyx_mstate_global->__pyx_kp_u_o) != (0)) __PYX_ERR(0, 3506, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_ncfilename);
  __Pyx_GIVEREF(__pyx_v_ncfilename);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 3, __pyx_v_ncfilename) != (0)) __PYX_ERR(0, 3506, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_cdlfilename);
  __Pyx_GIVEREF(__pyx_v_cdlfilename);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 4, __pyx_v_cdlfilename) != (0)) __PYX_ERR(0, 3506, __pyx_L1_error);
  __pyx_t_6 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(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_6 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_2, __pyx_t_3};
    __pyx_t_7 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3506, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_check, Py_True, __pyx_t_7, __pyx_callargs+2, 0) < (0)) __PYX_ERR(0, 3506, __pyx_L1_error)
    __pyx_t_5 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_7);
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3506, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "netCDF4/_netCDF4.pyx":3507
 *         ncgenargs="-knc%s" % formatcodes[format]
 *         subprocess.run(["ncgen", ncgenargs, "-o", ncfilename, cdlfilename], check=True)
 *         return Dataset(ncfilename, mode=mode)             # <<<<<<<<<<<<<<
 * 
 *     def tocdl(self,coordvars=False,data=False,outfile=None):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = NULL;
  __pyx_t_6 = 1;
  {
    PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_4, __pyx_v_ncfilename};
    __pyx_t_7 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3507, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_mode, __pyx_v_mode, __pyx_t_7, __pyx_callargs+2, 0) < (0)) __PYX_ERR(0, 3507, __pyx_L1_error)
    __pyx_t_5 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Dataset, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__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;
    if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3507, __pyx_L1_error)
    __Pyx_GOTREF((PyObject *)__pyx_t_5);
  }
  __pyx_r = ((PyObject *)__pyx_t_5);
  __pyx_t_5 = 0;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":3470
 *             raise AttributeError("name cannot be altered")
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def fromcdl(cdlfilename,ncfilename=None,mode='a',format='NETCDF4'):
 *         """
*/

  /* 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("netCDF4._netCDF4.Dataset.fromcdl", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_filepath);
  __Pyx_XDECREF(__pyx_v_formatcodes);
  __Pyx_XDECREF(__pyx_v_ncgenargs);
  __Pyx_XDECREF(__pyx_v_ncfilename);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":3509
 *         return Dataset(ncfilename, mode=mode)
 * 
 *     def tocdl(self,coordvars=False,data=False,outfile=None):             # <<<<<<<<<<<<<<
 *         """
 * **`tocdl(self, coordvars=False, data=False, outfile=None)`**
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_93tocdl(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7netCDF4_8_netCDF4_7Dataset_92tocdl, "\n**`tocdl(self, coordvars=False, data=False, outfile=None)`**\n\ncall [ncdump][ncdump] via subprocess to create [CDL][cdl]\ntext representation of Dataset. Requires [ncdump][ncdump]\nto be installed and in `$PATH`.\n\n**`coordvars`**: include coordinate variable data (via `ncdump -c`). Default False\n\n**`data`**: if True, write out variable data (Default False).\n\n**`outfile`**: If not None, file to output ncdump to. Default is to return a string.\n\n[ncdump]: https://www.unidata.ucar.edu/software/netcdf/docs/netcdf_utilities_guide.html#ncdump_guide\n[cdl]: https://www.unidata.ucar.edu/software/netcdf/docs/netcdf_utilities_guide.html#cdl_guide\n        ");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_7Dataset_93tocdl = {"tocdl", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_93tocdl, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_7Dataset_92tocdl};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_93tocdl(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_coordvars = 0;
  PyObject *__pyx_v_data = 0;
  PyObject *__pyx_v_outfile = 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("tocdl (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_coordvars,&__pyx_mstate_global->__pyx_n_u_data,&__pyx_mstate_global->__pyx_n_u_outfile,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 3509, __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(0, 3509, __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(0, 3509, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 3509, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "tocdl", 0) < (0)) __PYX_ERR(0, 3509, __pyx_L3_error)
      if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)Py_False));
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_False));
      if (!values[2]) values[2] = __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(0, 3509, __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(0, 3509, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 3509, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)Py_False));
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_False));
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None));
    }
    __pyx_v_coordvars = values[0];
    __pyx_v_data = values[1];
    __pyx_v_outfile = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("tocdl", 0, 0, 3, __pyx_nargs); __PYX_ERR(0, 3509, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.tocdl", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_7Dataset_92tocdl(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self), __pyx_v_coordvars, __pyx_v_data, __pyx_v_outfile);

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_92tocdl(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_coordvars, PyObject *__pyx_v_data, PyObject *__pyx_v_outfile) {
  PyObject *__pyx_v_ncdumpargs = NULL;
  PyObject *__pyx_v_result = NULL;
  PyObject *__pyx_v_f = NULL;
  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;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("tocdl", 0);

  /* "netCDF4/_netCDF4.pyx":3526
 * [cdl]: https://www.unidata.ucar.edu/software/netcdf/docs/netcdf_utilities_guide.html#cdl_guide
 *         """
 *         self.sync()             # <<<<<<<<<<<<<<
 *         if coordvars:
 *             ncdumpargs = "-cs"
*/
  __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_sync, __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(0, 3526, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":3527
 *         """
 *         self.sync()
 *         if coordvars:             # <<<<<<<<<<<<<<
 *             ncdumpargs = "-cs"
 *         else:
*/
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_coordvars); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 3527, __pyx_L1_error)
  if (__pyx_t_4) {

    /* "netCDF4/_netCDF4.pyx":3528
 *         self.sync()
 *         if coordvars:
 *             ncdumpargs = "-cs"             # <<<<<<<<<<<<<<
 *         else:
 *             ncdumpargs = "-s"
*/
    __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u_cs);
    __pyx_v_ncdumpargs = __pyx_mstate_global->__pyx_kp_u_cs;

    /* "netCDF4/_netCDF4.pyx":3527
 *         """
 *         self.sync()
 *         if coordvars:             # <<<<<<<<<<<<<<
 *             ncdumpargs = "-cs"
 *         else:
*/
    goto __pyx_L3;
  }

  /* "netCDF4/_netCDF4.pyx":3530
 *             ncdumpargs = "-cs"
 *         else:
 *             ncdumpargs = "-s"             # <<<<<<<<<<<<<<
 *         if not data: ncdumpargs += "h"
 *         result=subprocess.run(["ncdump", ncdumpargs, self.filepath()],
*/
  /*else*/ {
    __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u_s_3);
    __pyx_v_ncdumpargs = __pyx_mstate_global->__pyx_kp_u_s_3;
  }
  __pyx_L3:;

  /* "netCDF4/_netCDF4.pyx":3531
 *         else:
 *             ncdumpargs = "-s"
 *         if not data: ncdumpargs += "h"             # <<<<<<<<<<<<<<
 *         result=subprocess.run(["ncdump", ncdumpargs, self.filepath()],
 *                check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE,
*/
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_data); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 3531, __pyx_L1_error)
  __pyx_t_5 = (!__pyx_t_4);
  if (__pyx_t_5) {
    __pyx_t_1 = __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlace(__pyx_v_ncdumpargs, __pyx_mstate_global->__pyx_n_u_h); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3531, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_ncdumpargs, ((PyObject*)__pyx_t_1));
    __pyx_t_1 = 0;
  }

  /* "netCDF4/_netCDF4.pyx":3532
 *             ncdumpargs = "-s"
 *         if not data: ncdumpargs += "h"
 *         result=subprocess.run(["ncdump", ncdumpargs, self.filepath()],             # <<<<<<<<<<<<<<
 *                check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE,
 *                encoding='utf-8')
*/
  __pyx_t_2 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_subprocess); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3532, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_run); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3532, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_8 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_8, NULL};
    __pyx_t_6 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_filepath, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3532, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
  }
  __pyx_t_8 = PyList_New(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3532, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_ncdump);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_n_u_ncdump);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_8, 0, __pyx_mstate_global->__pyx_n_u_ncdump) != (0)) __PYX_ERR(0, 3532, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_ncdumpargs);
  __Pyx_GIVEREF(__pyx_v_ncdumpargs);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_8, 1, __pyx_v_ncdumpargs) != (0)) __PYX_ERR(0, 3532, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_6);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_8, 2, __pyx_t_6) != (0)) __PYX_ERR(0, 3532, __pyx_L1_error);
  __pyx_t_6 = 0;

  /* "netCDF4/_netCDF4.pyx":3533
 *         if not data: ncdumpargs += "h"
 *         result=subprocess.run(["ncdump", ncdumpargs, self.filepath()],
 *                check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE,             # <<<<<<<<<<<<<<
 *                encoding='utf-8')
 *         if outfile is None:
*/
  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_subprocess); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3533, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_PIPE); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3533, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_subprocess); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3533, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_PIPE); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3533, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_3 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(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 + ((CYTHON_VECTORCALL) ? 4 : 0)] = {__pyx_t_2, __pyx_t_8};
    __pyx_t_6 = __Pyx_MakeVectorcallBuilderKwds(4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3532, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_check, Py_True, __pyx_t_6, __pyx_callargs+2, 0) < (0)) __PYX_ERR(0, 3532, __pyx_L1_error)
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_stdout, __pyx_t_9, __pyx_t_6, __pyx_callargs+2, 1) < (0)) __PYX_ERR(0, 3532, __pyx_L1_error)
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_stderr, __pyx_t_10, __pyx_t_6, __pyx_callargs+2, 2) < (0)) __PYX_ERR(0, 3532, __pyx_L1_error)
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_encoding, __pyx_mstate_global->__pyx_kp_u_utf_8, __pyx_t_6, __pyx_callargs+2, 3) < (0)) __PYX_ERR(0, 3532, __pyx_L1_error)
    __pyx_t_1 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_6);
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3532, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_v_result = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":3535
 *                check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE,
 *                encoding='utf-8')
 *         if outfile is None:             # <<<<<<<<<<<<<<
 *             return result.stdout
 *         else:
*/
  __pyx_t_5 = (__pyx_v_outfile == Py_None);
  if (__pyx_t_5) {

    /* "netCDF4/_netCDF4.pyx":3536
 *                encoding='utf-8')
 *         if outfile is None:
 *             return result.stdout             # <<<<<<<<<<<<<<
 *         else:
 *             f = open(outfile,'w')
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_result, __pyx_mstate_global->__pyx_n_u_stdout); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3536, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "netCDF4/_netCDF4.pyx":3535
 *                check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE,
 *                encoding='utf-8')
 *         if outfile is None:             # <<<<<<<<<<<<<<
 *             return result.stdout
 *         else:
*/
  }

  /* "netCDF4/_netCDF4.pyx":3538
 *             return result.stdout
 *         else:
 *             f = open(outfile,'w')             # <<<<<<<<<<<<<<
 *             f.write(result.stdout)
 *             f.close()
*/
  /*else*/ {
    __pyx_t_7 = NULL;
    __pyx_t_3 = 1;
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_v_outfile, __pyx_mstate_global->__pyx_n_u_w};
      __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_open, __pyx_callargs+__pyx_t_3, (3-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3538, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __pyx_v_f = __pyx_t_1;
    __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":3539
 *         else:
 *             f = open(outfile,'w')
 *             f.write(result.stdout)             # <<<<<<<<<<<<<<
 *             f.close()
 * 
*/
    __pyx_t_7 = __pyx_v_f;
    __Pyx_INCREF(__pyx_t_7);
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_result, __pyx_mstate_global->__pyx_n_u_stdout); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3539, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_3 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_6};
      __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_write, __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3539, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":3540
 *             f = open(outfile,'w')
 *             f.write(result.stdout)
 *             f.close()             # <<<<<<<<<<<<<<
 * 
 *     def has_blosc_filter(self):
*/
    __pyx_t_6 = __pyx_v_f;
    __Pyx_INCREF(__pyx_t_6);
    __pyx_t_3 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL};
      __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_close, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3540, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }

  /* "netCDF4/_netCDF4.pyx":3509
 *         return Dataset(ncfilename, mode=mode)
 * 
 *     def tocdl(self,coordvars=False,data=False,outfile=None):             # <<<<<<<<<<<<<<
 *         """
 * **`tocdl(self, coordvars=False, data=False, outfile=None)`**
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.tocdl", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_ncdumpargs);
  __Pyx_XDECREF(__pyx_v_result);
  __Pyx_XDECREF(__pyx_v_f);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":3542
 *             f.close()
 * 
 *     def has_blosc_filter(self):             # <<<<<<<<<<<<<<
 *         """**`has_blosc_filter(self)`**
 *         returns True if blosc compression filter is available
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_95has_blosc_filter(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7netCDF4_8_netCDF4_7Dataset_94has_blosc_filter, "**`has_blosc_filter(self)`**\n        returns True if blosc compression filter is available\n        ");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_7Dataset_95has_blosc_filter = {"has_blosc_filter", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_95has_blosc_filter, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_7Dataset_94has_blosc_filter};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_95has_blosc_filter(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("has_blosc_filter (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("has_blosc_filter", 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("has_blosc_filter", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_7Dataset_94has_blosc_filter(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_94has_blosc_filter(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self) {
  int __pyx_v_ierr;
  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("has_blosc_filter", 0);

  /* "netCDF4/_netCDF4.pyx":3546
 *         returns True if blosc compression filter is available
 *         """
 *         if __has_blosc_support__:             # <<<<<<<<<<<<<<
 *             return False
 * 
*/
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_has_blosc_support); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3546, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 3546, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {

    /* "netCDF4/_netCDF4.pyx":3547
 *         """
 *         if __has_blosc_support__:
 *             return False             # <<<<<<<<<<<<<<
 * 
 *         cdef int ierr
*/
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_False);
    __pyx_r = Py_False;
    goto __pyx_L0;

    /* "netCDF4/_netCDF4.pyx":3546
 *         returns True if blosc compression filter is available
 *         """
 *         if __has_blosc_support__:             # <<<<<<<<<<<<<<
 *             return False
 * 
*/
  }

  /* "netCDF4/_netCDF4.pyx":3550
 * 
 *         cdef int ierr
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_inq_filter_avail(self._grpid, H5Z_FILTER_BLOSC)
 *         return ierr == 0
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "netCDF4/_netCDF4.pyx":3551
 *         cdef int ierr
 *         with nogil:
 *             ierr = nc_inq_filter_avail(self._grpid, H5Z_FILTER_BLOSC)             # <<<<<<<<<<<<<<
 *         return ierr == 0
 * 
*/
        __pyx_v_ierr = nc_inq_filter_avail(__pyx_v_self->_grpid, H5Z_FILTER_BLOSC);
      }

      /* "netCDF4/_netCDF4.pyx":3550
 * 
 *         cdef int ierr
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_inq_filter_avail(self._grpid, H5Z_FILTER_BLOSC)
 *         return ierr == 0
*/
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L6;
        }
        __pyx_L6:;
      }
  }

  /* "netCDF4/_netCDF4.pyx":3552
 *         with nogil:
 *             ierr = nc_inq_filter_avail(self._grpid, H5Z_FILTER_BLOSC)
 *         return ierr == 0             # <<<<<<<<<<<<<<
 * 
 *     def has_zstd_filter(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong((__pyx_v_ierr == 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3552, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":3542
 *             f.close()
 * 
 *     def has_blosc_filter(self):             # <<<<<<<<<<<<<<
 *         """**`has_blosc_filter(self)`**
 *         returns True if blosc compression filter is available
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.has_blosc_filter", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":3554
 *         return ierr == 0
 * 
 *     def has_zstd_filter(self):             # <<<<<<<<<<<<<<
 *         """**`has_zstd_filter(self)`**
 *         returns True if zstd compression filter is available
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_97has_zstd_filter(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7netCDF4_8_netCDF4_7Dataset_96has_zstd_filter, "**`has_zstd_filter(self)`**\n        returns True if zstd compression filter is available\n        ");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_7Dataset_97has_zstd_filter = {"has_zstd_filter", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_97has_zstd_filter, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_7Dataset_96has_zstd_filter};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_97has_zstd_filter(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("has_zstd_filter (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("has_zstd_filter", 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("has_zstd_filter", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_7Dataset_96has_zstd_filter(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_96has_zstd_filter(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self) {
  int __pyx_v_ierr;
  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("has_zstd_filter", 0);

  /* "netCDF4/_netCDF4.pyx":3559
 *         """
 * 
 *         if __has_zstandard_support__:             # <<<<<<<<<<<<<<
 *             return False
 * 
*/
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_has_zstandard_support); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3559, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 3559, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {

    /* "netCDF4/_netCDF4.pyx":3560
 * 
 *         if __has_zstandard_support__:
 *             return False             # <<<<<<<<<<<<<<
 * 
 *         cdef int ierr
*/
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_False);
    __pyx_r = Py_False;
    goto __pyx_L0;

    /* "netCDF4/_netCDF4.pyx":3559
 *         """
 * 
 *         if __has_zstandard_support__:             # <<<<<<<<<<<<<<
 *             return False
 * 
*/
  }

  /* "netCDF4/_netCDF4.pyx":3563
 * 
 *         cdef int ierr
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_inq_filter_avail(self._grpid, H5Z_FILTER_ZSTD)
 *         return ierr == 0
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "netCDF4/_netCDF4.pyx":3564
 *         cdef int ierr
 *         with nogil:
 *             ierr = nc_inq_filter_avail(self._grpid, H5Z_FILTER_ZSTD)             # <<<<<<<<<<<<<<
 *         return ierr == 0
 * 
*/
        __pyx_v_ierr = nc_inq_filter_avail(__pyx_v_self->_grpid, H5Z_FILTER_ZSTD);
      }

      /* "netCDF4/_netCDF4.pyx":3563
 * 
 *         cdef int ierr
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_inq_filter_avail(self._grpid, H5Z_FILTER_ZSTD)
 *         return ierr == 0
*/
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L6;
        }
        __pyx_L6:;
      }
  }

  /* "netCDF4/_netCDF4.pyx":3565
 *         with nogil:
 *             ierr = nc_inq_filter_avail(self._grpid, H5Z_FILTER_ZSTD)
 *         return ierr == 0             # <<<<<<<<<<<<<<
 * 
 *     def has_bzip2_filter(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong((__pyx_v_ierr == 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3565, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":3554
 *         return ierr == 0
 * 
 *     def has_zstd_filter(self):             # <<<<<<<<<<<<<<
 *         """**`has_zstd_filter(self)`**
 *         returns True if zstd compression filter is available
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.has_zstd_filter", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":3567
 *         return ierr == 0
 * 
 *     def has_bzip2_filter(self):             # <<<<<<<<<<<<<<
 *         """**`has_bzip2_filter(self)`**
 *         returns True if bzip2 compression filter is available
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_99has_bzip2_filter(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7netCDF4_8_netCDF4_7Dataset_98has_bzip2_filter, "**`has_bzip2_filter(self)`**\n        returns True if bzip2 compression filter is available\n        ");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_7Dataset_99has_bzip2_filter = {"has_bzip2_filter", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_99has_bzip2_filter, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_7Dataset_98has_bzip2_filter};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_99has_bzip2_filter(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("has_bzip2_filter (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("has_bzip2_filter", 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("has_bzip2_filter", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_7Dataset_98has_bzip2_filter(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_98has_bzip2_filter(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self) {
  int __pyx_v_ierr;
  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("has_bzip2_filter", 0);

  /* "netCDF4/_netCDF4.pyx":3572
 *         """
 * 
 *         if __has_bzip2_support__:             # <<<<<<<<<<<<<<
 *             return False
 * 
*/
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_has_bzip2_support); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3572, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 3572, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {

    /* "netCDF4/_netCDF4.pyx":3573
 * 
 *         if __has_bzip2_support__:
 *             return False             # <<<<<<<<<<<<<<
 * 
 *         cdef int ierr
*/
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_False);
    __pyx_r = Py_False;
    goto __pyx_L0;

    /* "netCDF4/_netCDF4.pyx":3572
 *         """
 * 
 *         if __has_bzip2_support__:             # <<<<<<<<<<<<<<
 *             return False
 * 
*/
  }

  /* "netCDF4/_netCDF4.pyx":3576
 * 
 *         cdef int ierr
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_inq_filter_avail(self._grpid, H5Z_FILTER_BZIP2)
 *         return ierr == 0
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "netCDF4/_netCDF4.pyx":3577
 *         cdef int ierr
 *         with nogil:
 *             ierr = nc_inq_filter_avail(self._grpid, H5Z_FILTER_BZIP2)             # <<<<<<<<<<<<<<
 *         return ierr == 0
 * 
*/
        __pyx_v_ierr = nc_inq_filter_avail(__pyx_v_self->_grpid, H5Z_FILTER_BZIP2);
      }

      /* "netCDF4/_netCDF4.pyx":3576
 * 
 *         cdef int ierr
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_inq_filter_avail(self._grpid, H5Z_FILTER_BZIP2)
 *         return ierr == 0
*/
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L6;
        }
        __pyx_L6:;
      }
  }

  /* "netCDF4/_netCDF4.pyx":3578
 *         with nogil:
 *             ierr = nc_inq_filter_avail(self._grpid, H5Z_FILTER_BZIP2)
 *         return ierr == 0             # <<<<<<<<<<<<<<
 * 
 *     def has_szip_filter(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong((__pyx_v_ierr == 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3578, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":3567
 *         return ierr == 0
 * 
 *     def has_bzip2_filter(self):             # <<<<<<<<<<<<<<
 *         """**`has_bzip2_filter(self)`**
 *         returns True if bzip2 compression filter is available
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.has_bzip2_filter", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":3580
 *         return ierr == 0
 * 
 *     def has_szip_filter(self):             # <<<<<<<<<<<<<<
 *         """**`has_szip_filter(self)`**
 *         returns True if szip compression filter is available
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_101has_szip_filter(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7netCDF4_8_netCDF4_7Dataset_100has_szip_filter, "**`has_szip_filter(self)`**\n        returns True if szip compression filter is available\n        ");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_7Dataset_101has_szip_filter = {"has_szip_filter", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_101has_szip_filter, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_7Dataset_100has_szip_filter};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_101has_szip_filter(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("has_szip_filter (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("has_szip_filter", 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("has_szip_filter", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_7Dataset_100has_szip_filter(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_100has_szip_filter(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self) {
  int __pyx_v_ierr;
  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("has_szip_filter", 0);

  /* "netCDF4/_netCDF4.pyx":3585
 *         """
 * 
 *         if not __has_ncfilter__:             # <<<<<<<<<<<<<<
 *             return __has_szip_support__
 * 
*/
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_has_ncfilter); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3585, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 3585, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = (!__pyx_t_2);
  if (__pyx_t_3) {

    /* "netCDF4/_netCDF4.pyx":3586
 * 
 *         if not __has_ncfilter__:
 *             return __has_szip_support__             # <<<<<<<<<<<<<<
 * 
 *         if not __has_szip_support__:
*/
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_has_szip_support); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3586, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "netCDF4/_netCDF4.pyx":3585
 *         """
 * 
 *         if not __has_ncfilter__:             # <<<<<<<<<<<<<<
 *             return __has_szip_support__
 * 
*/
  }

  /* "netCDF4/_netCDF4.pyx":3588
 *             return __has_szip_support__
 * 
 *         if not __has_szip_support__:             # <<<<<<<<<<<<<<
 *             return False
 * 
*/
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_has_szip_support); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3588, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 3588, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_2 = (!__pyx_t_3);
  if (__pyx_t_2) {

    /* "netCDF4/_netCDF4.pyx":3589
 * 
 *         if not __has_szip_support__:
 *             return False             # <<<<<<<<<<<<<<
 * 
 *         cdef int ierr
*/
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_False);
    __pyx_r = Py_False;
    goto __pyx_L0;

    /* "netCDF4/_netCDF4.pyx":3588
 *             return __has_szip_support__
 * 
 *         if not __has_szip_support__:             # <<<<<<<<<<<<<<
 *             return False
 * 
*/
  }

  /* "netCDF4/_netCDF4.pyx":3592
 * 
 *         cdef int ierr
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_inq_filter_avail(self._grpid, H5Z_FILTER_SZIP)
 *         return ierr == 0
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "netCDF4/_netCDF4.pyx":3593
 *         cdef int ierr
 *         with nogil:
 *             ierr = nc_inq_filter_avail(self._grpid, H5Z_FILTER_SZIP)             # <<<<<<<<<<<<<<
 *         return ierr == 0
 * 
*/
        __pyx_v_ierr = nc_inq_filter_avail(__pyx_v_self->_grpid, H5Z_FILTER_SZIP);
      }

      /* "netCDF4/_netCDF4.pyx":3592
 * 
 *         cdef int ierr
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_inq_filter_avail(self._grpid, H5Z_FILTER_SZIP)
 *         return ierr == 0
*/
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L7;
        }
        __pyx_L7:;
      }
  }

  /* "netCDF4/_netCDF4.pyx":3594
 *         with nogil:
 *             ierr = nc_inq_filter_avail(self._grpid, H5Z_FILTER_SZIP)
 *         return ierr == 0             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong((__pyx_v_ierr == 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3594, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":3580
 *         return ierr == 0
 * 
 *     def has_szip_filter(self):             # <<<<<<<<<<<<<<
 *         """**`has_szip_filter(self)`**
 *         returns True if szip compression filter is available
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.has_szip_filter", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":2293
 *     """
 *     cdef object __weakref__, _inmemory
 *     cdef public int _grpid             # <<<<<<<<<<<<<<
 *     cdef public int _isopen
 *     cdef Py_buffer _buffer
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_6_grpid_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_6_grpid_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_7netCDF4_8_netCDF4_7Dataset_6_grpid___get__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_6_grpid___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__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_PyLong_From_int(__pyx_v_self->_grpid); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2293, __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("netCDF4._netCDF4.Dataset._grpid.__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_7netCDF4_8_netCDF4_7Dataset_6_grpid_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_6_grpid_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_7netCDF4_8_netCDF4_7Dataset_6_grpid_2__set__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_6_grpid_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__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_PyLong_As_int(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2293, __pyx_L1_error)
  __pyx_v_self->_grpid = __pyx_t_1;

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("netCDF4._netCDF4.Dataset._grpid.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":2294
 *     cdef object __weakref__, _inmemory
 *     cdef public int _grpid
 *     cdef public int _isopen             # <<<<<<<<<<<<<<
 *     cdef Py_buffer _buffer
 *     cdef public groups, dimensions, variables, disk_format, path, parent,\
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_7_isopen_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_7_isopen_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_7netCDF4_8_netCDF4_7Dataset_7_isopen___get__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_7_isopen___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__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_PyLong_From_int(__pyx_v_self->_isopen); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2294, __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("netCDF4._netCDF4.Dataset._isopen.__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_7netCDF4_8_netCDF4_7Dataset_7_isopen_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_7_isopen_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_7netCDF4_8_netCDF4_7Dataset_7_isopen_2__set__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_7_isopen_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__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_PyLong_As_int(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2294, __pyx_L1_error)
  __pyx_v_self->_isopen = __pyx_t_1;

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("netCDF4._netCDF4.Dataset._isopen.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":2296
 *     cdef public int _isopen
 *     cdef Py_buffer _buffer
 *     cdef public groups, dimensions, variables, disk_format, path, parent,\             # <<<<<<<<<<<<<<
 *     file_format, data_model, cmptypes, vltypes, enumtypes,  __orthogonal_indexing__, \
 *     keepweakref, _ncstring_attrs__, auto_complex
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_6groups_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_6groups_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_7netCDF4_8_netCDF4_7Dataset_6groups___get__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_6groups___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->groups);
  __pyx_r = __pyx_v_self->groups;
  goto __pyx_L0;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_6groups_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_6groups_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_7netCDF4_8_netCDF4_7Dataset_6groups_2__set__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_6groups_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__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->groups);
  __Pyx_DECREF(__pyx_v_self->groups);
  __pyx_v_self->groups = __pyx_v_value;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_6groups_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_6groups_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_7netCDF4_8_netCDF4_7Dataset_6groups_4__del__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self));

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

static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_6groups_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__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->groups);
  __Pyx_DECREF(__pyx_v_self->groups);
  __pyx_v_self->groups = Py_None;

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

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_10dimensions_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_10dimensions_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_7netCDF4_8_netCDF4_7Dataset_10dimensions___get__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_10dimensions___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->dimensions);
  __pyx_r = __pyx_v_self->dimensions;
  goto __pyx_L0;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_10dimensions_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_10dimensions_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_7netCDF4_8_netCDF4_7Dataset_10dimensions_2__set__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_10dimensions_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__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->dimensions);
  __Pyx_DECREF(__pyx_v_self->dimensions);
  __pyx_v_self->dimensions = __pyx_v_value;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_10dimensions_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_10dimensions_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_7netCDF4_8_netCDF4_7Dataset_10dimensions_4__del__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self));

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

static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_10dimensions_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__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->dimensions);
  __Pyx_DECREF(__pyx_v_self->dimensions);
  __pyx_v_self->dimensions = Py_None;

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

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_9variables_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_9variables_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_7netCDF4_8_netCDF4_7Dataset_9variables___get__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_9variables___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->variables);
  __pyx_r = __pyx_v_self->variables;
  goto __pyx_L0;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_9variables_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_9variables_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_7netCDF4_8_netCDF4_7Dataset_9variables_2__set__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_9variables_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__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->variables);
  __Pyx_DECREF(__pyx_v_self->variables);
  __pyx_v_self->variables = __pyx_v_value;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_9variables_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_9variables_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_7netCDF4_8_netCDF4_7Dataset_9variables_4__del__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self));

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

static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_9variables_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__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->variables);
  __Pyx_DECREF(__pyx_v_self->variables);
  __pyx_v_self->variables = Py_None;

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

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_11disk_format_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_11disk_format_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_7netCDF4_8_netCDF4_7Dataset_11disk_format___get__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_11disk_format___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->disk_format);
  __pyx_r = __pyx_v_self->disk_format;
  goto __pyx_L0;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_11disk_format_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_11disk_format_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_7netCDF4_8_netCDF4_7Dataset_11disk_format_2__set__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_11disk_format_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__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->disk_format);
  __Pyx_DECREF(__pyx_v_self->disk_format);
  __pyx_v_self->disk_format = __pyx_v_value;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_11disk_format_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_11disk_format_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_7netCDF4_8_netCDF4_7Dataset_11disk_format_4__del__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self));

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

static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_11disk_format_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__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->disk_format);
  __Pyx_DECREF(__pyx_v_self->disk_format);
  __pyx_v_self->disk_format = Py_None;

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

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_4path_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_4path_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_7netCDF4_8_netCDF4_7Dataset_4path___get__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_4path___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->path);
  __pyx_r = __pyx_v_self->path;
  goto __pyx_L0;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_4path_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_4path_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_7netCDF4_8_netCDF4_7Dataset_4path_2__set__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_4path_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__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->path);
  __Pyx_DECREF(__pyx_v_self->path);
  __pyx_v_self->path = __pyx_v_value;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_4path_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_4path_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_7netCDF4_8_netCDF4_7Dataset_4path_4__del__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self));

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

static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_4path_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__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->path);
  __Pyx_DECREF(__pyx_v_self->path);
  __pyx_v_self->path = Py_None;

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

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_6parent_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_6parent_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_7netCDF4_8_netCDF4_7Dataset_6parent___get__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_6parent___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->parent);
  __pyx_r = __pyx_v_self->parent;
  goto __pyx_L0;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_6parent_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_6parent_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_7netCDF4_8_netCDF4_7Dataset_6parent_2__set__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_6parent_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__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->parent);
  __Pyx_DECREF(__pyx_v_self->parent);
  __pyx_v_self->parent = __pyx_v_value;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_6parent_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_6parent_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_7netCDF4_8_netCDF4_7Dataset_6parent_4__del__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self));

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

static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_6parent_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__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->parent);
  __Pyx_DECREF(__pyx_v_self->parent);
  __pyx_v_self->parent = Py_None;

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

/* "netCDF4/_netCDF4.pyx":2297
 *     cdef Py_buffer _buffer
 *     cdef public groups, dimensions, variables, disk_format, path, parent,\
 *     file_format, data_model, cmptypes, vltypes, enumtypes,  __orthogonal_indexing__, \             # <<<<<<<<<<<<<<
 *     keepweakref, _ncstring_attrs__, auto_complex
 * 
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_11file_format_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_11file_format_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_7netCDF4_8_netCDF4_7Dataset_11file_format___get__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_11file_format___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->file_format);
  __pyx_r = __pyx_v_self->file_format;
  goto __pyx_L0;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_11file_format_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_11file_format_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_7netCDF4_8_netCDF4_7Dataset_11file_format_2__set__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_11file_format_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__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->file_format);
  __Pyx_DECREF(__pyx_v_self->file_format);
  __pyx_v_self->file_format = __pyx_v_value;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_11file_format_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_11file_format_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_7netCDF4_8_netCDF4_7Dataset_11file_format_4__del__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self));

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

static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_11file_format_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__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->file_format);
  __Pyx_DECREF(__pyx_v_self->file_format);
  __pyx_v_self->file_format = Py_None;

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

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_10data_model_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_10data_model_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_7netCDF4_8_netCDF4_7Dataset_10data_model___get__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_10data_model___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->data_model);
  __pyx_r = __pyx_v_self->data_model;
  goto __pyx_L0;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_10data_model_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_10data_model_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_7netCDF4_8_netCDF4_7Dataset_10data_model_2__set__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_10data_model_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__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->data_model);
  __Pyx_DECREF(__pyx_v_self->data_model);
  __pyx_v_self->data_model = __pyx_v_value;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_10data_model_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_10data_model_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_7netCDF4_8_netCDF4_7Dataset_10data_model_4__del__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self));

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

static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_10data_model_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__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->data_model);
  __Pyx_DECREF(__pyx_v_self->data_model);
  __pyx_v_self->data_model = Py_None;

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

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_8cmptypes_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_8cmptypes_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_7netCDF4_8_netCDF4_7Dataset_8cmptypes___get__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_8cmptypes___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->cmptypes);
  __pyx_r = __pyx_v_self->cmptypes;
  goto __pyx_L0;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_8cmptypes_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_8cmptypes_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_7netCDF4_8_netCDF4_7Dataset_8cmptypes_2__set__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_8cmptypes_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__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->cmptypes);
  __Pyx_DECREF(__pyx_v_self->cmptypes);
  __pyx_v_self->cmptypes = __pyx_v_value;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_8cmptypes_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_8cmptypes_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_7netCDF4_8_netCDF4_7Dataset_8cmptypes_4__del__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self));

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

static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_8cmptypes_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__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->cmptypes);
  __Pyx_DECREF(__pyx_v_self->cmptypes);
  __pyx_v_self->cmptypes = Py_None;

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

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_7vltypes_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_7vltypes_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_7netCDF4_8_netCDF4_7Dataset_7vltypes___get__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_7vltypes___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->vltypes);
  __pyx_r = __pyx_v_self->vltypes;
  goto __pyx_L0;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_7vltypes_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_7vltypes_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_7netCDF4_8_netCDF4_7Dataset_7vltypes_2__set__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_7vltypes_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__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->vltypes);
  __Pyx_DECREF(__pyx_v_self->vltypes);
  __pyx_v_self->vltypes = __pyx_v_value;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_7vltypes_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_7vltypes_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_7netCDF4_8_netCDF4_7Dataset_7vltypes_4__del__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self));

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

static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_7vltypes_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__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->vltypes);
  __Pyx_DECREF(__pyx_v_self->vltypes);
  __pyx_v_self->vltypes = Py_None;

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

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_9enumtypes_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_9enumtypes_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_7netCDF4_8_netCDF4_7Dataset_9enumtypes___get__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_9enumtypes___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->enumtypes);
  __pyx_r = __pyx_v_self->enumtypes;
  goto __pyx_L0;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_9enumtypes_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_9enumtypes_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_7netCDF4_8_netCDF4_7Dataset_9enumtypes_2__set__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_9enumtypes_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__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->enumtypes);
  __Pyx_DECREF(__pyx_v_self->enumtypes);
  __pyx_v_self->enumtypes = __pyx_v_value;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_9enumtypes_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_9enumtypes_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_7netCDF4_8_netCDF4_7Dataset_9enumtypes_4__del__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self));

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

static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_9enumtypes_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__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->enumtypes);
  __Pyx_DECREF(__pyx_v_self->enumtypes);
  __pyx_v_self->enumtypes = Py_None;

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

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_23__orthogonal_indexing___1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_23__orthogonal_indexing___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_7netCDF4_8_netCDF4_7Dataset_23__orthogonal_indexing_____get__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_23__orthogonal_indexing_____get__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->__pyx___orthogonal_indexing__);
  __pyx_r = __pyx_v_self->__pyx___orthogonal_indexing__;
  goto __pyx_L0;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_23__orthogonal_indexing___3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_23__orthogonal_indexing___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_7netCDF4_8_netCDF4_7Dataset_23__orthogonal_indexing___2__set__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_23__orthogonal_indexing___2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__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->__pyx___orthogonal_indexing__);
  __Pyx_DECREF(__pyx_v_self->__pyx___orthogonal_indexing__);
  __pyx_v_self->__pyx___orthogonal_indexing__ = __pyx_v_value;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_23__orthogonal_indexing___5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_23__orthogonal_indexing___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_7netCDF4_8_netCDF4_7Dataset_23__orthogonal_indexing___4__del__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self));

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

static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_23__orthogonal_indexing___4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__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->__pyx___orthogonal_indexing__);
  __Pyx_DECREF(__pyx_v_self->__pyx___orthogonal_indexing__);
  __pyx_v_self->__pyx___orthogonal_indexing__ = Py_None;

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

/* "netCDF4/_netCDF4.pyx":2298
 *     cdef public groups, dimensions, variables, disk_format, path, parent,\
 *     file_format, data_model, cmptypes, vltypes, enumtypes,  __orthogonal_indexing__, \
 *     keepweakref, _ncstring_attrs__, auto_complex             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self, filename, mode='r', clobber=True, format='NETCDF4',
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_11keepweakref_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_11keepweakref_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_7netCDF4_8_netCDF4_7Dataset_11keepweakref___get__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_11keepweakref___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->keepweakref);
  __pyx_r = __pyx_v_self->keepweakref;
  goto __pyx_L0;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_11keepweakref_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_11keepweakref_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_7netCDF4_8_netCDF4_7Dataset_11keepweakref_2__set__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_11keepweakref_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__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->keepweakref);
  __Pyx_DECREF(__pyx_v_self->keepweakref);
  __pyx_v_self->keepweakref = __pyx_v_value;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_11keepweakref_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_11keepweakref_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_7netCDF4_8_netCDF4_7Dataset_11keepweakref_4__del__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self));

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

static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_11keepweakref_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__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->keepweakref);
  __Pyx_DECREF(__pyx_v_self->keepweakref);
  __pyx_v_self->keepweakref = Py_None;

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

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_17_ncstring_attrs___1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_17_ncstring_attrs___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_7netCDF4_8_netCDF4_7Dataset_17_ncstring_attrs_____get__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_17_ncstring_attrs_____get__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_ncstring_attrs__);
  __pyx_r = __pyx_v_self->_ncstring_attrs__;
  goto __pyx_L0;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_17_ncstring_attrs___3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_17_ncstring_attrs___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_7netCDF4_8_netCDF4_7Dataset_17_ncstring_attrs___2__set__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_17_ncstring_attrs___2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__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->_ncstring_attrs__);
  __Pyx_DECREF(__pyx_v_self->_ncstring_attrs__);
  __pyx_v_self->_ncstring_attrs__ = __pyx_v_value;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_17_ncstring_attrs___5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_17_ncstring_attrs___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_7netCDF4_8_netCDF4_7Dataset_17_ncstring_attrs___4__del__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self));

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

static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_17_ncstring_attrs___4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__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->_ncstring_attrs__);
  __Pyx_DECREF(__pyx_v_self->_ncstring_attrs__);
  __pyx_v_self->_ncstring_attrs__ = Py_None;

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

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_12auto_complex_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_12auto_complex_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_7netCDF4_8_netCDF4_7Dataset_12auto_complex___get__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_12auto_complex___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->auto_complex);
  __pyx_r = __pyx_v_self->auto_complex;
  goto __pyx_L0;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_12auto_complex_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_12auto_complex_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_7netCDF4_8_netCDF4_7Dataset_12auto_complex_2__set__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_12auto_complex_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__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->auto_complex);
  __Pyx_DECREF(__pyx_v_self->auto_complex);
  __pyx_v_self->auto_complex = __pyx_v_value;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_12auto_complex_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_12auto_complex_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_7netCDF4_8_netCDF4_7Dataset_12auto_complex_4__del__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self));

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

static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_12auto_complex_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__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->auto_complex);
  __Pyx_DECREF(__pyx_v_self->auto_complex);
  __pyx_v_self->auto_complex = Py_None;

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

/* "netCDF4/_netCDF4.pyx":3613
 * **`name`**: String describing the group name.
 *     """
 *     def __init__(self, parent, name, **kwargs):             # <<<<<<<<<<<<<<
 *         """
 *         **`__init__(self, parent, name)`**
*/

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_5Group_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
PyDoc_STRVAR(__pyx_doc_7netCDF4_8_netCDF4_5Group___init__, "\n        **`__init__(self, parent, name)`**\n        `Group` constructor.\n\n        **`parent`**: `Group` instance for the parent group.  If being created\n        in the root group, use a `Dataset` instance.\n\n        **`name`**: - Name of the group.\n\n        ***Note***: `Group` instances should be created using the\n        `Dataset.createGroup` method of a `Dataset` instance, or\n        another `Group` instance, not using this class directly.\n        ");
#if CYTHON_UPDATE_DESCRIPTOR_DOC
struct wrapperbase __pyx_wrapperbase_7netCDF4_8_netCDF4_5Group___init__;
#endif
static int __pyx_pw_7netCDF4_8_netCDF4_5Group_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_parent = 0;
  PyObject *__pyx_v_name = 0;
  PyObject *__pyx_v_kwargs = 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;
  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);
  __pyx_v_kwargs = PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return -1;
  __Pyx_GOTREF(__pyx_v_kwargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_parent,&__pyx_mstate_global->__pyx_n_u_name,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 3613, __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(0, 3613, __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(0, 3613, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        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_kwargs, values, kwd_pos_args, __pyx_kwds_len, "__init__", 1) < (0)) __PYX_ERR(0, 3613, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, i); __PYX_ERR(0, 3613, __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(0, 3613, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 3613, __pyx_L3_error)
    }
    __pyx_v_parent = values[0];
    __pyx_v_name = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 3613, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (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_kwargs); __pyx_v_kwargs = 0;
  __Pyx_AddTraceback("netCDF4._netCDF4.Group.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_5Group___init__(((struct __pyx_obj_7netCDF4_8_netCDF4_Group *)__pyx_v_self), __pyx_v_parent, __pyx_v_name, __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_DECREF(__pyx_v_kwargs);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7netCDF4_8_netCDF4_5Group___init__(struct __pyx_obj_7netCDF4_8_netCDF4_Group *__pyx_v_self, PyObject *__pyx_v_parent, PyObject *__pyx_v_name, PyObject *__pyx_v_kwargs) {
  char *__pyx_v_groupname;
  int __pyx_v_ierr;
  int __pyx_v_grpid;
  PyObject *__pyx_v_bytestr = NULL;
  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;
  int __pyx_t_6;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  PyObject *(*__pyx_t_9)(PyObject *);
  struct __pyx_opt_args_7netCDF4_8_netCDF4__get_vars __pyx_t_10;
  char *__pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "netCDF4/_netCDF4.pyx":3630
 *         cdef int ierr, grpid
 *         # flag to indicate that Variables in this Group support orthogonal indexing.
 *         self.__orthogonal_indexing__ = True             # <<<<<<<<<<<<<<
 *         # set data_model and file_format attributes.
 *         self.data_model = parent.data_model
*/
  __Pyx_INCREF(Py_True);
  __Pyx_GIVEREF(Py_True);
  __Pyx_GOTREF(__pyx_v_self->__pyx_base.__pyx___orthogonal_indexing__);
  __Pyx_DECREF(__pyx_v_self->__pyx_base.__pyx___orthogonal_indexing__);
  __pyx_v_self->__pyx_base.__pyx___orthogonal_indexing__ = Py_True;

  /* "netCDF4/_netCDF4.pyx":3632
 *         self.__orthogonal_indexing__ = True
 *         # set data_model and file_format attributes.
 *         self.data_model = parent.data_model             # <<<<<<<<<<<<<<
 *         self.file_format = parent.file_format
 *         # full path to Group.
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_parent, __pyx_mstate_global->__pyx_n_u_data_model); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3632, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->__pyx_base.data_model);
  __Pyx_DECREF(__pyx_v_self->__pyx_base.data_model);
  __pyx_v_self->__pyx_base.data_model = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":3633
 *         # set data_model and file_format attributes.
 *         self.data_model = parent.data_model
 *         self.file_format = parent.file_format             # <<<<<<<<<<<<<<
 *         # full path to Group.
 *         self.path = posixpath.join(parent.path, name)
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_parent, __pyx_mstate_global->__pyx_n_u_file_format); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3633, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->__pyx_base.file_format);
  __Pyx_DECREF(__pyx_v_self->__pyx_base.file_format);
  __pyx_v_self->__pyx_base.file_format = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":3635
 *         self.file_format = parent.file_format
 *         # full path to Group.
 *         self.path = posixpath.join(parent.path, name)             # <<<<<<<<<<<<<<
 *         # parent group.
 *         self.parent = parent
*/
  __pyx_t_2 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_posixpath); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3635, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_join); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3635, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_parent, __pyx_mstate_global->__pyx_n_u_path); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3635, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(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_5 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_t_3, __pyx_v_name};
    __pyx_t_1 = __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_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3635, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->__pyx_base.path);
  __Pyx_DECREF(__pyx_v_self->__pyx_base.path);
  __pyx_v_self->__pyx_base.path = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":3637
 *         self.path = posixpath.join(parent.path, name)
 *         # parent group.
 *         self.parent = parent             # <<<<<<<<<<<<<<
 *         # propagate weak reference setting from parent.
 *         self.keepweakref = parent.keepweakref
*/
  __Pyx_INCREF(__pyx_v_parent);
  __Pyx_GIVEREF(__pyx_v_parent);
  __Pyx_GOTREF(__pyx_v_self->__pyx_base.parent);
  __Pyx_DECREF(__pyx_v_self->__pyx_base.parent);
  __pyx_v_self->__pyx_base.parent = __pyx_v_parent;

  /* "netCDF4/_netCDF4.pyx":3639
 *         self.parent = parent
 *         # propagate weak reference setting from parent.
 *         self.keepweakref = parent.keepweakref             # <<<<<<<<<<<<<<
 *         # propagate _ncstring_attrs__ setting from parent.
 *         self._ncstring_attrs__ = parent._ncstring_attrs__
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_parent, __pyx_mstate_global->__pyx_n_u_keepweakref); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3639, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->__pyx_base.keepweakref);
  __Pyx_DECREF(__pyx_v_self->__pyx_base.keepweakref);
  __pyx_v_self->__pyx_base.keepweakref = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":3641
 *         self.keepweakref = parent.keepweakref
 *         # propagate _ncstring_attrs__ setting from parent.
 *         self._ncstring_attrs__ = parent._ncstring_attrs__             # <<<<<<<<<<<<<<
 *         self.auto_complex = parent.auto_complex
 * 
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_parent, __pyx_mstate_global->__pyx_n_u_ncstring_attrs); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3641, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->__pyx_base._ncstring_attrs__);
  __Pyx_DECREF(__pyx_v_self->__pyx_base._ncstring_attrs__);
  __pyx_v_self->__pyx_base._ncstring_attrs__ = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":3642
 *         # propagate _ncstring_attrs__ setting from parent.
 *         self._ncstring_attrs__ = parent._ncstring_attrs__
 *         self.auto_complex = parent.auto_complex             # <<<<<<<<<<<<<<
 * 
 *         if 'id' in kwargs:
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_parent, __pyx_mstate_global->__pyx_n_u_auto_complex); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3642, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->__pyx_base.auto_complex);
  __Pyx_DECREF(__pyx_v_self->__pyx_base.auto_complex);
  __pyx_v_self->__pyx_base.auto_complex = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":3644
 *         self.auto_complex = parent.auto_complex
 * 
 *         if 'id' in kwargs:             # <<<<<<<<<<<<<<
 *             self._grpid = kwargs['id']
 *             # get compound, vlen and enum types in this Group.
*/
  __pyx_t_6 = (__Pyx_PyDict_ContainsTF(__pyx_mstate_global->__pyx_n_u_id, __pyx_v_kwargs, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 3644, __pyx_L1_error)
  if (__pyx_t_6) {

    /* "netCDF4/_netCDF4.pyx":3645
 * 
 *         if 'id' in kwargs:
 *             self._grpid = kwargs['id']             # <<<<<<<<<<<<<<
 *             # get compound, vlen and enum types in this Group.
 *             self.cmptypes, self.vltypes, self.enumtypes = _get_types(self)
*/
    __pyx_t_1 = __Pyx_PyDict_GetItem(__pyx_v_kwargs, __pyx_mstate_global->__pyx_n_u_id); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3645, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_7 = __Pyx_PyLong_As_int(__pyx_t_1); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3645, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_v_self->__pyx_base._grpid = __pyx_t_7;

    /* "netCDF4/_netCDF4.pyx":3647
 *             self._grpid = kwargs['id']
 *             # get compound, vlen and enum types in this Group.
 *             self.cmptypes, self.vltypes, self.enumtypes = _get_types(self)             # <<<<<<<<<<<<<<
 *             # get dimensions in this Group.
 *             self.dimensions = _get_dims(self)
*/
    __pyx_t_1 = __pyx_f_7netCDF4_8_netCDF4__get_types(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3647, __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 != 3)) {
        if (size > 3) __Pyx_RaiseTooManyValuesError(3);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(0, 3647, __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_2 = PyTuple_GET_ITEM(sequence, 2);
        __Pyx_INCREF(__pyx_t_2);
      } else {
        __pyx_t_4 = __Pyx_PyList_GetItemRefFast(sequence, 0, __Pyx_ReferenceSharing_SharedReference);
        if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3647, __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(0, 3647, __pyx_L1_error)
        __Pyx_XGOTREF(__pyx_t_3);
        __pyx_t_2 = __Pyx_PyList_GetItemRefFast(sequence, 2, __Pyx_ReferenceSharing_SharedReference);
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3647, __pyx_L1_error)
        __Pyx_XGOTREF(__pyx_t_2);
      }
      #else
      __pyx_t_4 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3647, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_3 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3647, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_2 = __Pyx_PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3647, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_8 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3647, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_9 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_8);
      index = 0; __pyx_t_4 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_4)) goto __pyx_L4_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_4);
      index = 1; __pyx_t_3 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_3)) goto __pyx_L4_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_3);
      index = 2; __pyx_t_2 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_2)) goto __pyx_L4_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_2);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_8), 3) < (0)) __PYX_ERR(0, 3647, __pyx_L1_error)
      __pyx_t_9 = NULL;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      goto __pyx_L5_unpacking_done;
      __pyx_L4_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __pyx_t_9 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(0, 3647, __pyx_L1_error)
      __pyx_L5_unpacking_done:;
    }
    __Pyx_GIVEREF(__pyx_t_4);
    __Pyx_GOTREF(__pyx_v_self->__pyx_base.cmptypes);
    __Pyx_DECREF(__pyx_v_self->__pyx_base.cmptypes);
    __pyx_v_self->__pyx_base.cmptypes = __pyx_t_4;
    __pyx_t_4 = 0;
    __Pyx_GIVEREF(__pyx_t_3);
    __Pyx_GOTREF(__pyx_v_self->__pyx_base.vltypes);
    __Pyx_DECREF(__pyx_v_self->__pyx_base.vltypes);
    __pyx_v_self->__pyx_base.vltypes = __pyx_t_3;
    __pyx_t_3 = 0;
    __Pyx_GIVEREF(__pyx_t_2);
    __Pyx_GOTREF(__pyx_v_self->__pyx_base.enumtypes);
    __Pyx_DECREF(__pyx_v_self->__pyx_base.enumtypes);
    __pyx_v_self->__pyx_base.enumtypes = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "netCDF4/_netCDF4.pyx":3649
 *             self.cmptypes, self.vltypes, self.enumtypes = _get_types(self)
 *             # get dimensions in this Group.
 *             self.dimensions = _get_dims(self)             # <<<<<<<<<<<<<<
 *             # get variables in this Group.
 *             self.variables = _get_vars(self, self.auto_complex)
*/
    __pyx_t_1 = __pyx_f_7netCDF4_8_netCDF4__get_dims(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3649, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __Pyx_GOTREF(__pyx_v_self->__pyx_base.dimensions);
    __Pyx_DECREF(__pyx_v_self->__pyx_base.dimensions);
    __pyx_v_self->__pyx_base.dimensions = __pyx_t_1;
    __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":3651
 *             self.dimensions = _get_dims(self)
 *             # get variables in this Group.
 *             self.variables = _get_vars(self, self.auto_complex)             # <<<<<<<<<<<<<<
 *             # get groups in this Group.
 *             self.groups = _get_grps(self)
*/
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_self->__pyx_base.auto_complex); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3651, __pyx_L1_error)
    __pyx_t_10.__pyx_n = 1;
    __pyx_t_10.auto_complex = __pyx_t_6;
    __pyx_t_1 = __pyx_f_7netCDF4_8_netCDF4__get_vars(((PyObject *)__pyx_v_self), &__pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3651, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __Pyx_GOTREF(__pyx_v_self->__pyx_base.variables);
    __Pyx_DECREF(__pyx_v_self->__pyx_base.variables);
    __pyx_v_self->__pyx_base.variables = __pyx_t_1;
    __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":3653
 *             self.variables = _get_vars(self, self.auto_complex)
 *             # get groups in this Group.
 *             self.groups = _get_grps(self)             # <<<<<<<<<<<<<<
 *         else:
 *             bytestr = _strencode(name)
*/
    __pyx_t_1 = __pyx_f_7netCDF4_8_netCDF4__get_grps(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3653, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __Pyx_GOTREF(__pyx_v_self->__pyx_base.groups);
    __Pyx_DECREF(__pyx_v_self->__pyx_base.groups);
    __pyx_v_self->__pyx_base.groups = __pyx_t_1;
    __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":3644
 *         self.auto_complex = parent.auto_complex
 * 
 *         if 'id' in kwargs:             # <<<<<<<<<<<<<<
 *             self._grpid = kwargs['id']
 *             # get compound, vlen and enum types in this Group.
*/
    goto __pyx_L3;
  }

  /* "netCDF4/_netCDF4.pyx":3655
 *             self.groups = _get_grps(self)
 *         else:
 *             bytestr = _strencode(name)             # <<<<<<<<<<<<<<
 *             groupname = bytestr
 *             grpid = parent._grpid
*/
  /*else*/ {
    __pyx_t_1 = __pyx_f_7netCDF4_8_netCDF4__strencode(__pyx_v_name, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3655, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_v_bytestr = __pyx_t_1;
    __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":3656
 *         else:
 *             bytestr = _strencode(name)
 *             groupname = bytestr             # <<<<<<<<<<<<<<
 *             grpid = parent._grpid
 *             with nogil:
*/
    __pyx_t_11 = __Pyx_PyObject_AsWritableString(__pyx_v_bytestr); if (unlikely((!__pyx_t_11) && PyErr_Occurred())) __PYX_ERR(0, 3656, __pyx_L1_error)
    __pyx_v_groupname = __pyx_t_11;

    /* "netCDF4/_netCDF4.pyx":3657
 *             bytestr = _strencode(name)
 *             groupname = bytestr
 *             grpid = parent._grpid             # <<<<<<<<<<<<<<
 *             with nogil:
 *                 ierr = nc_def_grp(grpid, groupname, &self._grpid)
*/
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_parent, __pyx_mstate_global->__pyx_n_u_grpid); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3657, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_7 = __Pyx_PyLong_As_int(__pyx_t_1); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3657, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_v_grpid = __pyx_t_7;

    /* "netCDF4/_netCDF4.pyx":3658
 *             groupname = bytestr
 *             grpid = parent._grpid
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 ierr = nc_def_grp(grpid, groupname, &self._grpid)
 *             _ensure_nc_success(ierr)
*/
    {
        PyThreadState * _save;
        _save = PyEval_SaveThread();
        __Pyx_FastGIL_Remember();
        /*try:*/ {

          /* "netCDF4/_netCDF4.pyx":3659
 *             grpid = parent._grpid
 *             with nogil:
 *                 ierr = nc_def_grp(grpid, groupname, &self._grpid)             # <<<<<<<<<<<<<<
 *             _ensure_nc_success(ierr)
 *             self.cmptypes = dict()
*/
          __pyx_v_ierr = nc_def_grp(__pyx_v_grpid, __pyx_v_groupname, (&__pyx_v_self->__pyx_base._grpid));
        }

        /* "netCDF4/_netCDF4.pyx":3658
 *             groupname = bytestr
 *             grpid = parent._grpid
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 ierr = nc_def_grp(grpid, groupname, &self._grpid)
 *             _ensure_nc_success(ierr)
*/
        /*finally:*/ {
          /*normal exit:*/{
            __Pyx_FastGIL_Forget();
            PyEval_RestoreThread(_save);
            goto __pyx_L8;
          }
          __pyx_L8:;
        }
    }

    /* "netCDF4/_netCDF4.pyx":3660
 *             with nogil:
 *                 ierr = nc_def_grp(grpid, groupname, &self._grpid)
 *             _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 *             self.cmptypes = dict()
 *             self.vltypes = dict()
*/
    __pyx_t_2 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3660, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3660, __pyx_L1_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[2] = {__pyx_t_2, __pyx_t_4};
      __pyx_t_1 = __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_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(0, 3660, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":3661
 *                 ierr = nc_def_grp(grpid, groupname, &self._grpid)
 *             _ensure_nc_success(ierr)
 *             self.cmptypes = dict()             # <<<<<<<<<<<<<<
 *             self.vltypes = dict()
 *             self.enumtypes = dict()
*/
    __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3661, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __Pyx_GOTREF(__pyx_v_self->__pyx_base.cmptypes);
    __Pyx_DECREF(__pyx_v_self->__pyx_base.cmptypes);
    __pyx_v_self->__pyx_base.cmptypes = __pyx_t_1;
    __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":3662
 *             _ensure_nc_success(ierr)
 *             self.cmptypes = dict()
 *             self.vltypes = dict()             # <<<<<<<<<<<<<<
 *             self.enumtypes = dict()
 *             self.dimensions = dict()
*/
    __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3662, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __Pyx_GOTREF(__pyx_v_self->__pyx_base.vltypes);
    __Pyx_DECREF(__pyx_v_self->__pyx_base.vltypes);
    __pyx_v_self->__pyx_base.vltypes = __pyx_t_1;
    __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":3663
 *             self.cmptypes = dict()
 *             self.vltypes = dict()
 *             self.enumtypes = dict()             # <<<<<<<<<<<<<<
 *             self.dimensions = dict()
 *             self.variables = dict()
*/
    __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3663, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __Pyx_GOTREF(__pyx_v_self->__pyx_base.enumtypes);
    __Pyx_DECREF(__pyx_v_self->__pyx_base.enumtypes);
    __pyx_v_self->__pyx_base.enumtypes = __pyx_t_1;
    __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":3664
 *             self.vltypes = dict()
 *             self.enumtypes = dict()
 *             self.dimensions = dict()             # <<<<<<<<<<<<<<
 *             self.variables = dict()
 *             self.groups = dict()
*/
    __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3664, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __Pyx_GOTREF(__pyx_v_self->__pyx_base.dimensions);
    __Pyx_DECREF(__pyx_v_self->__pyx_base.dimensions);
    __pyx_v_self->__pyx_base.dimensions = __pyx_t_1;
    __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":3665
 *             self.enumtypes = dict()
 *             self.dimensions = dict()
 *             self.variables = dict()             # <<<<<<<<<<<<<<
 *             self.groups = dict()
 * 
*/
    __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3665, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __Pyx_GOTREF(__pyx_v_self->__pyx_base.variables);
    __Pyx_DECREF(__pyx_v_self->__pyx_base.variables);
    __pyx_v_self->__pyx_base.variables = __pyx_t_1;
    __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":3666
 *             self.dimensions = dict()
 *             self.variables = dict()
 *             self.groups = dict()             # <<<<<<<<<<<<<<
 * 
 * 
*/
    __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3666, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __Pyx_GOTREF(__pyx_v_self->__pyx_base.groups);
    __Pyx_DECREF(__pyx_v_self->__pyx_base.groups);
    __pyx_v_self->__pyx_base.groups = __pyx_t_1;
    __pyx_t_1 = 0;
  }
  __pyx_L3:;

  /* "netCDF4/_netCDF4.pyx":3613
 * **`name`**: String describing the group name.
 *     """
 *     def __init__(self, parent, name, **kwargs):             # <<<<<<<<<<<<<<
 *         """
 *         **`__init__(self, parent, name)`**
*/

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("netCDF4._netCDF4.Group.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_bytestr);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":3669
 * 
 * 
 *     def close(self):             # <<<<<<<<<<<<<<
 *         """
 * **`close(self)`**
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_5Group_3close(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7netCDF4_8_netCDF4_5Group_2close, "\n**`close(self)`**\n\noverrides `Dataset` close method which does not apply to `Group`\ninstances, raises OSError.");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_5Group_3close = {"close", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_5Group_3close, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_5Group_2close};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_5Group_3close(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_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_7netCDF4_8_netCDF4_5Group_2close(((struct __pyx_obj_7netCDF4_8_netCDF4_Group *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_5Group_2close(CYTHON_UNUSED struct __pyx_obj_7netCDF4_8_netCDF4_Group *__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("close", 0);

  /* "netCDF4/_netCDF4.pyx":3675
 * overrides `Dataset` close method which does not apply to `Group`
 * instances, raises OSError."""
 *         raise OSError('cannot close a `Group` (only applies to Dataset)')             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_t_2 = NULL;
  __pyx_t_3 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_cannot_close_a_Group_only_applie};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_OSError)), __pyx_callargs+__pyx_t_3, (2-__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(0, 3675, __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(0, 3675, __pyx_L1_error)

  /* "netCDF4/_netCDF4.pyx":3669
 * 
 * 
 *     def close(self):             # <<<<<<<<<<<<<<
 *         """
 * **`close(self)`**
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("netCDF4._netCDF4.Group.close", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":3699
 *     cdef public _data_model, _name, _grp
 * 
 *     def __init__(self, grp, name, size=None, **kwargs):             # <<<<<<<<<<<<<<
 *         """
 *         **`__init__(self, group, name, size=None)`**
*/

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_9Dimension_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
PyDoc_STRVAR(__pyx_doc_7netCDF4_8_netCDF4_9Dimension___init__, "\n        **`__init__(self, group, name, size=None)`**\n\n        `Dimension` constructor.\n\n        **`group`**: `Group` instance to associate with dimension.\n\n        **`name`**: Name of the dimension.\n\n        **`size`**: Size of the dimension. `None` or 0 means unlimited. (Default `None`).\n\n        ***Note***: `Dimension` instances should be created using the\n        `Dataset.createDimension` method of a `Group` or\n        `Dataset` instance, not using `Dimension.__init__` directly.\n        ");
#if CYTHON_UPDATE_DESCRIPTOR_DOC
struct wrapperbase __pyx_wrapperbase_7netCDF4_8_netCDF4_9Dimension___init__;
#endif
static int __pyx_pw_7netCDF4_8_netCDF4_9Dimension_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_grp = 0;
  PyObject *__pyx_v_name = 0;
  PyObject *__pyx_v_size = 0;
  PyObject *__pyx_v_kwargs = 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("__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);
  __pyx_v_kwargs = PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return -1;
  __Pyx_GOTREF(__pyx_v_kwargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_grp,&__pyx_mstate_global->__pyx_n_u_name,&__pyx_mstate_global->__pyx_n_u_size,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 3699, __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(0, 3699, __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(0, 3699, __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(0, 3699, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        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_kwargs, values, kwd_pos_args, __pyx_kwds_len, "__init__", 1) < (0)) __PYX_ERR(0, 3699, __pyx_L3_error)
      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("__init__", 0, 2, 3, i); __PYX_ERR(0, 3699, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_VARARGS(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 3699, __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(0, 3699, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 3699, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None));
    }
    __pyx_v_grp = values[0];
    __pyx_v_name = values[1];
    __pyx_v_size = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 3, __pyx_nargs); __PYX_ERR(0, 3699, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (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_kwargs); __pyx_v_kwargs = 0;
  __Pyx_AddTraceback("netCDF4._netCDF4.Dimension.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_9Dimension___init__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *)__pyx_v_self), __pyx_v_grp, __pyx_v_name, __pyx_v_size, __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_DECREF(__pyx_v_kwargs);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7netCDF4_8_netCDF4_9Dimension___init__(struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *__pyx_v_self, PyObject *__pyx_v_grp, PyObject *__pyx_v_name, PyObject *__pyx_v_size, PyObject *__pyx_v_kwargs) {
  int __pyx_v_ierr;
  char *__pyx_v_dimname;
  size_t __pyx_v_lendim;
  PyObject *__pyx_v_bytestr = NULL;
  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;
  char *__pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "netCDF4/_netCDF4.pyx":3718
 *         cdef char *dimname
 *         cdef size_t lendim
 *         self._grpid = grp._grpid             # <<<<<<<<<<<<<<
 *         # make a weakref to group to avoid circular ref (issue 218)
 *         # keep strong reference the default behaviour (issue 251)
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_mstate_global->__pyx_n_u_grpid); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3718, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyLong_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3718, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_self->_grpid = __pyx_t_2;

  /* "netCDF4/_netCDF4.pyx":3721
 *         # make a weakref to group to avoid circular ref (issue 218)
 *         # keep strong reference the default behaviour (issue 251)
 *         if grp.keepweakref:             # <<<<<<<<<<<<<<
 *             self._grp = weakref.proxy(grp)
 *         else:
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_mstate_global->__pyx_n_u_keepweakref); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3721, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 3721, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_3) {

    /* "netCDF4/_netCDF4.pyx":3722
 *         # keep strong reference the default behaviour (issue 251)
 *         if grp.keepweakref:
 *             self._grp = weakref.proxy(grp)             # <<<<<<<<<<<<<<
 *         else:
 *             self._grp = grp
*/
    __pyx_t_4 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_weakref); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3722, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_proxy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3722, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_7 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(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_7 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_grp};
      __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_6, __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_1)) __PYX_ERR(0, 3722, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_GIVEREF(__pyx_t_1);
    __Pyx_GOTREF(__pyx_v_self->_grp);
    __Pyx_DECREF(__pyx_v_self->_grp);
    __pyx_v_self->_grp = __pyx_t_1;
    __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":3721
 *         # make a weakref to group to avoid circular ref (issue 218)
 *         # keep strong reference the default behaviour (issue 251)
 *         if grp.keepweakref:             # <<<<<<<<<<<<<<
 *             self._grp = weakref.proxy(grp)
 *         else:
*/
    goto __pyx_L3;
  }

  /* "netCDF4/_netCDF4.pyx":3724
 *             self._grp = weakref.proxy(grp)
 *         else:
 *             self._grp = grp             # <<<<<<<<<<<<<<
 *         self._data_model = grp.data_model
 *         self._name = name
*/
  /*else*/ {
    __Pyx_INCREF(__pyx_v_grp);
    __Pyx_GIVEREF(__pyx_v_grp);
    __Pyx_GOTREF(__pyx_v_self->_grp);
    __Pyx_DECREF(__pyx_v_self->_grp);
    __pyx_v_self->_grp = __pyx_v_grp;
  }
  __pyx_L3:;

  /* "netCDF4/_netCDF4.pyx":3725
 *         else:
 *             self._grp = grp
 *         self._data_model = grp.data_model             # <<<<<<<<<<<<<<
 *         self._name = name
 *         if 'id' in kwargs:
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_mstate_global->__pyx_n_u_data_model); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3725, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_data_model);
  __Pyx_DECREF(__pyx_v_self->_data_model);
  __pyx_v_self->_data_model = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":3726
 *             self._grp = grp
 *         self._data_model = grp.data_model
 *         self._name = name             # <<<<<<<<<<<<<<
 *         if 'id' in kwargs:
 *             self._dimid = kwargs['id']
*/
  __Pyx_INCREF(__pyx_v_name);
  __Pyx_GIVEREF(__pyx_v_name);
  __Pyx_GOTREF(__pyx_v_self->_name);
  __Pyx_DECREF(__pyx_v_self->_name);
  __pyx_v_self->_name = __pyx_v_name;

  /* "netCDF4/_netCDF4.pyx":3727
 *         self._data_model = grp.data_model
 *         self._name = name
 *         if 'id' in kwargs:             # <<<<<<<<<<<<<<
 *             self._dimid = kwargs['id']
 *         else:
*/
  __pyx_t_3 = (__Pyx_PyDict_ContainsTF(__pyx_mstate_global->__pyx_n_u_id, __pyx_v_kwargs, Py_EQ)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 3727, __pyx_L1_error)
  if (__pyx_t_3) {

    /* "netCDF4/_netCDF4.pyx":3728
 *         self._name = name
 *         if 'id' in kwargs:
 *             self._dimid = kwargs['id']             # <<<<<<<<<<<<<<
 *         else:
 *             bytestr = _strencode(name)
*/
    __pyx_t_1 = __Pyx_PyDict_GetItem(__pyx_v_kwargs, __pyx_mstate_global->__pyx_n_u_id); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3728, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = __Pyx_PyLong_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3728, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_v_self->_dimid = __pyx_t_2;

    /* "netCDF4/_netCDF4.pyx":3727
 *         self._data_model = grp.data_model
 *         self._name = name
 *         if 'id' in kwargs:             # <<<<<<<<<<<<<<
 *             self._dimid = kwargs['id']
 *         else:
*/
    goto __pyx_L4;
  }

  /* "netCDF4/_netCDF4.pyx":3730
 *             self._dimid = kwargs['id']
 *         else:
 *             bytestr = _strencode(name)             # <<<<<<<<<<<<<<
 *             dimname = bytestr
 *             if size is not None:
*/
  /*else*/ {
    __pyx_t_1 = __pyx_f_7netCDF4_8_netCDF4__strencode(__pyx_v_name, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3730, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_v_bytestr = __pyx_t_1;
    __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":3731
 *         else:
 *             bytestr = _strencode(name)
 *             dimname = bytestr             # <<<<<<<<<<<<<<
 *             if size is not None:
 *                 lendim = size
*/
    __pyx_t_8 = __Pyx_PyObject_AsWritableString(__pyx_v_bytestr); if (unlikely((!__pyx_t_8) && PyErr_Occurred())) __PYX_ERR(0, 3731, __pyx_L1_error)
    __pyx_v_dimname = __pyx_t_8;

    /* "netCDF4/_netCDF4.pyx":3732
 *             bytestr = _strencode(name)
 *             dimname = bytestr
 *             if size is not None:             # <<<<<<<<<<<<<<
 *                 lendim = size
 *             else:
*/
    __pyx_t_3 = (__pyx_v_size != Py_None);
    if (__pyx_t_3) {

      /* "netCDF4/_netCDF4.pyx":3733
 *             dimname = bytestr
 *             if size is not None:
 *                 lendim = size             # <<<<<<<<<<<<<<
 *             else:
 *                 lendim = NC_UNLIMITED
*/
      __pyx_t_7 = __Pyx_PyLong_As_size_t(__pyx_v_size); if (unlikely((__pyx_t_7 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3733, __pyx_L1_error)
      __pyx_v_lendim = __pyx_t_7;

      /* "netCDF4/_netCDF4.pyx":3732
 *             bytestr = _strencode(name)
 *             dimname = bytestr
 *             if size is not None:             # <<<<<<<<<<<<<<
 *                 lendim = size
 *             else:
*/
      goto __pyx_L5;
    }

    /* "netCDF4/_netCDF4.pyx":3735
 *                 lendim = size
 *             else:
 *                 lendim = NC_UNLIMITED             # <<<<<<<<<<<<<<
 *             if grp.data_model != 'NETCDF4': grp._redef()
 *             with nogil:
*/
    /*else*/ {
      __pyx_v_lendim = NC_UNLIMITED;
    }
    __pyx_L5:;

    /* "netCDF4/_netCDF4.pyx":3736
 *             else:
 *                 lendim = NC_UNLIMITED
 *             if grp.data_model != 'NETCDF4': grp._redef()             # <<<<<<<<<<<<<<
 *             with nogil:
 *                 ierr = nc_def_dim(self._grpid, dimname, lendim, &self._dimid)
*/
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_mstate_global->__pyx_n_u_data_model); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3736, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_NETCDF4, Py_NE)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 3736, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (__pyx_t_3) {
      __pyx_t_6 = __pyx_v_grp;
      __Pyx_INCREF(__pyx_t_6);
      __pyx_t_7 = 0;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL};
        __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_redef, __pyx_callargs+__pyx_t_7, (1-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3736, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
      }
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    }

    /* "netCDF4/_netCDF4.pyx":3737
 *                 lendim = NC_UNLIMITED
 *             if grp.data_model != 'NETCDF4': grp._redef()
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 ierr = nc_def_dim(self._grpid, dimname, lendim, &self._dimid)
 *             if grp.data_model != 'NETCDF4': grp._enddef()
*/
    {
        PyThreadState * _save;
        _save = PyEval_SaveThread();
        __Pyx_FastGIL_Remember();
        /*try:*/ {

          /* "netCDF4/_netCDF4.pyx":3738
 *             if grp.data_model != 'NETCDF4': grp._redef()
 *             with nogil:
 *                 ierr = nc_def_dim(self._grpid, dimname, lendim, &self._dimid)             # <<<<<<<<<<<<<<
 *             if grp.data_model != 'NETCDF4': grp._enddef()
 *             _ensure_nc_success(ierr)
*/
          __pyx_v_ierr = nc_def_dim(__pyx_v_self->_grpid, __pyx_v_dimname, __pyx_v_lendim, (&__pyx_v_self->_dimid));
        }

        /* "netCDF4/_netCDF4.pyx":3737
 *                 lendim = NC_UNLIMITED
 *             if grp.data_model != 'NETCDF4': grp._redef()
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 ierr = nc_def_dim(self._grpid, dimname, lendim, &self._dimid)
 *             if grp.data_model != 'NETCDF4': grp._enddef()
*/
        /*finally:*/ {
          /*normal exit:*/{
            __Pyx_FastGIL_Forget();
            PyEval_RestoreThread(_save);
            goto __pyx_L9;
          }
          __pyx_L9:;
        }
    }

    /* "netCDF4/_netCDF4.pyx":3739
 *             with nogil:
 *                 ierr = nc_def_dim(self._grpid, dimname, lendim, &self._dimid)
 *             if grp.data_model != 'NETCDF4': grp._enddef()             # <<<<<<<<<<<<<<
 *             _ensure_nc_success(ierr)
 * 
*/
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_mstate_global->__pyx_n_u_data_model); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3739, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_NETCDF4, Py_NE)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 3739, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (__pyx_t_3) {
      __pyx_t_6 = __pyx_v_grp;
      __Pyx_INCREF(__pyx_t_6);
      __pyx_t_7 = 0;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL};
        __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_enddef, __pyx_callargs+__pyx_t_7, (1-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3739, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
      }
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    }

    /* "netCDF4/_netCDF4.pyx":3740
 *                 ierr = nc_def_dim(self._grpid, dimname, lendim, &self._dimid)
 *             if grp.data_model != 'NETCDF4': grp._enddef()
 *             _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 * 
 *     def _getname(self):
*/
    __pyx_t_6 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3740, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3740, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_7 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(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_7 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_5};
      __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __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;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3740, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }
  __pyx_L4:;

  /* "netCDF4/_netCDF4.pyx":3699
 *     cdef public _data_model, _name, _grp
 * 
 *     def __init__(self, grp, name, size=None, **kwargs):             # <<<<<<<<<<<<<<
 *         """
 *         **`__init__(self, group, name, size=None)`**
*/

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __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("netCDF4._netCDF4.Dimension.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_bytestr);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":3742
 *             _ensure_nc_success(ierr)
 * 
 *     def _getname(self):             # <<<<<<<<<<<<<<
 *         # private method to get name associated with instance.
 *         cdef int err, _grpid
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9Dimension_3_getname(PyObject *__pyx_v_self, 
#if 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_7netCDF4_8_netCDF4_9Dimension_3_getname = {"_getname", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_9Dimension_3_getname, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9Dimension_3_getname(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_getname (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("_getname", 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("_getname", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_9Dimension_2_getname(((struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_2_getname(struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *__pyx_v_self) {
  int __pyx_v__grpid;
  char __pyx_v_namstring[(NC_MAX_NAME + 1)];
  int __pyx_v_ierr;
  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;
  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("_getname", 0);

  /* "netCDF4/_netCDF4.pyx":3746
 *         cdef int err, _grpid
 *         cdef char namstring[NC_MAX_NAME+1]
 *         _grpid = self._grp._grpid             # <<<<<<<<<<<<<<
 *         with nogil:
 *             ierr = nc_inq_dimname(_grpid, self._dimid, namstring)
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_grp, __pyx_mstate_global->__pyx_n_u_grpid); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3746, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyLong_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3746, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v__grpid = __pyx_t_2;

  /* "netCDF4/_netCDF4.pyx":3747
 *         cdef char namstring[NC_MAX_NAME+1]
 *         _grpid = self._grp._grpid
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_inq_dimname(_grpid, self._dimid, namstring)
 *         _ensure_nc_success(ierr)
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "netCDF4/_netCDF4.pyx":3748
 *         _grpid = self._grp._grpid
 *         with nogil:
 *             ierr = nc_inq_dimname(_grpid, self._dimid, namstring)             # <<<<<<<<<<<<<<
 *         _ensure_nc_success(ierr)
 *         return namstring.decode('utf-8')
*/
        __pyx_v_ierr = nc_inq_dimname(__pyx_v__grpid, __pyx_v_self->_dimid, __pyx_v_namstring);
      }

      /* "netCDF4/_netCDF4.pyx":3747
 *         cdef char namstring[NC_MAX_NAME+1]
 *         _grpid = self._grp._grpid
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_inq_dimname(_grpid, self._dimid, namstring)
 *         _ensure_nc_success(ierr)
*/
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "netCDF4/_netCDF4.pyx":3749
 *         with nogil:
 *             ierr = nc_inq_dimname(_grpid, self._dimid, namstring)
 *         _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 *         return namstring.decode('utf-8')
 * 
*/
  __pyx_t_3 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3749, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3749, __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_1 = __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_1)) __PYX_ERR(0, 3749, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":3750
 *             ierr = nc_inq_dimname(_grpid, self._dimid, namstring)
 *         _ensure_nc_success(ierr)
 *         return namstring.decode('utf-8')             # <<<<<<<<<<<<<<
 * 
 *     property name:
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_7 = __Pyx_ssize_strlen(__pyx_v_namstring); if (unlikely(__pyx_t_7 == ((Py_ssize_t)-1))) __PYX_ERR(0, 3750, __pyx_L1_error)
  __pyx_t_1 = __Pyx_decode_c_string(__pyx_v_namstring, 0, __pyx_t_7, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3750, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":3742
 *             _ensure_nc_success(ierr)
 * 
 *     def _getname(self):             # <<<<<<<<<<<<<<
 *         # private method to get name associated with instance.
 *         cdef int err, _grpid
*/

  /* 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("netCDF4._netCDF4.Dimension._getname", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":3754
 *     property name:
 *         """string name of Dimension instance"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._getname()
 *         def __set__(self,value):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9Dimension_4name_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9Dimension_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_7netCDF4_8_netCDF4_9Dimension_4name___get__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_4name___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *__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);

  /* "netCDF4/_netCDF4.pyx":3755
 *         """string name of Dimension instance"""
 *         def __get__(self):
 *             return self._getname()             # <<<<<<<<<<<<<<
 *         def __set__(self,value):
 *             raise AttributeError("name cannot be altered")
*/
  __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_getname, __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(0, 3755, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":3754
 *     property name:
 *         """string name of Dimension instance"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._getname()
 *         def __set__(self,value):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("netCDF4._netCDF4.Dimension.name.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":3756
 *         def __get__(self):
 *             return self._getname()
 *         def __set__(self,value):             # <<<<<<<<<<<<<<
 *             raise AttributeError("name cannot be altered")
 * 
*/

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_9Dimension_4name_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_9Dimension_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_7netCDF4_8_netCDF4_9Dimension_4name_2__set__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_7netCDF4_8_netCDF4_9Dimension_4name_2__set__(CYTHON_UNUSED struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *__pyx_v_self, CYTHON_UNUSED 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);

  /* "netCDF4/_netCDF4.pyx":3757
 *             return self._getname()
 *         def __set__(self,value):
 *             raise AttributeError("name cannot be altered")             # <<<<<<<<<<<<<<
 * 
 *     property size:
*/
  __pyx_t_2 = NULL;
  __pyx_t_3 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_name_cannot_be_altered};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_AttributeError)), __pyx_callargs+__pyx_t_3, (2-__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(0, 3757, __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(0, 3757, __pyx_L1_error)

  /* "netCDF4/_netCDF4.pyx":3756
 *         def __get__(self):
 *             return self._getname()
 *         def __set__(self,value):             # <<<<<<<<<<<<<<
 *             raise AttributeError("name cannot be altered")
 * 
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("netCDF4._netCDF4.Dimension.name.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":3761
 *     property size:
 *         """current size of Dimension (calls `len` on Dimension instance)"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return len(self)
 *         def __set__(self,value):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9Dimension_4size_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9Dimension_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_7netCDF4_8_netCDF4_9Dimension_4size___get__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_4size___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __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);

  /* "netCDF4/_netCDF4.pyx":3762
 *         """current size of Dimension (calls `len` on Dimension instance)"""
 *         def __get__(self):
 *             return len(self)             # <<<<<<<<<<<<<<
 *         def __set__(self,value):
 *             raise AttributeError("size cannot be altered")
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_self)); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(0, 3762, __pyx_L1_error)
  __pyx_t_2 = PyLong_FromSsize_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3762, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":3761
 *     property size:
 *         """current size of Dimension (calls `len` on Dimension instance)"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return len(self)
 *         def __set__(self,value):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("netCDF4._netCDF4.Dimension.size.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":3763
 *         def __get__(self):
 *             return len(self)
 *         def __set__(self,value):             # <<<<<<<<<<<<<<
 *             raise AttributeError("size cannot be altered")
 * 
*/

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_9Dimension_4size_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_9Dimension_4size_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_7netCDF4_8_netCDF4_9Dimension_4size_2__set__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_7netCDF4_8_netCDF4_9Dimension_4size_2__set__(CYTHON_UNUSED struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *__pyx_v_self, CYTHON_UNUSED 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);

  /* "netCDF4/_netCDF4.pyx":3764
 *             return len(self)
 *         def __set__(self,value):
 *             raise AttributeError("size cannot be altered")             # <<<<<<<<<<<<<<
 * 
 *     def __repr__(self):
*/
  __pyx_t_2 = NULL;
  __pyx_t_3 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_size_cannot_be_altered};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_AttributeError)), __pyx_callargs+__pyx_t_3, (2-__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(0, 3764, __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(0, 3764, __pyx_L1_error)

  /* "netCDF4/_netCDF4.pyx":3763
 *         def __get__(self):
 *             return len(self)
 *         def __set__(self,value):             # <<<<<<<<<<<<<<
 *             raise AttributeError("size cannot be altered")
 * 
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("netCDF4._netCDF4.Dimension.size.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":3766
 *             raise AttributeError("size cannot be altered")
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return self.__str__()
 * 
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9Dimension_5__repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9Dimension_5__repr__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_9Dimension_4__repr__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_4__repr__(struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *__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("__repr__", 0);

  /* "netCDF4/_netCDF4.pyx":3767
 * 
 *     def __repr__(self):
 *         return self.__str__()             # <<<<<<<<<<<<<<
 * 
 *     def __str__(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_str_2, __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(0, 3767, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":3766
 *             raise AttributeError("size cannot be altered")
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return self.__str__()
 * 
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("netCDF4._netCDF4.Dimension.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":3769
 *         return self.__str__()
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         if not dir(self._grp):
 *             return 'Dimension object no longer valid'
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9Dimension_7__str__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9Dimension_7__str__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__str__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_9Dimension_6__str__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_6__str__(struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *__pyx_v_self) {
  PyObject *__pyx_v_typ = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  size_t __pyx_t_5;
  Py_ssize_t __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8[5];
  PyObject *__pyx_t_9 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__str__", 0);

  /* "netCDF4/_netCDF4.pyx":3770
 * 
 *     def __str__(self):
 *         if not dir(self._grp):             # <<<<<<<<<<<<<<
 *             return 'Dimension object no longer valid'
 *         typ = repr(type(self)).replace("._netCDF4", "")
*/
  __pyx_t_1 = __pyx_v_self->_grp;
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Dir(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3770, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 3770, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = (!__pyx_t_3);
  if (__pyx_t_4) {

    /* "netCDF4/_netCDF4.pyx":3771
 *     def __str__(self):
 *         if not dir(self._grp):
 *             return 'Dimension object no longer valid'             # <<<<<<<<<<<<<<
 *         typ = repr(type(self)).replace("._netCDF4", "")
 *         if self.isunlimited():
*/
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u_Dimension_object_no_longer_valid);
    __pyx_r = __pyx_mstate_global->__pyx_kp_u_Dimension_object_no_longer_valid;
    goto __pyx_L0;

    /* "netCDF4/_netCDF4.pyx":3770
 * 
 *     def __str__(self):
 *         if not dir(self._grp):             # <<<<<<<<<<<<<<
 *             return 'Dimension object no longer valid'
 *         typ = repr(type(self)).replace("._netCDF4", "")
*/
  }

  /* "netCDF4/_netCDF4.pyx":3772
 *         if not dir(self._grp):
 *             return 'Dimension object no longer valid'
 *         typ = repr(type(self)).replace("._netCDF4", "")             # <<<<<<<<<<<<<<
 *         if self.isunlimited():
 *             return "%r (unlimited): name = '%s', size = %s" %\
*/
  __pyx_t_2 = PyObject_Repr(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3772, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (unlikely(__pyx_t_2 == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "replace");
    __PYX_ERR(0, 3772, __pyx_L1_error)
  }
  __pyx_t_1 = PyUnicode_Replace(((PyObject*)__pyx_t_2), __pyx_mstate_global->__pyx_kp_u_netCDF4, __pyx_mstate_global->__pyx_kp_u__4, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3772, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_typ = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":3773
 *             return 'Dimension object no longer valid'
 *         typ = repr(type(self)).replace("._netCDF4", "")
 *         if self.isunlimited():             # <<<<<<<<<<<<<<
 *             return "%r (unlimited): name = '%s', size = %s" %\
 *                 (typ, self._name, len(self))
*/
  __pyx_t_2 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_5 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_isunlimited, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3773, __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(0, 3773, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_4) {

    /* "netCDF4/_netCDF4.pyx":3774
 *         typ = repr(type(self)).replace("._netCDF4", "")
 *         if self.isunlimited():
 *             return "%r (unlimited): name = '%s', size = %s" %\             # <<<<<<<<<<<<<<
 *                 (typ, self._name, len(self))
 *         else:
*/
    __Pyx_XDECREF(__pyx_r);

    /* "netCDF4/_netCDF4.pyx":3775
 *         if self.isunlimited():
 *             return "%r (unlimited): name = '%s', size = %s" %\
 *                 (typ, self._name, len(self))             # <<<<<<<<<<<<<<
 *         else:
 *             return "%r: name = '%s', size = %s" %\
*/
    __pyx_t_1 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_typ), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3775, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Str(__pyx_v_self->_name), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3775, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_6 = PyObject_Length(((PyObject *)__pyx_v_self)); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 3775, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_t_6, 0, ' ', 'd'); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3775, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8[0] = __pyx_t_1;
    __pyx_t_8[1] = __pyx_mstate_global->__pyx_kp_u_unlimited_name;
    __pyx_t_8[2] = __pyx_t_2;
    __pyx_t_8[3] = __pyx_mstate_global->__pyx_kp_u_size_2;
    __pyx_t_8[4] = __pyx_t_7;

    /* "netCDF4/_netCDF4.pyx":3774
 *         typ = repr(type(self)).replace("._netCDF4", "")
 *         if self.isunlimited():
 *             return "%r (unlimited): name = '%s', size = %s" %\             # <<<<<<<<<<<<<<
 *                 (typ, self._name, len(self))
 *         else:
*/
    __pyx_t_9 = __Pyx_PyUnicode_Join(__pyx_t_8, 5, __Pyx_PyUnicode_GET_LENGTH(__pyx_t_1) + 22 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_2) + 10 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_7), 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2));
    if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3774, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_r = __pyx_t_9;
    __pyx_t_9 = 0;
    goto __pyx_L0;

    /* "netCDF4/_netCDF4.pyx":3773
 *             return 'Dimension object no longer valid'
 *         typ = repr(type(self)).replace("._netCDF4", "")
 *         if self.isunlimited():             # <<<<<<<<<<<<<<
 *             return "%r (unlimited): name = '%s', size = %s" %\
 *                 (typ, self._name, len(self))
*/
  }

  /* "netCDF4/_netCDF4.pyx":3777
 *                 (typ, self._name, len(self))
 *         else:
 *             return "%r: name = '%s', size = %s" %\             # <<<<<<<<<<<<<<
 *                 (typ, self._name, len(self))
 * 
*/
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);

    /* "netCDF4/_netCDF4.pyx":3778
 *         else:
 *             return "%r: name = '%s', size = %s" %\
 *                 (typ, self._name, len(self))             # <<<<<<<<<<<<<<
 * 
 *     def __len__(self):
*/
    __pyx_t_9 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_typ), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3778, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_7 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Str(__pyx_v_self->_name), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3778, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_6 = PyObject_Length(((PyObject *)__pyx_v_self)); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 3778, __pyx_L1_error)
    __pyx_t_2 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_t_6, 0, ' ', 'd'); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3778, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_8[0] = __pyx_t_9;
    __pyx_t_8[1] = __pyx_mstate_global->__pyx_kp_u_name_2;
    __pyx_t_8[2] = __pyx_t_7;
    __pyx_t_8[3] = __pyx_mstate_global->__pyx_kp_u_size_2;
    __pyx_t_8[4] = __pyx_t_2;

    /* "netCDF4/_netCDF4.pyx":3777
 *                 (typ, self._name, len(self))
 *         else:
 *             return "%r: name = '%s', size = %s" %\             # <<<<<<<<<<<<<<
 *                 (typ, self._name, len(self))
 * 
*/
    __pyx_t_1 = __Pyx_PyUnicode_Join(__pyx_t_8, 5, __Pyx_PyUnicode_GET_LENGTH(__pyx_t_9) + 10 * 2 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_7) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_2), 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_9) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_7));
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3777, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
  }

  /* "netCDF4/_netCDF4.pyx":3769
 *         return self.__str__()
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         if not dir(self._grp):
 *             return 'Dimension object no longer valid'
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("netCDF4._netCDF4.Dimension.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_typ);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":3780
 *                 (typ, self._name, len(self))
 * 
 *     def __len__(self):             # <<<<<<<<<<<<<<
 *         # len(`Dimension` instance) returns current size of dimension
 *         cdef int ierr
*/

/* Python wrapper */
static Py_ssize_t __pyx_pw_7netCDF4_8_netCDF4_9Dimension_9__len__(PyObject *__pyx_v_self); /*proto*/
static Py_ssize_t __pyx_pw_7netCDF4_8_netCDF4_9Dimension_9__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_7netCDF4_8_netCDF4_9Dimension_8__len__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *)__pyx_v_self));

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

static Py_ssize_t __pyx_pf_7netCDF4_8_netCDF4_9Dimension_8__len__(struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *__pyx_v_self) {
  int __pyx_v_ierr;
  size_t __pyx_v_lengthp;
  Py_ssize_t __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;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__len__", 0);

  /* "netCDF4/_netCDF4.pyx":3784
 *         cdef int ierr
 *         cdef size_t lengthp
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_inq_dimlen(self._grpid, self._dimid, &lengthp)
 *         _ensure_nc_success(ierr)
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "netCDF4/_netCDF4.pyx":3785
 *         cdef size_t lengthp
 *         with nogil:
 *             ierr = nc_inq_dimlen(self._grpid, self._dimid, &lengthp)             # <<<<<<<<<<<<<<
 *         _ensure_nc_success(ierr)
 *         return lengthp
*/
        __pyx_v_ierr = nc_inq_dimlen(__pyx_v_self->_grpid, __pyx_v_self->_dimid, (&__pyx_v_lengthp));
      }

      /* "netCDF4/_netCDF4.pyx":3784
 *         cdef int ierr
 *         cdef size_t lengthp
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_inq_dimlen(self._grpid, self._dimid, &lengthp)
 *         _ensure_nc_success(ierr)
*/
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "netCDF4/_netCDF4.pyx":3786
 *         with nogil:
 *             ierr = nc_inq_dimlen(self._grpid, self._dimid, &lengthp)
 *         _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 *         return lengthp
 * 
*/
  __pyx_t_2 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3786, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3786, __pyx_L1_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[2] = {__pyx_t_2, __pyx_t_4};
    __pyx_t_1 = __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_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(0, 3786, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":3787
 *             ierr = nc_inq_dimlen(self._grpid, self._dimid, &lengthp)
 *         _ensure_nc_success(ierr)
 *         return lengthp             # <<<<<<<<<<<<<<
 * 
 *     def group(self):
*/
  __pyx_r = __pyx_v_lengthp;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":3780
 *                 (typ, self._name, len(self))
 * 
 *     def __len__(self):             # <<<<<<<<<<<<<<
 *         # len(`Dimension` instance) returns current size of dimension
 *         cdef int ierr
*/

  /* 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("netCDF4._netCDF4.Dimension.__len__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":3789
 *         return lengthp
 * 
 *     def group(self):             # <<<<<<<<<<<<<<
 *         """
 * **`group(self)`**
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9Dimension_11group(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7netCDF4_8_netCDF4_9Dimension_10group, "\n**`group(self)`**\n\nreturn the group that this `Dimension` is a member of.");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_9Dimension_11group = {"group", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_9Dimension_11group, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_9Dimension_10group};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9Dimension_11group(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("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("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("group", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_9Dimension_10group(((struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_10group(struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("group", 0);

  /* "netCDF4/_netCDF4.pyx":3794
 * 
 * return the group that this `Dimension` is a member of."""
 *         return self._grp             # <<<<<<<<<<<<<<
 * 
 *     def isunlimited(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_grp);
  __pyx_r = __pyx_v_self->_grp;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":3789
 *         return lengthp
 * 
 *     def group(self):             # <<<<<<<<<<<<<<
 *         """
 * **`group(self)`**
*/

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

/* "netCDF4/_netCDF4.pyx":3796
 *         return self._grp
 * 
 *     def isunlimited(self):             # <<<<<<<<<<<<<<
 *         """
 * **`isunlimited(self)`**
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9Dimension_13isunlimited(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7netCDF4_8_netCDF4_9Dimension_12isunlimited, "\n**`isunlimited(self)`**\n\nreturns `True` if the `Dimension` instance is unlimited, `False` otherwise.");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_9Dimension_13isunlimited = {"isunlimited", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_9Dimension_13isunlimited, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_9Dimension_12isunlimited};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9Dimension_13isunlimited(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("isunlimited (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("isunlimited", 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("isunlimited", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_9Dimension_12isunlimited(((struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_12isunlimited(struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *__pyx_v_self) {
  int __pyx_v_ierr;
  int __pyx_v_n;
  int __pyx_v_numunlimdims;
  int __pyx_v_ndims;
  int __pyx_v_nvars;
  int __pyx_v_ngatts;
  int __pyx_v_xdimid;
  int *__pyx_v_unlimdimids;
  int __pyx_v_dimid;
  PyObject *__pyx_v_unlimdim_ids = NULL;
  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_t_7;
  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("isunlimited", 0);

  /* "netCDF4/_netCDF4.pyx":3803
 *         cdef int ierr, n, numunlimdims, ndims, nvars, ngatts, xdimid
 *         cdef int *unlimdimids
 *         if self._data_model == 'NETCDF4':             # <<<<<<<<<<<<<<
 *             with nogil:
 *                 ierr = nc_inq_unlimdims(self._grpid, &numunlimdims, NULL)
*/
  __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v_self->_data_model, __pyx_mstate_global->__pyx_n_u_NETCDF4, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 3803, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "netCDF4/_netCDF4.pyx":3804
 *         cdef int *unlimdimids
 *         if self._data_model == 'NETCDF4':
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 ierr = nc_inq_unlimdims(self._grpid, &numunlimdims, NULL)
 *             _ensure_nc_success(ierr)
*/
    {
        PyThreadState * _save;
        _save = PyEval_SaveThread();
        __Pyx_FastGIL_Remember();
        /*try:*/ {

          /* "netCDF4/_netCDF4.pyx":3805
 *         if self._data_model == 'NETCDF4':
 *             with nogil:
 *                 ierr = nc_inq_unlimdims(self._grpid, &numunlimdims, NULL)             # <<<<<<<<<<<<<<
 *             _ensure_nc_success(ierr)
 *             if numunlimdims == 0:
*/
          __pyx_v_ierr = nc_inq_unlimdims(__pyx_v_self->_grpid, (&__pyx_v_numunlimdims), NULL);
        }

        /* "netCDF4/_netCDF4.pyx":3804
 *         cdef int *unlimdimids
 *         if self._data_model == 'NETCDF4':
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 ierr = nc_inq_unlimdims(self._grpid, &numunlimdims, NULL)
 *             _ensure_nc_success(ierr)
*/
        /*finally:*/ {
          /*normal exit:*/{
            __Pyx_FastGIL_Forget();
            PyEval_RestoreThread(_save);
            goto __pyx_L6;
          }
          __pyx_L6:;
        }
    }

    /* "netCDF4/_netCDF4.pyx":3806
 *             with nogil:
 *                 ierr = nc_inq_unlimdims(self._grpid, &numunlimdims, NULL)
 *             _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 *             if numunlimdims == 0:
 *                 return False
*/
    __pyx_t_3 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3806, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3806, __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(0, 3806, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "netCDF4/_netCDF4.pyx":3807
 *                 ierr = nc_inq_unlimdims(self._grpid, &numunlimdims, NULL)
 *             _ensure_nc_success(ierr)
 *             if numunlimdims == 0:             # <<<<<<<<<<<<<<
 *                 return False
 *             else:
*/
    __pyx_t_1 = (__pyx_v_numunlimdims == 0);
    if (__pyx_t_1) {

      /* "netCDF4/_netCDF4.pyx":3808
 *             _ensure_nc_success(ierr)
 *             if numunlimdims == 0:
 *                 return False             # <<<<<<<<<<<<<<
 *             else:
 *                 unlimdimids = <int *>malloc(sizeof(int) * numunlimdims)
*/
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(Py_False);
      __pyx_r = Py_False;
      goto __pyx_L0;

      /* "netCDF4/_netCDF4.pyx":3807
 *                 ierr = nc_inq_unlimdims(self._grpid, &numunlimdims, NULL)
 *             _ensure_nc_success(ierr)
 *             if numunlimdims == 0:             # <<<<<<<<<<<<<<
 *                 return False
 *             else:
*/
    }

    /* "netCDF4/_netCDF4.pyx":3810
 *                 return False
 *             else:
 *                 unlimdimids = <int *>malloc(sizeof(int) * numunlimdims)             # <<<<<<<<<<<<<<
 *                 dimid = self._dimid
 *                 with nogil:
*/
    /*else*/ {
      __pyx_v_unlimdimids = ((int *)malloc(((sizeof(int)) * __pyx_v_numunlimdims)));

      /* "netCDF4/_netCDF4.pyx":3811
 *             else:
 *                 unlimdimids = <int *>malloc(sizeof(int) * numunlimdims)
 *                 dimid = self._dimid             # <<<<<<<<<<<<<<
 *                 with nogil:
 *                     ierr = nc_inq_unlimdims(self._grpid, &numunlimdims, unlimdimids)
*/
      __pyx_t_7 = __pyx_v_self->_dimid;
      __pyx_v_dimid = __pyx_t_7;

      /* "netCDF4/_netCDF4.pyx":3812
 *                 unlimdimids = <int *>malloc(sizeof(int) * numunlimdims)
 *                 dimid = self._dimid
 *                 with nogil:             # <<<<<<<<<<<<<<
 *                     ierr = nc_inq_unlimdims(self._grpid, &numunlimdims, unlimdimids)
 *                 _ensure_nc_success(ierr)
*/
      {
          PyThreadState * _save;
          _save = PyEval_SaveThread();
          __Pyx_FastGIL_Remember();
          /*try:*/ {

            /* "netCDF4/_netCDF4.pyx":3813
 *                 dimid = self._dimid
 *                 with nogil:
 *                     ierr = nc_inq_unlimdims(self._grpid, &numunlimdims, unlimdimids)             # <<<<<<<<<<<<<<
 *                 _ensure_nc_success(ierr)
 *                 unlimdim_ids = []
*/
            __pyx_v_ierr = nc_inq_unlimdims(__pyx_v_self->_grpid, (&__pyx_v_numunlimdims), __pyx_v_unlimdimids);
          }

          /* "netCDF4/_netCDF4.pyx":3812
 *                 unlimdimids = <int *>malloc(sizeof(int) * numunlimdims)
 *                 dimid = self._dimid
 *                 with nogil:             # <<<<<<<<<<<<<<
 *                     ierr = nc_inq_unlimdims(self._grpid, &numunlimdims, unlimdimids)
 *                 _ensure_nc_success(ierr)
*/
          /*finally:*/ {
            /*normal exit:*/{
              __Pyx_FastGIL_Forget();
              PyEval_RestoreThread(_save);
              goto __pyx_L10;
            }
            __pyx_L10:;
          }
      }

      /* "netCDF4/_netCDF4.pyx":3814
 *                 with nogil:
 *                     ierr = nc_inq_unlimdims(self._grpid, &numunlimdims, unlimdimids)
 *                 _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 *                 unlimdim_ids = []
 *                 for n in range(numunlimdims):
*/
      __pyx_t_4 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3814, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_3 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3814, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __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[2] = {__pyx_t_4, __pyx_t_3};
        __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __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;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3814, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
      }
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

      /* "netCDF4/_netCDF4.pyx":3815
 *                     ierr = nc_inq_unlimdims(self._grpid, &numunlimdims, unlimdimids)
 *                 _ensure_nc_success(ierr)
 *                 unlimdim_ids = []             # <<<<<<<<<<<<<<
 *                 for n in range(numunlimdims):
 *                     unlimdim_ids.append(unlimdimids[n])
*/
      __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3815, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_v_unlimdim_ids = ((PyObject*)__pyx_t_2);
      __pyx_t_2 = 0;

      /* "netCDF4/_netCDF4.pyx":3816
 *                 _ensure_nc_success(ierr)
 *                 unlimdim_ids = []
 *                 for n in range(numunlimdims):             # <<<<<<<<<<<<<<
 *                     unlimdim_ids.append(unlimdimids[n])
 *                 free(unlimdimids)
*/
      __pyx_t_7 = __pyx_v_numunlimdims;
      __pyx_t_8 = __pyx_t_7;
      for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_8; __pyx_t_9+=1) {
        __pyx_v_n = __pyx_t_9;

        /* "netCDF4/_netCDF4.pyx":3817
 *                 unlimdim_ids = []
 *                 for n in range(numunlimdims):
 *                     unlimdim_ids.append(unlimdimids[n])             # <<<<<<<<<<<<<<
 *                 free(unlimdimids)
 *                 if dimid in unlimdim_ids:
*/
        __pyx_t_2 = __Pyx_PyLong_From_int((__pyx_v_unlimdimids[__pyx_v_n])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3817, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_unlimdim_ids, __pyx_t_2); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 3817, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      }

      /* "netCDF4/_netCDF4.pyx":3818
 *                 for n in range(numunlimdims):
 *                     unlimdim_ids.append(unlimdimids[n])
 *                 free(unlimdimids)             # <<<<<<<<<<<<<<
 *                 if dimid in unlimdim_ids:
 *                     return True
*/
      free(__pyx_v_unlimdimids);

      /* "netCDF4/_netCDF4.pyx":3819
 *                     unlimdim_ids.append(unlimdimids[n])
 *                 free(unlimdimids)
 *                 if dimid in unlimdim_ids:             # <<<<<<<<<<<<<<
 *                     return True
 *                 else:
*/
      __pyx_t_2 = __Pyx_PyLong_From_int(__pyx_v_dimid); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3819, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_t_2, __pyx_v_unlimdim_ids, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 3819, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (__pyx_t_1) {

        /* "netCDF4/_netCDF4.pyx":3820
 *                 free(unlimdimids)
 *                 if dimid in unlimdim_ids:
 *                     return True             # <<<<<<<<<<<<<<
 *                 else:
 *                     return False
*/
        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(Py_True);
        __pyx_r = Py_True;
        goto __pyx_L0;

        /* "netCDF4/_netCDF4.pyx":3819
 *                     unlimdim_ids.append(unlimdimids[n])
 *                 free(unlimdimids)
 *                 if dimid in unlimdim_ids:             # <<<<<<<<<<<<<<
 *                     return True
 *                 else:
*/
      }

      /* "netCDF4/_netCDF4.pyx":3822
 *                     return True
 *                 else:
 *                     return False             # <<<<<<<<<<<<<<
 *         else: # if not NETCDF4, there is only one unlimited dimension.
 *             # nc_inq_unlimdims only works for NETCDF4.
*/
      /*else*/ {
        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(Py_False);
        __pyx_r = Py_False;
        goto __pyx_L0;
      }
    }

    /* "netCDF4/_netCDF4.pyx":3803
 *         cdef int ierr, n, numunlimdims, ndims, nvars, ngatts, xdimid
 *         cdef int *unlimdimids
 *         if self._data_model == 'NETCDF4':             # <<<<<<<<<<<<<<
 *             with nogil:
 *                 ierr = nc_inq_unlimdims(self._grpid, &numunlimdims, NULL)
*/
  }

  /* "netCDF4/_netCDF4.pyx":3825
 *         else: # if not NETCDF4, there is only one unlimited dimension.
 *             # nc_inq_unlimdims only works for NETCDF4.
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 ierr = nc_inq(self._grpid, &ndims, &nvars, &ngatts, &xdimid)
 *             if self._dimid == xdimid:
*/
  /*else*/ {
    {
        PyThreadState * _save;
        _save = PyEval_SaveThread();
        __Pyx_FastGIL_Remember();
        /*try:*/ {

          /* "netCDF4/_netCDF4.pyx":3826
 *             # nc_inq_unlimdims only works for NETCDF4.
 *             with nogil:
 *                 ierr = nc_inq(self._grpid, &ndims, &nvars, &ngatts, &xdimid)             # <<<<<<<<<<<<<<
 *             if self._dimid == xdimid:
 *                 return True
*/
          __pyx_v_ierr = nc_inq(__pyx_v_self->_grpid, (&__pyx_v_ndims), (&__pyx_v_nvars), (&__pyx_v_ngatts), (&__pyx_v_xdimid));
        }

        /* "netCDF4/_netCDF4.pyx":3825
 *         else: # if not NETCDF4, there is only one unlimited dimension.
 *             # nc_inq_unlimdims only works for NETCDF4.
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 ierr = nc_inq(self._grpid, &ndims, &nvars, &ngatts, &xdimid)
 *             if self._dimid == xdimid:
*/
        /*finally:*/ {
          /*normal exit:*/{
            __Pyx_FastGIL_Forget();
            PyEval_RestoreThread(_save);
            goto __pyx_L16;
          }
          __pyx_L16:;
        }
    }

    /* "netCDF4/_netCDF4.pyx":3827
 *             with nogil:
 *                 ierr = nc_inq(self._grpid, &ndims, &nvars, &ngatts, &xdimid)
 *             if self._dimid == xdimid:             # <<<<<<<<<<<<<<
 *                 return True
 *             else:
*/
    __pyx_t_1 = (__pyx_v_self->_dimid == __pyx_v_xdimid);
    if (__pyx_t_1) {

      /* "netCDF4/_netCDF4.pyx":3828
 *                 ierr = nc_inq(self._grpid, &ndims, &nvars, &ngatts, &xdimid)
 *             if self._dimid == xdimid:
 *                 return True             # <<<<<<<<<<<<<<
 *             else:
 *                 return False
*/
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(Py_True);
      __pyx_r = Py_True;
      goto __pyx_L0;

      /* "netCDF4/_netCDF4.pyx":3827
 *             with nogil:
 *                 ierr = nc_inq(self._grpid, &ndims, &nvars, &ngatts, &xdimid)
 *             if self._dimid == xdimid:             # <<<<<<<<<<<<<<
 *                 return True
 *             else:
*/
    }

    /* "netCDF4/_netCDF4.pyx":3830
 *                 return True
 *             else:
 *                 return False             # <<<<<<<<<<<<<<
 * 
 * cdef class Variable:
*/
    /*else*/ {
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(Py_False);
      __pyx_r = Py_False;
      goto __pyx_L0;
    }
  }

  /* "netCDF4/_netCDF4.pyx":3796
 *         return self._grp
 * 
 *     def isunlimited(self):             # <<<<<<<<<<<<<<
 *         """
 * **`isunlimited(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_AddTraceback("netCDF4._netCDF4.Dimension.isunlimited", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_unlimdim_ids);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":3696
 * `Dimension` instance).
 *     """
 *     cdef public int _dimid, _grpid             # <<<<<<<<<<<<<<
 *     cdef public _data_model, _name, _grp
 * 
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9Dimension_6_dimid_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9Dimension_6_dimid_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_7netCDF4_8_netCDF4_9Dimension_6_dimid___get__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_6_dimid___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *__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_PyLong_From_int(__pyx_v_self->_dimid); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3696, __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("netCDF4._netCDF4.Dimension._dimid.__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_7netCDF4_8_netCDF4_9Dimension_6_dimid_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_9Dimension_6_dimid_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_7netCDF4_8_netCDF4_9Dimension_6_dimid_2__set__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_7netCDF4_8_netCDF4_9Dimension_6_dimid_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *__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_PyLong_As_int(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3696, __pyx_L1_error)
  __pyx_v_self->_dimid = __pyx_t_1;

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("netCDF4._netCDF4.Dimension._dimid.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9Dimension_6_grpid_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9Dimension_6_grpid_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_7netCDF4_8_netCDF4_9Dimension_6_grpid___get__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_6_grpid___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *__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_PyLong_From_int(__pyx_v_self->_grpid); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3696, __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("netCDF4._netCDF4.Dimension._grpid.__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_7netCDF4_8_netCDF4_9Dimension_6_grpid_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_9Dimension_6_grpid_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_7netCDF4_8_netCDF4_9Dimension_6_grpid_2__set__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_7netCDF4_8_netCDF4_9Dimension_6_grpid_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *__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_PyLong_As_int(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3696, __pyx_L1_error)
  __pyx_v_self->_grpid = __pyx_t_1;

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("netCDF4._netCDF4.Dimension._grpid.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":3697
 *     """
 *     cdef public int _dimid, _grpid
 *     cdef public _data_model, _name, _grp             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self, grp, name, size=None, **kwargs):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9Dimension_11_data_model_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9Dimension_11_data_model_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_7netCDF4_8_netCDF4_9Dimension_11_data_model___get__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_11_data_model___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_data_model);
  __pyx_r = __pyx_v_self->_data_model;
  goto __pyx_L0;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_9Dimension_11_data_model_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_9Dimension_11_data_model_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_7netCDF4_8_netCDF4_9Dimension_11_data_model_2__set__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_7netCDF4_8_netCDF4_9Dimension_11_data_model_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *__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->_data_model);
  __Pyx_DECREF(__pyx_v_self->_data_model);
  __pyx_v_self->_data_model = __pyx_v_value;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_9Dimension_11_data_model_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_9Dimension_11_data_model_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_7netCDF4_8_netCDF4_9Dimension_11_data_model_4__del__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *)__pyx_v_self));

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

static int __pyx_pf_7netCDF4_8_netCDF4_9Dimension_11_data_model_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *__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->_data_model);
  __Pyx_DECREF(__pyx_v_self->_data_model);
  __pyx_v_self->_data_model = Py_None;

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

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9Dimension_5_name_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9Dimension_5_name_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_7netCDF4_8_netCDF4_9Dimension_5_name___get__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_5_name___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_name);
  __pyx_r = __pyx_v_self->_name;
  goto __pyx_L0;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_9Dimension_5_name_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_9Dimension_5_name_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_7netCDF4_8_netCDF4_9Dimension_5_name_2__set__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_7netCDF4_8_netCDF4_9Dimension_5_name_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *__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->_name);
  __Pyx_DECREF(__pyx_v_self->_name);
  __pyx_v_self->_name = __pyx_v_value;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_9Dimension_5_name_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_9Dimension_5_name_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_7netCDF4_8_netCDF4_9Dimension_5_name_4__del__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *)__pyx_v_self));

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

static int __pyx_pf_7netCDF4_8_netCDF4_9Dimension_5_name_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *__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->_name);
  __Pyx_DECREF(__pyx_v_self->_name);
  __pyx_v_self->_name = Py_None;

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

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9Dimension_4_grp_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9Dimension_4_grp_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_7netCDF4_8_netCDF4_9Dimension_4_grp___get__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_4_grp___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_grp);
  __pyx_r = __pyx_v_self->_grp;
  goto __pyx_L0;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_9Dimension_4_grp_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_9Dimension_4_grp_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_7netCDF4_8_netCDF4_9Dimension_4_grp_2__set__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_7netCDF4_8_netCDF4_9Dimension_4_grp_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *__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->_grp);
  __Pyx_DECREF(__pyx_v_self->_grp);
  __pyx_v_self->_grp = __pyx_v_value;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_9Dimension_4_grp_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_9Dimension_4_grp_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_7netCDF4_8_netCDF4_9Dimension_4_grp_4__del__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *)__pyx_v_self));

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

static int __pyx_pf_7netCDF4_8_netCDF4_9Dimension_4_grp_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *__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->_grp);
  __Pyx_DECREF(__pyx_v_self->_grp);
  __pyx_v_self->_grp = Py_None;

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

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9Dimension_15__reduce_cython__(PyObject *__pyx_v_self, 
#if 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_7netCDF4_8_netCDF4_9Dimension_15__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_9Dimension_15__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9Dimension_15__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_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_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (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_cython__", 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_cython__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_9Dimension_14__reduce_cython__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_14__reduce_cython__(struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *__pyx_v_self) {
  PyObject *__pyx_v_state = 0;
  PyObject *__pyx_v__dict = 0;
  int __pyx_v_use_setstate;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  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("__reduce_cython__", 0);

  /* "(tree fragment)":5
 *     cdef object _dict
 *     cdef bint use_setstate
 *     state = (self._data_model, self._dimid, self._grp, self._grpid, self._name)             # <<<<<<<<<<<<<<
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None and _dict:
*/
  __pyx_t_1 = __Pyx_PyLong_From_int(__pyx_v_self->_dimid); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyLong_From_int(__pyx_v_self->_grpid); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(5); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_v_self->_data_model);
  __Pyx_GIVEREF(__pyx_v_self->_data_model);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_self->_data_model) != (0)) __PYX_ERR(3, 5, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1) != (0)) __PYX_ERR(3, 5, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_self->_grp);
  __Pyx_GIVEREF(__pyx_v_self->_grp);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_self->_grp) != (0)) __PYX_ERR(3, 5, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_2);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_t_2) != (0)) __PYX_ERR(3, 5, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_self->_name);
  __Pyx_GIVEREF(__pyx_v_self->_name);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 4, __pyx_v_self->_name) != (0)) __PYX_ERR(3, 5, __pyx_L1_error);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_v_state = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "(tree fragment)":6
 *     cdef bint use_setstate
 *     state = (self._data_model, self._dimid, self._grp, self._grpid, self._name)
 *     _dict = getattr(self, '__dict__', None)             # <<<<<<<<<<<<<<
 *     if _dict is not None and _dict:
 *         state += (_dict,)
*/
  __pyx_t_3 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_dict, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_v__dict = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "(tree fragment)":7
 *     state = (self._data_model, self._dimid, self._grp, self._grpid, self._name)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None and _dict:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
*/
  __pyx_t_5 = (__pyx_v__dict != Py_None);
  if (__pyx_t_5) {
  } else {
    __pyx_t_4 = __pyx_t_5;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v__dict); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(3, 7, __pyx_L1_error)
  __pyx_t_4 = __pyx_t_5;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_4) {

    /* "(tree fragment)":8
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None and _dict:
 *         state += (_dict,)             # <<<<<<<<<<<<<<
 *         use_setstate = True
 *     else:
*/
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_v__dict);
    __Pyx_GIVEREF(__pyx_v__dict);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v__dict) != (0)) __PYX_ERR(3, 8, __pyx_L1_error);
    __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_2));
    __pyx_t_2 = 0;

    /* "(tree fragment)":9
 *     if _dict is not None and _dict:
 *         state += (_dict,)
 *         use_setstate = True             # <<<<<<<<<<<<<<
 *     else:
 *         use_setstate = ('self._data_model is not None or self._grp is not None or self._name is not None',)
*/
    __pyx_v_use_setstate = 1;

    /* "(tree fragment)":7
 *     state = (self._data_model, self._dimid, self._grp, self._grpid, self._name)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None and _dict:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
*/
    goto __pyx_L3;
  }

  /* "(tree fragment)":11
 *         use_setstate = True
 *     else:
 *         use_setstate = ('self._data_model is not None or self._grp is not None or self._name is not None',)             # <<<<<<<<<<<<<<
 *     if use_setstate:
 *         return __pyx_unpickle_Dimension, (type(self), 0x0e20e8c, None), state
*/
  /*else*/ {
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_mstate_global->__pyx_tuple[8]); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 11, __pyx_L1_error)
    __pyx_v_use_setstate = __pyx_t_4;
  }
  __pyx_L3:;

  /* "(tree fragment)":12
 *     else:
 *         use_setstate = ('self._data_model is not None or self._grp is not None or self._name is not None',)
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_Dimension, (type(self), 0x0e20e8c, None), state
 *     else:
*/
  if (__pyx_v_use_setstate) {

    /* "(tree fragment)":13
 *         use_setstate = ('self._data_model is not None or self._grp is not None or self._name is not None',)
 *     if use_setstate:
 *         return __pyx_unpickle_Dimension, (type(self), 0x0e20e8c, None), state             # <<<<<<<<<<<<<<
 *     else:
 *         return __pyx_unpickle_Dimension, (type(self), 0x0e20e8c, state)
*/
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_pyx_unpickle_Dimension); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __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_3, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))) != (0)) __PYX_ERR(3, 13, __pyx_L1_error);
    __Pyx_INCREF(__pyx_mstate_global->__pyx_int_14814860);
    __Pyx_GIVEREF(__pyx_mstate_global->__pyx_int_14814860);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_mstate_global->__pyx_int_14814860) != (0)) __PYX_ERR(3, 13, __pyx_L1_error);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 2, Py_None) != (0)) __PYX_ERR(3, 13, __pyx_L1_error);
    __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 13, __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(3, 13, __pyx_L1_error);
    __Pyx_GIVEREF(__pyx_t_3);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_3) != (0)) __PYX_ERR(3, 13, __pyx_L1_error);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state) != (0)) __PYX_ERR(3, 13, __pyx_L1_error);
    __pyx_t_2 = 0;
    __pyx_t_3 = 0;
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "(tree fragment)":12
 *     else:
 *         use_setstate = ('self._data_model is not None or self._grp is not None or self._name is not None',)
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_Dimension, (type(self), 0x0e20e8c, None), state
 *     else:
*/
  }

  /* "(tree fragment)":15
 *         return __pyx_unpickle_Dimension, (type(self), 0x0e20e8c, None), state
 *     else:
 *         return __pyx_unpickle_Dimension, (type(self), 0x0e20e8c, state)             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_Dimension__set_state(self, __pyx_state)
*/
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_pyx_unpickle_Dimension); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __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_3, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))) != (0)) __PYX_ERR(3, 15, __pyx_L1_error);
    __Pyx_INCREF(__pyx_mstate_global->__pyx_int_14814860);
    __Pyx_GIVEREF(__pyx_mstate_global->__pyx_int_14814860);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_mstate_global->__pyx_int_14814860) != (0)) __PYX_ERR(3, 15, __pyx_L1_error);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_state) != (0)) __PYX_ERR(3, 15, __pyx_L1_error);
    __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 15, __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(3, 15, __pyx_L1_error);
    __Pyx_GIVEREF(__pyx_t_3);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_3) != (0)) __PYX_ERR(3, 15, __pyx_L1_error);
    __pyx_t_1 = 0;
    __pyx_t_3 = 0;
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("netCDF4._netCDF4.Dimension.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_state);
  __Pyx_XDECREF(__pyx_v__dict);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_Dimension, (type(self), 0x0e20e8c, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_Dimension__set_state(self, __pyx_state)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9Dimension_17__setstate_cython__(PyObject *__pyx_v_self, 
#if 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_7netCDF4_8_netCDF4_9Dimension_17__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_9Dimension_17__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9Dimension_17__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v___pyx_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_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_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(3, 16, __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(3, 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, "__setstate_cython__", 0) < (0)) __PYX_ERR(3, 16, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(3, 16, __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(3, 16, __pyx_L3_error)
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(3, 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("netCDF4._netCDF4.Dimension.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_9Dimension_16__setstate_cython__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *)__pyx_v_self), __pyx_v___pyx_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_7netCDF4_8_netCDF4_9Dimension_16__setstate_cython__(struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  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("__setstate_cython__", 0);

  /* "(tree fragment)":17
 *         return __pyx_unpickle_Dimension, (type(self), 0x0e20e8c, state)
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_Dimension__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
*/
  __pyx_t_1 = __pyx_v___pyx_state;
  __Pyx_INCREF(__pyx_t_1);
  if (!(likely(PyTuple_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_t_1))) __PYX_ERR(3, 17, __pyx_L1_error)
  if (unlikely(__pyx_t_1 == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "cannot pass None into a C function argument that is declared 'not None'");
    __PYX_ERR(3, 17, __pyx_L1_error)
  }
  __pyx_t_2 = __pyx_f_7netCDF4_8_netCDF4___pyx_unpickle_Dimension__set_state(__pyx_v_self, ((PyObject*)__pyx_t_1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_Dimension, (type(self), 0x0e20e8c, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_Dimension__set_state(self, __pyx_state)
*/

  /* 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("netCDF4._netCDF4.Dimension.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":3913
 *     __orthogonal_indexing__, _has_lsd, _use_get_vars, _ncstring_attrs__, auto_complex
 * 
 *     def __init__(self, grp, name, datatype, dimensions=(),             # <<<<<<<<<<<<<<
 *             compression=None, zlib=False,
 *             complevel=4, shuffle=True, szip_coding='nn', szip_pixels_per_block=8,
*/

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
PyDoc_STRVAR(__pyx_doc_7netCDF4_8_netCDF4_8Variable___init__, "\n        **`__init__(self, group, name, datatype, dimensions=(), compression=None, zlib=False,\n        complevel=4, shuffle=True, szip_coding='nn', szip_pixels_per_block=8,\n        blosc_shuffle=1, fletcher32=False, contiguous=False,\n        chunksizes=None, endian='native',\n        least_significant_digit=None,fill_value=None,chunk_cache=None)`**\n\n        `Variable` constructor.\n\n        **`group`**: `Group` or `Dataset` instance to associate with variable.\n\n        **`name`**: Name of the variable.\n\n        **`datatype`**: `Variable` data type. Can be specified by providing a\n        numpy dtype object, or a string that describes a numpy dtype object.\n        Supported values, corresponding to `str` attribute of numpy dtype\n        objects, include `'f4'` (32-bit floating point), `'f8'` (64-bit floating\n        point), `'i4'` (32-bit signed integer), `'i2'` (16-bit signed integer),\n        `'i8'` (64-bit signed integer), `'i4'` (8-bit signed integer), `'i1'`\n        (8-bit signed integer), `'u1'` (8-bit unsigned integer), `'u2'` (16-bit\n        unsigned integer), `'u4'` (32-bit unsigned integer), `'u8'` (64-bit\n        unsigned integer), or `'S1'` (single-character string).  From\n        compatibility with Scientific.IO.NetCDF, the old Numeric single character\n        typecodes can also be used (`'f'` instead of `'f4'`, `'d'` instead of\n        `'f8'`, `'h'` or `'s'` instead of `'i2'`, `'b'` or `'B'` instead of\n        `'i1'`, `'c'` instead of `'S1'`, and `'i'` or `'l'` instead of\n        `'i4'`). `datatype` can also be a `CompoundType` instance\n        (for a structured, or compound array), a `VLType` instance\n        (for a variable-length array), or the python `str` builtin\n        (for a variable-length string array). Numpy string and unicode datatypes with\n        length greater than one are aliases for `str`.\n\n        **`dimensions`**: a tuple containing the variable's Dimension instances\n        (defined previously with `cre""ateDimension`). Default is an empty tuple\n        which means the variable is a scalar (and therefore has no dimensions).\n\n        **`compression`**: compression algorithm to use.\n        Currently `zlib`,`szip`,`zstd`,`bzip2`,`blosc_lz`,`blosc_lz4`,`blosc_lz4hc`,\n        `blosc_zlib` and `blosc_zstd` are supported.\n        Default is `None` (no compression).  All of the compressors except\n        `zlib` and `szip` use the HDF5 plugin architecture.\n\n        **`zlib`**: if `True`, data assigned to the `Variable`\n        instance is compressed on disk. Default `False`. Deprecated - use\n        `compression='zlib'` instead.\n\n        **`complevel`**: the level of compression to use (1 is the fastest,\n        but poorest compression, 9 is the slowest but best compression). Default 4.\n        Ignored if `compression=None` or `szip`. A value of 0 disables compression.\n\n        **`shuffle`**: if `True`, the HDF5 shuffle filter is applied\n        to improve zlib compression. Default `True`. Ignored unless `compression = 'zlib'`.\n\n        **`blosc_shuffle`**: shuffle filter inside blosc compressor (only\n        relevant if compression kwarg set to one of the blosc compressors).\n        Can be 0 (no blosc shuffle), 1 (bytewise shuffle) or 2 (bitwise\n        shuffle)). Default is 1. Ignored if blosc compressor not used.\n\n        **`szip_coding`**: szip coding method. Can be `ec` (entropy coding)\n        or `nn` (nearest neighbor coding). Default is `nn`.\n        Ignored if szip compressor not used.\n\n        **`szip_pixels_per_block`**: Can be 4,8,16 or 32 (Default 8).\n        Ignored if szip compressor not used.\n\n        **`fletcher32`**: if `True` (default `False`), the Fletcher32 checksum\n        algorithm is used for error detection.\n\n        **`contiguous`**: if `True` (default `False`), the variable data is\n        stored contiguously on disk.  Default `False`. Setting to `True` for\n        a variable with an unlimited dimension will tr""igger an error. Fixed\n        size variables (with no unlimited dimension) with no compression\n        filters are contiguous by default.\n\n        **`chunksizes`**: Can be used to specify the HDF5 chunksizes for each\n        dimension of the variable. A detailed discussion of HDF chunking and I/O\n        performance is available\n        [here](https://support.hdfgroup.org/HDF5/doc/Advanced/Chunking).\n        The default chunking scheme in the netcdf-c library is discussed\n        [here](https://www.unidata.ucar.edu/software/netcdf/documentation/NUG/netcdf_perf_chunking.html).\n        Basically, you want the chunk size for each dimension to match as\n        closely as possible the size of the data block that users will read\n        from the file. `chunksizes` cannot be set if `contiguous=True`.\n\n        **`endian`**: Can be used to control whether the\n        data is stored in little or big endian format on disk. Possible\n        values are `little, big` or `native` (default). The library\n        will automatically handle endian conversions when the data is read,\n        but if the data is always going to be read on a computer with the\n        opposite format as the one used to create the file, there may be\n        some performance advantage to be gained by setting the endian-ness.\n        For netCDF 3 files (that don't use HDF5), only `endian='native'` is allowed.\n\n        The `compression, zlib, complevel, shuffle, fletcher32, contiguous` and `chunksizes`\n        keywords are silently ignored for netCDF 3 files that do not use HDF5.\n\n        **`least_significant_digit`**: If this or `significant_digits` are specified,\n        variable data will be truncated (quantized).\n        In conjunction with `compression='zlib'` this produces\n        'lossy', but significantly more efficient compression. For example, if\n        `least_significant_digit=1`, data will be quantized using\n        around(scale*data)/scale, where scale = 2**bits, and ""bits is determined\n        so that a precision of 0.1 is retained (in this case bits=4). Default is\n        `None`, or no quantization.\n\n        **`significant_digits`**: New in version 1.6.0.\n        As described for `least_significant_digit`\n        except the number of significant digits retained is prescribed independent\n        of the floating point exponent. Default `None` - no quantization done.\n\n        **`quantize_mode`**: New in version 1.6.0. Controls\n        the quantization algorithm (default 'BitGroom', 'BitRound' and\n        'GranularBitRound' also available).  The 'GranularBitRound'\n        algorithm may result in better compression for typical geophysical datasets.\n        Ignored if `significant_digts` not specified. If 'BitRound' is used, then\n        `significant_digits` is interpreted as binary (not decimal) digits.\n\n        **`fill_value`**:  If specified, the default netCDF fill value (the\n        value that the variable gets filled with before any data is written to it)\n        is replaced with this value, and the `_FillValue` attribute is set.\n        If fill_value is set to `False`, then the variable is not pre-filled.\n        The default netCDF fill values can be found in the dictionary `netCDF4.default_fillvals`.\n        If not set, the default fill value will be used but no `_FillValue` attribute will be created\n        (this is the default behavior of the netcdf-c library). If you want to use the \n        default fill value, but have the `_FillValue` attribute set, use\n        `fill_value='default'` (note - this only works for primitive data types). `Variable.get_fill_value`\n        can be used to retrieve the fill value, even if the `_FillValue` attribute is not set.\n\n        **`chunk_cache`**: If specified, sets the chunk cache size for this variable.\n        Persists as long as Dataset is open. Use `set_var_chunk_cache` to\n        change it when Dataset is re-opened.\n\n        ***Note***: `Variable` inst""ances should be created using the\n        `Dataset.createVariable` method of a `Dataset` or\n        `Group` instance, not using this class directly.\n        ");
#if CYTHON_UPDATE_DESCRIPTOR_DOC
struct wrapperbase __pyx_wrapperbase_7netCDF4_8_netCDF4_8Variable___init__;
#endif
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_grp = 0;
  PyObject *__pyx_v_name = 0;
  PyObject *__pyx_v_datatype = 0;
  PyObject *__pyx_v_dimensions = 0;
  PyObject *__pyx_v_compression = 0;
  PyObject *__pyx_v_zlib = 0;
  PyObject *__pyx_v_complevel = 0;
  PyObject *__pyx_v_shuffle = 0;
  PyObject *__pyx_v_szip_coding = 0;
  PyObject *__pyx_v_szip_pixels_per_block = 0;
  PyObject *__pyx_v_blosc_shuffle = 0;
  PyObject *__pyx_v_fletcher32 = 0;
  PyObject *__pyx_v_contiguous = 0;
  PyObject *__pyx_v_chunksizes = 0;
  PyObject *__pyx_v_endian = 0;
  PyObject *__pyx_v_least_significant_digit = 0;
  PyObject *__pyx_v_significant_digits = 0;
  PyObject *__pyx_v_quantize_mode = 0;
  PyObject *__pyx_v_fill_value = 0;
  PyObject *__pyx_v_chunk_cache = 0;
  PyObject *__pyx_v_kwargs = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[20] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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("__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);
  __pyx_v_kwargs = PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return -1;
  __Pyx_GOTREF(__pyx_v_kwargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_grp,&__pyx_mstate_global->__pyx_n_u_name,&__pyx_mstate_global->__pyx_n_u_datatype,&__pyx_mstate_global->__pyx_n_u_dimensions,&__pyx_mstate_global->__pyx_n_u_compression,&__pyx_mstate_global->__pyx_n_u_zlib,&__pyx_mstate_global->__pyx_n_u_complevel,&__pyx_mstate_global->__pyx_n_u_shuffle,&__pyx_mstate_global->__pyx_n_u_szip_coding,&__pyx_mstate_global->__pyx_n_u_szip_pixels_per_block,&__pyx_mstate_global->__pyx_n_u_blosc_shuffle,&__pyx_mstate_global->__pyx_n_u_fletcher32,&__pyx_mstate_global->__pyx_n_u_contiguous,&__pyx_mstate_global->__pyx_n_u_chunksizes,&__pyx_mstate_global->__pyx_n_u_endian,&__pyx_mstate_global->__pyx_n_u_least_significant_digit,&__pyx_mstate_global->__pyx_n_u_significant_digits,&__pyx_mstate_global->__pyx_n_u_quantize_mode,&__pyx_mstate_global->__pyx_n_u_fill_value,&__pyx_mstate_global->__pyx_n_u_chunk_cache,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 3913, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case 20:
        values[19] = __Pyx_ArgRef_VARARGS(__pyx_args, 19);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[19])) __PYX_ERR(0, 3913, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 19:
        values[18] = __Pyx_ArgRef_VARARGS(__pyx_args, 18);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[18])) __PYX_ERR(0, 3913, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 18:
        values[17] = __Pyx_ArgRef_VARARGS(__pyx_args, 17);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[17])) __PYX_ERR(0, 3913, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 17:
        values[16] = __Pyx_ArgRef_VARARGS(__pyx_args, 16);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[16])) __PYX_ERR(0, 3913, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 16:
        values[15] = __Pyx_ArgRef_VARARGS(__pyx_args, 15);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[15])) __PYX_ERR(0, 3913, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 15:
        values[14] = __Pyx_ArgRef_VARARGS(__pyx_args, 14);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[14])) __PYX_ERR(0, 3913, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 14:
        values[13] = __Pyx_ArgRef_VARARGS(__pyx_args, 13);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[13])) __PYX_ERR(0, 3913, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 13:
        values[12] = __Pyx_ArgRef_VARARGS(__pyx_args, 12);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[12])) __PYX_ERR(0, 3913, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 12:
        values[11] = __Pyx_ArgRef_VARARGS(__pyx_args, 11);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[11])) __PYX_ERR(0, 3913, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 11:
        values[10] = __Pyx_ArgRef_VARARGS(__pyx_args, 10);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[10])) __PYX_ERR(0, 3913, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 10:
        values[9] = __Pyx_ArgRef_VARARGS(__pyx_args, 9);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[9])) __PYX_ERR(0, 3913, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  9:
        values[8] = __Pyx_ArgRef_VARARGS(__pyx_args, 8);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[8])) __PYX_ERR(0, 3913, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  8:
        values[7] = __Pyx_ArgRef_VARARGS(__pyx_args, 7);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[7])) __PYX_ERR(0, 3913, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  7:
        values[6] = __Pyx_ArgRef_VARARGS(__pyx_args, 6);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[6])) __PYX_ERR(0, 3913, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  6:
        values[5] = __Pyx_ArgRef_VARARGS(__pyx_args, 5);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(0, 3913, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  5:
        values[4] = __Pyx_ArgRef_VARARGS(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 3913, __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(0, 3913, __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(0, 3913, __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(0, 3913, __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(0, 3913, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        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_kwargs, values, kwd_pos_args, __pyx_kwds_len, "__init__", 1) < (0)) __PYX_ERR(0, 3913, __pyx_L3_error)
      if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_empty_tuple));

      /* "netCDF4/_netCDF4.pyx":3914
 * 
 *     def __init__(self, grp, name, datatype, dimensions=(),
 *             compression=None, zlib=False,             # <<<<<<<<<<<<<<
 *             complevel=4, shuffle=True, szip_coding='nn', szip_pixels_per_block=8,
 *             blosc_shuffle=1,
*/
      if (!values[4]) values[4] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[5]) values[5] = __Pyx_NewRef(((PyObject *)Py_False));
      if (!values[6]) values[6] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_4));

      /* "netCDF4/_netCDF4.pyx":3915
 *     def __init__(self, grp, name, datatype, dimensions=(),
 *             compression=None, zlib=False,
 *             complevel=4, shuffle=True, szip_coding='nn', szip_pixels_per_block=8,             # <<<<<<<<<<<<<<
 *             blosc_shuffle=1,
 *             fletcher32=False, contiguous=False,
*/
      if (!values[7]) values[7] = __Pyx_NewRef(((PyObject *)Py_True));
      if (!values[8]) values[8] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_n_u_nn));
      if (!values[9]) values[9] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_8));
      if (!values[10]) values[10] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_1));

      /* "netCDF4/_netCDF4.pyx":3917
 *             complevel=4, shuffle=True, szip_coding='nn', szip_pixels_per_block=8,
 *             blosc_shuffle=1,
 *             fletcher32=False, contiguous=False,             # <<<<<<<<<<<<<<
 *             chunksizes=None, endian='native', least_significant_digit=None,
 *             significant_digits=None,quantize_mode='BitGroom',fill_value=None, chunk_cache=None,
*/
      if (!values[11]) values[11] = __Pyx_NewRef(((PyObject *)Py_False));
      if (!values[12]) values[12] = __Pyx_NewRef(((PyObject *)Py_False));

      /* "netCDF4/_netCDF4.pyx":3918
 *             blosc_shuffle=1,
 *             fletcher32=False, contiguous=False,
 *             chunksizes=None, endian='native', least_significant_digit=None,             # <<<<<<<<<<<<<<
 *             significant_digits=None,quantize_mode='BitGroom',fill_value=None, chunk_cache=None,
 *             **kwargs):
*/
      if (!values[13]) values[13] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[14]) values[14] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_n_u_native));
      if (!values[15]) values[15] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "netCDF4/_netCDF4.pyx":3919
 *             fletcher32=False, contiguous=False,
 *             chunksizes=None, endian='native', least_significant_digit=None,
 *             significant_digits=None,quantize_mode='BitGroom',fill_value=None, chunk_cache=None,             # <<<<<<<<<<<<<<
 *             **kwargs):
 *         """
*/
      if (!values[16]) values[16] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[17]) values[17] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_n_u_BitGroom));
      if (!values[18]) values[18] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[19]) values[19] = __Pyx_NewRef(((PyObject *)Py_None));
      for (Py_ssize_t i = __pyx_nargs; i < 3; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__init__", 0, 3, 20, i); __PYX_ERR(0, 3913, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case 20:
        values[19] = __Pyx_ArgRef_VARARGS(__pyx_args, 19);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[19])) __PYX_ERR(0, 3913, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 19:
        values[18] = __Pyx_ArgRef_VARARGS(__pyx_args, 18);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[18])) __PYX_ERR(0, 3913, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 18:
        values[17] = __Pyx_ArgRef_VARARGS(__pyx_args, 17);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[17])) __PYX_ERR(0, 3913, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 17:
        values[16] = __Pyx_ArgRef_VARARGS(__pyx_args, 16);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[16])) __PYX_ERR(0, 3913, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 16:
        values[15] = __Pyx_ArgRef_VARARGS(__pyx_args, 15);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[15])) __PYX_ERR(0, 3913, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 15:
        values[14] = __Pyx_ArgRef_VARARGS(__pyx_args, 14);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[14])) __PYX_ERR(0, 3913, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 14:
        values[13] = __Pyx_ArgRef_VARARGS(__pyx_args, 13);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[13])) __PYX_ERR(0, 3913, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 13:
        values[12] = __Pyx_ArgRef_VARARGS(__pyx_args, 12);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[12])) __PYX_ERR(0, 3913, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 12:
        values[11] = __Pyx_ArgRef_VARARGS(__pyx_args, 11);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[11])) __PYX_ERR(0, 3913, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 11:
        values[10] = __Pyx_ArgRef_VARARGS(__pyx_args, 10);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[10])) __PYX_ERR(0, 3913, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 10:
        values[9] = __Pyx_ArgRef_VARARGS(__pyx_args, 9);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[9])) __PYX_ERR(0, 3913, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  9:
        values[8] = __Pyx_ArgRef_VARARGS(__pyx_args, 8);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[8])) __PYX_ERR(0, 3913, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  8:
        values[7] = __Pyx_ArgRef_VARARGS(__pyx_args, 7);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[7])) __PYX_ERR(0, 3913, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  7:
        values[6] = __Pyx_ArgRef_VARARGS(__pyx_args, 6);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[6])) __PYX_ERR(0, 3913, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  6:
        values[5] = __Pyx_ArgRef_VARARGS(__pyx_args, 5);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(0, 3913, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  5:
        values[4] = __Pyx_ArgRef_VARARGS(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 3913, __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(0, 3913, __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(0, 3913, __pyx_L3_error)
        values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 3913, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 3913, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }

      /* "netCDF4/_netCDF4.pyx":3913
 *     __orthogonal_indexing__, _has_lsd, _use_get_vars, _ncstring_attrs__, auto_complex
 * 
 *     def __init__(self, grp, name, datatype, dimensions=(),             # <<<<<<<<<<<<<<
 *             compression=None, zlib=False,
 *             complevel=4, shuffle=True, szip_coding='nn', szip_pixels_per_block=8,
*/
      if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_empty_tuple));

      /* "netCDF4/_netCDF4.pyx":3914
 * 
 *     def __init__(self, grp, name, datatype, dimensions=(),
 *             compression=None, zlib=False,             # <<<<<<<<<<<<<<
 *             complevel=4, shuffle=True, szip_coding='nn', szip_pixels_per_block=8,
 *             blosc_shuffle=1,
*/
      if (!values[4]) values[4] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[5]) values[5] = __Pyx_NewRef(((PyObject *)Py_False));
      if (!values[6]) values[6] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_4));

      /* "netCDF4/_netCDF4.pyx":3915
 *     def __init__(self, grp, name, datatype, dimensions=(),
 *             compression=None, zlib=False,
 *             complevel=4, shuffle=True, szip_coding='nn', szip_pixels_per_block=8,             # <<<<<<<<<<<<<<
 *             blosc_shuffle=1,
 *             fletcher32=False, contiguous=False,
*/
      if (!values[7]) values[7] = __Pyx_NewRef(((PyObject *)Py_True));
      if (!values[8]) values[8] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_n_u_nn));
      if (!values[9]) values[9] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_8));
      if (!values[10]) values[10] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_1));

      /* "netCDF4/_netCDF4.pyx":3917
 *             complevel=4, shuffle=True, szip_coding='nn', szip_pixels_per_block=8,
 *             blosc_shuffle=1,
 *             fletcher32=False, contiguous=False,             # <<<<<<<<<<<<<<
 *             chunksizes=None, endian='native', least_significant_digit=None,
 *             significant_digits=None,quantize_mode='BitGroom',fill_value=None, chunk_cache=None,
*/
      if (!values[11]) values[11] = __Pyx_NewRef(((PyObject *)Py_False));
      if (!values[12]) values[12] = __Pyx_NewRef(((PyObject *)Py_False));

      /* "netCDF4/_netCDF4.pyx":3918
 *             blosc_shuffle=1,
 *             fletcher32=False, contiguous=False,
 *             chunksizes=None, endian='native', least_significant_digit=None,             # <<<<<<<<<<<<<<
 *             significant_digits=None,quantize_mode='BitGroom',fill_value=None, chunk_cache=None,
 *             **kwargs):
*/
      if (!values[13]) values[13] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[14]) values[14] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_n_u_native));
      if (!values[15]) values[15] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "netCDF4/_netCDF4.pyx":3919
 *             fletcher32=False, contiguous=False,
 *             chunksizes=None, endian='native', least_significant_digit=None,
 *             significant_digits=None,quantize_mode='BitGroom',fill_value=None, chunk_cache=None,             # <<<<<<<<<<<<<<
 *             **kwargs):
 *         """
*/
      if (!values[16]) values[16] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[17]) values[17] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_n_u_BitGroom));
      if (!values[18]) values[18] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[19]) values[19] = __Pyx_NewRef(((PyObject *)Py_None));
    }
    __pyx_v_grp = values[0];
    __pyx_v_name = values[1];
    __pyx_v_datatype = values[2];
    __pyx_v_dimensions = values[3];
    __pyx_v_compression = values[4];
    __pyx_v_zlib = values[5];
    __pyx_v_complevel = values[6];
    __pyx_v_shuffle = values[7];
    __pyx_v_szip_coding = values[8];
    __pyx_v_szip_pixels_per_block = values[9];
    __pyx_v_blosc_shuffle = values[10];
    __pyx_v_fletcher32 = values[11];
    __pyx_v_contiguous = values[12];
    __pyx_v_chunksizes = values[13];
    __pyx_v_endian = values[14];
    __pyx_v_least_significant_digit = values[15];
    __pyx_v_significant_digits = values[16];
    __pyx_v_quantize_mode = values[17];
    __pyx_v_fill_value = values[18];
    __pyx_v_chunk_cache = values[19];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 0, 3, 20, __pyx_nargs); __PYX_ERR(0, 3913, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (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_kwargs); __pyx_v_kwargs = 0;
  __Pyx_AddTraceback("netCDF4._netCDF4.Variable.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self), __pyx_v_grp, __pyx_v_name, __pyx_v_datatype, __pyx_v_dimensions, __pyx_v_compression, __pyx_v_zlib, __pyx_v_complevel, __pyx_v_shuffle, __pyx_v_szip_coding, __pyx_v_szip_pixels_per_block, __pyx_v_blosc_shuffle, __pyx_v_fletcher32, __pyx_v_contiguous, __pyx_v_chunksizes, __pyx_v_endian, __pyx_v_least_significant_digit, __pyx_v_significant_digits, __pyx_v_quantize_mode, __pyx_v_fill_value, __pyx_v_chunk_cache, __pyx_v_kwargs);

  /* "netCDF4/_netCDF4.pyx":3913
 *     __orthogonal_indexing__, _has_lsd, _use_get_vars, _ncstring_attrs__, auto_complex
 * 
 *     def __init__(self, grp, name, datatype, dimensions=(),             # <<<<<<<<<<<<<<
 *             compression=None, zlib=False,
 *             complevel=4, shuffle=True, szip_coding='nn', szip_pixels_per_block=8,
*/

  /* function exit code */
  for (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_kwargs);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, PyObject *__pyx_v_grp, PyObject *__pyx_v_name, PyObject *__pyx_v_datatype, PyObject *__pyx_v_dimensions, PyObject *__pyx_v_compression, PyObject *__pyx_v_zlib, PyObject *__pyx_v_complevel, PyObject *__pyx_v_shuffle, PyObject *__pyx_v_szip_coding, PyObject *__pyx_v_szip_pixels_per_block, PyObject *__pyx_v_blosc_shuffle, PyObject *__pyx_v_fletcher32, PyObject *__pyx_v_contiguous, PyObject *__pyx_v_chunksizes, PyObject *__pyx_v_endian, PyObject *__pyx_v_least_significant_digit, PyObject *__pyx_v_significant_digits, PyObject *__pyx_v_quantize_mode, PyObject *__pyx_v_fill_value, PyObject *__pyx_v_chunk_cache, PyObject *__pyx_v_kwargs) {
  int __pyx_v_ierr;
  int __pyx_v_ndims;
  int __pyx_v_icontiguous;
  int __pyx_v_icomplevel;
  int __pyx_v_nsd;
  unsigned int __pyx_v_iblosc_complevel;
  unsigned int __pyx_v_iblosc_blocksize;
  unsigned int __pyx_v_iblosc_compressor;
  unsigned int __pyx_v_iblosc_shuffle;
  int __pyx_v_iszip_coding;
  int __pyx_v_iszip_pixels_per_block;
  char __pyx_v_namstring[(NC_MAX_NAME + 1)];
  char *__pyx_v_varname;
  nc_type __pyx_v_xtype;
  int *__pyx_v_dimids;
  size_t __pyx_v_sizep;
  size_t __pyx_v_nelemsp;
  size_t *__pyx_v_chunksizesp;
  float __pyx_v_preemptionp;
  int __pyx_v__nc_endian;
  PyObject *__pyx_v_error_info = NULL;
  int __pyx_v_szip;
  int __pyx_v_zstd;
  int __pyx_v_bzip2;
  int __pyx_v_blosc_lz;
  int __pyx_v_blosc_lz4;
  int __pyx_v_blosc_lz4hc;
  int __pyx_v_blosc_zlib;
  int __pyx_v_blosc_zstd;
  PyObject *__pyx_v_user_type = NULL;
  PyObject *__pyx_v_is_complex = NULL;
  PyObject *__pyx_v_dtype_endian = NULL;
  PyObject *__pyx_v_bytestr = NULL;
  int __pyx_v_n;
  PyObject *__pyx_v_msg = NULL;
  PyObject *__pyx_v_fillval = NULL;
  PyObject *__pyx_v_dim = NULL;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4[5];
  int __pyx_t_5;
  int __pyx_t_6;
  int __pyx_t_7;
  size_t __pyx_t_8;
  PyObject *__pyx_t_9[4];
  PyObject *__pyx_t_10 = NULL;
  int __pyx_t_11;
  PyObject *__pyx_t_12[3];
  nc_type __pyx_t_13;
  PyObject *__pyx_t_14 = NULL;
  PyObject *__pyx_t_15[6];
  char *__pyx_t_16;
  Py_ssize_t __pyx_t_17;
  int __pyx_t_18;
  int __pyx_t_19;
  int __pyx_t_20;
  PyObject *__pyx_t_21 = NULL;
  PyObject *__pyx_t_22 = NULL;
  PyObject *__pyx_t_23 = NULL;
  unsigned int __pyx_t_24;
  Py_ssize_t __pyx_t_25;
  int __pyx_t_26;
  PyObject *__pyx_t_27 = NULL;
  struct __pyx_opt_args_7netCDF4_8_netCDF4__set_att __pyx_t_28;
  PyObject *(*__pyx_t_29)(PyObject *);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);
  __Pyx_INCREF(__pyx_v_datatype);
  __Pyx_INCREF(__pyx_v_compression);
  __Pyx_INCREF(__pyx_v_zlib);

  /* "netCDF4/_netCDF4.pyx":4063
 *         cdef char *varname
 *         cdef nc_type xtype
 *         cdef int *dimids = NULL             # <<<<<<<<<<<<<<
 *         cdef size_t sizep, nelemsp
 *         cdef size_t *chunksizesp
*/
  __pyx_v_dimids = NULL;

  /* "netCDF4/_netCDF4.pyx":4071
 * 
 *         # Extra information for more helpful error messages
 *         error_info = f"(variable '{name}', group '{grp.name}')"             # <<<<<<<<<<<<<<
 * 
 *         # flag to indicate that orthogonal indexing is supported
*/
  __pyx_t_1 = __Pyx_PyObject_FormatSimple(__pyx_v_name, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4071, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_mstate_global->__pyx_n_u_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4071, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_FormatSimple(__pyx_t_2, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4071, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4[0] = __pyx_mstate_global->__pyx_kp_u_variable;
  __pyx_t_4[1] = __pyx_t_1;
  __pyx_t_4[2] = __pyx_mstate_global->__pyx_kp_u_group;
  __pyx_t_4[3] = __pyx_t_3;
  __pyx_t_4[4] = __pyx_mstate_global->__pyx_kp_u__17;
  __pyx_t_2 = __Pyx_PyUnicode_Join(__pyx_t_4, 5, 11 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_1) + 10 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3) + 2, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3));
  if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4071, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_error_info = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":4074
 * 
 *         # flag to indicate that orthogonal indexing is supported
 *         self.__orthogonal_indexing__ = True             # <<<<<<<<<<<<<<
 *         # For backwards compatibility, deprecated zlib kwarg takes
 *         # precedence if compression kwarg not set.
*/
  __Pyx_INCREF(Py_True);
  __Pyx_GIVEREF(Py_True);
  __Pyx_GOTREF(__pyx_v_self->__pyx___orthogonal_indexing__);
  __Pyx_DECREF(__pyx_v_self->__pyx___orthogonal_indexing__);
  __pyx_v_self->__pyx___orthogonal_indexing__ = Py_True;

  /* "netCDF4/_netCDF4.pyx":4077
 *         # For backwards compatibility, deprecated zlib kwarg takes
 *         # precedence if compression kwarg not set.
 *         if zlib and not compression:             # <<<<<<<<<<<<<<
 *             compression = 'zlib'
 *         # if complevel is set to zero, turn off compression
*/
  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_zlib); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 4077, __pyx_L1_error)
  if (__pyx_t_6) {
  } else {
    __pyx_t_5 = __pyx_t_6;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_compression); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 4077, __pyx_L1_error)
  __pyx_t_7 = (!__pyx_t_6);
  __pyx_t_5 = __pyx_t_7;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_5) {

    /* "netCDF4/_netCDF4.pyx":4078
 *         # precedence if compression kwarg not set.
 *         if zlib and not compression:
 *             compression = 'zlib'             # <<<<<<<<<<<<<<
 *         # if complevel is set to zero, turn off compression
 *         if not complevel:
*/
    __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_zlib);
    __Pyx_DECREF_SET(__pyx_v_compression, __pyx_mstate_global->__pyx_n_u_zlib);

    /* "netCDF4/_netCDF4.pyx":4077
 *         # For backwards compatibility, deprecated zlib kwarg takes
 *         # precedence if compression kwarg not set.
 *         if zlib and not compression:             # <<<<<<<<<<<<<<
 *             compression = 'zlib'
 *         # if complevel is set to zero, turn off compression
*/
  }

  /* "netCDF4/_netCDF4.pyx":4080
 *             compression = 'zlib'
 *         # if complevel is set to zero, turn off compression
 *         if not complevel:             # <<<<<<<<<<<<<<
 *             compression = None
 *         zlib = False
*/
  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_complevel); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 4080, __pyx_L1_error)
  __pyx_t_7 = (!__pyx_t_5);
  if (__pyx_t_7) {

    /* "netCDF4/_netCDF4.pyx":4081
 *         # if complevel is set to zero, turn off compression
 *         if not complevel:
 *             compression = None             # <<<<<<<<<<<<<<
 *         zlib = False
 *         szip = False
*/
    __Pyx_INCREF(Py_None);
    __Pyx_DECREF_SET(__pyx_v_compression, Py_None);

    /* "netCDF4/_netCDF4.pyx":4080
 *             compression = 'zlib'
 *         # if complevel is set to zero, turn off compression
 *         if not complevel:             # <<<<<<<<<<<<<<
 *             compression = None
 *         zlib = False
*/
  }

  /* "netCDF4/_netCDF4.pyx":4082
 *         if not complevel:
 *             compression = None
 *         zlib = False             # <<<<<<<<<<<<<<
 *         szip = False
 *         zstd = False
*/
  __Pyx_INCREF(Py_False);
  __Pyx_DECREF_SET(__pyx_v_zlib, Py_False);

  /* "netCDF4/_netCDF4.pyx":4083
 *             compression = None
 *         zlib = False
 *         szip = False             # <<<<<<<<<<<<<<
 *         zstd = False
 *         bzip2 = False
*/
  __pyx_v_szip = 0;

  /* "netCDF4/_netCDF4.pyx":4084
 *         zlib = False
 *         szip = False
 *         zstd = False             # <<<<<<<<<<<<<<
 *         bzip2 = False
 *         blosc_lz = False
*/
  __pyx_v_zstd = 0;

  /* "netCDF4/_netCDF4.pyx":4085
 *         szip = False
 *         zstd = False
 *         bzip2 = False             # <<<<<<<<<<<<<<
 *         blosc_lz = False
 *         blosc_lz4 = False
*/
  __pyx_v_bzip2 = 0;

  /* "netCDF4/_netCDF4.pyx":4086
 *         zstd = False
 *         bzip2 = False
 *         blosc_lz = False             # <<<<<<<<<<<<<<
 *         blosc_lz4 = False
 *         blosc_lz4hc = False
*/
  __pyx_v_blosc_lz = 0;

  /* "netCDF4/_netCDF4.pyx":4087
 *         bzip2 = False
 *         blosc_lz = False
 *         blosc_lz4 = False             # <<<<<<<<<<<<<<
 *         blosc_lz4hc = False
 *         #blosc_snappy = False
*/
  __pyx_v_blosc_lz4 = 0;

  /* "netCDF4/_netCDF4.pyx":4088
 *         blosc_lz = False
 *         blosc_lz4 = False
 *         blosc_lz4hc = False             # <<<<<<<<<<<<<<
 *         #blosc_snappy = False
 *         blosc_zlib = False
*/
  __pyx_v_blosc_lz4hc = 0;

  /* "netCDF4/_netCDF4.pyx":4090
 *         blosc_lz4hc = False
 *         #blosc_snappy = False
 *         blosc_zlib = False             # <<<<<<<<<<<<<<
 *         blosc_zstd = False
 *         if compression == 'zlib':
*/
  __pyx_v_blosc_zlib = 0;

  /* "netCDF4/_netCDF4.pyx":4091
 *         #blosc_snappy = False
 *         blosc_zlib = False
 *         blosc_zstd = False             # <<<<<<<<<<<<<<
 *         if compression == 'zlib':
 *             zlib = True
*/
  __pyx_v_blosc_zstd = 0;

  /* "netCDF4/_netCDF4.pyx":4092
 *         blosc_zlib = False
 *         blosc_zstd = False
 *         if compression == 'zlib':             # <<<<<<<<<<<<<<
 *             zlib = True
 *         elif compression == 'szip':
*/
  __pyx_t_7 = (__Pyx_PyUnicode_Equals(__pyx_v_compression, __pyx_mstate_global->__pyx_n_u_zlib, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 4092, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "netCDF4/_netCDF4.pyx":4093
 *         blosc_zstd = False
 *         if compression == 'zlib':
 *             zlib = True             # <<<<<<<<<<<<<<
 *         elif compression == 'szip':
 *             szip = True
*/
    __Pyx_INCREF(Py_True);
    __Pyx_DECREF_SET(__pyx_v_zlib, Py_True);

    /* "netCDF4/_netCDF4.pyx":4092
 *         blosc_zlib = False
 *         blosc_zstd = False
 *         if compression == 'zlib':             # <<<<<<<<<<<<<<
 *             zlib = True
 *         elif compression == 'szip':
*/
    goto __pyx_L7;
  }

  /* "netCDF4/_netCDF4.pyx":4094
 *         if compression == 'zlib':
 *             zlib = True
 *         elif compression == 'szip':             # <<<<<<<<<<<<<<
 *             szip = True
 *         elif compression == 'zstd':
*/
  __pyx_t_7 = (__Pyx_PyUnicode_Equals(__pyx_v_compression, __pyx_mstate_global->__pyx_n_u_szip, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 4094, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "netCDF4/_netCDF4.pyx":4095
 *             zlib = True
 *         elif compression == 'szip':
 *             szip = True             # <<<<<<<<<<<<<<
 *         elif compression == 'zstd':
 *             zstd = True
*/
    __pyx_v_szip = 1;

    /* "netCDF4/_netCDF4.pyx":4094
 *         if compression == 'zlib':
 *             zlib = True
 *         elif compression == 'szip':             # <<<<<<<<<<<<<<
 *             szip = True
 *         elif compression == 'zstd':
*/
    goto __pyx_L7;
  }

  /* "netCDF4/_netCDF4.pyx":4096
 *         elif compression == 'szip':
 *             szip = True
 *         elif compression == 'zstd':             # <<<<<<<<<<<<<<
 *             zstd = True
 *         elif compression == 'bzip2':
*/
  __pyx_t_7 = (__Pyx_PyUnicode_Equals(__pyx_v_compression, __pyx_mstate_global->__pyx_n_u_zstd, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 4096, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "netCDF4/_netCDF4.pyx":4097
 *             szip = True
 *         elif compression == 'zstd':
 *             zstd = True             # <<<<<<<<<<<<<<
 *         elif compression == 'bzip2':
 *             bzip2 = True
*/
    __pyx_v_zstd = 1;

    /* "netCDF4/_netCDF4.pyx":4096
 *         elif compression == 'szip':
 *             szip = True
 *         elif compression == 'zstd':             # <<<<<<<<<<<<<<
 *             zstd = True
 *         elif compression == 'bzip2':
*/
    goto __pyx_L7;
  }

  /* "netCDF4/_netCDF4.pyx":4098
 *         elif compression == 'zstd':
 *             zstd = True
 *         elif compression == 'bzip2':             # <<<<<<<<<<<<<<
 *             bzip2 = True
 *         elif compression == 'blosc_lz':
*/
  __pyx_t_7 = (__Pyx_PyUnicode_Equals(__pyx_v_compression, __pyx_mstate_global->__pyx_n_u_bzip2, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 4098, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "netCDF4/_netCDF4.pyx":4099
 *             zstd = True
 *         elif compression == 'bzip2':
 *             bzip2 = True             # <<<<<<<<<<<<<<
 *         elif compression == 'blosc_lz':
 *             blosc_lz = True
*/
    __pyx_v_bzip2 = 1;

    /* "netCDF4/_netCDF4.pyx":4098
 *         elif compression == 'zstd':
 *             zstd = True
 *         elif compression == 'bzip2':             # <<<<<<<<<<<<<<
 *             bzip2 = True
 *         elif compression == 'blosc_lz':
*/
    goto __pyx_L7;
  }

  /* "netCDF4/_netCDF4.pyx":4100
 *         elif compression == 'bzip2':
 *             bzip2 = True
 *         elif compression == 'blosc_lz':             # <<<<<<<<<<<<<<
 *             blosc_lz = True
 *         elif compression == 'blosc_lz4':
*/
  __pyx_t_7 = (__Pyx_PyUnicode_Equals(__pyx_v_compression, __pyx_mstate_global->__pyx_n_u_blosc_lz, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 4100, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "netCDF4/_netCDF4.pyx":4101
 *             bzip2 = True
 *         elif compression == 'blosc_lz':
 *             blosc_lz = True             # <<<<<<<<<<<<<<
 *         elif compression == 'blosc_lz4':
 *             blosc_lz4 = True
*/
    __pyx_v_blosc_lz = 1;

    /* "netCDF4/_netCDF4.pyx":4100
 *         elif compression == 'bzip2':
 *             bzip2 = True
 *         elif compression == 'blosc_lz':             # <<<<<<<<<<<<<<
 *             blosc_lz = True
 *         elif compression == 'blosc_lz4':
*/
    goto __pyx_L7;
  }

  /* "netCDF4/_netCDF4.pyx":4102
 *         elif compression == 'blosc_lz':
 *             blosc_lz = True
 *         elif compression == 'blosc_lz4':             # <<<<<<<<<<<<<<
 *             blosc_lz4 = True
 *         elif compression == 'blosc_lz4hc':
*/
  __pyx_t_7 = (__Pyx_PyUnicode_Equals(__pyx_v_compression, __pyx_mstate_global->__pyx_n_u_blosc_lz4, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 4102, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "netCDF4/_netCDF4.pyx":4103
 *             blosc_lz = True
 *         elif compression == 'blosc_lz4':
 *             blosc_lz4 = True             # <<<<<<<<<<<<<<
 *         elif compression == 'blosc_lz4hc':
 *             blosc_lz4hc = True
*/
    __pyx_v_blosc_lz4 = 1;

    /* "netCDF4/_netCDF4.pyx":4102
 *         elif compression == 'blosc_lz':
 *             blosc_lz = True
 *         elif compression == 'blosc_lz4':             # <<<<<<<<<<<<<<
 *             blosc_lz4 = True
 *         elif compression == 'blosc_lz4hc':
*/
    goto __pyx_L7;
  }

  /* "netCDF4/_netCDF4.pyx":4104
 *         elif compression == 'blosc_lz4':
 *             blosc_lz4 = True
 *         elif compression == 'blosc_lz4hc':             # <<<<<<<<<<<<<<
 *             blosc_lz4hc = True
 *         #elif compression == 'blosc_snappy':
*/
  __pyx_t_7 = (__Pyx_PyUnicode_Equals(__pyx_v_compression, __pyx_mstate_global->__pyx_n_u_blosc_lz4hc, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 4104, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "netCDF4/_netCDF4.pyx":4105
 *             blosc_lz4 = True
 *         elif compression == 'blosc_lz4hc':
 *             blosc_lz4hc = True             # <<<<<<<<<<<<<<
 *         #elif compression == 'blosc_snappy':
 *         #    blosc_snappy = True
*/
    __pyx_v_blosc_lz4hc = 1;

    /* "netCDF4/_netCDF4.pyx":4104
 *         elif compression == 'blosc_lz4':
 *             blosc_lz4 = True
 *         elif compression == 'blosc_lz4hc':             # <<<<<<<<<<<<<<
 *             blosc_lz4hc = True
 *         #elif compression == 'blosc_snappy':
*/
    goto __pyx_L7;
  }

  /* "netCDF4/_netCDF4.pyx":4108
 *         #elif compression == 'blosc_snappy':
 *         #    blosc_snappy = True
 *         elif compression == 'blosc_zlib':             # <<<<<<<<<<<<<<
 *             blosc_zlib = True
 *         elif compression == 'blosc_zstd':
*/
  __pyx_t_7 = (__Pyx_PyUnicode_Equals(__pyx_v_compression, __pyx_mstate_global->__pyx_n_u_blosc_zlib, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 4108, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "netCDF4/_netCDF4.pyx":4109
 *         #    blosc_snappy = True
 *         elif compression == 'blosc_zlib':
 *             blosc_zlib = True             # <<<<<<<<<<<<<<
 *         elif compression == 'blosc_zstd':
 *             blosc_zstd = True
*/
    __pyx_v_blosc_zlib = 1;

    /* "netCDF4/_netCDF4.pyx":4108
 *         #elif compression == 'blosc_snappy':
 *         #    blosc_snappy = True
 *         elif compression == 'blosc_zlib':             # <<<<<<<<<<<<<<
 *             blosc_zlib = True
 *         elif compression == 'blosc_zstd':
*/
    goto __pyx_L7;
  }

  /* "netCDF4/_netCDF4.pyx":4110
 *         elif compression == 'blosc_zlib':
 *             blosc_zlib = True
 *         elif compression == 'blosc_zstd':             # <<<<<<<<<<<<<<
 *             blosc_zstd = True
 *         elif not compression:
*/
  __pyx_t_7 = (__Pyx_PyUnicode_Equals(__pyx_v_compression, __pyx_mstate_global->__pyx_n_u_blosc_zstd, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 4110, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "netCDF4/_netCDF4.pyx":4111
 *             blosc_zlib = True
 *         elif compression == 'blosc_zstd':
 *             blosc_zstd = True             # <<<<<<<<<<<<<<
 *         elif not compression:
 *             compression = None # if compression evaluates to False, set to None.
*/
    __pyx_v_blosc_zstd = 1;

    /* "netCDF4/_netCDF4.pyx":4110
 *         elif compression == 'blosc_zlib':
 *             blosc_zlib = True
 *         elif compression == 'blosc_zstd':             # <<<<<<<<<<<<<<
 *             blosc_zstd = True
 *         elif not compression:
*/
    goto __pyx_L7;
  }

  /* "netCDF4/_netCDF4.pyx":4112
 *         elif compression == 'blosc_zstd':
 *             blosc_zstd = True
 *         elif not compression:             # <<<<<<<<<<<<<<
 *             compression = None # if compression evaluates to False, set to None.
 *             pass
*/
  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_compression); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 4112, __pyx_L1_error)
  __pyx_t_5 = (!__pyx_t_7);
  if (likely(__pyx_t_5)) {

    /* "netCDF4/_netCDF4.pyx":4113
 *             blosc_zstd = True
 *         elif not compression:
 *             compression = None # if compression evaluates to False, set to None.             # <<<<<<<<<<<<<<
 *             pass
 *         else:
*/
    __Pyx_INCREF(Py_None);
    __Pyx_DECREF_SET(__pyx_v_compression, Py_None);

    /* "netCDF4/_netCDF4.pyx":4112
 *         elif compression == 'blosc_zstd':
 *             blosc_zstd = True
 *         elif not compression:             # <<<<<<<<<<<<<<
 *             compression = None # if compression evaluates to False, set to None.
 *             pass
*/
    goto __pyx_L7;
  }

  /* "netCDF4/_netCDF4.pyx":4116
 *             pass
 *         else:
 *             raise ValueError(f"Unsupported value for compression kwarg {error_info}")             # <<<<<<<<<<<<<<
 * 
 *         if grp.data_model.startswith("NETCDF3") and endian != 'native':
*/
  /*else*/ {
    __pyx_t_3 = NULL;
    __pyx_t_1 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_Unsupported_value_for_compressio, __pyx_v_error_info); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4116, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_8 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_1};
      __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_1); __pyx_t_1 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4116, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(0, 4116, __pyx_L1_error)
  }
  __pyx_L7:;

  /* "netCDF4/_netCDF4.pyx":4118
 *             raise ValueError(f"Unsupported value for compression kwarg {error_info}")
 * 
 *         if grp.data_model.startswith("NETCDF3") and endian != 'native':             # <<<<<<<<<<<<<<
 *             raise RuntimeError(
 *                 f"only endian='native' allowed for NETCDF3 files, got '{endian}' {error_info}"
*/
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_mstate_global->__pyx_n_u_data_model); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4118, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_1 = __pyx_t_3;
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_8 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_mstate_global->__pyx_n_u_NETCDF3};
    __pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_startswith, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (1*__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(0, 4118, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 4118, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__pyx_t_7) {
  } else {
    __pyx_t_5 = __pyx_t_7;
    goto __pyx_L9_bool_binop_done;
  }
  __pyx_t_7 = (__Pyx_PyUnicode_Equals(__pyx_v_endian, __pyx_mstate_global->__pyx_n_u_native, Py_NE)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 4118, __pyx_L1_error)
  __pyx_t_5 = __pyx_t_7;
  __pyx_L9_bool_binop_done:;
  if (unlikely(__pyx_t_5)) {

    /* "netCDF4/_netCDF4.pyx":4119
 * 
 *         if grp.data_model.startswith("NETCDF3") and endian != 'native':
 *             raise RuntimeError(             # <<<<<<<<<<<<<<
 *                 f"only endian='native' allowed for NETCDF3 files, got '{endian}' {error_info}"
 *             )
*/
    __pyx_t_3 = NULL;

    /* "netCDF4/_netCDF4.pyx":4120
 *         if grp.data_model.startswith("NETCDF3") and endian != 'native':
 *             raise RuntimeError(
 *                 f"only endian='native' allowed for NETCDF3 files, got '{endian}' {error_info}"             # <<<<<<<<<<<<<<
 *             )
 * 
*/
    __pyx_t_1 = __Pyx_PyObject_FormatSimple(__pyx_v_endian, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4120, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_9[0] = __pyx_mstate_global->__pyx_kp_u_only_endian_native_allowed_for_N;
    __pyx_t_9[1] = __pyx_t_1;
    __pyx_t_9[2] = __pyx_mstate_global->__pyx_kp_u__18;
    __pyx_t_9[3] = __pyx_v_error_info;
    __pyx_t_10 = __Pyx_PyUnicode_Join(__pyx_t_9, 4, 53 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_1) + 2 + __Pyx_PyUnicode_GET_LENGTH(__pyx_v_error_info), 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_v_error_info));
    if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4120, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_8 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_10};
      __pyx_t_2 = __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_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4119, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(0, 4119, __pyx_L1_error)

    /* "netCDF4/_netCDF4.pyx":4118
 *             raise ValueError(f"Unsupported value for compression kwarg {error_info}")
 * 
 *         if grp.data_model.startswith("NETCDF3") and endian != 'native':             # <<<<<<<<<<<<<<
 *             raise RuntimeError(
 *                 f"only endian='native' allowed for NETCDF3 files, got '{endian}' {error_info}"
*/
  }

  /* "netCDF4/_netCDF4.pyx":4123
 *             )
 * 
 *         if endian not in ("little", "big", "native"):             # <<<<<<<<<<<<<<
 *             raise ValueError(
 *                 f"'endian' keyword argument must be 'little','big' or 'native', got '{endian}' "
*/
  __Pyx_INCREF(__pyx_v_endian);
  __pyx_t_2 = __pyx_v_endian;
  __pyx_t_7 = (__Pyx_PyUnicode_Equals(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_little, Py_NE)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 4123, __pyx_L1_error)
  if (__pyx_t_7) {
  } else {
    __pyx_t_5 = __pyx_t_7;
    goto __pyx_L12_bool_binop_done;
  }
  __pyx_t_7 = (__Pyx_PyUnicode_Equals(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_big, Py_NE)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 4123, __pyx_L1_error)
  if (__pyx_t_7) {
  } else {
    __pyx_t_5 = __pyx_t_7;
    goto __pyx_L12_bool_binop_done;
  }
  __pyx_t_7 = (__Pyx_PyUnicode_Equals(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_native, Py_NE)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 4123, __pyx_L1_error)
  __pyx_t_5 = __pyx_t_7;
  __pyx_L12_bool_binop_done:;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_7 = __pyx_t_5;
  if (unlikely(__pyx_t_7)) {

    /* "netCDF4/_netCDF4.pyx":4124
 * 
 *         if endian not in ("little", "big", "native"):
 *             raise ValueError(             # <<<<<<<<<<<<<<
 *                 f"'endian' keyword argument must be 'little','big' or 'native', got '{endian}' "
 *                 f"{error_info}"
*/
    __pyx_t_10 = NULL;

    /* "netCDF4/_netCDF4.pyx":4125
 *         if endian not in ("little", "big", "native"):
 *             raise ValueError(
 *                 f"'endian' keyword argument must be 'little','big' or 'native', got '{endian}' "             # <<<<<<<<<<<<<<
 *                 f"{error_info}"
 *             )
*/
    __pyx_t_3 = __Pyx_PyObject_FormatSimple(__pyx_v_endian, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4125, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);

    /* "netCDF4/_netCDF4.pyx":4126
 *             raise ValueError(
 *                 f"'endian' keyword argument must be 'little','big' or 'native', got '{endian}' "
 *                 f"{error_info}"             # <<<<<<<<<<<<<<
 *             )
 * 
*/
    __pyx_t_9[0] = __pyx_mstate_global->__pyx_kp_u_endian_keyword_argument_must_be;
    __pyx_t_9[1] = __pyx_t_3;
    __pyx_t_9[2] = __pyx_mstate_global->__pyx_kp_u__18;
    __pyx_t_9[3] = __pyx_v_error_info;

    /* "netCDF4/_netCDF4.pyx":4125
 *         if endian not in ("little", "big", "native"):
 *             raise ValueError(
 *                 f"'endian' keyword argument must be 'little','big' or 'native', got '{endian}' "             # <<<<<<<<<<<<<<
 *                 f"{error_info}"
 *             )
*/
    __pyx_t_1 = __Pyx_PyUnicode_Join(__pyx_t_9, 4, 67 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3) + 2 + __Pyx_PyUnicode_GET_LENGTH(__pyx_v_error_info), 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_v_error_info));
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4125, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_8 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_10, __pyx_t_1};
      __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_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4124, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(0, 4124, __pyx_L1_error)

    /* "netCDF4/_netCDF4.pyx":4123
 *             )
 * 
 *         if endian not in ("little", "big", "native"):             # <<<<<<<<<<<<<<
 *             raise ValueError(
 *                 f"'endian' keyword argument must be 'little','big' or 'native', got '{endian}' "
*/
  }

  /* "netCDF4/_netCDF4.pyx":4129
 *             )
 * 
 *         self._grpid = grp._grpid             # <<<<<<<<<<<<<<
 *         # make a weakref to group to avoid circular ref (issue 218)
 *         # keep strong reference the default behaviour (issue 251)
*/
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_mstate_global->__pyx_n_u_grpid); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4129, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_11 = __Pyx_PyLong_As_int(__pyx_t_2); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 4129, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_self->_grpid = __pyx_t_11;

  /* "netCDF4/_netCDF4.pyx":4132
 *         # make a weakref to group to avoid circular ref (issue 218)
 *         # keep strong reference the default behaviour (issue 251)
 *         if grp.keepweakref:             # <<<<<<<<<<<<<<
 *             self._grp = weakref.proxy(grp)
 *         else:
*/
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_mstate_global->__pyx_n_u_keepweakref); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4132, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 4132, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__pyx_t_7) {

    /* "netCDF4/_netCDF4.pyx":4133
 *         # keep strong reference the default behaviour (issue 251)
 *         if grp.keepweakref:
 *             self._grp = weakref.proxy(grp)             # <<<<<<<<<<<<<<
 *         else:
 *             self._grp = grp
*/
    __pyx_t_1 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_weakref); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4133, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_proxy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4133, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __pyx_t_8 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(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_8 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_v_grp};
      __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_3, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__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(0, 4133, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __Pyx_GIVEREF(__pyx_t_2);
    __Pyx_GOTREF(__pyx_v_self->_grp);
    __Pyx_DECREF(__pyx_v_self->_grp);
    __pyx_v_self->_grp = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "netCDF4/_netCDF4.pyx":4132
 *         # make a weakref to group to avoid circular ref (issue 218)
 *         # keep strong reference the default behaviour (issue 251)
 *         if grp.keepweakref:             # <<<<<<<<<<<<<<
 *             self._grp = weakref.proxy(grp)
 *         else:
*/
    goto __pyx_L15;
  }

  /* "netCDF4/_netCDF4.pyx":4135
 *             self._grp = weakref.proxy(grp)
 *         else:
 *             self._grp = grp             # <<<<<<<<<<<<<<
 * 
 *         self._iscompound = isinstance(datatype, CompoundType)
*/
  /*else*/ {
    __Pyx_INCREF(__pyx_v_grp);
    __Pyx_GIVEREF(__pyx_v_grp);
    __Pyx_GOTREF(__pyx_v_self->_grp);
    __Pyx_DECREF(__pyx_v_self->_grp);
    __pyx_v_self->_grp = __pyx_v_grp;
  }
  __pyx_L15:;

  /* "netCDF4/_netCDF4.pyx":4137
 *             self._grp = grp
 * 
 *         self._iscompound = isinstance(datatype, CompoundType)             # <<<<<<<<<<<<<<
 *         self._isvlen = isinstance(datatype, VLType) or datatype==str
 *         self._isenum = isinstance(datatype, EnumType)
*/
  __pyx_t_7 = __Pyx_TypeCheck(__pyx_v_datatype, __pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_CompoundType); 
  __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4137, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __Pyx_GOTREF(__pyx_v_self->_iscompound);
  __Pyx_DECREF(__pyx_v_self->_iscompound);
  __pyx_v_self->_iscompound = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":4138
 * 
 *         self._iscompound = isinstance(datatype, CompoundType)
 *         self._isvlen = isinstance(datatype, VLType) or datatype==str             # <<<<<<<<<<<<<<
 *         self._isenum = isinstance(datatype, EnumType)
 * 
*/
  __pyx_t_7 = __Pyx_TypeCheck(__pyx_v_datatype, __pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_VLType); 
  if (!__pyx_t_7) {
  } else {
    __pyx_t_3 = __Pyx_PyBool_FromLong(__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4138, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_2 = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L16_bool_binop_done;
  }
  __pyx_t_3 = PyObject_RichCompare(__pyx_v_datatype, ((PyObject *)(&PyUnicode_Type)), Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4138, __pyx_L1_error)
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_2 = __pyx_t_3;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_L16_bool_binop_done:;
  __Pyx_GIVEREF(__pyx_t_2);
  __Pyx_GOTREF(__pyx_v_self->_isvlen);
  __Pyx_DECREF(__pyx_v_self->_isvlen);
  __pyx_v_self->_isvlen = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":4139
 *         self._iscompound = isinstance(datatype, CompoundType)
 *         self._isvlen = isinstance(datatype, VLType) or datatype==str
 *         self._isenum = isinstance(datatype, EnumType)             # <<<<<<<<<<<<<<
 * 
 *         user_type = self._iscompound or self._isvlen or self._isenum
*/
  __pyx_t_7 = __Pyx_TypeCheck(__pyx_v_datatype, __pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_EnumType); 
  __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4139, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __Pyx_GOTREF(__pyx_v_self->_isenum);
  __Pyx_DECREF(__pyx_v_self->_isenum);
  __pyx_v_self->_isenum = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":4141
 *         self._isenum = isinstance(datatype, EnumType)
 * 
 *         user_type = self._iscompound or self._isvlen or self._isenum             # <<<<<<<<<<<<<<
 * 
 *         # convert to a real numpy datatype object if necessary.
*/
  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_self->_iscompound); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 4141, __pyx_L1_error)
  if (!__pyx_t_7) {
  } else {
    __Pyx_INCREF(__pyx_v_self->_iscompound);
    __pyx_t_2 = __pyx_v_self->_iscompound;
    goto __pyx_L18_bool_binop_done;
  }
  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_self->_isvlen); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 4141, __pyx_L1_error)
  if (!__pyx_t_7) {
  } else {
    __Pyx_INCREF(__pyx_v_self->_isvlen);
    __pyx_t_2 = __pyx_v_self->_isvlen;
    goto __pyx_L18_bool_binop_done;
  }
  __Pyx_INCREF(__pyx_v_self->_isenum);
  __pyx_t_2 = __pyx_v_self->_isenum;
  __pyx_L18_bool_binop_done:;
  __pyx_v_user_type = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":4144
 * 
 *         # convert to a real numpy datatype object if necessary.
 *         if not user_type and type(datatype) != numpy.dtype:             # <<<<<<<<<<<<<<
 *             datatype = numpy.dtype(datatype)
 *         # convert numpy string dtype with length > 1
*/
  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_user_type); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 4144, __pyx_L1_error)
  __pyx_t_6 = (!__pyx_t_5);
  if (__pyx_t_6) {
  } else {
    __pyx_t_7 = __pyx_t_6;
    goto __pyx_L22_bool_binop_done;
  }
  __pyx_t_2 = PyObject_RichCompare(((PyObject *)Py_TYPE(__pyx_v_datatype)), ((PyObject *)__pyx_mstate_global->__pyx_ptype_5numpy_dtype), Py_NE); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4144, __pyx_L1_error)
  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 4144, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_7 = __pyx_t_6;
  __pyx_L22_bool_binop_done:;
  if (__pyx_t_7) {

    /* "netCDF4/_netCDF4.pyx":4145
 *         # convert to a real numpy datatype object if necessary.
 *         if not user_type and type(datatype) != numpy.dtype:
 *             datatype = numpy.dtype(datatype)             # <<<<<<<<<<<<<<
 *         # convert numpy string dtype with length > 1
 *         # or any numpy unicode dtype into str
*/
    __pyx_t_3 = NULL;
    __pyx_t_8 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_datatype};
      __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_5numpy_dtype, __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;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4145, __pyx_L1_error)
      __Pyx_GOTREF((PyObject *)__pyx_t_2);
    }
    __Pyx_DECREF_SET(__pyx_v_datatype, ((PyObject *)__pyx_t_2));
    __pyx_t_2 = 0;

    /* "netCDF4/_netCDF4.pyx":4144
 * 
 *         # convert to a real numpy datatype object if necessary.
 *         if not user_type and type(datatype) != numpy.dtype:             # <<<<<<<<<<<<<<
 *             datatype = numpy.dtype(datatype)
 *         # convert numpy string dtype with length > 1
*/
  }

  /* "netCDF4/_netCDF4.pyx":4148
 *         # convert numpy string dtype with length > 1
 *         # or any numpy unicode dtype into str
 *         if (isinstance(datatype, numpy.dtype) and             # <<<<<<<<<<<<<<
 *             ((datatype.kind == 'S' and datatype.itemsize > 1) or
 *               datatype.kind == 'U')):
*/
  __pyx_t_6 = __Pyx_TypeCheck(__pyx_v_datatype, __pyx_mstate_global->__pyx_ptype_5numpy_dtype); 
  if (__pyx_t_6) {
  } else {
    __pyx_t_7 = __pyx_t_6;
    goto __pyx_L25_bool_binop_done;
  }

  /* "netCDF4/_netCDF4.pyx":4149
 *         # or any numpy unicode dtype into str
 *         if (isinstance(datatype, numpy.dtype) and
 *             ((datatype.kind == 'S' and datatype.itemsize > 1) or             # <<<<<<<<<<<<<<
 *               datatype.kind == 'U')):
 *             datatype = str
*/
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_datatype, __pyx_mstate_global->__pyx_n_u_kind); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4149, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_6 = (__Pyx_PyUnicode_Equals(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_S, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 4149, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (!__pyx_t_6) {
    goto __pyx_L27_next_or;
  } else {
  }
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_datatype, __pyx_mstate_global->__pyx_n_u_itemsize); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4149, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyObject_RichCompare(__pyx_t_2, __pyx_mstate_global->__pyx_int_1, Py_GT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4149, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 4149, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (!__pyx_t_6) {
  } else {
    __pyx_t_7 = __pyx_t_6;
    goto __pyx_L25_bool_binop_done;
  }
  __pyx_L27_next_or:;

  /* "netCDF4/_netCDF4.pyx":4150
 *         if (isinstance(datatype, numpy.dtype) and
 *             ((datatype.kind == 'S' and datatype.itemsize > 1) or
 *               datatype.kind == 'U')):             # <<<<<<<<<<<<<<
 *             datatype = str
 *             user_type = True
*/
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_datatype, __pyx_mstate_global->__pyx_n_u_kind); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4150, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_6 = (__Pyx_PyUnicode_Equals(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_U, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 4150, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_7 = __pyx_t_6;
  __pyx_L25_bool_binop_done:;

  /* "netCDF4/_netCDF4.pyx":4148
 *         # convert numpy string dtype with length > 1
 *         # or any numpy unicode dtype into str
 *         if (isinstance(datatype, numpy.dtype) and             # <<<<<<<<<<<<<<
 *             ((datatype.kind == 'S' and datatype.itemsize > 1) or
 *               datatype.kind == 'U')):
*/
  if (__pyx_t_7) {

    /* "netCDF4/_netCDF4.pyx":4151
 *             ((datatype.kind == 'S' and datatype.itemsize > 1) or
 *               datatype.kind == 'U')):
 *             datatype = str             # <<<<<<<<<<<<<<
 *             user_type = True
 *             self._isvlen = True
*/
    __Pyx_INCREF((PyObject *)(&PyUnicode_Type));
    __Pyx_DECREF_SET(__pyx_v_datatype, ((PyObject *)(&PyUnicode_Type)));

    /* "netCDF4/_netCDF4.pyx":4152
 *               datatype.kind == 'U')):
 *             datatype = str
 *             user_type = True             # <<<<<<<<<<<<<<
 *             self._isvlen = True
 * 
*/
    __Pyx_INCREF(Py_True);
    __Pyx_DECREF_SET(__pyx_v_user_type, Py_True);

    /* "netCDF4/_netCDF4.pyx":4153
 *             datatype = str
 *             user_type = True
 *             self._isvlen = True             # <<<<<<<<<<<<<<
 * 
 *         # If datatype is complex, convert to compoundtype
*/
    __Pyx_INCREF(Py_True);
    __Pyx_GIVEREF(Py_True);
    __Pyx_GOTREF(__pyx_v_self->_isvlen);
    __Pyx_DECREF(__pyx_v_self->_isvlen);
    __pyx_v_self->_isvlen = Py_True;

    /* "netCDF4/_netCDF4.pyx":4148
 *         # convert numpy string dtype with length > 1
 *         # or any numpy unicode dtype into str
 *         if (isinstance(datatype, numpy.dtype) and             # <<<<<<<<<<<<<<
 *             ((datatype.kind == 'S' and datatype.itemsize > 1) or
 *               datatype.kind == 'U')):
*/
  }

  /* "netCDF4/_netCDF4.pyx":4156
 * 
 *         # If datatype is complex, convert to compoundtype
 *         is_complex = dtype_is_complex(datatype)             # <<<<<<<<<<<<<<
 *         if is_complex and not self._grp.auto_complex:
 *             raise ValueError(
*/
  __pyx_t_2 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_dtype_is_complex); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4156, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1);
    assert(__pyx_t_2);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_1);
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_1, __pyx__function);
    __pyx_t_8 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_datatype};
    __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_1, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4156, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  }
  __pyx_v_is_complex = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "netCDF4/_netCDF4.pyx":4157
 *         # If datatype is complex, convert to compoundtype
 *         is_complex = dtype_is_complex(datatype)
 *         if is_complex and not self._grp.auto_complex:             # <<<<<<<<<<<<<<
 *             raise ValueError(
 *                 f"complex datatypes ({datatype}) are only supported with `auto_complex=True`"
*/
  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_is_complex); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 4157, __pyx_L1_error)
  if (__pyx_t_6) {
  } else {
    __pyx_t_7 = __pyx_t_6;
    goto __pyx_L30_bool_binop_done;
  }
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_grp, __pyx_mstate_global->__pyx_n_u_auto_complex); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4157, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 4157, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_5 = (!__pyx_t_6);
  __pyx_t_7 = __pyx_t_5;
  __pyx_L30_bool_binop_done:;
  if (unlikely(__pyx_t_7)) {

    /* "netCDF4/_netCDF4.pyx":4158
 *         is_complex = dtype_is_complex(datatype)
 *         if is_complex and not self._grp.auto_complex:
 *             raise ValueError(             # <<<<<<<<<<<<<<
 *                 f"complex datatypes ({datatype}) are only supported with `auto_complex=True`"
 *             )
*/
    __pyx_t_1 = NULL;

    /* "netCDF4/_netCDF4.pyx":4159
 *         if is_complex and not self._grp.auto_complex:
 *             raise ValueError(
 *                 f"complex datatypes ({datatype}) are only supported with `auto_complex=True`"             # <<<<<<<<<<<<<<
 *             )
 * 
*/
    __pyx_t_2 = __Pyx_PyObject_FormatSimple(__pyx_v_datatype, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4159, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_12[0] = __pyx_mstate_global->__pyx_kp_u_complex_datatypes;
    __pyx_t_12[1] = __pyx_t_2;
    __pyx_t_12[2] = __pyx_mstate_global->__pyx_kp_u_are_only_supported_with_auto_co;
    __pyx_t_10 = __Pyx_PyUnicode_Join(__pyx_t_12, 3, 19 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_2) + 45, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2));
    if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4159, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_8 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_t_10};
      __pyx_t_3 = __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_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4158, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(0, 4158, __pyx_L1_error)

    /* "netCDF4/_netCDF4.pyx":4157
 *         # If datatype is complex, convert to compoundtype
 *         is_complex = dtype_is_complex(datatype)
 *         if is_complex and not self._grp.auto_complex:             # <<<<<<<<<<<<<<
 *             raise ValueError(
 *                 f"complex datatypes ({datatype}) are only supported with `auto_complex=True`"
*/
  }

  /* "netCDF4/_netCDF4.pyx":4163
 * 
 *         # check if endian keyword consistent with datatype specification.
 *         dtype_endian = _dtype_endian_lookup[getattr(datatype, "byteorder", None)]             # <<<<<<<<<<<<<<
 *         if dtype_endian is not None and dtype_endian != endian:
 *             if not (dtype_endian == 'native' and endian == sys.byteorder):
*/
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_dtype_endian_lookup); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4163, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_10 = __Pyx_GetAttr3(__pyx_v_datatype, __pyx_mstate_global->__pyx_n_u_byteorder, Py_None); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4163, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_t_3, __pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4163, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __pyx_v_dtype_endian = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":4164
 *         # check if endian keyword consistent with datatype specification.
 *         dtype_endian = _dtype_endian_lookup[getattr(datatype, "byteorder", None)]
 *         if dtype_endian is not None and dtype_endian != endian:             # <<<<<<<<<<<<<<
 *             if not (dtype_endian == 'native' and endian == sys.byteorder):
 *                 warnings.warn('endian-ness of dtype and endian kwarg do not match, using endian kwarg')
*/
  __pyx_t_5 = (__pyx_v_dtype_endian != Py_None);
  if (__pyx_t_5) {
  } else {
    __pyx_t_7 = __pyx_t_5;
    goto __pyx_L33_bool_binop_done;
  }
  __pyx_t_1 = PyObject_RichCompare(__pyx_v_dtype_endian, __pyx_v_endian, Py_NE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4164, __pyx_L1_error)
  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 4164, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_7 = __pyx_t_5;
  __pyx_L33_bool_binop_done:;
  if (__pyx_t_7) {

    /* "netCDF4/_netCDF4.pyx":4165
 *         dtype_endian = _dtype_endian_lookup[getattr(datatype, "byteorder", None)]
 *         if dtype_endian is not None and dtype_endian != endian:
 *             if not (dtype_endian == 'native' and endian == sys.byteorder):             # <<<<<<<<<<<<<<
 *                 warnings.warn('endian-ness of dtype and endian kwarg do not match, using endian kwarg')
 * 
*/
    __pyx_t_5 = (__Pyx_PyUnicode_Equals(__pyx_v_dtype_endian, __pyx_mstate_global->__pyx_n_u_native, Py_EQ)); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 4165, __pyx_L1_error)
    if (__pyx_t_5) {
    } else {
      __pyx_t_7 = __pyx_t_5;
      goto __pyx_L36_bool_binop_done;
    }
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_sys); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4165, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_byteorder); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4165, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = PyObject_RichCompare(__pyx_v_endian, __pyx_t_10, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4165, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 4165, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_7 = __pyx_t_5;
    __pyx_L36_bool_binop_done:;
    __pyx_t_5 = (!__pyx_t_7);
    if (__pyx_t_5) {

      /* "netCDF4/_netCDF4.pyx":4166
 *         if dtype_endian is not None and dtype_endian != endian:
 *             if not (dtype_endian == 'native' and endian == sys.byteorder):
 *                 warnings.warn('endian-ness of dtype and endian kwarg do not match, using endian kwarg')             # <<<<<<<<<<<<<<
 * 
 *         # check validity of datatype.
*/
      __pyx_t_10 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_warnings); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4166, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_warn); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4166, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_8 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_2))) {
        __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
        assert(__pyx_t_10);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_2, __pyx__function);
        __pyx_t_8 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_10, __pyx_mstate_global->__pyx_kp_u_endian_ness_of_dtype_and_endian};
        __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_2, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4166, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
      }
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

      /* "netCDF4/_netCDF4.pyx":4165
 *         dtype_endian = _dtype_endian_lookup[getattr(datatype, "byteorder", None)]
 *         if dtype_endian is not None and dtype_endian != endian:
 *             if not (dtype_endian == 'native' and endian == sys.byteorder):             # <<<<<<<<<<<<<<
 *                 warnings.warn('endian-ness of dtype and endian kwarg do not match, using endian kwarg')
 * 
*/
    }

    /* "netCDF4/_netCDF4.pyx":4164
 *         # check if endian keyword consistent with datatype specification.
 *         dtype_endian = _dtype_endian_lookup[getattr(datatype, "byteorder", None)]
 *         if dtype_endian is not None and dtype_endian != endian:             # <<<<<<<<<<<<<<
 *             if not (dtype_endian == 'native' and endian == sys.byteorder):
 *                 warnings.warn('endian-ness of dtype and endian kwarg do not match, using endian kwarg')
*/
  }

  /* "netCDF4/_netCDF4.pyx":4169
 * 
 *         # check validity of datatype.
 *         self._isprimitive = not user_type             # <<<<<<<<<<<<<<
 *         if user_type:
 *             if self._iscompound:
*/
  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_user_type); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 4169, __pyx_L1_error)
  __pyx_t_1 = __Pyx_PyBool_FromLong((!__pyx_t_5)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4169, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_isprimitive);
  __Pyx_DECREF(__pyx_v_self->_isprimitive);
  __pyx_v_self->_isprimitive = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":4170
 *         # check validity of datatype.
 *         self._isprimitive = not user_type
 *         if user_type:             # <<<<<<<<<<<<<<
 *             if self._iscompound:
 *                 self._cmptype = datatype
*/
  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_user_type); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 4170, __pyx_L1_error)
  if (__pyx_t_5) {

    /* "netCDF4/_netCDF4.pyx":4171
 *         self._isprimitive = not user_type
 *         if user_type:
 *             if self._iscompound:             # <<<<<<<<<<<<<<
 *                 self._cmptype = datatype
 *             if self._isvlen:
*/
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_self->_iscompound); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 4171, __pyx_L1_error)
    if (__pyx_t_5) {

      /* "netCDF4/_netCDF4.pyx":4172
 *         if user_type:
 *             if self._iscompound:
 *                 self._cmptype = datatype             # <<<<<<<<<<<<<<
 *             if self._isvlen:
 *                 self._vltype = datatype
*/
      __Pyx_INCREF(__pyx_v_datatype);
      __Pyx_GIVEREF(__pyx_v_datatype);
      __Pyx_GOTREF(__pyx_v_self->_cmptype);
      __Pyx_DECREF(__pyx_v_self->_cmptype);
      __pyx_v_self->_cmptype = __pyx_v_datatype;

      /* "netCDF4/_netCDF4.pyx":4171
 *         self._isprimitive = not user_type
 *         if user_type:
 *             if self._iscompound:             # <<<<<<<<<<<<<<
 *                 self._cmptype = datatype
 *             if self._isvlen:
*/
    }

    /* "netCDF4/_netCDF4.pyx":4173
 *             if self._iscompound:
 *                 self._cmptype = datatype
 *             if self._isvlen:             # <<<<<<<<<<<<<<
 *                 self._vltype = datatype
 *             if self._isenum:
*/
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_self->_isvlen); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 4173, __pyx_L1_error)
    if (__pyx_t_5) {

      /* "netCDF4/_netCDF4.pyx":4174
 *                 self._cmptype = datatype
 *             if self._isvlen:
 *                 self._vltype = datatype             # <<<<<<<<<<<<<<
 *             if self._isenum:
 *                 self._enumtype = datatype
*/
      __Pyx_INCREF(__pyx_v_datatype);
      __Pyx_GIVEREF(__pyx_v_datatype);
      __Pyx_GOTREF(__pyx_v_self->_vltype);
      __Pyx_DECREF(__pyx_v_self->_vltype);
      __pyx_v_self->_vltype = __pyx_v_datatype;

      /* "netCDF4/_netCDF4.pyx":4173
 *             if self._iscompound:
 *                 self._cmptype = datatype
 *             if self._isvlen:             # <<<<<<<<<<<<<<
 *                 self._vltype = datatype
 *             if self._isenum:
*/
    }

    /* "netCDF4/_netCDF4.pyx":4175
 *             if self._isvlen:
 *                 self._vltype = datatype
 *             if self._isenum:             # <<<<<<<<<<<<<<
 *                 self._enumtype = datatype
 *             if datatype==str:
*/
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_self->_isenum); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 4175, __pyx_L1_error)
    if (__pyx_t_5) {

      /* "netCDF4/_netCDF4.pyx":4176
 *                 self._vltype = datatype
 *             if self._isenum:
 *                 self._enumtype = datatype             # <<<<<<<<<<<<<<
 *             if datatype==str:
 *                 if grp.data_model != 'NETCDF4':
*/
      __Pyx_INCREF(__pyx_v_datatype);
      __Pyx_GIVEREF(__pyx_v_datatype);
      __Pyx_GOTREF(__pyx_v_self->_enumtype);
      __Pyx_DECREF(__pyx_v_self->_enumtype);
      __pyx_v_self->_enumtype = __pyx_v_datatype;

      /* "netCDF4/_netCDF4.pyx":4175
 *             if self._isvlen:
 *                 self._vltype = datatype
 *             if self._isenum:             # <<<<<<<<<<<<<<
 *                 self._enumtype = datatype
 *             if datatype==str:
*/
    }

    /* "netCDF4/_netCDF4.pyx":4177
 *             if self._isenum:
 *                 self._enumtype = datatype
 *             if datatype==str:             # <<<<<<<<<<<<<<
 *                 if grp.data_model != 'NETCDF4':
 *                     raise ValueError(
*/
    __pyx_t_1 = PyObject_RichCompare(__pyx_v_datatype, ((PyObject *)(&PyUnicode_Type)), Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4177, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 4177, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (__pyx_t_5) {

      /* "netCDF4/_netCDF4.pyx":4178
 *                 self._enumtype = datatype
 *             if datatype==str:
 *                 if grp.data_model != 'NETCDF4':             # <<<<<<<<<<<<<<
 *                     raise ValueError(
 *                         'Variable length strings are only supported for the '
*/
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_mstate_global->__pyx_n_u_data_model); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4178, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_5 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_NETCDF4, Py_NE)); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 4178, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (unlikely(__pyx_t_5)) {

        /* "netCDF4/_netCDF4.pyx":4179
 *             if datatype==str:
 *                 if grp.data_model != 'NETCDF4':
 *                     raise ValueError(             # <<<<<<<<<<<<<<
 *                         'Variable length strings are only supported for the '
 *                         'NETCDF4 format. For other formats, consider using '
*/
        __pyx_t_2 = NULL;

        /* "netCDF4/_netCDF4.pyx":4180
 *                 if grp.data_model != 'NETCDF4':
 *                     raise ValueError(
 *                         'Variable length strings are only supported for the '             # <<<<<<<<<<<<<<
 *                         'NETCDF4 format. For other formats, consider using '
 *                         'netCDF4.stringtochar to convert string arrays into '
*/
        __pyx_t_10 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_Variable_length_strings_are_only, __pyx_v_error_info); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4180, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_10);
        __pyx_t_8 = 1;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_10};
          __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_2); __pyx_t_2 = 0;
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
          if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4179, __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(0, 4179, __pyx_L1_error)

        /* "netCDF4/_netCDF4.pyx":4178
 *                 self._enumtype = datatype
 *             if datatype==str:
 *                 if grp.data_model != 'NETCDF4':             # <<<<<<<<<<<<<<
 *                     raise ValueError(
 *                         'Variable length strings are only supported for the '
*/
      }

      /* "netCDF4/_netCDF4.pyx":4185
 *                         'character arrays with an additional dimension.'
 *                         f' {error_info}')
 *                 datatype = VLType(self._grp, str, None)             # <<<<<<<<<<<<<<
 *                 self._vltype = datatype
 *             xtype = datatype._nc_type
*/
      __pyx_t_10 = NULL;
      __pyx_t_8 = 1;
      {
        PyObject *__pyx_callargs[4] = {__pyx_t_10, __pyx_v_self->_grp, ((PyObject *)(&PyUnicode_Type)), Py_None};
        __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_VLType, __pyx_callargs+__pyx_t_8, (4-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4185, __pyx_L1_error)
        __Pyx_GOTREF((PyObject *)__pyx_t_1);
      }
      __Pyx_DECREF_SET(__pyx_v_datatype, ((PyObject *)__pyx_t_1));
      __pyx_t_1 = 0;

      /* "netCDF4/_netCDF4.pyx":4186
 *                         f' {error_info}')
 *                 datatype = VLType(self._grp, str, None)
 *                 self._vltype = datatype             # <<<<<<<<<<<<<<
 *             xtype = datatype._nc_type
 *             # make sure this a valid user defined datatype defined in this Group
*/
      __Pyx_INCREF(__pyx_v_datatype);
      __Pyx_GIVEREF(__pyx_v_datatype);
      __Pyx_GOTREF(__pyx_v_self->_vltype);
      __Pyx_DECREF(__pyx_v_self->_vltype);
      __pyx_v_self->_vltype = __pyx_v_datatype;

      /* "netCDF4/_netCDF4.pyx":4177
 *             if self._isenum:
 *                 self._enumtype = datatype
 *             if datatype==str:             # <<<<<<<<<<<<<<
 *                 if grp.data_model != 'NETCDF4':
 *                     raise ValueError(
*/
    }

    /* "netCDF4/_netCDF4.pyx":4187
 *                 datatype = VLType(self._grp, str, None)
 *                 self._vltype = datatype
 *             xtype = datatype._nc_type             # <<<<<<<<<<<<<<
 *             # make sure this a valid user defined datatype defined in this Group
 *             with nogil:
*/
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_datatype, __pyx_mstate_global->__pyx_n_u_nc_type); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4187, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_13 = __Pyx_PyLong_As_nc_type(__pyx_t_1); if (unlikely((__pyx_t_13 == ((nc_type)-1)) && PyErr_Occurred())) __PYX_ERR(0, 4187, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_v_xtype = __pyx_t_13;

    /* "netCDF4/_netCDF4.pyx":4189
 *             xtype = datatype._nc_type
 *             # make sure this a valid user defined datatype defined in this Group
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 ierr = nc_inq_type(self._grpid, xtype, namstring, NULL)
 *             _ensure_nc_success(ierr, extra_msg=error_info)
*/
    {
        PyThreadState * _save;
        _save = PyEval_SaveThread();
        __Pyx_FastGIL_Remember();
        /*try:*/ {

          /* "netCDF4/_netCDF4.pyx":4190
 *             # make sure this a valid user defined datatype defined in this Group
 *             with nogil:
 *                 ierr = nc_inq_type(self._grpid, xtype, namstring, NULL)             # <<<<<<<<<<<<<<
 *             _ensure_nc_success(ierr, extra_msg=error_info)
 *             # dtype variable attribute is a numpy datatype object.
*/
          __pyx_v_ierr = nc_inq_type(__pyx_v_self->_grpid, __pyx_v_xtype, __pyx_v_namstring, NULL);
        }

        /* "netCDF4/_netCDF4.pyx":4189
 *             xtype = datatype._nc_type
 *             # make sure this a valid user defined datatype defined in this Group
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 ierr = nc_inq_type(self._grpid, xtype, namstring, NULL)
 *             _ensure_nc_success(ierr, extra_msg=error_info)
*/
        /*finally:*/ {
          /*normal exit:*/{
            __Pyx_FastGIL_Forget();
            PyEval_RestoreThread(_save);
            goto __pyx_L46;
          }
          __pyx_L46:;
        }
    }

    /* "netCDF4/_netCDF4.pyx":4191
 *             with nogil:
 *                 ierr = nc_inq_type(self._grpid, xtype, namstring, NULL)
 *             _ensure_nc_success(ierr, extra_msg=error_info)             # <<<<<<<<<<<<<<
 *             # dtype variable attribute is a numpy datatype object.
 *             self.dtype = datatype.dtype
*/
    __pyx_t_10 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4191, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4191, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_8 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
      assert(__pyx_t_10);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_10);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_2, __pyx__function);
      __pyx_t_8 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_10, __pyx_t_3};
      __pyx_t_14 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 4191, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_14);
      if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_extra_msg, __pyx_v_error_info, __pyx_t_14, __pyx_callargs+2, 0) < (0)) __PYX_ERR(0, 4191, __pyx_L1_error)
      __pyx_t_1 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_t_2, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_14);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4191, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":4193
 *             _ensure_nc_success(ierr, extra_msg=error_info)
 *             # dtype variable attribute is a numpy datatype object.
 *             self.dtype = datatype.dtype             # <<<<<<<<<<<<<<
 *         elif datatype.str[1:] in _supportedtypes:
 *             # find netCDF primitive data type corresponding to
*/
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_datatype, __pyx_mstate_global->__pyx_n_u_dtype); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4193, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __Pyx_GOTREF(__pyx_v_self->dtype);
    __Pyx_DECREF(__pyx_v_self->dtype);
    __pyx_v_self->dtype = __pyx_t_1;
    __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":4170
 *         # check validity of datatype.
 *         self._isprimitive = not user_type
 *         if user_type:             # <<<<<<<<<<<<<<
 *             if self._iscompound:
 *                 self._cmptype = datatype
*/
    goto __pyx_L38;
  }

  /* "netCDF4/_netCDF4.pyx":4194
 *             # dtype variable attribute is a numpy datatype object.
 *             self.dtype = datatype.dtype
 *         elif datatype.str[1:] in _supportedtypes:             # <<<<<<<<<<<<<<
 *             # find netCDF primitive data type corresponding to
 *             # specified numpy data type.
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_datatype, __pyx_mstate_global->__pyx_n_u_str); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4194, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_t_1, 1, 0, NULL, NULL, &__pyx_mstate_global->__pyx_slice[0], 1, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4194, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_supportedtypes); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4194, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = (__Pyx_PySequence_ContainsTF(__pyx_t_2, __pyx_t_1, Py_EQ)); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 4194, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_5) {

    /* "netCDF4/_netCDF4.pyx":4197
 *             # find netCDF primitive data type corresponding to
 *             # specified numpy data type.
 *             xtype = _nptonctype[datatype.str[1:]]             # <<<<<<<<<<<<<<
 *             # dtype variable attribute is a numpy datatype object.
 *             self.dtype = datatype
*/
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_nptonctype); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4197, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_datatype, __pyx_mstate_global->__pyx_n_u_str); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4197, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_14 = __Pyx_PyObject_GetSlice(__pyx_t_2, 1, 0, NULL, NULL, &__pyx_mstate_global->__pyx_slice[0], 1, 0, 1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 4197, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_t_14); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4197, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    __pyx_t_13 = __Pyx_PyLong_As_nc_type(__pyx_t_2); if (unlikely((__pyx_t_13 == ((nc_type)-1)) && PyErr_Occurred())) __PYX_ERR(0, 4197, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_v_xtype = __pyx_t_13;

    /* "netCDF4/_netCDF4.pyx":4199
 *             xtype = _nptonctype[datatype.str[1:]]
 *             # dtype variable attribute is a numpy datatype object.
 *             self.dtype = datatype             # <<<<<<<<<<<<<<
 *         elif is_complex:
 *             xtype = _complex_types[datatype.str[1:]]
*/
    __Pyx_INCREF(__pyx_v_datatype);
    __Pyx_GIVEREF(__pyx_v_datatype);
    __Pyx_GOTREF(__pyx_v_self->dtype);
    __Pyx_DECREF(__pyx_v_self->dtype);
    __pyx_v_self->dtype = __pyx_v_datatype;

    /* "netCDF4/_netCDF4.pyx":4194
 *             # dtype variable attribute is a numpy datatype object.
 *             self.dtype = datatype.dtype
 *         elif datatype.str[1:] in _supportedtypes:             # <<<<<<<<<<<<<<
 *             # find netCDF primitive data type corresponding to
 *             # specified numpy data type.
*/
    goto __pyx_L38;
  }

  /* "netCDF4/_netCDF4.pyx":4200
 *             # dtype variable attribute is a numpy datatype object.
 *             self.dtype = datatype
 *         elif is_complex:             # <<<<<<<<<<<<<<
 *             xtype = _complex_types[datatype.str[1:]]
 *             self.dtype = datatype
*/
  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_is_complex); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 4200, __pyx_L1_error)
  if (likely(__pyx_t_5)) {

    /* "netCDF4/_netCDF4.pyx":4201
 *             self.dtype = datatype
 *         elif is_complex:
 *             xtype = _complex_types[datatype.str[1:]]             # <<<<<<<<<<<<<<
 *             self.dtype = datatype
 *         else:
*/
    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_complex_types); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4201, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_v_datatype, __pyx_mstate_global->__pyx_n_u_str); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 4201, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    __pyx_t_1 = __Pyx_PyObject_GetSlice(__pyx_t_14, 1, 0, NULL, NULL, &__pyx_mstate_global->__pyx_slice[0], 1, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4201, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    __pyx_t_14 = __Pyx_PyObject_GetItem(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 4201, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_13 = __Pyx_PyLong_As_nc_type(__pyx_t_14); if (unlikely((__pyx_t_13 == ((nc_type)-1)) && PyErr_Occurred())) __PYX_ERR(0, 4201, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    __pyx_v_xtype = __pyx_t_13;

    /* "netCDF4/_netCDF4.pyx":4202
 *         elif is_complex:
 *             xtype = _complex_types[datatype.str[1:]]
 *             self.dtype = datatype             # <<<<<<<<<<<<<<
 *         else:
 *             raise TypeError(f'Illegal primitive data type, must be one of {_supportedtypes}, got {datatype} {error_info}')
*/
    __Pyx_INCREF(__pyx_v_datatype);
    __Pyx_GIVEREF(__pyx_v_datatype);
    __Pyx_GOTREF(__pyx_v_self->dtype);
    __Pyx_DECREF(__pyx_v_self->dtype);
    __pyx_v_self->dtype = __pyx_v_datatype;

    /* "netCDF4/_netCDF4.pyx":4200
 *             # dtype variable attribute is a numpy datatype object.
 *             self.dtype = datatype
 *         elif is_complex:             # <<<<<<<<<<<<<<
 *             xtype = _complex_types[datatype.str[1:]]
 *             self.dtype = datatype
*/
    goto __pyx_L38;
  }

  /* "netCDF4/_netCDF4.pyx":4204
 *             self.dtype = datatype
 *         else:
 *             raise TypeError(f'Illegal primitive data type, must be one of {_supportedtypes}, got {datatype} {error_info}')             # <<<<<<<<<<<<<<
 * 
 *         if 'id' in kwargs:
*/
  /*else*/ {
    __pyx_t_1 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_supportedtypes); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4204, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyObject_FormatSimple(__pyx_t_2, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4204, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_PyObject_FormatSimple(__pyx_v_datatype, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4204, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_15[0] = __pyx_mstate_global->__pyx_kp_u_Illegal_primitive_data_type_must;
    __pyx_t_15[1] = __pyx_t_3;
    __pyx_t_15[2] = __pyx_mstate_global->__pyx_kp_u_got;
    __pyx_t_15[3] = __pyx_t_2;
    __pyx_t_15[4] = __pyx_mstate_global->__pyx_kp_u__8;
    __pyx_t_15[5] = __pyx_v_error_info;
    __pyx_t_10 = __Pyx_PyUnicode_Join(__pyx_t_15, 6, 44 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3) + 6 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_2) + 1 + __Pyx_PyUnicode_GET_LENGTH(__pyx_v_error_info), 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_v_error_info));
    if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4204, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_8 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_t_10};
      __pyx_t_14 = __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_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 4204, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_14);
    }
    __Pyx_Raise(__pyx_t_14, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    __PYX_ERR(0, 4204, __pyx_L1_error)
  }
  __pyx_L38:;

  /* "netCDF4/_netCDF4.pyx":4206
 *             raise TypeError(f'Illegal primitive data type, must be one of {_supportedtypes}, got {datatype} {error_info}')
 * 
 *         if 'id' in kwargs:             # <<<<<<<<<<<<<<
 *             self._varid = kwargs['id']
 *         else:
*/
  __pyx_t_5 = (__Pyx_PyDict_ContainsTF(__pyx_mstate_global->__pyx_n_u_id, __pyx_v_kwargs, Py_EQ)); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 4206, __pyx_L1_error)
  if (__pyx_t_5) {

    /* "netCDF4/_netCDF4.pyx":4207
 * 
 *         if 'id' in kwargs:
 *             self._varid = kwargs['id']             # <<<<<<<<<<<<<<
 *         else:
 *             bytestr = _strencode(name)
*/
    __pyx_t_14 = __Pyx_PyDict_GetItem(__pyx_v_kwargs, __pyx_mstate_global->__pyx_n_u_id); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 4207, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    __pyx_t_11 = __Pyx_PyLong_As_int(__pyx_t_14); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 4207, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    __pyx_v_self->_varid = __pyx_t_11;

    /* "netCDF4/_netCDF4.pyx":4206
 *             raise TypeError(f'Illegal primitive data type, must be one of {_supportedtypes}, got {datatype} {error_info}')
 * 
 *         if 'id' in kwargs:             # <<<<<<<<<<<<<<
 *             self._varid = kwargs['id']
 *         else:
*/
    goto __pyx_L47;
  }

  /* "netCDF4/_netCDF4.pyx":4209
 *             self._varid = kwargs['id']
 *         else:
 *             bytestr = _strencode(name)             # <<<<<<<<<<<<<<
 *             varname = bytestr
 *             ndims = len(dimensions)
*/
  /*else*/ {
    __pyx_t_14 = __pyx_f_7netCDF4_8_netCDF4__strencode(__pyx_v_name, NULL); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 4209, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    __pyx_v_bytestr = __pyx_t_14;
    __pyx_t_14 = 0;

    /* "netCDF4/_netCDF4.pyx":4210
 *         else:
 *             bytestr = _strencode(name)
 *             varname = bytestr             # <<<<<<<<<<<<<<
 *             ndims = len(dimensions)
 *             # find dimension ids.
*/
    __pyx_t_16 = __Pyx_PyObject_AsWritableString(__pyx_v_bytestr); if (unlikely((!__pyx_t_16) && PyErr_Occurred())) __PYX_ERR(0, 4210, __pyx_L1_error)
    __pyx_v_varname = __pyx_t_16;

    /* "netCDF4/_netCDF4.pyx":4211
 *             bytestr = _strencode(name)
 *             varname = bytestr
 *             ndims = len(dimensions)             # <<<<<<<<<<<<<<
 *             # find dimension ids.
 *             if ndims:
*/
    __pyx_t_17 = PyObject_Length(__pyx_v_dimensions); if (unlikely(__pyx_t_17 == ((Py_ssize_t)-1))) __PYX_ERR(0, 4211, __pyx_L1_error)
    __pyx_v_ndims = __pyx_t_17;

    /* "netCDF4/_netCDF4.pyx":4213
 *             ndims = len(dimensions)
 *             # find dimension ids.
 *             if ndims:             # <<<<<<<<<<<<<<
 *                 dimids = <int *>malloc(sizeof(int) * ndims)
 *                 for n in range(ndims):
*/
    __pyx_t_5 = (__pyx_v_ndims != 0);
    if (__pyx_t_5) {

      /* "netCDF4/_netCDF4.pyx":4214
 *             # find dimension ids.
 *             if ndims:
 *                 dimids = <int *>malloc(sizeof(int) * ndims)             # <<<<<<<<<<<<<<
 *                 for n in range(ndims):
 *                     dimids[n] = dimensions[n]._dimid
*/
      __pyx_v_dimids = ((int *)malloc(((sizeof(int)) * __pyx_v_ndims)));

      /* "netCDF4/_netCDF4.pyx":4215
 *             if ndims:
 *                 dimids = <int *>malloc(sizeof(int) * ndims)
 *                 for n in range(ndims):             # <<<<<<<<<<<<<<
 *                     dimids[n] = dimensions[n]._dimid
 *             # go into define mode if it's a netCDF 3 compatible
*/
      __pyx_t_11 = __pyx_v_ndims;
      __pyx_t_18 = __pyx_t_11;
      for (__pyx_t_19 = 0; __pyx_t_19 < __pyx_t_18; __pyx_t_19+=1) {
        __pyx_v_n = __pyx_t_19;

        /* "netCDF4/_netCDF4.pyx":4216
 *                 dimids = <int *>malloc(sizeof(int) * ndims)
 *                 for n in range(ndims):
 *                     dimids[n] = dimensions[n]._dimid             # <<<<<<<<<<<<<<
 *             # go into define mode if it's a netCDF 3 compatible
 *             # file format.  Be careful to exit define mode before
*/
        __pyx_t_14 = __Pyx_GetItemInt(__pyx_v_dimensions, __pyx_v_n, int, 1, __Pyx_PyLong_From_int, 0, 1, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 4216, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_14);
        __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_mstate_global->__pyx_n_u_dimid); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4216, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_10);
        __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
        __pyx_t_20 = __Pyx_PyLong_As_int(__pyx_t_10); if (unlikely((__pyx_t_20 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 4216, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        (__pyx_v_dimids[__pyx_v_n]) = __pyx_t_20;
      }

      /* "netCDF4/_netCDF4.pyx":4213
 *             ndims = len(dimensions)
 *             # find dimension ids.
 *             if ndims:             # <<<<<<<<<<<<<<
 *                 dimids = <int *>malloc(sizeof(int) * ndims)
 *                 for n in range(ndims):
*/
    }

    /* "netCDF4/_netCDF4.pyx":4220
 *             # file format.  Be careful to exit define mode before
 *             # any exceptions are raised.
 *             if grp.data_model != 'NETCDF4': grp._redef()             # <<<<<<<<<<<<<<
 *             # define variable.
 *             with nogil:
*/
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_mstate_global->__pyx_n_u_data_model); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4220, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_t_5 = (__Pyx_PyUnicode_Equals(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_NETCDF4, Py_NE)); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 4220, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    if (__pyx_t_5) {
      __pyx_t_14 = __pyx_v_grp;
      __Pyx_INCREF(__pyx_t_14);
      __pyx_t_8 = 0;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_14, NULL};
        __pyx_t_10 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_redef, __pyx_callargs+__pyx_t_8, (1-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
        if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4220, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_10);
      }
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    }

    /* "netCDF4/_netCDF4.pyx":4222
 *             if grp.data_model != 'NETCDF4': grp._redef()
 *             # define variable.
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 ierr = pfnc_def_var(self._grpid, varname, xtype, ndims,
 *                                   dimids, &self._varid)
*/
    {
        PyThreadState * _save;
        _save = PyEval_SaveThread();
        __Pyx_FastGIL_Remember();
        /*try:*/ {

          /* "netCDF4/_netCDF4.pyx":4223
 *             # define variable.
 *             with nogil:
 *                 ierr = pfnc_def_var(self._grpid, varname, xtype, ndims,             # <<<<<<<<<<<<<<
 *                                   dimids, &self._varid)
 *             if ndims:
*/
          __pyx_v_ierr = pfnc_def_var(__pyx_v_self->_grpid, __pyx_v_varname, __pyx_v_xtype, __pyx_v_ndims, __pyx_v_dimids, (&__pyx_v_self->_varid));
        }

        /* "netCDF4/_netCDF4.pyx":4222
 *             if grp.data_model != 'NETCDF4': grp._redef()
 *             # define variable.
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 ierr = pfnc_def_var(self._grpid, varname, xtype, ndims,
 *                                   dimids, &self._varid)
*/
        /*finally:*/ {
          /*normal exit:*/{
            __Pyx_FastGIL_Forget();
            PyEval_RestoreThread(_save);
            goto __pyx_L54;
          }
          __pyx_L54:;
        }
    }

    /* "netCDF4/_netCDF4.pyx":4225
 *                 ierr = pfnc_def_var(self._grpid, varname, xtype, ndims,
 *                                   dimids, &self._varid)
 *             if ndims:             # <<<<<<<<<<<<<<
 *                 free(dimids)
 * 
*/
    __pyx_t_5 = (__pyx_v_ndims != 0);
    if (__pyx_t_5) {

      /* "netCDF4/_netCDF4.pyx":4226
 *                                   dimids, &self._varid)
 *             if ndims:
 *                 free(dimids)             # <<<<<<<<<<<<<<
 * 
 *             if ierr != NC_NOERR:
*/
      free(__pyx_v_dimids);

      /* "netCDF4/_netCDF4.pyx":4225
 *                 ierr = pfnc_def_var(self._grpid, varname, xtype, ndims,
 *                                   dimids, &self._varid)
 *             if ndims:             # <<<<<<<<<<<<<<
 *                 free(dimids)
 * 
*/
    }

    /* "netCDF4/_netCDF4.pyx":4228
 *                 free(dimids)
 * 
 *             if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
 *                 if grp.data_model != 'NETCDF4':
 *                     grp._enddef()
*/
    __pyx_t_5 = (__pyx_v_ierr != NC_NOERR);
    if (__pyx_t_5) {

      /* "netCDF4/_netCDF4.pyx":4229
 * 
 *             if ierr != NC_NOERR:
 *                 if grp.data_model != 'NETCDF4':             # <<<<<<<<<<<<<<
 *                     grp._enddef()
 *                 _ensure_nc_success(ierr, extra_msg=error_info)
*/
      __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_mstate_global->__pyx_n_u_data_model); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4229, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __pyx_t_5 = (__Pyx_PyUnicode_Equals(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_NETCDF4, Py_NE)); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 4229, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (__pyx_t_5) {

        /* "netCDF4/_netCDF4.pyx":4230
 *             if ierr != NC_NOERR:
 *                 if grp.data_model != 'NETCDF4':
 *                     grp._enddef()             # <<<<<<<<<<<<<<
 *                 _ensure_nc_success(ierr, extra_msg=error_info)
 * 
*/
        __pyx_t_14 = __pyx_v_grp;
        __Pyx_INCREF(__pyx_t_14);
        __pyx_t_8 = 0;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_14, NULL};
          __pyx_t_10 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_enddef, __pyx_callargs+__pyx_t_8, (1-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
          if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4230, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_10);
        }
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

        /* "netCDF4/_netCDF4.pyx":4229
 * 
 *             if ierr != NC_NOERR:
 *                 if grp.data_model != 'NETCDF4':             # <<<<<<<<<<<<<<
 *                     grp._enddef()
 *                 _ensure_nc_success(ierr, extra_msg=error_info)
*/
      }

      /* "netCDF4/_netCDF4.pyx":4231
 *                 if grp.data_model != 'NETCDF4':
 *                     grp._enddef()
 *                 _ensure_nc_success(ierr, extra_msg=error_info)             # <<<<<<<<<<<<<<
 * 
 *             # set chunk cache size if desired
*/
      __pyx_t_14 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4231, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4231, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_8 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_1))) {
        __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_1);
        assert(__pyx_t_14);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_1);
        __Pyx_INCREF(__pyx_t_14);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_1, __pyx__function);
        __pyx_t_8 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_14, __pyx_t_2};
        __pyx_t_3 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4231, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_extra_msg, __pyx_v_error_info, __pyx_t_3, __pyx_callargs+2, 0) < (0)) __PYX_ERR(0, 4231, __pyx_L1_error)
        __pyx_t_10 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_t_1, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_3);
        __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4231, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_10);
      }
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

      /* "netCDF4/_netCDF4.pyx":4228
 *                 free(dimids)
 * 
 *             if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
 *                 if grp.data_model != 'NETCDF4':
 *                     grp._enddef()
*/
    }

    /* "netCDF4/_netCDF4.pyx":4237
 *             # of vars are created.  This change only lasts as long as file is
 *             # open.
 *             if grp.data_model.startswith('NETCDF4') and chunk_cache is not None:             # <<<<<<<<<<<<<<
 *                 with nogil:
 *                     ierr = nc_get_var_chunk_cache(self._grpid, self._varid, &sizep,
*/
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_mstate_global->__pyx_n_u_data_model); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4237, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_1 = __pyx_t_3;
    __Pyx_INCREF(__pyx_t_1);
    __pyx_t_8 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_mstate_global->__pyx_n_u_NETCDF4};
      __pyx_t_10 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_startswith, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (1*__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_10)) __PYX_ERR(0, 4237, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
    }
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 4237, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    if (__pyx_t_7) {
    } else {
      __pyx_t_5 = __pyx_t_7;
      goto __pyx_L59_bool_binop_done;
    }
    __pyx_t_7 = (__pyx_v_chunk_cache != Py_None);
    __pyx_t_5 = __pyx_t_7;
    __pyx_L59_bool_binop_done:;
    if (__pyx_t_5) {

      /* "netCDF4/_netCDF4.pyx":4238
 *             # open.
 *             if grp.data_model.startswith('NETCDF4') and chunk_cache is not None:
 *                 with nogil:             # <<<<<<<<<<<<<<
 *                     ierr = nc_get_var_chunk_cache(self._grpid, self._varid, &sizep,
 *                            &nelemsp, &preemptionp)
*/
      {
          PyThreadState * _save;
          _save = PyEval_SaveThread();
          __Pyx_FastGIL_Remember();
          /*try:*/ {

            /* "netCDF4/_netCDF4.pyx":4239
 *             if grp.data_model.startswith('NETCDF4') and chunk_cache is not None:
 *                 with nogil:
 *                     ierr = nc_get_var_chunk_cache(self._grpid, self._varid, &sizep,             # <<<<<<<<<<<<<<
 *                            &nelemsp, &preemptionp)
 *                 _ensure_nc_success(ierr, extra_msg=error_info)
*/
            __pyx_v_ierr = nc_get_var_chunk_cache(__pyx_v_self->_grpid, __pyx_v_self->_varid, (&__pyx_v_sizep), (&__pyx_v_nelemsp), (&__pyx_v_preemptionp));
          }

          /* "netCDF4/_netCDF4.pyx":4238
 *             # open.
 *             if grp.data_model.startswith('NETCDF4') and chunk_cache is not None:
 *                 with nogil:             # <<<<<<<<<<<<<<
 *                     ierr = nc_get_var_chunk_cache(self._grpid, self._varid, &sizep,
 *                            &nelemsp, &preemptionp)
*/
          /*finally:*/ {
            /*normal exit:*/{
              __Pyx_FastGIL_Forget();
              PyEval_RestoreThread(_save);
              goto __pyx_L63;
            }
            __pyx_L63:;
          }
      }

      /* "netCDF4/_netCDF4.pyx":4241
 *                     ierr = nc_get_var_chunk_cache(self._grpid, self._varid, &sizep,
 *                            &nelemsp, &preemptionp)
 *                 _ensure_nc_success(ierr, extra_msg=error_info)             # <<<<<<<<<<<<<<
 *                 # reset chunk cache size, leave other parameters unchanged.
 *                 sizep = chunk_cache
*/
      __pyx_t_3 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4241, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4241, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_8 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_1))) {
        __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
        assert(__pyx_t_3);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_1);
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_1, __pyx__function);
        __pyx_t_8 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_3, __pyx_t_2};
        __pyx_t_14 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 4241, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_14);
        if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_extra_msg, __pyx_v_error_info, __pyx_t_14, __pyx_callargs+2, 0) < (0)) __PYX_ERR(0, 4241, __pyx_L1_error)
        __pyx_t_10 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_t_1, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_14);
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4241, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_10);
      }
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

      /* "netCDF4/_netCDF4.pyx":4243
 *                 _ensure_nc_success(ierr, extra_msg=error_info)
 *                 # reset chunk cache size, leave other parameters unchanged.
 *                 sizep = chunk_cache             # <<<<<<<<<<<<<<
 *                 with nogil:
 *                     ierr = nc_set_var_chunk_cache(self._grpid, self._varid, sizep,
*/
      __pyx_t_8 = __Pyx_PyLong_As_size_t(__pyx_v_chunk_cache); if (unlikely((__pyx_t_8 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 4243, __pyx_L1_error)
      __pyx_v_sizep = __pyx_t_8;

      /* "netCDF4/_netCDF4.pyx":4244
 *                 # reset chunk cache size, leave other parameters unchanged.
 *                 sizep = chunk_cache
 *                 with nogil:             # <<<<<<<<<<<<<<
 *                     ierr = nc_set_var_chunk_cache(self._grpid, self._varid, sizep,
 *                            nelemsp, preemptionp)
*/
      {
          PyThreadState * _save;
          _save = PyEval_SaveThread();
          __Pyx_FastGIL_Remember();
          /*try:*/ {

            /* "netCDF4/_netCDF4.pyx":4245
 *                 sizep = chunk_cache
 *                 with nogil:
 *                     ierr = nc_set_var_chunk_cache(self._grpid, self._varid, sizep,             # <<<<<<<<<<<<<<
 *                            nelemsp, preemptionp)
 *                 _ensure_nc_success(ierr, extra_msg=error_info)
*/
            __pyx_v_ierr = nc_set_var_chunk_cache(__pyx_v_self->_grpid, __pyx_v_self->_varid, __pyx_v_sizep, __pyx_v_nelemsp, __pyx_v_preemptionp);
          }

          /* "netCDF4/_netCDF4.pyx":4244
 *                 # reset chunk cache size, leave other parameters unchanged.
 *                 sizep = chunk_cache
 *                 with nogil:             # <<<<<<<<<<<<<<
 *                     ierr = nc_set_var_chunk_cache(self._grpid, self._varid, sizep,
 *                            nelemsp, preemptionp)
*/
          /*finally:*/ {
            /*normal exit:*/{
              __Pyx_FastGIL_Forget();
              PyEval_RestoreThread(_save);
              goto __pyx_L66;
            }
            __pyx_L66:;
          }
      }

      /* "netCDF4/_netCDF4.pyx":4247
 *                     ierr = nc_set_var_chunk_cache(self._grpid, self._varid, sizep,
 *                            nelemsp, preemptionp)
 *                 _ensure_nc_success(ierr, extra_msg=error_info)             # <<<<<<<<<<<<<<
 * 
 *             # set compression, shuffle, chunking, fletcher32 and endian
*/
      __pyx_t_1 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_14, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 4247, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_14);
      __pyx_t_2 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4247, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_8 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_14))) {
        __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_14);
        assert(__pyx_t_1);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_14);
        __Pyx_INCREF(__pyx_t_1);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_14, __pyx__function);
        __pyx_t_8 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_1, __pyx_t_2};
        __pyx_t_3 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4247, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_extra_msg, __pyx_v_error_info, __pyx_t_3, __pyx_callargs+2, 0) < (0)) __PYX_ERR(0, 4247, __pyx_L1_error)
        __pyx_t_10 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_t_14, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_3);
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
        if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4247, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_10);
      }
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

      /* "netCDF4/_netCDF4.pyx":4237
 *             # of vars are created.  This change only lasts as long as file is
 *             # open.
 *             if grp.data_model.startswith('NETCDF4') and chunk_cache is not None:             # <<<<<<<<<<<<<<
 *                 with nogil:
 *                     ierr = nc_get_var_chunk_cache(self._grpid, self._varid, &sizep,
*/
    }

    /* "netCDF4/_netCDF4.pyx":4255
 *             # and fletcher32 flags are silently ignored. Only
 *             # endian='native' allowed for NETCDF3.
 *             if grp.data_model in ['NETCDF4','NETCDF4_CLASSIC']:             # <<<<<<<<<<<<<<
 *                 # set compression and shuffle parameters.
 *                 if compression is not None and ndims: # don't bother for scalar variable
*/
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_mstate_global->__pyx_n_u_data_model); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4255, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_t_7 = (__Pyx_PyUnicode_Equals(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_NETCDF4, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 4255, __pyx_L1_error)
    if (!__pyx_t_7) {
    } else {
      __pyx_t_5 = __pyx_t_7;
      goto __pyx_L68_bool_binop_done;
    }
    __pyx_t_7 = (__Pyx_PyUnicode_Equals(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_NETCDF4_CLASSIC, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 4255, __pyx_L1_error)
    __pyx_t_5 = __pyx_t_7;
    __pyx_L68_bool_binop_done:;
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __pyx_t_7 = __pyx_t_5;
    if (__pyx_t_7) {

      /* "netCDF4/_netCDF4.pyx":4257
 *             if grp.data_model in ['NETCDF4','NETCDF4_CLASSIC']:
 *                 # set compression and shuffle parameters.
 *                 if compression is not None and ndims: # don't bother for scalar variable             # <<<<<<<<<<<<<<
 *                     if zlib:
 *                         icomplevel = complevel
*/
      __pyx_t_5 = (__pyx_v_compression != Py_None);
      if (__pyx_t_5) {
      } else {
        __pyx_t_7 = __pyx_t_5;
        goto __pyx_L71_bool_binop_done;
      }
      __pyx_t_5 = (__pyx_v_ndims != 0);
      __pyx_t_7 = __pyx_t_5;
      __pyx_L71_bool_binop_done:;
      if (__pyx_t_7) {

        /* "netCDF4/_netCDF4.pyx":4258
 *                 # set compression and shuffle parameters.
 *                 if compression is not None and ndims: # don't bother for scalar variable
 *                     if zlib:             # <<<<<<<<<<<<<<
 *                         icomplevel = complevel
 *                         if shuffle:
*/
        __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_zlib); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 4258, __pyx_L1_error)
        if (__pyx_t_7) {

          /* "netCDF4/_netCDF4.pyx":4259
 *                 if compression is not None and ndims: # don't bother for scalar variable
 *                     if zlib:
 *                         icomplevel = complevel             # <<<<<<<<<<<<<<
 *                         if shuffle:
 *                             with nogil:
*/
          __pyx_t_11 = __Pyx_PyLong_As_int(__pyx_v_complevel); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 4259, __pyx_L1_error)
          __pyx_v_icomplevel = __pyx_t_11;

          /* "netCDF4/_netCDF4.pyx":4260
 *                     if zlib:
 *                         icomplevel = complevel
 *                         if shuffle:             # <<<<<<<<<<<<<<
 *                             with nogil:
 *                                 ierr = nc_def_var_deflate(self._grpid, self._varid, 1, 1, icomplevel)
*/
          __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_shuffle); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 4260, __pyx_L1_error)
          if (__pyx_t_7) {

            /* "netCDF4/_netCDF4.pyx":4261
 *                         icomplevel = complevel
 *                         if shuffle:
 *                             with nogil:             # <<<<<<<<<<<<<<
 *                                 ierr = nc_def_var_deflate(self._grpid, self._varid, 1, 1, icomplevel)
 *                         else:
*/
            {
                PyThreadState * _save;
                _save = PyEval_SaveThread();
                __Pyx_FastGIL_Remember();
                /*try:*/ {

                  /* "netCDF4/_netCDF4.pyx":4262
 *                         if shuffle:
 *                             with nogil:
 *                                 ierr = nc_def_var_deflate(self._grpid, self._varid, 1, 1, icomplevel)             # <<<<<<<<<<<<<<
 *                         else:
 *                             with nogil:
*/
                  __pyx_v_ierr = nc_def_var_deflate(__pyx_v_self->_grpid, __pyx_v_self->_varid, 1, 1, __pyx_v_icomplevel);
                }

                /* "netCDF4/_netCDF4.pyx":4261
 *                         icomplevel = complevel
 *                         if shuffle:
 *                             with nogil:             # <<<<<<<<<<<<<<
 *                                 ierr = nc_def_var_deflate(self._grpid, self._varid, 1, 1, icomplevel)
 *                         else:
*/
                /*finally:*/ {
                  /*normal exit:*/{
                    __Pyx_FastGIL_Forget();
                    PyEval_RestoreThread(_save);
                    goto __pyx_L77;
                  }
                  __pyx_L77:;
                }
            }

            /* "netCDF4/_netCDF4.pyx":4260
 *                     if zlib:
 *                         icomplevel = complevel
 *                         if shuffle:             # <<<<<<<<<<<<<<
 *                             with nogil:
 *                                 ierr = nc_def_var_deflate(self._grpid, self._varid, 1, 1, icomplevel)
*/
            goto __pyx_L74;
          }

          /* "netCDF4/_netCDF4.pyx":4264
 *                                 ierr = nc_def_var_deflate(self._grpid, self._varid, 1, 1, icomplevel)
 *                         else:
 *                             with nogil:             # <<<<<<<<<<<<<<
 *                                 ierr = nc_def_var_deflate(self._grpid, self._varid, 0, 1, icomplevel)
 *                         if ierr != NC_NOERR:
*/
          /*else*/ {
            {
                PyThreadState * _save;
                _save = PyEval_SaveThread();
                __Pyx_FastGIL_Remember();
                /*try:*/ {

                  /* "netCDF4/_netCDF4.pyx":4265
 *                         else:
 *                             with nogil:
 *                                 ierr = nc_def_var_deflate(self._grpid, self._varid, 0, 1, icomplevel)             # <<<<<<<<<<<<<<
 *                         if ierr != NC_NOERR:
 *                             if grp.data_model != 'NETCDF4': grp._enddef()
*/
                  __pyx_v_ierr = nc_def_var_deflate(__pyx_v_self->_grpid, __pyx_v_self->_varid, 0, 1, __pyx_v_icomplevel);
                }

                /* "netCDF4/_netCDF4.pyx":4264
 *                                 ierr = nc_def_var_deflate(self._grpid, self._varid, 1, 1, icomplevel)
 *                         else:
 *                             with nogil:             # <<<<<<<<<<<<<<
 *                                 ierr = nc_def_var_deflate(self._grpid, self._varid, 0, 1, icomplevel)
 *                         if ierr != NC_NOERR:
*/
                /*finally:*/ {
                  /*normal exit:*/{
                    __Pyx_FastGIL_Forget();
                    PyEval_RestoreThread(_save);
                    goto __pyx_L80;
                  }
                  __pyx_L80:;
                }
            }
          }
          __pyx_L74:;

          /* "netCDF4/_netCDF4.pyx":4266
 *                             with nogil:
 *                                 ierr = nc_def_var_deflate(self._grpid, self._varid, 0, 1, icomplevel)
 *                         if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
 *                             if grp.data_model != 'NETCDF4': grp._enddef()
 *                             _ensure_nc_success(ierr, extra_msg=error_info)
*/
          __pyx_t_7 = (__pyx_v_ierr != NC_NOERR);
          if (__pyx_t_7) {

            /* "netCDF4/_netCDF4.pyx":4267
 *                                 ierr = nc_def_var_deflate(self._grpid, self._varid, 0, 1, icomplevel)
 *                         if ierr != NC_NOERR:
 *                             if grp.data_model != 'NETCDF4': grp._enddef()             # <<<<<<<<<<<<<<
 *                             _ensure_nc_success(ierr, extra_msg=error_info)
 * 
*/
            __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_mstate_global->__pyx_n_u_data_model); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4267, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_10);
            __pyx_t_7 = (__Pyx_PyUnicode_Equals(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_NETCDF4, Py_NE)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 4267, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
            if (__pyx_t_7) {
              __pyx_t_14 = __pyx_v_grp;
              __Pyx_INCREF(__pyx_t_14);
              __pyx_t_8 = 0;
              {
                PyObject *__pyx_callargs[2] = {__pyx_t_14, NULL};
                __pyx_t_10 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_enddef, __pyx_callargs+__pyx_t_8, (1-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
                __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
                if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4267, __pyx_L1_error)
                __Pyx_GOTREF(__pyx_t_10);
              }
              __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
            }

            /* "netCDF4/_netCDF4.pyx":4268
 *                         if ierr != NC_NOERR:
 *                             if grp.data_model != 'NETCDF4': grp._enddef()
 *                             _ensure_nc_success(ierr, extra_msg=error_info)             # <<<<<<<<<<<<<<
 * 
 *                     if szip:
*/
            __pyx_t_14 = NULL;
            __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4268, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_3);
            __pyx_t_2 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4268, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_2);
            __pyx_t_8 = 1;
            #if CYTHON_UNPACK_METHODS
            if (unlikely(PyMethod_Check(__pyx_t_3))) {
              __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_3);
              assert(__pyx_t_14);
              PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
              __Pyx_INCREF(__pyx_t_14);
              __Pyx_INCREF(__pyx__function);
              __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
              __pyx_t_8 = 0;
            }
            #endif
            {
              PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_14, __pyx_t_2};
              __pyx_t_1 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4268, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_1);
              if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_extra_msg, __pyx_v_error_info, __pyx_t_1, __pyx_callargs+2, 0) < (0)) __PYX_ERR(0, 4268, __pyx_L1_error)
              __pyx_t_10 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_t_3, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_1);
              __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
              __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
              __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
              if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4268, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_10);
            }
            __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

            /* "netCDF4/_netCDF4.pyx":4266
 *                             with nogil:
 *                                 ierr = nc_def_var_deflate(self._grpid, self._varid, 0, 1, icomplevel)
 *                         if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
 *                             if grp.data_model != 'NETCDF4': grp._enddef()
 *                             _ensure_nc_success(ierr, extra_msg=error_info)
*/
          }

          /* "netCDF4/_netCDF4.pyx":4258
 *                 # set compression and shuffle parameters.
 *                 if compression is not None and ndims: # don't bother for scalar variable
 *                     if zlib:             # <<<<<<<<<<<<<<
 *                         icomplevel = complevel
 *                         if shuffle:
*/
        }

        /* "netCDF4/_netCDF4.pyx":4270
 *                             _ensure_nc_success(ierr, extra_msg=error_info)
 * 
 *                     if szip:             # <<<<<<<<<<<<<<
 *                         if not __has_szip_support__:
 *                             raise ValueError("compression='szip' only works if linked version of hdf5 has szip functionality enabled")
*/
        if (__pyx_v_szip) {

          /* "netCDF4/_netCDF4.pyx":4271
 * 
 *                     if szip:
 *                         if not __has_szip_support__:             # <<<<<<<<<<<<<<
 *                             raise ValueError("compression='szip' only works if linked version of hdf5 has szip functionality enabled")
 *                         try:
*/
          __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_has_szip_support); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4271, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_10);
          __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 4271, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
          __pyx_t_5 = (!__pyx_t_7);
          if (unlikely(__pyx_t_5)) {

            /* "netCDF4/_netCDF4.pyx":4272
 *                     if szip:
 *                         if not __has_szip_support__:
 *                             raise ValueError("compression='szip' only works if linked version of hdf5 has szip functionality enabled")             # <<<<<<<<<<<<<<
 *                         try:
 *                             iszip_coding = _szip_dict[szip_coding]
*/
            __pyx_t_3 = NULL;
            __pyx_t_8 = 1;
            {
              PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_compression_szip_only_works_if_l};
              __pyx_t_10 = __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;
              if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4272, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_10);
            }
            __Pyx_Raise(__pyx_t_10, 0, 0, 0);
            __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
            __PYX_ERR(0, 4272, __pyx_L1_error)

            /* "netCDF4/_netCDF4.pyx":4271
 * 
 *                     if szip:
 *                         if not __has_szip_support__:             # <<<<<<<<<<<<<<
 *                             raise ValueError("compression='szip' only works if linked version of hdf5 has szip functionality enabled")
 *                         try:
*/
          }

          /* "netCDF4/_netCDF4.pyx":4273
 *                         if not __has_szip_support__:
 *                             raise ValueError("compression='szip' only works if linked version of hdf5 has szip functionality enabled")
 *                         try:             # <<<<<<<<<<<<<<
 *                             iszip_coding = _szip_dict[szip_coding]
 *                         except KeyError:
*/
          {
            __Pyx_PyThreadState_declare
            __Pyx_PyThreadState_assign
            __Pyx_ExceptionSave(&__pyx_t_21, &__pyx_t_22, &__pyx_t_23);
            __Pyx_XGOTREF(__pyx_t_21);
            __Pyx_XGOTREF(__pyx_t_22);
            __Pyx_XGOTREF(__pyx_t_23);
            /*try:*/ {

              /* "netCDF4/_netCDF4.pyx":4274
 *                             raise ValueError("compression='szip' only works if linked version of hdf5 has szip functionality enabled")
 *                         try:
 *                             iszip_coding = _szip_dict[szip_coding]             # <<<<<<<<<<<<<<
 *                         except KeyError:
 *                             raise ValueError("unknown szip coding ('ec' or 'nn' supported)")
*/
              __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_szip_dict); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4274, __pyx_L85_error)
              __Pyx_GOTREF(__pyx_t_10);
              __pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_t_10, __pyx_v_szip_coding); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4274, __pyx_L85_error)
              __Pyx_GOTREF(__pyx_t_3);
              __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
              __pyx_t_11 = __Pyx_PyLong_As_int(__pyx_t_3); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 4274, __pyx_L85_error)
              __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
              __pyx_v_iszip_coding = __pyx_t_11;

              /* "netCDF4/_netCDF4.pyx":4273
 *                         if not __has_szip_support__:
 *                             raise ValueError("compression='szip' only works if linked version of hdf5 has szip functionality enabled")
 *                         try:             # <<<<<<<<<<<<<<
 *                             iszip_coding = _szip_dict[szip_coding]
 *                         except KeyError:
*/
            }
            __Pyx_XDECREF(__pyx_t_21); __pyx_t_21 = 0;
            __Pyx_XDECREF(__pyx_t_22); __pyx_t_22 = 0;
            __Pyx_XDECREF(__pyx_t_23); __pyx_t_23 = 0;
            goto __pyx_L90_try_end;
            __pyx_L85_error:;
            __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
            __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
            __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
            __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
            __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;

            /* "netCDF4/_netCDF4.pyx":4275
 *                         try:
 *                             iszip_coding = _szip_dict[szip_coding]
 *                         except KeyError:             # <<<<<<<<<<<<<<
 *                             raise ValueError("unknown szip coding ('ec' or 'nn' supported)")
 *                         iszip_pixels_per_block = szip_pixels_per_block
*/
            __pyx_t_11 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_KeyError))));
            if (__pyx_t_11) {
              __Pyx_AddTraceback("netCDF4._netCDF4.Variable.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
              if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_10, &__pyx_t_1) < 0) __PYX_ERR(0, 4275, __pyx_L87_except_error)
              __Pyx_XGOTREF(__pyx_t_3);
              __Pyx_XGOTREF(__pyx_t_10);
              __Pyx_XGOTREF(__pyx_t_1);

              /* "netCDF4/_netCDF4.pyx":4276
 *                             iszip_coding = _szip_dict[szip_coding]
 *                         except KeyError:
 *                             raise ValueError("unknown szip coding ('ec' or 'nn' supported)")             # <<<<<<<<<<<<<<
 *                         iszip_pixels_per_block = szip_pixels_per_block
 *                         with nogil:
*/
              __pyx_t_14 = NULL;
              __pyx_t_8 = 1;
              {
                PyObject *__pyx_callargs[2] = {__pyx_t_14, __pyx_mstate_global->__pyx_kp_u_unknown_szip_coding_ec_or_nn_sup};
                __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_14); __pyx_t_14 = 0;
                if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4276, __pyx_L87_except_error)
                __Pyx_GOTREF(__pyx_t_2);
              }
              __Pyx_Raise(__pyx_t_2, 0, 0, 0);
              __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
              __PYX_ERR(0, 4276, __pyx_L87_except_error)
            }
            goto __pyx_L87_except_error;

            /* "netCDF4/_netCDF4.pyx":4273
 *                         if not __has_szip_support__:
 *                             raise ValueError("compression='szip' only works if linked version of hdf5 has szip functionality enabled")
 *                         try:             # <<<<<<<<<<<<<<
 *                             iszip_coding = _szip_dict[szip_coding]
 *                         except KeyError:
*/
            __pyx_L87_except_error:;
            __Pyx_XGIVEREF(__pyx_t_21);
            __Pyx_XGIVEREF(__pyx_t_22);
            __Pyx_XGIVEREF(__pyx_t_23);
            __Pyx_ExceptionReset(__pyx_t_21, __pyx_t_22, __pyx_t_23);
            goto __pyx_L1_error;
            __pyx_L90_try_end:;
          }

          /* "netCDF4/_netCDF4.pyx":4277
 *                         except KeyError:
 *                             raise ValueError("unknown szip coding ('ec' or 'nn' supported)")
 *                         iszip_pixels_per_block = szip_pixels_per_block             # <<<<<<<<<<<<<<
 *                         with nogil:
 *                             ierr = nc_def_var_szip(self._grpid, self._varid, iszip_coding, iszip_pixels_per_block)
*/
          __pyx_t_11 = __Pyx_PyLong_As_int(__pyx_v_szip_pixels_per_block); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 4277, __pyx_L1_error)
          __pyx_v_iszip_pixels_per_block = __pyx_t_11;

          /* "netCDF4/_netCDF4.pyx":4278
 *                             raise ValueError("unknown szip coding ('ec' or 'nn' supported)")
 *                         iszip_pixels_per_block = szip_pixels_per_block
 *                         with nogil:             # <<<<<<<<<<<<<<
 *                             ierr = nc_def_var_szip(self._grpid, self._varid, iszip_coding, iszip_pixels_per_block)
 *                         if ierr != NC_NOERR:
*/
          {
              PyThreadState * _save;
              _save = PyEval_SaveThread();
              __Pyx_FastGIL_Remember();
              /*try:*/ {

                /* "netCDF4/_netCDF4.pyx":4279
 *                         iszip_pixels_per_block = szip_pixels_per_block
 *                         with nogil:
 *                             ierr = nc_def_var_szip(self._grpid, self._varid, iszip_coding, iszip_pixels_per_block)             # <<<<<<<<<<<<<<
 *                         if ierr != NC_NOERR:
 *                             if grp.data_model != 'NETCDF4':
*/
                __pyx_v_ierr = nc_def_var_szip(__pyx_v_self->_grpid, __pyx_v_self->_varid, __pyx_v_iszip_coding, __pyx_v_iszip_pixels_per_block);
              }

              /* "netCDF4/_netCDF4.pyx":4278
 *                             raise ValueError("unknown szip coding ('ec' or 'nn' supported)")
 *                         iszip_pixels_per_block = szip_pixels_per_block
 *                         with nogil:             # <<<<<<<<<<<<<<
 *                             ierr = nc_def_var_szip(self._grpid, self._varid, iszip_coding, iszip_pixels_per_block)
 *                         if ierr != NC_NOERR:
*/
              /*finally:*/ {
                /*normal exit:*/{
                  __Pyx_FastGIL_Forget();
                  PyEval_RestoreThread(_save);
                  goto __pyx_L95;
                }
                __pyx_L95:;
              }
          }

          /* "netCDF4/_netCDF4.pyx":4280
 *                         with nogil:
 *                             ierr = nc_def_var_szip(self._grpid, self._varid, iszip_coding, iszip_pixels_per_block)
 *                         if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
 *                             if grp.data_model != 'NETCDF4':
 *                                 grp._enddef()
*/
          __pyx_t_5 = (__pyx_v_ierr != NC_NOERR);
          if (__pyx_t_5) {

            /* "netCDF4/_netCDF4.pyx":4281
 *                             ierr = nc_def_var_szip(self._grpid, self._varid, iszip_coding, iszip_pixels_per_block)
 *                         if ierr != NC_NOERR:
 *                             if grp.data_model != 'NETCDF4':             # <<<<<<<<<<<<<<
 *                                 grp._enddef()
 *                             _ensure_nc_success(ierr, extra_msg=error_info)
*/
            __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_mstate_global->__pyx_n_u_data_model); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4281, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            __pyx_t_5 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_NETCDF4, Py_NE)); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 4281, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            if (__pyx_t_5) {

              /* "netCDF4/_netCDF4.pyx":4282
 *                         if ierr != NC_NOERR:
 *                             if grp.data_model != 'NETCDF4':
 *                                 grp._enddef()             # <<<<<<<<<<<<<<
 *                             _ensure_nc_success(ierr, extra_msg=error_info)
 * 
*/
              __pyx_t_10 = __pyx_v_grp;
              __Pyx_INCREF(__pyx_t_10);
              __pyx_t_8 = 0;
              {
                PyObject *__pyx_callargs[2] = {__pyx_t_10, NULL};
                __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_enddef, __pyx_callargs+__pyx_t_8, (1-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
                __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
                if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4282, __pyx_L1_error)
                __Pyx_GOTREF(__pyx_t_1);
              }
              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

              /* "netCDF4/_netCDF4.pyx":4281
 *                             ierr = nc_def_var_szip(self._grpid, self._varid, iszip_coding, iszip_pixels_per_block)
 *                         if ierr != NC_NOERR:
 *                             if grp.data_model != 'NETCDF4':             # <<<<<<<<<<<<<<
 *                                 grp._enddef()
 *                             _ensure_nc_success(ierr, extra_msg=error_info)
*/
            }

            /* "netCDF4/_netCDF4.pyx":4283
 *                             if grp.data_model != 'NETCDF4':
 *                                 grp._enddef()
 *                             _ensure_nc_success(ierr, extra_msg=error_info)             # <<<<<<<<<<<<<<
 * 
 *                     if zstd:
*/
            __pyx_t_10 = NULL;
            __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4283, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_3);
            __pyx_t_2 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4283, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_2);
            __pyx_t_8 = 1;
            #if CYTHON_UNPACK_METHODS
            if (unlikely(PyMethod_Check(__pyx_t_3))) {
              __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_3);
              assert(__pyx_t_10);
              PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
              __Pyx_INCREF(__pyx_t_10);
              __Pyx_INCREF(__pyx__function);
              __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
              __pyx_t_8 = 0;
            }
            #endif
            {
              PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_10, __pyx_t_2};
              __pyx_t_14 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 4283, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_14);
              if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_extra_msg, __pyx_v_error_info, __pyx_t_14, __pyx_callargs+2, 0) < (0)) __PYX_ERR(0, 4283, __pyx_L1_error)
              __pyx_t_1 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_t_3, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_14);
              __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
              __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
              __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
              __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
              if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4283, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_1);
            }
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

            /* "netCDF4/_netCDF4.pyx":4280
 *                         with nogil:
 *                             ierr = nc_def_var_szip(self._grpid, self._varid, iszip_coding, iszip_pixels_per_block)
 *                         if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
 *                             if grp.data_model != 'NETCDF4':
 *                                 grp._enddef()
*/
          }

          /* "netCDF4/_netCDF4.pyx":4270
 *                             _ensure_nc_success(ierr, extra_msg=error_info)
 * 
 *                     if szip:             # <<<<<<<<<<<<<<
 *                         if not __has_szip_support__:
 *                             raise ValueError("compression='szip' only works if linked version of hdf5 has szip functionality enabled")
*/
        }

        /* "netCDF4/_netCDF4.pyx":4285
 *                             _ensure_nc_success(ierr, extra_msg=error_info)
 * 
 *                     if zstd:             # <<<<<<<<<<<<<<
 *                         if not __has_zstandard_support__:
 *                             raise NetCDF4MissingFeatureException("compression='zstd'", "4.9.0")
*/
        if (__pyx_v_zstd) {

          /* "netCDF4/_netCDF4.pyx":4286
 * 
 *                     if zstd:
 *                         if not __has_zstandard_support__:             # <<<<<<<<<<<<<<
 *                             raise NetCDF4MissingFeatureException("compression='zstd'", "4.9.0")
 * 
*/
          __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_has_zstandard_support); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4286, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 4286, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __pyx_t_7 = (!__pyx_t_5);
          if (unlikely(__pyx_t_7)) {

            /* "netCDF4/_netCDF4.pyx":4287
 *                     if zstd:
 *                         if not __has_zstandard_support__:
 *                             raise NetCDF4MissingFeatureException("compression='zstd'", "4.9.0")             # <<<<<<<<<<<<<<
 * 
 *                         icomplevel = complevel
*/
            __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_NetCDF4MissingFeatureException); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4287, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_mstate_global->__pyx_tuple[9], NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4287, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_3);
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __Pyx_Raise(__pyx_t_3, 0, 0, 0);
            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
            __PYX_ERR(0, 4287, __pyx_L1_error)

            /* "netCDF4/_netCDF4.pyx":4286
 * 
 *                     if zstd:
 *                         if not __has_zstandard_support__:             # <<<<<<<<<<<<<<
 *                             raise NetCDF4MissingFeatureException("compression='zstd'", "4.9.0")
 * 
*/
          }

          /* "netCDF4/_netCDF4.pyx":4289
 *                             raise NetCDF4MissingFeatureException("compression='zstd'", "4.9.0")
 * 
 *                         icomplevel = complevel             # <<<<<<<<<<<<<<
 *                         with nogil:
 *                             ierr = nc_def_var_zstandard(self._grpid, self._varid, icomplevel)
*/
          __pyx_t_11 = __Pyx_PyLong_As_int(__pyx_v_complevel); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 4289, __pyx_L1_error)
          __pyx_v_icomplevel = __pyx_t_11;

          /* "netCDF4/_netCDF4.pyx":4290
 * 
 *                         icomplevel = complevel
 *                         with nogil:             # <<<<<<<<<<<<<<
 *                             ierr = nc_def_var_zstandard(self._grpid, self._varid, icomplevel)
 *                         if ierr != NC_NOERR:
*/
          {
              PyThreadState * _save;
              _save = PyEval_SaveThread();
              __Pyx_FastGIL_Remember();
              /*try:*/ {

                /* "netCDF4/_netCDF4.pyx":4291
 *                         icomplevel = complevel
 *                         with nogil:
 *                             ierr = nc_def_var_zstandard(self._grpid, self._varid, icomplevel)             # <<<<<<<<<<<<<<
 *                         if ierr != NC_NOERR:
 *                             if grp.data_model != 'NETCDF4':
*/
                __pyx_v_ierr = nc_def_var_zstandard(__pyx_v_self->_grpid, __pyx_v_self->_varid, __pyx_v_icomplevel);
              }

              /* "netCDF4/_netCDF4.pyx":4290
 * 
 *                         icomplevel = complevel
 *                         with nogil:             # <<<<<<<<<<<<<<
 *                             ierr = nc_def_var_zstandard(self._grpid, self._varid, icomplevel)
 *                         if ierr != NC_NOERR:
*/
              /*finally:*/ {
                /*normal exit:*/{
                  __Pyx_FastGIL_Forget();
                  PyEval_RestoreThread(_save);
                  goto __pyx_L102;
                }
                __pyx_L102:;
              }
          }

          /* "netCDF4/_netCDF4.pyx":4292
 *                         with nogil:
 *                             ierr = nc_def_var_zstandard(self._grpid, self._varid, icomplevel)
 *                         if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
 *                             if grp.data_model != 'NETCDF4':
 *                                 grp._enddef()
*/
          __pyx_t_7 = (__pyx_v_ierr != NC_NOERR);
          if (__pyx_t_7) {

            /* "netCDF4/_netCDF4.pyx":4293
 *                             ierr = nc_def_var_zstandard(self._grpid, self._varid, icomplevel)
 *                         if ierr != NC_NOERR:
 *                             if grp.data_model != 'NETCDF4':             # <<<<<<<<<<<<<<
 *                                 grp._enddef()
 *                             _ensure_nc_success(ierr, extra_msg=error_info)
*/
            __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_mstate_global->__pyx_n_u_data_model); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4293, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_3);
            __pyx_t_7 = (__Pyx_PyUnicode_Equals(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_NETCDF4, Py_NE)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 4293, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
            if (__pyx_t_7) {

              /* "netCDF4/_netCDF4.pyx":4294
 *                         if ierr != NC_NOERR:
 *                             if grp.data_model != 'NETCDF4':
 *                                 grp._enddef()             # <<<<<<<<<<<<<<
 *                             _ensure_nc_success(ierr, extra_msg=error_info)
 * 
*/
              __pyx_t_1 = __pyx_v_grp;
              __Pyx_INCREF(__pyx_t_1);
              __pyx_t_8 = 0;
              {
                PyObject *__pyx_callargs[2] = {__pyx_t_1, NULL};
                __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_enddef, __pyx_callargs+__pyx_t_8, (1-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
                __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
                if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4294, __pyx_L1_error)
                __Pyx_GOTREF(__pyx_t_3);
              }
              __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

              /* "netCDF4/_netCDF4.pyx":4293
 *                             ierr = nc_def_var_zstandard(self._grpid, self._varid, icomplevel)
 *                         if ierr != NC_NOERR:
 *                             if grp.data_model != 'NETCDF4':             # <<<<<<<<<<<<<<
 *                                 grp._enddef()
 *                             _ensure_nc_success(ierr, extra_msg=error_info)
*/
            }

            /* "netCDF4/_netCDF4.pyx":4295
 *                             if grp.data_model != 'NETCDF4':
 *                                 grp._enddef()
 *                             _ensure_nc_success(ierr, extra_msg=error_info)             # <<<<<<<<<<<<<<
 * 
 *                     if bzip2:
*/
            __pyx_t_1 = NULL;
            __Pyx_GetModuleGlobalName(__pyx_t_14, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 4295, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_14);
            __pyx_t_2 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4295, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_2);
            __pyx_t_8 = 1;
            #if CYTHON_UNPACK_METHODS
            if (unlikely(PyMethod_Check(__pyx_t_14))) {
              __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_14);
              assert(__pyx_t_1);
              PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_14);
              __Pyx_INCREF(__pyx_t_1);
              __Pyx_INCREF(__pyx__function);
              __Pyx_DECREF_SET(__pyx_t_14, __pyx__function);
              __pyx_t_8 = 0;
            }
            #endif
            {
              PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_1, __pyx_t_2};
              __pyx_t_10 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4295, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_10);
              if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_extra_msg, __pyx_v_error_info, __pyx_t_10, __pyx_callargs+2, 0) < (0)) __PYX_ERR(0, 4295, __pyx_L1_error)
              __pyx_t_3 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_t_14, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_10);
              __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
              __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
              __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
              __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
              if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4295, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_3);
            }
            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

            /* "netCDF4/_netCDF4.pyx":4292
 *                         with nogil:
 *                             ierr = nc_def_var_zstandard(self._grpid, self._varid, icomplevel)
 *                         if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
 *                             if grp.data_model != 'NETCDF4':
 *                                 grp._enddef()
*/
          }

          /* "netCDF4/_netCDF4.pyx":4285
 *                             _ensure_nc_success(ierr, extra_msg=error_info)
 * 
 *                     if zstd:             # <<<<<<<<<<<<<<
 *                         if not __has_zstandard_support__:
 *                             raise NetCDF4MissingFeatureException("compression='zstd'", "4.9.0")
*/
        }

        /* "netCDF4/_netCDF4.pyx":4297
 *                             _ensure_nc_success(ierr, extra_msg=error_info)
 * 
 *                     if bzip2:             # <<<<<<<<<<<<<<
 *                         if not __has_bzip2_support__:
 *                             raise NetCDF4MissingFeatureException("compression='bzip2'", "4.9.0")
*/
        if (__pyx_v_bzip2) {

          /* "netCDF4/_netCDF4.pyx":4298
 * 
 *                     if bzip2:
 *                         if not __has_bzip2_support__:             # <<<<<<<<<<<<<<
 *                             raise NetCDF4MissingFeatureException("compression='bzip2'", "4.9.0")
 * 
*/
          __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_has_bzip2_support); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4298, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
          __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 4298, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          __pyx_t_5 = (!__pyx_t_7);
          if (unlikely(__pyx_t_5)) {

            /* "netCDF4/_netCDF4.pyx":4299
 *                     if bzip2:
 *                         if not __has_bzip2_support__:
 *                             raise NetCDF4MissingFeatureException("compression='bzip2'", "4.9.0")             # <<<<<<<<<<<<<<
 * 
 *                         icomplevel = complevel
*/
            __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_NetCDF4MissingFeatureException); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4299, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_3);
            __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_mstate_global->__pyx_tuple[10], NULL); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 4299, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_14);
            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
            __Pyx_Raise(__pyx_t_14, 0, 0, 0);
            __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
            __PYX_ERR(0, 4299, __pyx_L1_error)

            /* "netCDF4/_netCDF4.pyx":4298
 * 
 *                     if bzip2:
 *                         if not __has_bzip2_support__:             # <<<<<<<<<<<<<<
 *                             raise NetCDF4MissingFeatureException("compression='bzip2'", "4.9.0")
 * 
*/
          }

          /* "netCDF4/_netCDF4.pyx":4301
 *                             raise NetCDF4MissingFeatureException("compression='bzip2'", "4.9.0")
 * 
 *                         icomplevel = complevel             # <<<<<<<<<<<<<<
 *                         with nogil:
 *                             ierr = nc_def_var_bzip2(self._grpid, self._varid, icomplevel)
*/
          __pyx_t_11 = __Pyx_PyLong_As_int(__pyx_v_complevel); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 4301, __pyx_L1_error)
          __pyx_v_icomplevel = __pyx_t_11;

          /* "netCDF4/_netCDF4.pyx":4302
 * 
 *                         icomplevel = complevel
 *                         with nogil:             # <<<<<<<<<<<<<<
 *                             ierr = nc_def_var_bzip2(self._grpid, self._varid, icomplevel)
 *                         if ierr != NC_NOERR:
*/
          {
              PyThreadState * _save;
              _save = PyEval_SaveThread();
              __Pyx_FastGIL_Remember();
              /*try:*/ {

                /* "netCDF4/_netCDF4.pyx":4303
 *                         icomplevel = complevel
 *                         with nogil:
 *                             ierr = nc_def_var_bzip2(self._grpid, self._varid, icomplevel)             # <<<<<<<<<<<<<<
 *                         if ierr != NC_NOERR:
 *                             if grp.data_model != 'NETCDF4':
*/
                __pyx_v_ierr = nc_def_var_bzip2(__pyx_v_self->_grpid, __pyx_v_self->_varid, __pyx_v_icomplevel);
              }

              /* "netCDF4/_netCDF4.pyx":4302
 * 
 *                         icomplevel = complevel
 *                         with nogil:             # <<<<<<<<<<<<<<
 *                             ierr = nc_def_var_bzip2(self._grpid, self._varid, icomplevel)
 *                         if ierr != NC_NOERR:
*/
              /*finally:*/ {
                /*normal exit:*/{
                  __Pyx_FastGIL_Forget();
                  PyEval_RestoreThread(_save);
                  goto __pyx_L109;
                }
                __pyx_L109:;
              }
          }

          /* "netCDF4/_netCDF4.pyx":4304
 *                         with nogil:
 *                             ierr = nc_def_var_bzip2(self._grpid, self._varid, icomplevel)
 *                         if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
 *                             if grp.data_model != 'NETCDF4':
 *                                 grp._enddef()
*/
          __pyx_t_5 = (__pyx_v_ierr != NC_NOERR);
          if (__pyx_t_5) {

            /* "netCDF4/_netCDF4.pyx":4305
 *                             ierr = nc_def_var_bzip2(self._grpid, self._varid, icomplevel)
 *                         if ierr != NC_NOERR:
 *                             if grp.data_model != 'NETCDF4':             # <<<<<<<<<<<<<<
 *                                 grp._enddef()
 *                             _ensure_nc_success(ierr, extra_msg=error_info)
*/
            __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_mstate_global->__pyx_n_u_data_model); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 4305, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_14);
            __pyx_t_5 = (__Pyx_PyUnicode_Equals(__pyx_t_14, __pyx_mstate_global->__pyx_n_u_NETCDF4, Py_NE)); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 4305, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
            if (__pyx_t_5) {

              /* "netCDF4/_netCDF4.pyx":4306
 *                         if ierr != NC_NOERR:
 *                             if grp.data_model != 'NETCDF4':
 *                                 grp._enddef()             # <<<<<<<<<<<<<<
 *                             _ensure_nc_success(ierr, extra_msg=error_info)
 * 
*/
              __pyx_t_3 = __pyx_v_grp;
              __Pyx_INCREF(__pyx_t_3);
              __pyx_t_8 = 0;
              {
                PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
                __pyx_t_14 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_enddef, __pyx_callargs+__pyx_t_8, (1-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
                __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
                if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 4306, __pyx_L1_error)
                __Pyx_GOTREF(__pyx_t_14);
              }
              __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;

              /* "netCDF4/_netCDF4.pyx":4305
 *                             ierr = nc_def_var_bzip2(self._grpid, self._varid, icomplevel)
 *                         if ierr != NC_NOERR:
 *                             if grp.data_model != 'NETCDF4':             # <<<<<<<<<<<<<<
 *                                 grp._enddef()
 *                             _ensure_nc_success(ierr, extra_msg=error_info)
*/
            }

            /* "netCDF4/_netCDF4.pyx":4307
 *                             if grp.data_model != 'NETCDF4':
 *                                 grp._enddef()
 *                             _ensure_nc_success(ierr, extra_msg=error_info)             # <<<<<<<<<<<<<<
 * 
 *                     if blosc_zstd or blosc_lz or blosc_lz4 or blosc_lz4hc or blosc_zlib:
*/
            __pyx_t_3 = NULL;
            __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4307, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_10);
            __pyx_t_2 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4307, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_2);
            __pyx_t_8 = 1;
            #if CYTHON_UNPACK_METHODS
            if (unlikely(PyMethod_Check(__pyx_t_10))) {
              __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_10);
              assert(__pyx_t_3);
              PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_10);
              __Pyx_INCREF(__pyx_t_3);
              __Pyx_INCREF(__pyx__function);
              __Pyx_DECREF_SET(__pyx_t_10, __pyx__function);
              __pyx_t_8 = 0;
            }
            #endif
            {
              PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_3, __pyx_t_2};
              __pyx_t_1 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4307, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_1);
              if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_extra_msg, __pyx_v_error_info, __pyx_t_1, __pyx_callargs+2, 0) < (0)) __PYX_ERR(0, 4307, __pyx_L1_error)
              __pyx_t_14 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_t_10, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_1);
              __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
              __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
              __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
              if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 4307, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_14);
            }
            __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;

            /* "netCDF4/_netCDF4.pyx":4304
 *                         with nogil:
 *                             ierr = nc_def_var_bzip2(self._grpid, self._varid, icomplevel)
 *                         if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
 *                             if grp.data_model != 'NETCDF4':
 *                                 grp._enddef()
*/
          }

          /* "netCDF4/_netCDF4.pyx":4297
 *                             _ensure_nc_success(ierr, extra_msg=error_info)
 * 
 *                     if bzip2:             # <<<<<<<<<<<<<<
 *                         if not __has_bzip2_support__:
 *                             raise NetCDF4MissingFeatureException("compression='bzip2'", "4.9.0")
*/
        }

        /* "netCDF4/_netCDF4.pyx":4309
 *                             _ensure_nc_success(ierr, extra_msg=error_info)
 * 
 *                     if blosc_zstd or blosc_lz or blosc_lz4 or blosc_lz4hc or blosc_zlib:             # <<<<<<<<<<<<<<
 *                         if not __has_blosc_support__:
 *                             raise NetCDF4MissingFeatureException("compression='blosc_*'", "4.9.0")
*/
        if (!__pyx_v_blosc_zstd) {
        } else {
          __pyx_t_5 = __pyx_v_blosc_zstd;
          goto __pyx_L113_bool_binop_done;
        }
        if (!__pyx_v_blosc_lz) {
        } else {
          __pyx_t_5 = __pyx_v_blosc_lz;
          goto __pyx_L113_bool_binop_done;
        }
        if (!__pyx_v_blosc_lz4) {
        } else {
          __pyx_t_5 = __pyx_v_blosc_lz4;
          goto __pyx_L113_bool_binop_done;
        }
        if (!__pyx_v_blosc_lz4hc) {
        } else {
          __pyx_t_5 = __pyx_v_blosc_lz4hc;
          goto __pyx_L113_bool_binop_done;
        }
        __pyx_t_5 = __pyx_v_blosc_zlib;
        __pyx_L113_bool_binop_done:;
        if (__pyx_t_5) {

          /* "netCDF4/_netCDF4.pyx":4310
 * 
 *                     if blosc_zstd or blosc_lz or blosc_lz4 or blosc_lz4hc or blosc_zlib:
 *                         if not __has_blosc_support__:             # <<<<<<<<<<<<<<
 *                             raise NetCDF4MissingFeatureException("compression='blosc_*'", "4.9.0")
 * 
*/
          __Pyx_GetModuleGlobalName(__pyx_t_14, __pyx_mstate_global->__pyx_n_u_has_blosc_support); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 4310, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_14);
          __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_14); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 4310, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
          __pyx_t_7 = (!__pyx_t_5);
          if (unlikely(__pyx_t_7)) {

            /* "netCDF4/_netCDF4.pyx":4311
 *                     if blosc_zstd or blosc_lz or blosc_lz4 or blosc_lz4hc or blosc_zlib:
 *                         if not __has_blosc_support__:
 *                             raise NetCDF4MissingFeatureException("compression='blosc_*'", "4.9.0")             # <<<<<<<<<<<<<<
 * 
 *                         iblosc_compressor = _blosc_dict[compression]
*/
            __Pyx_GetModuleGlobalName(__pyx_t_14, __pyx_mstate_global->__pyx_n_u_NetCDF4MissingFeatureException); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 4311, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_14);
            __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_14, __pyx_mstate_global->__pyx_tuple[11], NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4311, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_10);
            __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
            __Pyx_Raise(__pyx_t_10, 0, 0, 0);
            __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
            __PYX_ERR(0, 4311, __pyx_L1_error)

            /* "netCDF4/_netCDF4.pyx":4310
 * 
 *                     if blosc_zstd or blosc_lz or blosc_lz4 or blosc_lz4hc or blosc_zlib:
 *                         if not __has_blosc_support__:             # <<<<<<<<<<<<<<
 *                             raise NetCDF4MissingFeatureException("compression='blosc_*'", "4.9.0")
 * 
*/
          }

          /* "netCDF4/_netCDF4.pyx":4313
 *                             raise NetCDF4MissingFeatureException("compression='blosc_*'", "4.9.0")
 * 
 *                         iblosc_compressor = _blosc_dict[compression]             # <<<<<<<<<<<<<<
 *                         iblosc_shuffle = blosc_shuffle
 *                         iblosc_blocksize = 0 # not currently used by c lib
*/
          __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_blosc_dict); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4313, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_10);
          __pyx_t_14 = __Pyx_PyObject_GetItem(__pyx_t_10, __pyx_v_compression); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 4313, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_14);
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
          __pyx_t_24 = __Pyx_PyLong_As_unsigned_int(__pyx_t_14); if (unlikely((__pyx_t_24 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(0, 4313, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
          __pyx_v_iblosc_compressor = __pyx_t_24;

          /* "netCDF4/_netCDF4.pyx":4314
 * 
 *                         iblosc_compressor = _blosc_dict[compression]
 *                         iblosc_shuffle = blosc_shuffle             # <<<<<<<<<<<<<<
 *                         iblosc_blocksize = 0 # not currently used by c lib
 *                         iblosc_complevel = complevel
*/
          __pyx_t_24 = __Pyx_PyLong_As_unsigned_int(__pyx_v_blosc_shuffle); if (unlikely((__pyx_t_24 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(0, 4314, __pyx_L1_error)
          __pyx_v_iblosc_shuffle = __pyx_t_24;

          /* "netCDF4/_netCDF4.pyx":4315
 *                         iblosc_compressor = _blosc_dict[compression]
 *                         iblosc_shuffle = blosc_shuffle
 *                         iblosc_blocksize = 0 # not currently used by c lib             # <<<<<<<<<<<<<<
 *                         iblosc_complevel = complevel
 *                         with nogil:
*/
          __pyx_v_iblosc_blocksize = 0;

          /* "netCDF4/_netCDF4.pyx":4316
 *                         iblosc_shuffle = blosc_shuffle
 *                         iblosc_blocksize = 0 # not currently used by c lib
 *                         iblosc_complevel = complevel             # <<<<<<<<<<<<<<
 *                         with nogil:
 *                             ierr = nc_def_var_blosc(self._grpid, self._varid,
*/
          __pyx_t_24 = __Pyx_PyLong_As_unsigned_int(__pyx_v_complevel); if (unlikely((__pyx_t_24 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(0, 4316, __pyx_L1_error)
          __pyx_v_iblosc_complevel = __pyx_t_24;

          /* "netCDF4/_netCDF4.pyx":4317
 *                         iblosc_blocksize = 0 # not currently used by c lib
 *                         iblosc_complevel = complevel
 *                         with nogil:             # <<<<<<<<<<<<<<
 *                             ierr = nc_def_var_blosc(self._grpid, self._varid,
 *                                                     iblosc_compressor,
*/
          {
              PyThreadState * _save;
              _save = PyEval_SaveThread();
              __Pyx_FastGIL_Remember();
              /*try:*/ {

                /* "netCDF4/_netCDF4.pyx":4318
 *                         iblosc_complevel = complevel
 *                         with nogil:
 *                             ierr = nc_def_var_blosc(self._grpid, self._varid,             # <<<<<<<<<<<<<<
 *                                                     iblosc_compressor,
 *                                                     iblosc_complevel,iblosc_blocksize,
*/
                __pyx_v_ierr = nc_def_var_blosc(__pyx_v_self->_grpid, __pyx_v_self->_varid, __pyx_v_iblosc_compressor, __pyx_v_iblosc_complevel, __pyx_v_iblosc_blocksize, __pyx_v_iblosc_shuffle);
              }

              /* "netCDF4/_netCDF4.pyx":4317
 *                         iblosc_blocksize = 0 # not currently used by c lib
 *                         iblosc_complevel = complevel
 *                         with nogil:             # <<<<<<<<<<<<<<
 *                             ierr = nc_def_var_blosc(self._grpid, self._varid,
 *                                                     iblosc_compressor,
*/
              /*finally:*/ {
                /*normal exit:*/{
                  __Pyx_FastGIL_Forget();
                  PyEval_RestoreThread(_save);
                  goto __pyx_L121;
                }
                __pyx_L121:;
              }
          }

          /* "netCDF4/_netCDF4.pyx":4322
 *                                                     iblosc_complevel,iblosc_blocksize,
 *                                                     iblosc_shuffle)
 *                         if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
 *                             if grp.data_model != 'NETCDF4':
 *                                 grp._enddef()
*/
          __pyx_t_7 = (__pyx_v_ierr != NC_NOERR);
          if (__pyx_t_7) {

            /* "netCDF4/_netCDF4.pyx":4323
 *                                                     iblosc_shuffle)
 *                         if ierr != NC_NOERR:
 *                             if grp.data_model != 'NETCDF4':             # <<<<<<<<<<<<<<
 *                                 grp._enddef()
 *                             _ensure_nc_success(ierr, extra_msg=error_info)
*/
            __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_mstate_global->__pyx_n_u_data_model); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 4323, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_14);
            __pyx_t_7 = (__Pyx_PyUnicode_Equals(__pyx_t_14, __pyx_mstate_global->__pyx_n_u_NETCDF4, Py_NE)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 4323, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
            if (__pyx_t_7) {

              /* "netCDF4/_netCDF4.pyx":4324
 *                         if ierr != NC_NOERR:
 *                             if grp.data_model != 'NETCDF4':
 *                                 grp._enddef()             # <<<<<<<<<<<<<<
 *                             _ensure_nc_success(ierr, extra_msg=error_info)
 * 
*/
              __pyx_t_10 = __pyx_v_grp;
              __Pyx_INCREF(__pyx_t_10);
              __pyx_t_8 = 0;
              {
                PyObject *__pyx_callargs[2] = {__pyx_t_10, NULL};
                __pyx_t_14 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_enddef, __pyx_callargs+__pyx_t_8, (1-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
                __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
                if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 4324, __pyx_L1_error)
                __Pyx_GOTREF(__pyx_t_14);
              }
              __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;

              /* "netCDF4/_netCDF4.pyx":4323
 *                                                     iblosc_shuffle)
 *                         if ierr != NC_NOERR:
 *                             if grp.data_model != 'NETCDF4':             # <<<<<<<<<<<<<<
 *                                 grp._enddef()
 *                             _ensure_nc_success(ierr, extra_msg=error_info)
*/
            }

            /* "netCDF4/_netCDF4.pyx":4325
 *                             if grp.data_model != 'NETCDF4':
 *                                 grp._enddef()
 *                             _ensure_nc_success(ierr, extra_msg=error_info)             # <<<<<<<<<<<<<<
 * 
 *                 # set checksum.
*/
            __pyx_t_10 = NULL;
            __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4325, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            __pyx_t_2 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4325, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_2);
            __pyx_t_8 = 1;
            #if CYTHON_UNPACK_METHODS
            if (unlikely(PyMethod_Check(__pyx_t_1))) {
              __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_1);
              assert(__pyx_t_10);
              PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_1);
              __Pyx_INCREF(__pyx_t_10);
              __Pyx_INCREF(__pyx__function);
              __Pyx_DECREF_SET(__pyx_t_1, __pyx__function);
              __pyx_t_8 = 0;
            }
            #endif
            {
              PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_10, __pyx_t_2};
              __pyx_t_3 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4325, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_3);
              if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_extra_msg, __pyx_v_error_info, __pyx_t_3, __pyx_callargs+2, 0) < (0)) __PYX_ERR(0, 4325, __pyx_L1_error)
              __pyx_t_14 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_t_1, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_3);
              __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
              __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
              __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
              if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 4325, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_14);
            }
            __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;

            /* "netCDF4/_netCDF4.pyx":4322
 *                                                     iblosc_complevel,iblosc_blocksize,
 *                                                     iblosc_shuffle)
 *                         if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
 *                             if grp.data_model != 'NETCDF4':
 *                                 grp._enddef()
*/
          }

          /* "netCDF4/_netCDF4.pyx":4309
 *                             _ensure_nc_success(ierr, extra_msg=error_info)
 * 
 *                     if blosc_zstd or blosc_lz or blosc_lz4 or blosc_lz4hc or blosc_zlib:             # <<<<<<<<<<<<<<
 *                         if not __has_blosc_support__:
 *                             raise NetCDF4MissingFeatureException("compression='blosc_*'", "4.9.0")
*/
        }

        /* "netCDF4/_netCDF4.pyx":4257
 *             if grp.data_model in ['NETCDF4','NETCDF4_CLASSIC']:
 *                 # set compression and shuffle parameters.
 *                 if compression is not None and ndims: # don't bother for scalar variable             # <<<<<<<<<<<<<<
 *                     if zlib:
 *                         icomplevel = complevel
*/
      }

      /* "netCDF4/_netCDF4.pyx":4328
 * 
 *                 # set checksum.
 *                 if fletcher32 and ndims: # don't bother for scalar variable             # <<<<<<<<<<<<<<
 *                     with nogil:
 *                         ierr = nc_def_var_fletcher32(self._grpid, self._varid, 1)
*/
      __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_fletcher32); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 4328, __pyx_L1_error)
      if (__pyx_t_5) {
      } else {
        __pyx_t_7 = __pyx_t_5;
        goto __pyx_L125_bool_binop_done;
      }
      __pyx_t_5 = (__pyx_v_ndims != 0);
      __pyx_t_7 = __pyx_t_5;
      __pyx_L125_bool_binop_done:;
      if (__pyx_t_7) {

        /* "netCDF4/_netCDF4.pyx":4329
 *                 # set checksum.
 *                 if fletcher32 and ndims: # don't bother for scalar variable
 *                     with nogil:             # <<<<<<<<<<<<<<
 *                         ierr = nc_def_var_fletcher32(self._grpid, self._varid, 1)
 *                     if ierr != NC_NOERR:
*/
        {
            PyThreadState * _save;
            _save = PyEval_SaveThread();
            __Pyx_FastGIL_Remember();
            /*try:*/ {

              /* "netCDF4/_netCDF4.pyx":4330
 *                 if fletcher32 and ndims: # don't bother for scalar variable
 *                     with nogil:
 *                         ierr = nc_def_var_fletcher32(self._grpid, self._varid, 1)             # <<<<<<<<<<<<<<
 *                     if ierr != NC_NOERR:
 *                         if grp.data_model != 'NETCDF4': grp._enddef()
*/
              __pyx_v_ierr = nc_def_var_fletcher32(__pyx_v_self->_grpid, __pyx_v_self->_varid, 1);
            }

            /* "netCDF4/_netCDF4.pyx":4329
 *                 # set checksum.
 *                 if fletcher32 and ndims: # don't bother for scalar variable
 *                     with nogil:             # <<<<<<<<<<<<<<
 *                         ierr = nc_def_var_fletcher32(self._grpid, self._varid, 1)
 *                     if ierr != NC_NOERR:
*/
            /*finally:*/ {
              /*normal exit:*/{
                __Pyx_FastGIL_Forget();
                PyEval_RestoreThread(_save);
                goto __pyx_L129;
              }
              __pyx_L129:;
            }
        }

        /* "netCDF4/_netCDF4.pyx":4331
 *                     with nogil:
 *                         ierr = nc_def_var_fletcher32(self._grpid, self._varid, 1)
 *                     if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
 *                         if grp.data_model != 'NETCDF4': grp._enddef()
 *                         _ensure_nc_success(ierr, extra_msg=error_info)
*/
        __pyx_t_7 = (__pyx_v_ierr != NC_NOERR);
        if (__pyx_t_7) {

          /* "netCDF4/_netCDF4.pyx":4332
 *                         ierr = nc_def_var_fletcher32(self._grpid, self._varid, 1)
 *                     if ierr != NC_NOERR:
 *                         if grp.data_model != 'NETCDF4': grp._enddef()             # <<<<<<<<<<<<<<
 *                         _ensure_nc_success(ierr, extra_msg=error_info)
 *                 # set chunking stuff.
*/
          __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_mstate_global->__pyx_n_u_data_model); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 4332, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_14);
          __pyx_t_7 = (__Pyx_PyUnicode_Equals(__pyx_t_14, __pyx_mstate_global->__pyx_n_u_NETCDF4, Py_NE)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 4332, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
          if (__pyx_t_7) {
            __pyx_t_1 = __pyx_v_grp;
            __Pyx_INCREF(__pyx_t_1);
            __pyx_t_8 = 0;
            {
              PyObject *__pyx_callargs[2] = {__pyx_t_1, NULL};
              __pyx_t_14 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_enddef, __pyx_callargs+__pyx_t_8, (1-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
              __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
              if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 4332, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_14);
            }
            __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
          }

          /* "netCDF4/_netCDF4.pyx":4333
 *                     if ierr != NC_NOERR:
 *                         if grp.data_model != 'NETCDF4': grp._enddef()
 *                         _ensure_nc_success(ierr, extra_msg=error_info)             # <<<<<<<<<<<<<<
 *                 # set chunking stuff.
 *                 if ndims: # don't bother for scalar variable.
*/
          __pyx_t_1 = NULL;
          __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4333, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
          __pyx_t_2 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4333, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_2);
          __pyx_t_8 = 1;
          #if CYTHON_UNPACK_METHODS
          if (unlikely(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_8 = 0;
          }
          #endif
          {
            PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_1, __pyx_t_2};
            __pyx_t_10 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4333, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_10);
            if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_extra_msg, __pyx_v_error_info, __pyx_t_10, __pyx_callargs+2, 0) < (0)) __PYX_ERR(0, 4333, __pyx_L1_error)
            __pyx_t_14 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_t_3, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_10);
            __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
            __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
            if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 4333, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_14);
          }
          __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;

          /* "netCDF4/_netCDF4.pyx":4331
 *                     with nogil:
 *                         ierr = nc_def_var_fletcher32(self._grpid, self._varid, 1)
 *                     if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
 *                         if grp.data_model != 'NETCDF4': grp._enddef()
 *                         _ensure_nc_success(ierr, extra_msg=error_info)
*/
        }

        /* "netCDF4/_netCDF4.pyx":4328
 * 
 *                 # set checksum.
 *                 if fletcher32 and ndims: # don't bother for scalar variable             # <<<<<<<<<<<<<<
 *                     with nogil:
 *                         ierr = nc_def_var_fletcher32(self._grpid, self._varid, 1)
*/
      }

      /* "netCDF4/_netCDF4.pyx":4335
 *                         _ensure_nc_success(ierr, extra_msg=error_info)
 *                 # set chunking stuff.
 *                 if ndims: # don't bother for scalar variable.             # <<<<<<<<<<<<<<
 *                     if contiguous:
 *                         icontiguous = NC_CONTIGUOUS
*/
      __pyx_t_7 = (__pyx_v_ndims != 0);
      if (__pyx_t_7) {

        /* "netCDF4/_netCDF4.pyx":4336
 *                 # set chunking stuff.
 *                 if ndims: # don't bother for scalar variable.
 *                     if contiguous:             # <<<<<<<<<<<<<<
 *                         icontiguous = NC_CONTIGUOUS
 *                         if chunksizes is not None:
*/
        __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_contiguous); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 4336, __pyx_L1_error)
        if (__pyx_t_7) {

          /* "netCDF4/_netCDF4.pyx":4337
 *                 if ndims: # don't bother for scalar variable.
 *                     if contiguous:
 *                         icontiguous = NC_CONTIGUOUS             # <<<<<<<<<<<<<<
 *                         if chunksizes is not None:
 *                             raise ValueError('cannot specify chunksizes for a contiguous dataset')
*/
          __pyx_v_icontiguous = NC_CONTIGUOUS;

          /* "netCDF4/_netCDF4.pyx":4338
 *                     if contiguous:
 *                         icontiguous = NC_CONTIGUOUS
 *                         if chunksizes is not None:             # <<<<<<<<<<<<<<
 *                             raise ValueError('cannot specify chunksizes for a contiguous dataset')
 *                     else:
*/
          __pyx_t_7 = (__pyx_v_chunksizes != Py_None);
          if (unlikely(__pyx_t_7)) {

            /* "netCDF4/_netCDF4.pyx":4339
 *                         icontiguous = NC_CONTIGUOUS
 *                         if chunksizes is not None:
 *                             raise ValueError('cannot specify chunksizes for a contiguous dataset')             # <<<<<<<<<<<<<<
 *                     else:
 *                         icontiguous = NC_CHUNKED
*/
            __pyx_t_3 = NULL;
            __pyx_t_8 = 1;
            {
              PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_cannot_specify_chunksizes_for_a};
              __pyx_t_14 = __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;
              if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 4339, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_14);
            }
            __Pyx_Raise(__pyx_t_14, 0, 0, 0);
            __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
            __PYX_ERR(0, 4339, __pyx_L1_error)

            /* "netCDF4/_netCDF4.pyx":4338
 *                     if contiguous:
 *                         icontiguous = NC_CONTIGUOUS
 *                         if chunksizes is not None:             # <<<<<<<<<<<<<<
 *                             raise ValueError('cannot specify chunksizes for a contiguous dataset')
 *                     else:
*/
          }

          /* "netCDF4/_netCDF4.pyx":4336
 *                 # set chunking stuff.
 *                 if ndims: # don't bother for scalar variable.
 *                     if contiguous:             # <<<<<<<<<<<<<<
 *                         icontiguous = NC_CONTIGUOUS
 *                         if chunksizes is not None:
*/
          goto __pyx_L133;
        }

        /* "netCDF4/_netCDF4.pyx":4341
 *                             raise ValueError('cannot specify chunksizes for a contiguous dataset')
 *                     else:
 *                         icontiguous = NC_CHUNKED             # <<<<<<<<<<<<<<
 *                     if chunksizes is None:
 *                         chunksizesp = NULL
*/
        /*else*/ {
          __pyx_v_icontiguous = NC_CHUNKED;
        }
        __pyx_L133:;

        /* "netCDF4/_netCDF4.pyx":4342
 *                     else:
 *                         icontiguous = NC_CHUNKED
 *                     if chunksizes is None:             # <<<<<<<<<<<<<<
 *                         chunksizesp = NULL
 *                     else:
*/
        __pyx_t_7 = (__pyx_v_chunksizes == Py_None);
        if (__pyx_t_7) {

          /* "netCDF4/_netCDF4.pyx":4343
 *                         icontiguous = NC_CHUNKED
 *                     if chunksizes is None:
 *                         chunksizesp = NULL             # <<<<<<<<<<<<<<
 *                     else:
 *                         if len(chunksizes) != len(dimensions):
*/
          __pyx_v_chunksizesp = NULL;

          /* "netCDF4/_netCDF4.pyx":4342
 *                     else:
 *                         icontiguous = NC_CHUNKED
 *                     if chunksizes is None:             # <<<<<<<<<<<<<<
 *                         chunksizesp = NULL
 *                     else:
*/
          goto __pyx_L135;
        }

        /* "netCDF4/_netCDF4.pyx":4345
 *                         chunksizesp = NULL
 *                     else:
 *                         if len(chunksizes) != len(dimensions):             # <<<<<<<<<<<<<<
 *                             if grp.data_model != 'NETCDF4': grp._enddef()
 *                             raise ValueError('chunksizes must be a sequence with the same length as dimensions')
*/
        /*else*/ {
          __pyx_t_17 = PyObject_Length(__pyx_v_chunksizes); if (unlikely(__pyx_t_17 == ((Py_ssize_t)-1))) __PYX_ERR(0, 4345, __pyx_L1_error)
          __pyx_t_25 = PyObject_Length(__pyx_v_dimensions); if (unlikely(__pyx_t_25 == ((Py_ssize_t)-1))) __PYX_ERR(0, 4345, __pyx_L1_error)
          __pyx_t_7 = (__pyx_t_17 != __pyx_t_25);
          if (__pyx_t_7) {

            /* "netCDF4/_netCDF4.pyx":4346
 *                     else:
 *                         if len(chunksizes) != len(dimensions):
 *                             if grp.data_model != 'NETCDF4': grp._enddef()             # <<<<<<<<<<<<<<
 *                             raise ValueError('chunksizes must be a sequence with the same length as dimensions')
 *                         chunksizesp = <size_t *>malloc(sizeof(size_t) * ndims)
*/
            __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_mstate_global->__pyx_n_u_data_model); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 4346, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_14);
            __pyx_t_7 = (__Pyx_PyUnicode_Equals(__pyx_t_14, __pyx_mstate_global->__pyx_n_u_NETCDF4, Py_NE)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 4346, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
            if (__pyx_t_7) {
              __pyx_t_3 = __pyx_v_grp;
              __Pyx_INCREF(__pyx_t_3);
              __pyx_t_8 = 0;
              {
                PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
                __pyx_t_14 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_enddef, __pyx_callargs+__pyx_t_8, (1-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
                __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
                if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 4346, __pyx_L1_error)
                __Pyx_GOTREF(__pyx_t_14);
              }
              __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
            }

            /* "netCDF4/_netCDF4.pyx":4347
 *                         if len(chunksizes) != len(dimensions):
 *                             if grp.data_model != 'NETCDF4': grp._enddef()
 *                             raise ValueError('chunksizes must be a sequence with the same length as dimensions')             # <<<<<<<<<<<<<<
 *                         chunksizesp = <size_t *>malloc(sizeof(size_t) * ndims)
 *                         for n in range(ndims):
*/
            __pyx_t_3 = NULL;
            __pyx_t_8 = 1;
            {
              PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_chunksizes_must_be_a_sequence_wi};
              __pyx_t_14 = __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;
              if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 4347, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_14);
            }
            __Pyx_Raise(__pyx_t_14, 0, 0, 0);
            __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
            __PYX_ERR(0, 4347, __pyx_L1_error)

            /* "netCDF4/_netCDF4.pyx":4345
 *                         chunksizesp = NULL
 *                     else:
 *                         if len(chunksizes) != len(dimensions):             # <<<<<<<<<<<<<<
 *                             if grp.data_model != 'NETCDF4': grp._enddef()
 *                             raise ValueError('chunksizes must be a sequence with the same length as dimensions')
*/
          }

          /* "netCDF4/_netCDF4.pyx":4348
 *                             if grp.data_model != 'NETCDF4': grp._enddef()
 *                             raise ValueError('chunksizes must be a sequence with the same length as dimensions')
 *                         chunksizesp = <size_t *>malloc(sizeof(size_t) * ndims)             # <<<<<<<<<<<<<<
 *                         for n in range(ndims):
 *                             if not dimensions[n].isunlimited() and \
*/
          __pyx_v_chunksizesp = ((size_t *)malloc(((sizeof(size_t)) * __pyx_v_ndims)));

          /* "netCDF4/_netCDF4.pyx":4349
 *                             raise ValueError('chunksizes must be a sequence with the same length as dimensions')
 *                         chunksizesp = <size_t *>malloc(sizeof(size_t) * ndims)
 *                         for n in range(ndims):             # <<<<<<<<<<<<<<
 *                             if not dimensions[n].isunlimited() and \
 *                                chunksizes[n] > dimensions[n].size:
*/
          __pyx_t_11 = __pyx_v_ndims;
          __pyx_t_18 = __pyx_t_11;
          for (__pyx_t_19 = 0; __pyx_t_19 < __pyx_t_18; __pyx_t_19+=1) {
            __pyx_v_n = __pyx_t_19;

            /* "netCDF4/_netCDF4.pyx":4350
 *                         chunksizesp = <size_t *>malloc(sizeof(size_t) * ndims)
 *                         for n in range(ndims):
 *                             if not dimensions[n].isunlimited() and \             # <<<<<<<<<<<<<<
 *                                chunksizes[n] > dimensions[n].size:
 *                                 msg = 'chunksize cannot exceed dimension size'
*/
            __pyx_t_10 = __Pyx_GetItemInt(__pyx_v_dimensions, __pyx_v_n, int, 1, __Pyx_PyLong_From_int, 0, 1, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4350, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_10);
            __pyx_t_3 = __pyx_t_10;
            __Pyx_INCREF(__pyx_t_3);
            __pyx_t_8 = 0;
            {
              PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
              __pyx_t_14 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_isunlimited, __pyx_callargs+__pyx_t_8, (1-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
              __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
              __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
              if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 4350, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_14);
            }
            __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_14); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 4350, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
            __pyx_t_6 = (!__pyx_t_5);
            if (__pyx_t_6) {
            } else {
              __pyx_t_7 = __pyx_t_6;
              goto __pyx_L141_bool_binop_done;
            }

            /* "netCDF4/_netCDF4.pyx":4351
 *                         for n in range(ndims):
 *                             if not dimensions[n].isunlimited() and \
 *                                chunksizes[n] > dimensions[n].size:             # <<<<<<<<<<<<<<
 *                                 msg = 'chunksize cannot exceed dimension size'
 *                                 raise ValueError(msg)
*/
            __pyx_t_14 = __Pyx_GetItemInt(__pyx_v_chunksizes, __pyx_v_n, int, 1, __Pyx_PyLong_From_int, 0, 1, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 4351, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_14);
            __pyx_t_10 = __Pyx_GetItemInt(__pyx_v_dimensions, __pyx_v_n, int, 1, __Pyx_PyLong_From_int, 0, 1, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4351, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_10);
            __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_size); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4351, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_3);
            __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
            __pyx_t_10 = PyObject_RichCompare(__pyx_t_14, __pyx_t_3, Py_GT); __Pyx_XGOTREF(__pyx_t_10); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4351, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
            __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 4351, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
            __pyx_t_7 = __pyx_t_6;
            __pyx_L141_bool_binop_done:;

            /* "netCDF4/_netCDF4.pyx":4350
 *                         chunksizesp = <size_t *>malloc(sizeof(size_t) * ndims)
 *                         for n in range(ndims):
 *                             if not dimensions[n].isunlimited() and \             # <<<<<<<<<<<<<<
 *                                chunksizes[n] > dimensions[n].size:
 *                                 msg = 'chunksize cannot exceed dimension size'
*/
            if (unlikely(__pyx_t_7)) {

              /* "netCDF4/_netCDF4.pyx":4352
 *                             if not dimensions[n].isunlimited() and \
 *                                chunksizes[n] > dimensions[n].size:
 *                                 msg = 'chunksize cannot exceed dimension size'             # <<<<<<<<<<<<<<
 *                                 raise ValueError(msg)
 *                             chunksizesp[n] = chunksizes[n]
*/
              __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u_chunksize_cannot_exceed_dimensio);
              __pyx_v_msg = __pyx_mstate_global->__pyx_kp_u_chunksize_cannot_exceed_dimensio;

              /* "netCDF4/_netCDF4.pyx":4353
 *                                chunksizes[n] > dimensions[n].size:
 *                                 msg = 'chunksize cannot exceed dimension size'
 *                                 raise ValueError(msg)             # <<<<<<<<<<<<<<
 *                             chunksizesp[n] = chunksizes[n]
 *                     if chunksizes is not None or contiguous:
*/
              __pyx_t_3 = NULL;
              __pyx_t_8 = 1;
              {
                PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_msg};
                __pyx_t_10 = __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;
                if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4353, __pyx_L1_error)
                __Pyx_GOTREF(__pyx_t_10);
              }
              __Pyx_Raise(__pyx_t_10, 0, 0, 0);
              __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
              __PYX_ERR(0, 4353, __pyx_L1_error)

              /* "netCDF4/_netCDF4.pyx":4350
 *                         chunksizesp = <size_t *>malloc(sizeof(size_t) * ndims)
 *                         for n in range(ndims):
 *                             if not dimensions[n].isunlimited() and \             # <<<<<<<<<<<<<<
 *                                chunksizes[n] > dimensions[n].size:
 *                                 msg = 'chunksize cannot exceed dimension size'
*/
            }

            /* "netCDF4/_netCDF4.pyx":4354
 *                                 msg = 'chunksize cannot exceed dimension size'
 *                                 raise ValueError(msg)
 *                             chunksizesp[n] = chunksizes[n]             # <<<<<<<<<<<<<<
 *                     if chunksizes is not None or contiguous:
 *                         with nogil:
*/
            __pyx_t_10 = __Pyx_GetItemInt(__pyx_v_chunksizes, __pyx_v_n, int, 1, __Pyx_PyLong_From_int, 0, 1, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4354, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_10);
            __pyx_t_8 = __Pyx_PyLong_As_size_t(__pyx_t_10); if (unlikely((__pyx_t_8 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 4354, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
            (__pyx_v_chunksizesp[__pyx_v_n]) = __pyx_t_8;
          }
        }
        __pyx_L135:;

        /* "netCDF4/_netCDF4.pyx":4355
 *                                 raise ValueError(msg)
 *                             chunksizesp[n] = chunksizes[n]
 *                     if chunksizes is not None or contiguous:             # <<<<<<<<<<<<<<
 *                         with nogil:
 *                             ierr = nc_def_var_chunking(self._grpid, self._varid, icontiguous, chunksizesp)
*/
        __pyx_t_6 = (__pyx_v_chunksizes != Py_None);
        if (!__pyx_t_6) {
        } else {
          __pyx_t_7 = __pyx_t_6;
          goto __pyx_L144_bool_binop_done;
        }
        __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_contiguous); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 4355, __pyx_L1_error)
        __pyx_t_7 = __pyx_t_6;
        __pyx_L144_bool_binop_done:;
        if (__pyx_t_7) {

          /* "netCDF4/_netCDF4.pyx":4356
 *                             chunksizesp[n] = chunksizes[n]
 *                     if chunksizes is not None or contiguous:
 *                         with nogil:             # <<<<<<<<<<<<<<
 *                             ierr = nc_def_var_chunking(self._grpid, self._varid, icontiguous, chunksizesp)
 *                         free(chunksizesp)
*/
          {
              PyThreadState * _save;
              _save = PyEval_SaveThread();
              __Pyx_FastGIL_Remember();
              /*try:*/ {

                /* "netCDF4/_netCDF4.pyx":4357
 *                     if chunksizes is not None or contiguous:
 *                         with nogil:
 *                             ierr = nc_def_var_chunking(self._grpid, self._varid, icontiguous, chunksizesp)             # <<<<<<<<<<<<<<
 *                         free(chunksizesp)
 *                         if ierr != NC_NOERR:
*/
                __pyx_v_ierr = nc_def_var_chunking(__pyx_v_self->_grpid, __pyx_v_self->_varid, __pyx_v_icontiguous, __pyx_v_chunksizesp);
              }

              /* "netCDF4/_netCDF4.pyx":4356
 *                             chunksizesp[n] = chunksizes[n]
 *                     if chunksizes is not None or contiguous:
 *                         with nogil:             # <<<<<<<<<<<<<<
 *                             ierr = nc_def_var_chunking(self._grpid, self._varid, icontiguous, chunksizesp)
 *                         free(chunksizesp)
*/
              /*finally:*/ {
                /*normal exit:*/{
                  __Pyx_FastGIL_Forget();
                  PyEval_RestoreThread(_save);
                  goto __pyx_L148;
                }
                __pyx_L148:;
              }
          }

          /* "netCDF4/_netCDF4.pyx":4358
 *                         with nogil:
 *                             ierr = nc_def_var_chunking(self._grpid, self._varid, icontiguous, chunksizesp)
 *                         free(chunksizesp)             # <<<<<<<<<<<<<<
 *                         if ierr != NC_NOERR:
 *                             if grp.data_model != 'NETCDF4': grp._enddef()
*/
          free(__pyx_v_chunksizesp);

          /* "netCDF4/_netCDF4.pyx":4359
 *                             ierr = nc_def_var_chunking(self._grpid, self._varid, icontiguous, chunksizesp)
 *                         free(chunksizesp)
 *                         if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
 *                             if grp.data_model != 'NETCDF4': grp._enddef()
 *                             _ensure_nc_success(ierr, extra_msg=error_info)
*/
          __pyx_t_7 = (__pyx_v_ierr != NC_NOERR);
          if (__pyx_t_7) {

            /* "netCDF4/_netCDF4.pyx":4360
 *                         free(chunksizesp)
 *                         if ierr != NC_NOERR:
 *                             if grp.data_model != 'NETCDF4': grp._enddef()             # <<<<<<<<<<<<<<
 *                             _ensure_nc_success(ierr, extra_msg=error_info)
 * 
*/
            __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_mstate_global->__pyx_n_u_data_model); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4360, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_10);
            __pyx_t_7 = (__Pyx_PyUnicode_Equals(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_NETCDF4, Py_NE)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 4360, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
            if (__pyx_t_7) {
              __pyx_t_3 = __pyx_v_grp;
              __Pyx_INCREF(__pyx_t_3);
              __pyx_t_8 = 0;
              {
                PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
                __pyx_t_10 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_enddef, __pyx_callargs+__pyx_t_8, (1-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
                __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
                if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4360, __pyx_L1_error)
                __Pyx_GOTREF(__pyx_t_10);
              }
              __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
            }

            /* "netCDF4/_netCDF4.pyx":4361
 *                         if ierr != NC_NOERR:
 *                             if grp.data_model != 'NETCDF4': grp._enddef()
 *                             _ensure_nc_success(ierr, extra_msg=error_info)             # <<<<<<<<<<<<<<
 * 
 *                 # set endian-ness of variable
*/
            __pyx_t_3 = NULL;
            __Pyx_GetModuleGlobalName(__pyx_t_14, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 4361, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_14);
            __pyx_t_2 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4361, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_2);
            __pyx_t_8 = 1;
            #if CYTHON_UNPACK_METHODS
            if (unlikely(PyMethod_Check(__pyx_t_14))) {
              __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_14);
              assert(__pyx_t_3);
              PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_14);
              __Pyx_INCREF(__pyx_t_3);
              __Pyx_INCREF(__pyx__function);
              __Pyx_DECREF_SET(__pyx_t_14, __pyx__function);
              __pyx_t_8 = 0;
            }
            #endif
            {
              PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_3, __pyx_t_2};
              __pyx_t_1 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4361, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_1);
              if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_extra_msg, __pyx_v_error_info, __pyx_t_1, __pyx_callargs+2, 0) < (0)) __PYX_ERR(0, 4361, __pyx_L1_error)
              __pyx_t_10 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_t_14, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_1);
              __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
              __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
              __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
              if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4361, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_10);
            }
            __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

            /* "netCDF4/_netCDF4.pyx":4359
 *                             ierr = nc_def_var_chunking(self._grpid, self._varid, icontiguous, chunksizesp)
 *                         free(chunksizesp)
 *                         if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
 *                             if grp.data_model != 'NETCDF4': grp._enddef()
 *                             _ensure_nc_success(ierr, extra_msg=error_info)
*/
          }

          /* "netCDF4/_netCDF4.pyx":4355
 *                                 raise ValueError(msg)
 *                             chunksizesp[n] = chunksizes[n]
 *                     if chunksizes is not None or contiguous:             # <<<<<<<<<<<<<<
 *                         with nogil:
 *                             ierr = nc_def_var_chunking(self._grpid, self._varid, icontiguous, chunksizesp)
*/
        }

        /* "netCDF4/_netCDF4.pyx":4335
 *                         _ensure_nc_success(ierr, extra_msg=error_info)
 *                 # set chunking stuff.
 *                 if ndims: # don't bother for scalar variable.             # <<<<<<<<<<<<<<
 *                     if contiguous:
 *                         icontiguous = NC_CONTIGUOUS
*/
      }

      /* "netCDF4/_netCDF4.pyx":4364
 * 
 *                 # set endian-ness of variable
 *                 if endian != 'native':             # <<<<<<<<<<<<<<
 *                     _nc_endian = NC_ENDIAN_LITTLE if endian == "little" else NC_ENDIAN_BIG
 *                     with nogil:
*/
      __pyx_t_7 = (__Pyx_PyUnicode_Equals(__pyx_v_endian, __pyx_mstate_global->__pyx_n_u_native, Py_NE)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 4364, __pyx_L1_error)
      if (__pyx_t_7) {

        /* "netCDF4/_netCDF4.pyx":4365
 *                 # set endian-ness of variable
 *                 if endian != 'native':
 *                     _nc_endian = NC_ENDIAN_LITTLE if endian == "little" else NC_ENDIAN_BIG             # <<<<<<<<<<<<<<
 *                     with nogil:
 *                         ierr = nc_def_var_endian(self._grpid, self._varid, _nc_endian)
*/
        __pyx_t_7 = (__Pyx_PyUnicode_Equals(__pyx_v_endian, __pyx_mstate_global->__pyx_n_u_little, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 4365, __pyx_L1_error)
        if (__pyx_t_7) {
          __pyx_t_26 = NC_ENDIAN_LITTLE;
        } else {
          __pyx_t_26 = NC_ENDIAN_BIG;
        }
        __pyx_v__nc_endian = __pyx_t_26;

        /* "netCDF4/_netCDF4.pyx":4366
 *                 if endian != 'native':
 *                     _nc_endian = NC_ENDIAN_LITTLE if endian == "little" else NC_ENDIAN_BIG
 *                     with nogil:             # <<<<<<<<<<<<<<
 *                         ierr = nc_def_var_endian(self._grpid, self._varid, _nc_endian)
 *                     _ensure_nc_success(ierr, extra_msg=error_info)
*/
        {
            PyThreadState * _save;
            _save = PyEval_SaveThread();
            __Pyx_FastGIL_Remember();
            /*try:*/ {

              /* "netCDF4/_netCDF4.pyx":4367
 *                     _nc_endian = NC_ENDIAN_LITTLE if endian == "little" else NC_ENDIAN_BIG
 *                     with nogil:
 *                         ierr = nc_def_var_endian(self._grpid, self._varid, _nc_endian)             # <<<<<<<<<<<<<<
 *                     _ensure_nc_success(ierr, extra_msg=error_info)
 * 
*/
              __pyx_v_ierr = nc_def_var_endian(__pyx_v_self->_grpid, __pyx_v_self->_varid, __pyx_v__nc_endian);
            }

            /* "netCDF4/_netCDF4.pyx":4366
 *                 if endian != 'native':
 *                     _nc_endian = NC_ENDIAN_LITTLE if endian == "little" else NC_ENDIAN_BIG
 *                     with nogil:             # <<<<<<<<<<<<<<
 *                         ierr = nc_def_var_endian(self._grpid, self._varid, _nc_endian)
 *                     _ensure_nc_success(ierr, extra_msg=error_info)
*/
            /*finally:*/ {
              /*normal exit:*/{
                __Pyx_FastGIL_Forget();
                PyEval_RestoreThread(_save);
                goto __pyx_L154;
              }
              __pyx_L154:;
            }
        }

        /* "netCDF4/_netCDF4.pyx":4368
 *                     with nogil:
 *                         ierr = nc_def_var_endian(self._grpid, self._varid, _nc_endian)
 *                     _ensure_nc_success(ierr, extra_msg=error_info)             # <<<<<<<<<<<<<<
 * 
 *                 # set quantization
*/
        __pyx_t_14 = NULL;
        __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4368, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_2 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4368, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __pyx_t_8 = 1;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_1))) {
          __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_1);
          assert(__pyx_t_14);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_1);
          __Pyx_INCREF(__pyx_t_14);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_1, __pyx__function);
          __pyx_t_8 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_14, __pyx_t_2};
          __pyx_t_3 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4368, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
          if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_extra_msg, __pyx_v_error_info, __pyx_t_3, __pyx_callargs+2, 0) < (0)) __PYX_ERR(0, 4368, __pyx_L1_error)
          __pyx_t_10 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_t_1, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_3);
          __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4368, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_10);
        }
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

        /* "netCDF4/_netCDF4.pyx":4364
 * 
 *                 # set endian-ness of variable
 *                 if endian != 'native':             # <<<<<<<<<<<<<<
 *                     _nc_endian = NC_ENDIAN_LITTLE if endian == "little" else NC_ENDIAN_BIG
 *                     with nogil:
*/
      }

      /* "netCDF4/_netCDF4.pyx":4371
 * 
 *                 # set quantization
 *                 if significant_digits is not None:             # <<<<<<<<<<<<<<
 *                     if not __has_quantization_support__:
 *                         raise ValueError(
*/
      __pyx_t_7 = (__pyx_v_significant_digits != Py_None);
      if (__pyx_t_7) {

        /* "netCDF4/_netCDF4.pyx":4372
 *                 # set quantization
 *                 if significant_digits is not None:
 *                     if not __has_quantization_support__:             # <<<<<<<<<<<<<<
 *                         raise ValueError(
 *                             "significant_digits kwarg only works with netcdf-c >= 4.9.0. "
*/
        __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_has_quantization_support); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4372, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_10);
        __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 4372, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        __pyx_t_6 = (!__pyx_t_7);
        if (unlikely(__pyx_t_6)) {

          /* "netCDF4/_netCDF4.pyx":4373
 *                 if significant_digits is not None:
 *                     if not __has_quantization_support__:
 *                         raise ValueError(             # <<<<<<<<<<<<<<
 *                             "significant_digits kwarg only works with netcdf-c >= 4.9.0. "
 *                             "To enable, install Cython, make sure you have version 4.9.0 "
*/
          __pyx_t_1 = NULL;

          /* "netCDF4/_netCDF4.pyx":4374
 *                     if not __has_quantization_support__:
 *                         raise ValueError(
 *                             "significant_digits kwarg only works with netcdf-c >= 4.9.0. "             # <<<<<<<<<<<<<<
 *                             "To enable, install Cython, make sure you have version 4.9.0 "
 *                             "or higher netcdf-c, and rebuild netcdf4-python. Otherwise, "
*/
          __pyx_t_3 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_significant_digits_kwarg_only_wo, __pyx_v_error_info); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4374, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
          __pyx_t_8 = 1;
          {
            PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_t_3};
            __pyx_t_10 = __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_1); __pyx_t_1 = 0;
            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
            if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4373, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_10);
          }
          __Pyx_Raise(__pyx_t_10, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
          __PYX_ERR(0, 4373, __pyx_L1_error)

          /* "netCDF4/_netCDF4.pyx":4372
 *                 # set quantization
 *                 if significant_digits is not None:
 *                     if not __has_quantization_support__:             # <<<<<<<<<<<<<<
 *                         raise ValueError(
 *                             "significant_digits kwarg only works with netcdf-c >= 4.9.0. "
*/
        }

        /* "netCDF4/_netCDF4.pyx":4380
 *                         )
 * 
 *                     nsd = significant_digits             # <<<<<<<<<<<<<<
 *                     if quantize_mode == 'BitGroom':
 *                         with nogil:
*/
        __pyx_t_11 = __Pyx_PyLong_As_int(__pyx_v_significant_digits); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 4380, __pyx_L1_error)
        __pyx_v_nsd = __pyx_t_11;

        /* "netCDF4/_netCDF4.pyx":4381
 * 
 *                     nsd = significant_digits
 *                     if quantize_mode == 'BitGroom':             # <<<<<<<<<<<<<<
 *                         with nogil:
 *                             ierr = nc_def_var_quantize(self._grpid,
*/
        __pyx_t_6 = (__Pyx_PyUnicode_Equals(__pyx_v_quantize_mode, __pyx_mstate_global->__pyx_n_u_BitGroom, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 4381, __pyx_L1_error)
        if (__pyx_t_6) {

          /* "netCDF4/_netCDF4.pyx":4382
 *                     nsd = significant_digits
 *                     if quantize_mode == 'BitGroom':
 *                         with nogil:             # <<<<<<<<<<<<<<
 *                             ierr = nc_def_var_quantize(self._grpid,
 *                                    self._varid, NC_QUANTIZE_BITGROOM, nsd)
*/
          {
              PyThreadState * _save;
              _save = PyEval_SaveThread();
              __Pyx_FastGIL_Remember();
              /*try:*/ {

                /* "netCDF4/_netCDF4.pyx":4383
 *                     if quantize_mode == 'BitGroom':
 *                         with nogil:
 *                             ierr = nc_def_var_quantize(self._grpid,             # <<<<<<<<<<<<<<
 *                                    self._varid, NC_QUANTIZE_BITGROOM, nsd)
 *                     elif quantize_mode == 'GranularBitRound':
*/
                __pyx_v_ierr = nc_def_var_quantize(__pyx_v_self->_grpid, __pyx_v_self->_varid, NC_QUANTIZE_BITGROOM, __pyx_v_nsd);
              }

              /* "netCDF4/_netCDF4.pyx":4382
 *                     nsd = significant_digits
 *                     if quantize_mode == 'BitGroom':
 *                         with nogil:             # <<<<<<<<<<<<<<
 *                             ierr = nc_def_var_quantize(self._grpid,
 *                                    self._varid, NC_QUANTIZE_BITGROOM, nsd)
*/
              /*finally:*/ {
                /*normal exit:*/{
                  __Pyx_FastGIL_Forget();
                  PyEval_RestoreThread(_save);
                  goto __pyx_L160;
                }
                __pyx_L160:;
              }
          }

          /* "netCDF4/_netCDF4.pyx":4381
 * 
 *                     nsd = significant_digits
 *                     if quantize_mode == 'BitGroom':             # <<<<<<<<<<<<<<
 *                         with nogil:
 *                             ierr = nc_def_var_quantize(self._grpid,
*/
          goto __pyx_L157;
        }

        /* "netCDF4/_netCDF4.pyx":4385
 *                             ierr = nc_def_var_quantize(self._grpid,
 *                                    self._varid, NC_QUANTIZE_BITGROOM, nsd)
 *                     elif quantize_mode == 'GranularBitRound':             # <<<<<<<<<<<<<<
 *                         with nogil:
 *                             ierr = nc_def_var_quantize(self._grpid,
*/
        __pyx_t_6 = (__Pyx_PyUnicode_Equals(__pyx_v_quantize_mode, __pyx_mstate_global->__pyx_n_u_GranularBitRound, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 4385, __pyx_L1_error)
        if (__pyx_t_6) {

          /* "netCDF4/_netCDF4.pyx":4386
 *                                    self._varid, NC_QUANTIZE_BITGROOM, nsd)
 *                     elif quantize_mode == 'GranularBitRound':
 *                         with nogil:             # <<<<<<<<<<<<<<
 *                             ierr = nc_def_var_quantize(self._grpid,
 *                                    self._varid, NC_QUANTIZE_GRANULARBR, nsd)
*/
          {
              PyThreadState * _save;
              _save = PyEval_SaveThread();
              __Pyx_FastGIL_Remember();
              /*try:*/ {

                /* "netCDF4/_netCDF4.pyx":4387
 *                     elif quantize_mode == 'GranularBitRound':
 *                         with nogil:
 *                             ierr = nc_def_var_quantize(self._grpid,             # <<<<<<<<<<<<<<
 *                                    self._varid, NC_QUANTIZE_GRANULARBR, nsd)
 *                     elif quantize_mode == 'BitRound':
*/
                __pyx_v_ierr = nc_def_var_quantize(__pyx_v_self->_grpid, __pyx_v_self->_varid, NC_QUANTIZE_GRANULARBR, __pyx_v_nsd);
              }

              /* "netCDF4/_netCDF4.pyx":4386
 *                                    self._varid, NC_QUANTIZE_BITGROOM, nsd)
 *                     elif quantize_mode == 'GranularBitRound':
 *                         with nogil:             # <<<<<<<<<<<<<<
 *                             ierr = nc_def_var_quantize(self._grpid,
 *                                    self._varid, NC_QUANTIZE_GRANULARBR, nsd)
*/
              /*finally:*/ {
                /*normal exit:*/{
                  __Pyx_FastGIL_Forget();
                  PyEval_RestoreThread(_save);
                  goto __pyx_L163;
                }
                __pyx_L163:;
              }
          }

          /* "netCDF4/_netCDF4.pyx":4385
 *                             ierr = nc_def_var_quantize(self._grpid,
 *                                    self._varid, NC_QUANTIZE_BITGROOM, nsd)
 *                     elif quantize_mode == 'GranularBitRound':             # <<<<<<<<<<<<<<
 *                         with nogil:
 *                             ierr = nc_def_var_quantize(self._grpid,
*/
          goto __pyx_L157;
        }

        /* "netCDF4/_netCDF4.pyx":4389
 *                             ierr = nc_def_var_quantize(self._grpid,
 *                                    self._varid, NC_QUANTIZE_GRANULARBR, nsd)
 *                     elif quantize_mode == 'BitRound':             # <<<<<<<<<<<<<<
 *                         ierr = nc_def_var_quantize(self._grpid,
 *                                    self._varid, NC_QUANTIZE_BITROUND, nsd)
*/
        __pyx_t_6 = (__Pyx_PyUnicode_Equals(__pyx_v_quantize_mode, __pyx_mstate_global->__pyx_n_u_BitRound, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 4389, __pyx_L1_error)
        if (likely(__pyx_t_6)) {

          /* "netCDF4/_netCDF4.pyx":4390
 *                                    self._varid, NC_QUANTIZE_GRANULARBR, nsd)
 *                     elif quantize_mode == 'BitRound':
 *                         ierr = nc_def_var_quantize(self._grpid,             # <<<<<<<<<<<<<<
 *                                    self._varid, NC_QUANTIZE_BITROUND, nsd)
 *                     else:
*/
          __pyx_v_ierr = nc_def_var_quantize(__pyx_v_self->_grpid, __pyx_v_self->_varid, NC_QUANTIZE_BITROUND, __pyx_v_nsd);

          /* "netCDF4/_netCDF4.pyx":4389
 *                             ierr = nc_def_var_quantize(self._grpid,
 *                                    self._varid, NC_QUANTIZE_GRANULARBR, nsd)
 *                     elif quantize_mode == 'BitRound':             # <<<<<<<<<<<<<<
 *                         ierr = nc_def_var_quantize(self._grpid,
 *                                    self._varid, NC_QUANTIZE_BITROUND, nsd)
*/
          goto __pyx_L157;
        }

        /* "netCDF4/_netCDF4.pyx":4393
 *                                    self._varid, NC_QUANTIZE_BITROUND, nsd)
 *                     else:
 *                         raise ValueError("'quantize_mode' keyword argument must be 'BitGroom','GranularBitRound' or 'BitRound', got '%s'" % quantize_mode)             # <<<<<<<<<<<<<<
 * 
 *                 if ierr != NC_NOERR:
*/
        /*else*/ {
          __pyx_t_3 = NULL;
          __pyx_t_1 = __Pyx_PyUnicode_FormatSafe(__pyx_mstate_global->__pyx_kp_u_quantize_mode_keyword_argument, __pyx_v_quantize_mode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4393, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __pyx_t_8 = 1;
          {
            PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_1};
            __pyx_t_10 = __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_1); __pyx_t_1 = 0;
            if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4393, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_10);
          }
          __Pyx_Raise(__pyx_t_10, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
          __PYX_ERR(0, 4393, __pyx_L1_error)
        }
        __pyx_L157:;

        /* "netCDF4/_netCDF4.pyx":4371
 * 
 *                 # set quantization
 *                 if significant_digits is not None:             # <<<<<<<<<<<<<<
 *                     if not __has_quantization_support__:
 *                         raise ValueError(
*/
      }

      /* "netCDF4/_netCDF4.pyx":4395
 *                         raise ValueError("'quantize_mode' keyword argument must be 'BitGroom','GranularBitRound' or 'BitRound', got '%s'" % quantize_mode)
 * 
 *                 if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
 *                     if grp.data_model != 'NETCDF4': grp._enddef()
 *                     _ensure_nc_success(ierr, extra_msg=error_info)
*/
      __pyx_t_6 = (__pyx_v_ierr != NC_NOERR);
      if (__pyx_t_6) {

        /* "netCDF4/_netCDF4.pyx":4396
 * 
 *                 if ierr != NC_NOERR:
 *                     if grp.data_model != 'NETCDF4': grp._enddef()             # <<<<<<<<<<<<<<
 *                     _ensure_nc_success(ierr, extra_msg=error_info)
 * 
*/
        __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_mstate_global->__pyx_n_u_data_model); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4396, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_10);
        __pyx_t_6 = (__Pyx_PyUnicode_Equals(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_NETCDF4, Py_NE)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 4396, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        if (__pyx_t_6) {
          __pyx_t_1 = __pyx_v_grp;
          __Pyx_INCREF(__pyx_t_1);
          __pyx_t_8 = 0;
          {
            PyObject *__pyx_callargs[2] = {__pyx_t_1, NULL};
            __pyx_t_10 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_enddef, __pyx_callargs+__pyx_t_8, (1-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
            __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
            if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4396, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_10);
          }
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        }

        /* "netCDF4/_netCDF4.pyx":4397
 *                 if ierr != NC_NOERR:
 *                     if grp.data_model != 'NETCDF4': grp._enddef()
 *                     _ensure_nc_success(ierr, extra_msg=error_info)             # <<<<<<<<<<<<<<
 * 
 *             # set a fill value for this variable if fill_value keyword
*/
        __pyx_t_1 = NULL;
        __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4397, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_2 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4397, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __pyx_t_8 = 1;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(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_8 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_1, __pyx_t_2};
          __pyx_t_14 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 4397, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_14);
          if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_extra_msg, __pyx_v_error_info, __pyx_t_14, __pyx_callargs+2, 0) < (0)) __PYX_ERR(0, 4397, __pyx_L1_error)
          __pyx_t_10 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_t_3, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_14);
          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4397, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_10);
        }
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

        /* "netCDF4/_netCDF4.pyx":4395
 *                         raise ValueError("'quantize_mode' keyword argument must be 'BitGroom','GranularBitRound' or 'BitRound', got '%s'" % quantize_mode)
 * 
 *                 if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
 *                     if grp.data_model != 'NETCDF4': grp._enddef()
 *                     _ensure_nc_success(ierr, extra_msg=error_info)
*/
      }

      /* "netCDF4/_netCDF4.pyx":4255
 *             # and fletcher32 flags are silently ignored. Only
 *             # endian='native' allowed for NETCDF3.
 *             if grp.data_model in ['NETCDF4','NETCDF4_CLASSIC']:             # <<<<<<<<<<<<<<
 *                 # set compression and shuffle parameters.
 *                 if compression is not None and ndims: # don't bother for scalar variable
*/
    }

    /* "netCDF4/_netCDF4.pyx":4402
 *             # given.  This avoids the HDF5 overhead of deleting and
 *             # recreating the dataset if it is set later (after the enddef).
 *             if fill_value is not None:             # <<<<<<<<<<<<<<
 *                 if fill_value is False:
 *                     # no filling for this variable if fill_value==False.
*/
    __pyx_t_6 = (__pyx_v_fill_value != Py_None);
    if (__pyx_t_6) {

      /* "netCDF4/_netCDF4.pyx":4403
 *             # recreating the dataset if it is set later (after the enddef).
 *             if fill_value is not None:
 *                 if fill_value is False:             # <<<<<<<<<<<<<<
 *                     # no filling for this variable if fill_value==False.
 *                     if self._isprimitive:
*/
      __pyx_t_6 = (__pyx_v_fill_value == Py_False);
      if (__pyx_t_6) {

        /* "netCDF4/_netCDF4.pyx":4405
 *                 if fill_value is False:
 *                     # no filling for this variable if fill_value==False.
 *                     if self._isprimitive:             # <<<<<<<<<<<<<<
 *                         with nogil:
 *                             ierr = nc_def_var_fill(self._grpid, self._varid, 1, NULL)
*/
        __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_self->_isprimitive); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 4405, __pyx_L1_error)
        if (__pyx_t_6) {

          /* "netCDF4/_netCDF4.pyx":4406
 *                     # no filling for this variable if fill_value==False.
 *                     if self._isprimitive:
 *                         with nogil:             # <<<<<<<<<<<<<<
 *                             ierr = nc_def_var_fill(self._grpid, self._varid, 1, NULL)
 *                     if ierr != NC_NOERR:
*/
          {
              PyThreadState * _save;
              _save = PyEval_SaveThread();
              __Pyx_FastGIL_Remember();
              /*try:*/ {

                /* "netCDF4/_netCDF4.pyx":4407
 *                     if self._isprimitive:
 *                         with nogil:
 *                             ierr = nc_def_var_fill(self._grpid, self._varid, 1, NULL)             # <<<<<<<<<<<<<<
 *                     if ierr != NC_NOERR:
 *                         if grp.data_model != 'NETCDF4': grp._enddef()
*/
                __pyx_v_ierr = nc_def_var_fill(__pyx_v_self->_grpid, __pyx_v_self->_varid, 1, NULL);
              }

              /* "netCDF4/_netCDF4.pyx":4406
 *                     # no filling for this variable if fill_value==False.
 *                     if self._isprimitive:
 *                         with nogil:             # <<<<<<<<<<<<<<
 *                             ierr = nc_def_var_fill(self._grpid, self._varid, 1, NULL)
 *                     if ierr != NC_NOERR:
*/
              /*finally:*/ {
                /*normal exit:*/{
                  __Pyx_FastGIL_Forget();
                  PyEval_RestoreThread(_save);
                  goto __pyx_L171;
                }
                __pyx_L171:;
              }
          }

          /* "netCDF4/_netCDF4.pyx":4405
 *                 if fill_value is False:
 *                     # no filling for this variable if fill_value==False.
 *                     if self._isprimitive:             # <<<<<<<<<<<<<<
 *                         with nogil:
 *                             ierr = nc_def_var_fill(self._grpid, self._varid, 1, NULL)
*/
        }

        /* "netCDF4/_netCDF4.pyx":4408
 *                         with nogil:
 *                             ierr = nc_def_var_fill(self._grpid, self._varid, 1, NULL)
 *                     if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
 *                         if grp.data_model != 'NETCDF4': grp._enddef()
 *                         _ensure_nc_success(ierr, extra_msg=error_info)
*/
        __pyx_t_6 = (__pyx_v_ierr != NC_NOERR);
        if (__pyx_t_6) {

          /* "netCDF4/_netCDF4.pyx":4409
 *                             ierr = nc_def_var_fill(self._grpid, self._varid, 1, NULL)
 *                     if ierr != NC_NOERR:
 *                         if grp.data_model != 'NETCDF4': grp._enddef()             # <<<<<<<<<<<<<<
 *                         _ensure_nc_success(ierr, extra_msg=error_info)
 *                 elif fill_value == 'default':
*/
          __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_mstate_global->__pyx_n_u_data_model); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4409, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_10);
          __pyx_t_6 = (__Pyx_PyUnicode_Equals(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_NETCDF4, Py_NE)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 4409, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
          if (__pyx_t_6) {
            __pyx_t_3 = __pyx_v_grp;
            __Pyx_INCREF(__pyx_t_3);
            __pyx_t_8 = 0;
            {
              PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
              __pyx_t_10 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_enddef, __pyx_callargs+__pyx_t_8, (1-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
              __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
              if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4409, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_10);
            }
            __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
          }

          /* "netCDF4/_netCDF4.pyx":4410
 *                     if ierr != NC_NOERR:
 *                         if grp.data_model != 'NETCDF4': grp._enddef()
 *                         _ensure_nc_success(ierr, extra_msg=error_info)             # <<<<<<<<<<<<<<
 *                 elif fill_value == 'default':
 *                     if self._isprimitive:
*/
          __pyx_t_3 = NULL;
          __Pyx_GetModuleGlobalName(__pyx_t_14, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 4410, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_14);
          __pyx_t_2 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4410, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_2);
          __pyx_t_8 = 1;
          #if CYTHON_UNPACK_METHODS
          if (unlikely(PyMethod_Check(__pyx_t_14))) {
            __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_14);
            assert(__pyx_t_3);
            PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_14);
            __Pyx_INCREF(__pyx_t_3);
            __Pyx_INCREF(__pyx__function);
            __Pyx_DECREF_SET(__pyx_t_14, __pyx__function);
            __pyx_t_8 = 0;
          }
          #endif
          {
            PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_3, __pyx_t_2};
            __pyx_t_1 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4410, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_extra_msg, __pyx_v_error_info, __pyx_t_1, __pyx_callargs+2, 0) < (0)) __PYX_ERR(0, 4410, __pyx_L1_error)
            __pyx_t_10 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_t_14, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_1);
            __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
            if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4410, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_10);
          }
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

          /* "netCDF4/_netCDF4.pyx":4408
 *                         with nogil:
 *                             ierr = nc_def_var_fill(self._grpid, self._varid, 1, NULL)
 *                     if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
 *                         if grp.data_model != 'NETCDF4': grp._enddef()
 *                         _ensure_nc_success(ierr, extra_msg=error_info)
*/
        }

        /* "netCDF4/_netCDF4.pyx":4403
 *             # recreating the dataset if it is set later (after the enddef).
 *             if fill_value is not None:
 *                 if fill_value is False:             # <<<<<<<<<<<<<<
 *                     # no filling for this variable if fill_value==False.
 *                     if self._isprimitive:
*/
        goto __pyx_L167;
      }

      /* "netCDF4/_netCDF4.pyx":4411
 *                         if grp.data_model != 'NETCDF4': grp._enddef()
 *                         _ensure_nc_success(ierr, extra_msg=error_info)
 *                 elif fill_value == 'default':             # <<<<<<<<<<<<<<
 *                     if self._isprimitive:
 *                         fillval = numpy.array(default_fillvals[self.dtype.str[1:]])
*/
      __pyx_t_6 = (__Pyx_PyUnicode_Equals(__pyx_v_fill_value, __pyx_mstate_global->__pyx_n_u_default, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 4411, __pyx_L1_error)
      if (__pyx_t_6) {

        /* "netCDF4/_netCDF4.pyx":4412
 *                         _ensure_nc_success(ierr, extra_msg=error_info)
 *                 elif fill_value == 'default':
 *                     if self._isprimitive:             # <<<<<<<<<<<<<<
 *                         fillval = numpy.array(default_fillvals[self.dtype.str[1:]])
 *                         if not fillval.dtype.isnative: fillval.byteswap(True)
*/
        __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_self->_isprimitive); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 4412, __pyx_L1_error)
        if (__pyx_t_6) {

          /* "netCDF4/_netCDF4.pyx":4413
 *                 elif fill_value == 'default':
 *                     if self._isprimitive:
 *                         fillval = numpy.array(default_fillvals[self.dtype.str[1:]])             # <<<<<<<<<<<<<<
 *                         if not fillval.dtype.isnative: fillval.byteswap(True)
 *                         _set_att(self._grp, self._varid, '_FillValue',\
*/
          __pyx_t_14 = NULL;
          __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4413, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_array); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4413, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_2);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_default_fillvals); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4413, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->dtype, __pyx_mstate_global->__pyx_n_u_str); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4413, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
          __pyx_t_27 = __Pyx_PyObject_GetSlice(__pyx_t_3, 1, 0, NULL, NULL, &__pyx_mstate_global->__pyx_slice[0], 1, 0, 1); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 4413, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_27);
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          __pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_t_27); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4413, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
          __pyx_t_8 = 1;
          #if CYTHON_UNPACK_METHODS
          if (unlikely(PyMethod_Check(__pyx_t_2))) {
            __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_2);
            assert(__pyx_t_14);
            PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_2);
            __Pyx_INCREF(__pyx_t_14);
            __Pyx_INCREF(__pyx__function);
            __Pyx_DECREF_SET(__pyx_t_2, __pyx__function);
            __pyx_t_8 = 0;
          }
          #endif
          {
            PyObject *__pyx_callargs[2] = {__pyx_t_14, __pyx_t_3};
            __pyx_t_10 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_2, __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_3); __pyx_t_3 = 0;
            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
            if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4413, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_10);
          }
          __pyx_v_fillval = __pyx_t_10;
          __pyx_t_10 = 0;

          /* "netCDF4/_netCDF4.pyx":4414
 *                     if self._isprimitive:
 *                         fillval = numpy.array(default_fillvals[self.dtype.str[1:]])
 *                         if not fillval.dtype.isnative: fillval.byteswap(True)             # <<<<<<<<<<<<<<
 *                         _set_att(self._grp, self._varid, '_FillValue',\
 *                                  fillval, xtype=xtype)
*/
          __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_fillval, __pyx_mstate_global->__pyx_n_u_dtype); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4414, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_10);
          __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_isnative); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4414, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_2);
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
          __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 4414, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          __pyx_t_7 = (!__pyx_t_6);
          if (__pyx_t_7) {
            __pyx_t_10 = __pyx_v_fillval;
            __Pyx_INCREF(__pyx_t_10);
            __pyx_t_8 = 0;
            {
              PyObject *__pyx_callargs[2] = {__pyx_t_10, Py_True};
              __pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_byteswap, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
              __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
              if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4414, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_2);
            }
            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          }

          /* "netCDF4/_netCDF4.pyx":4415
 *                         fillval = numpy.array(default_fillvals[self.dtype.str[1:]])
 *                         if not fillval.dtype.isnative: fillval.byteswap(True)
 *                         _set_att(self._grp, self._varid, '_FillValue',\             # <<<<<<<<<<<<<<
 *                                  fillval, xtype=xtype)
 *                     else:
*/
          __pyx_t_2 = __pyx_v_self->_grp;
          __Pyx_INCREF(__pyx_t_2);

          /* "netCDF4/_netCDF4.pyx":4416
 *                         if not fillval.dtype.isnative: fillval.byteswap(True)
 *                         _set_att(self._grp, self._varid, '_FillValue',\
 *                                  fillval, xtype=xtype)             # <<<<<<<<<<<<<<
 *                     else:
 *                         msg = """
*/
          __pyx_t_28.__pyx_n = 1;
          __pyx_t_28.xtype = __pyx_v_xtype;
          __pyx_t_10 = __pyx_f_7netCDF4_8_netCDF4__set_att(__pyx_t_2, __pyx_v_self->_varid, __pyx_mstate_global->__pyx_n_u_FillValue, __pyx_v_fillval, &__pyx_t_28); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4415, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_10);
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

          /* "netCDF4/_netCDF4.pyx":4412
 *                         _ensure_nc_success(ierr, extra_msg=error_info)
 *                 elif fill_value == 'default':
 *                     if self._isprimitive:             # <<<<<<<<<<<<<<
 *                         fillval = numpy.array(default_fillvals[self.dtype.str[1:]])
 *                         if not fillval.dtype.isnative: fillval.byteswap(True)
*/
          goto __pyx_L174;
        }

        /* "netCDF4/_netCDF4.pyx":4418
 *                                  fillval, xtype=xtype)
 *                     else:
 *                         msg = """             # <<<<<<<<<<<<<<
 * WARNING: there is no default fill value for this data type, so fill_value='default'
 * does not do anything."""
*/
        /*else*/ {
          __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u_WARNING_there_is_no_default_fil);
          __pyx_v_msg = __pyx_mstate_global->__pyx_kp_u_WARNING_there_is_no_default_fil;

          /* "netCDF4/_netCDF4.pyx":4421
 * WARNING: there is no default fill value for this data type, so fill_value='default'
 * does not do anything."""
 *                         warnings.warn(msg)             # <<<<<<<<<<<<<<
 *                 else:
 *                     if self._isprimitive or self._isenum or \
*/
          __pyx_t_2 = NULL;
          __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_warnings); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4421, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
          __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_warn); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 4421, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_14);
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          __pyx_t_8 = 1;
          #if CYTHON_UNPACK_METHODS
          if (unlikely(PyMethod_Check(__pyx_t_14))) {
            __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_14);
            assert(__pyx_t_2);
            PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_14);
            __Pyx_INCREF(__pyx_t_2);
            __Pyx_INCREF(__pyx__function);
            __Pyx_DECREF_SET(__pyx_t_14, __pyx__function);
            __pyx_t_8 = 0;
          }
          #endif
          {
            PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_msg};
            __pyx_t_10 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_14, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
            __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
            __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
            if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4421, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_10);
          }
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        }
        __pyx_L174:;

        /* "netCDF4/_netCDF4.pyx":4411
 *                         if grp.data_model != 'NETCDF4': grp._enddef()
 *                         _ensure_nc_success(ierr, extra_msg=error_info)
 *                 elif fill_value == 'default':             # <<<<<<<<<<<<<<
 *                     if self._isprimitive:
 *                         fillval = numpy.array(default_fillvals[self.dtype.str[1:]])
*/
        goto __pyx_L167;
      }

      /* "netCDF4/_netCDF4.pyx":4423
 *                         warnings.warn(msg)
 *                 else:
 *                     if self._isprimitive or self._isenum or \             # <<<<<<<<<<<<<<
 *                        (self._isvlen and self.dtype == str):
 *                         if self._isvlen and self.dtype == str:
*/
      /*else*/ {
        __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_self->_isprimitive); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 4423, __pyx_L1_error)
        if (!__pyx_t_6) {
        } else {
          __pyx_t_7 = __pyx_t_6;
          goto __pyx_L177_bool_binop_done;
        }
        __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_self->_isenum); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 4423, __pyx_L1_error)
        if (!__pyx_t_6) {
        } else {
          __pyx_t_7 = __pyx_t_6;
          goto __pyx_L177_bool_binop_done;
        }

        /* "netCDF4/_netCDF4.pyx":4424
 *                 else:
 *                     if self._isprimitive or self._isenum or \
 *                        (self._isvlen and self.dtype == str):             # <<<<<<<<<<<<<<
 *                         if self._isvlen and self.dtype == str:
 *                             _set_att(self._grp, self._varid, '_FillValue',\
*/
        __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_self->_isvlen); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 4424, __pyx_L1_error)
        if (__pyx_t_6) {
        } else {
          __pyx_t_7 = __pyx_t_6;
          goto __pyx_L177_bool_binop_done;
        }
        __pyx_t_10 = PyObject_RichCompare(__pyx_v_self->dtype, ((PyObject *)(&PyUnicode_Type)), Py_EQ); __Pyx_XGOTREF(__pyx_t_10); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4424, __pyx_L1_error)
        __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 4424, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        __pyx_t_7 = __pyx_t_6;
        __pyx_L177_bool_binop_done:;

        /* "netCDF4/_netCDF4.pyx":4423
 *                         warnings.warn(msg)
 *                 else:
 *                     if self._isprimitive or self._isenum or \             # <<<<<<<<<<<<<<
 *                        (self._isvlen and self.dtype == str):
 *                         if self._isvlen and self.dtype == str:
*/
        if (likely(__pyx_t_7)) {

          /* "netCDF4/_netCDF4.pyx":4425
 *                     if self._isprimitive or self._isenum or \
 *                        (self._isvlen and self.dtype == str):
 *                         if self._isvlen and self.dtype == str:             # <<<<<<<<<<<<<<
 *                             _set_att(self._grp, self._varid, '_FillValue',\
 *                                _tostr(fill_value), xtype=xtype, force_ncstring=True)
*/
          __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_self->_isvlen); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 4425, __pyx_L1_error)
          if (__pyx_t_6) {
          } else {
            __pyx_t_7 = __pyx_t_6;
            goto __pyx_L182_bool_binop_done;
          }
          __pyx_t_10 = PyObject_RichCompare(__pyx_v_self->dtype, ((PyObject *)(&PyUnicode_Type)), Py_EQ); __Pyx_XGOTREF(__pyx_t_10); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4425, __pyx_L1_error)
          __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 4425, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
          __pyx_t_7 = __pyx_t_6;
          __pyx_L182_bool_binop_done:;
          if (__pyx_t_7) {

            /* "netCDF4/_netCDF4.pyx":4426
 *                        (self._isvlen and self.dtype == str):
 *                         if self._isvlen and self.dtype == str:
 *                             _set_att(self._grp, self._varid, '_FillValue',\             # <<<<<<<<<<<<<<
 *                                _tostr(fill_value), xtype=xtype, force_ncstring=True)
 *                         else:
*/
            __pyx_t_10 = __pyx_v_self->_grp;
            __Pyx_INCREF(__pyx_t_10);

            /* "netCDF4/_netCDF4.pyx":4427
 *                         if self._isvlen and self.dtype == str:
 *                             _set_att(self._grp, self._varid, '_FillValue',\
 *                                _tostr(fill_value), xtype=xtype, force_ncstring=True)             # <<<<<<<<<<<<<<
 *                         else:
 *                             fillval = numpy.array(fill_value, self.dtype)
*/
            __pyx_t_2 = NULL;
            __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_tostr); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4427, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_3);
            __pyx_t_8 = 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_8 = 0;
            }
            #endif
            {
              PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_fill_value};
              __pyx_t_14 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_3, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__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_14)) __PYX_ERR(0, 4427, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_14);
            }

            /* "netCDF4/_netCDF4.pyx":4426
 *                        (self._isvlen and self.dtype == str):
 *                         if self._isvlen and self.dtype == str:
 *                             _set_att(self._grp, self._varid, '_FillValue',\             # <<<<<<<<<<<<<<
 *                                _tostr(fill_value), xtype=xtype, force_ncstring=True)
 *                         else:
*/
            __pyx_t_28.__pyx_n = 2;
            __pyx_t_28.xtype = __pyx_v_xtype;
            __pyx_t_28.force_ncstring = Py_True;
            __pyx_t_3 = __pyx_f_7netCDF4_8_netCDF4__set_att(__pyx_t_10, __pyx_v_self->_varid, __pyx_mstate_global->__pyx_n_u_FillValue, __pyx_t_14, &__pyx_t_28); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4426, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_3);
            __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
            __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

            /* "netCDF4/_netCDF4.pyx":4425
 *                     if self._isprimitive or self._isenum or \
 *                        (self._isvlen and self.dtype == str):
 *                         if self._isvlen and self.dtype == str:             # <<<<<<<<<<<<<<
 *                             _set_att(self._grp, self._varid, '_FillValue',\
 *                                _tostr(fill_value), xtype=xtype, force_ncstring=True)
*/
            goto __pyx_L181;
          }

          /* "netCDF4/_netCDF4.pyx":4429
 *                                _tostr(fill_value), xtype=xtype, force_ncstring=True)
 *                         else:
 *                             fillval = numpy.array(fill_value, self.dtype)             # <<<<<<<<<<<<<<
 *                             if not fillval.dtype.isnative: fillval.byteswap(True)
 *                             _set_att(self._grp, self._varid, '_FillValue',\
*/
          /*else*/ {
            __pyx_t_14 = NULL;
            __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_numpy); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4429, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_10);
            __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_array); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4429, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_2);
            __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
            __pyx_t_8 = 1;
            #if CYTHON_UNPACK_METHODS
            if (unlikely(PyMethod_Check(__pyx_t_2))) {
              __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_2);
              assert(__pyx_t_14);
              PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_2);
              __Pyx_INCREF(__pyx_t_14);
              __Pyx_INCREF(__pyx__function);
              __Pyx_DECREF_SET(__pyx_t_2, __pyx__function);
              __pyx_t_8 = 0;
            }
            #endif
            {
              PyObject *__pyx_callargs[3] = {__pyx_t_14, __pyx_v_fill_value, __pyx_v_self->dtype};
              __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_2, __pyx_callargs+__pyx_t_8, (3-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
              __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
              __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
              if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4429, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_3);
            }
            __pyx_v_fillval = __pyx_t_3;
            __pyx_t_3 = 0;

            /* "netCDF4/_netCDF4.pyx":4430
 *                         else:
 *                             fillval = numpy.array(fill_value, self.dtype)
 *                             if not fillval.dtype.isnative: fillval.byteswap(True)             # <<<<<<<<<<<<<<
 *                             _set_att(self._grp, self._varid, '_FillValue',\
 *                                      fillval, xtype=xtype)
*/
            __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_fillval, __pyx_mstate_global->__pyx_n_u_dtype); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4430, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_3);
            __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_isnative); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4430, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_2);
            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
            __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 4430, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
            __pyx_t_6 = (!__pyx_t_7);
            if (__pyx_t_6) {
              __pyx_t_3 = __pyx_v_fillval;
              __Pyx_INCREF(__pyx_t_3);
              __pyx_t_8 = 0;
              {
                PyObject *__pyx_callargs[2] = {__pyx_t_3, Py_True};
                __pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_byteswap, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
                __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
                if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4430, __pyx_L1_error)
                __Pyx_GOTREF(__pyx_t_2);
              }
              __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
            }

            /* "netCDF4/_netCDF4.pyx":4431
 *                             fillval = numpy.array(fill_value, self.dtype)
 *                             if not fillval.dtype.isnative: fillval.byteswap(True)
 *                             _set_att(self._grp, self._varid, '_FillValue',\             # <<<<<<<<<<<<<<
 *                                      fillval, xtype=xtype)
 *                     else:
*/
            __pyx_t_2 = __pyx_v_self->_grp;
            __Pyx_INCREF(__pyx_t_2);

            /* "netCDF4/_netCDF4.pyx":4432
 *                             if not fillval.dtype.isnative: fillval.byteswap(True)
 *                             _set_att(self._grp, self._varid, '_FillValue',\
 *                                      fillval, xtype=xtype)             # <<<<<<<<<<<<<<
 *                     else:
 *                         raise AttributeError("cannot set _FillValue attribute for VLEN or compound variable")
*/
            __pyx_t_28.__pyx_n = 1;
            __pyx_t_28.xtype = __pyx_v_xtype;
            __pyx_t_3 = __pyx_f_7netCDF4_8_netCDF4__set_att(__pyx_t_2, __pyx_v_self->_varid, __pyx_mstate_global->__pyx_n_u_FillValue, __pyx_v_fillval, &__pyx_t_28); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4431, __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;
          }
          __pyx_L181:;

          /* "netCDF4/_netCDF4.pyx":4423
 *                         warnings.warn(msg)
 *                 else:
 *                     if self._isprimitive or self._isenum or \             # <<<<<<<<<<<<<<
 *                        (self._isvlen and self.dtype == str):
 *                         if self._isvlen and self.dtype == str:
*/
          goto __pyx_L176;
        }

        /* "netCDF4/_netCDF4.pyx":4434
 *                                      fillval, xtype=xtype)
 *                     else:
 *                         raise AttributeError("cannot set _FillValue attribute for VLEN or compound variable")             # <<<<<<<<<<<<<<
 *             if least_significant_digit is not None:
 *                 self.least_significant_digit = least_significant_digit
*/
        /*else*/ {
          __pyx_t_2 = NULL;
          __pyx_t_8 = 1;
          {
            PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_cannot_set__FillValue_attribute};
            __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_AttributeError)), __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
            __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
            if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4434, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_3);
          }
          __Pyx_Raise(__pyx_t_3, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          __PYX_ERR(0, 4434, __pyx_L1_error)
        }
        __pyx_L176:;
      }
      __pyx_L167:;

      /* "netCDF4/_netCDF4.pyx":4402
 *             # given.  This avoids the HDF5 overhead of deleting and
 *             # recreating the dataset if it is set later (after the enddef).
 *             if fill_value is not None:             # <<<<<<<<<<<<<<
 *                 if fill_value is False:
 *                     # no filling for this variable if fill_value==False.
*/
    }

    /* "netCDF4/_netCDF4.pyx":4435
 *                     else:
 *                         raise AttributeError("cannot set _FillValue attribute for VLEN or compound variable")
 *             if least_significant_digit is not None:             # <<<<<<<<<<<<<<
 *                 self.least_significant_digit = least_significant_digit
 *             # leave define mode if not a NETCDF4 format file.
*/
    __pyx_t_6 = (__pyx_v_least_significant_digit != Py_None);
    if (__pyx_t_6) {

      /* "netCDF4/_netCDF4.pyx":4436
 *                         raise AttributeError("cannot set _FillValue attribute for VLEN or compound variable")
 *             if least_significant_digit is not None:
 *                 self.least_significant_digit = least_significant_digit             # <<<<<<<<<<<<<<
 *             # leave define mode if not a NETCDF4 format file.
 *             if grp.data_model != 'NETCDF4': grp._enddef()
*/
      if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_least_significant_digit, __pyx_v_least_significant_digit) < (0)) __PYX_ERR(0, 4436, __pyx_L1_error)

      /* "netCDF4/_netCDF4.pyx":4435
 *                     else:
 *                         raise AttributeError("cannot set _FillValue attribute for VLEN or compound variable")
 *             if least_significant_digit is not None:             # <<<<<<<<<<<<<<
 *                 self.least_significant_digit = least_significant_digit
 *             # leave define mode if not a NETCDF4 format file.
*/
    }

    /* "netCDF4/_netCDF4.pyx":4438
 *                 self.least_significant_digit = least_significant_digit
 *             # leave define mode if not a NETCDF4 format file.
 *             if grp.data_model != 'NETCDF4': grp._enddef()             # <<<<<<<<<<<<<<
 * 
 *         # If the variable is a complex number, we need to check if
*/
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_mstate_global->__pyx_n_u_data_model); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4438, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_6 = (__Pyx_PyUnicode_Equals(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_NETCDF4, Py_NE)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 4438, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__pyx_t_6) {
      __pyx_t_2 = __pyx_v_grp;
      __Pyx_INCREF(__pyx_t_2);
      __pyx_t_8 = 0;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
        __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_enddef, __pyx_callargs+__pyx_t_8, (1-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4438, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
      }
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
  }
  __pyx_L47:;

  /* "netCDF4/_netCDF4.pyx":4443
 *         # it was created using a compound type or a complex
 *         # dimension, and then make the equivalent class in Python
 *         if is_complex:             # <<<<<<<<<<<<<<
 *             self._fix_complex_numbers()
 * 
*/
  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_is_complex); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 4443, __pyx_L1_error)
  if (__pyx_t_6) {

    /* "netCDF4/_netCDF4.pyx":4444
 *         # dimension, and then make the equivalent class in Python
 *         if is_complex:
 *             self._fix_complex_numbers()             # <<<<<<<<<<<<<<
 * 
 *         # count how many unlimited dimensions there are.
*/
    __pyx_t_2 = ((PyObject *)__pyx_v_self);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_t_8 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
      __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_fix_complex_numbers, __pyx_callargs+__pyx_t_8, (1-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4444, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "netCDF4/_netCDF4.pyx":4443
 *         # it was created using a compound type or a complex
 *         # dimension, and then make the equivalent class in Python
 *         if is_complex:             # <<<<<<<<<<<<<<
 *             self._fix_complex_numbers()
 * 
*/
  }

  /* "netCDF4/_netCDF4.pyx":4447
 * 
 *         # count how many unlimited dimensions there are.
 *         self._nunlimdim = 0             # <<<<<<<<<<<<<<
 *         for dim in dimensions:
 *             if dim.isunlimited(): self._nunlimdim = self._nunlimdim + 1
*/
  __pyx_v_self->_nunlimdim = 0;

  /* "netCDF4/_netCDF4.pyx":4448
 *         # count how many unlimited dimensions there are.
 *         self._nunlimdim = 0
 *         for dim in dimensions:             # <<<<<<<<<<<<<<
 *             if dim.isunlimited(): self._nunlimdim = self._nunlimdim + 1
 * 
*/
  if (likely(PyList_CheckExact(__pyx_v_dimensions)) || PyTuple_CheckExact(__pyx_v_dimensions)) {
    __pyx_t_3 = __pyx_v_dimensions; __Pyx_INCREF(__pyx_t_3);
    __pyx_t_25 = 0;
    __pyx_t_29 = NULL;
  } else {
    __pyx_t_25 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_dimensions); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4448, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_29 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_3); if (unlikely(!__pyx_t_29)) __PYX_ERR(0, 4448, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_29)) {
      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(0, 4448, __pyx_L1_error)
          #endif
          if (__pyx_t_25 >= __pyx_temp) break;
        }
        __pyx_t_2 = __Pyx_PyList_GetItemRefFast(__pyx_t_3, __pyx_t_25, __Pyx_ReferenceSharing_OwnStrongReference);
        ++__pyx_t_25;
      } 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(0, 4448, __pyx_L1_error)
          #endif
          if (__pyx_t_25 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_2 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_25));
        #else
        __pyx_t_2 = __Pyx_PySequence_ITEM(__pyx_t_3, __pyx_t_25);
        #endif
        ++__pyx_t_25;
      }
      if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4448, __pyx_L1_error)
    } else {
      __pyx_t_2 = __pyx_t_29(__pyx_t_3);
      if (unlikely(!__pyx_t_2)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 4448, __pyx_L1_error)
          PyErr_Clear();
        }
        break;
      }
    }
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_XDECREF_SET(__pyx_v_dim, __pyx_t_2);
    __pyx_t_2 = 0;

    /* "netCDF4/_netCDF4.pyx":4449
 *         self._nunlimdim = 0
 *         for dim in dimensions:
 *             if dim.isunlimited(): self._nunlimdim = self._nunlimdim + 1             # <<<<<<<<<<<<<<
 * 
 *         # set ndim attribute (number of dimensions).
*/
    __pyx_t_14 = __pyx_v_dim;
    __Pyx_INCREF(__pyx_t_14);
    __pyx_t_8 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_14, NULL};
      __pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_isunlimited, __pyx_callargs+__pyx_t_8, (1-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4449, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 4449, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (__pyx_t_6) {
      __pyx_v_self->_nunlimdim = (__pyx_v_self->_nunlimdim + 1);
    }

    /* "netCDF4/_netCDF4.pyx":4448
 *         # count how many unlimited dimensions there are.
 *         self._nunlimdim = 0
 *         for dim in dimensions:             # <<<<<<<<<<<<<<
 *             if dim.isunlimited(): self._nunlimdim = self._nunlimdim + 1
 * 
*/
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "netCDF4/_netCDF4.pyx":4452
 * 
 *         # set ndim attribute (number of dimensions).
 *         self.ndim = _inq_varndims(self._grpid, self._varid, self._grp.auto_complex)             # <<<<<<<<<<<<<<
 *         self._name = name
 *         # default for automatically applying scale_factor and
*/
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_grp, __pyx_mstate_global->__pyx_n_u_auto_complex); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4452, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 4452, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_11 = __pyx_f_7netCDF4_8_netCDF4__inq_varndims(__pyx_v_self->_grpid, __pyx_v_self->_varid, __pyx_t_6); if (unlikely(__pyx_t_11 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 4452, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyLong_From_int(__pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4452, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  __Pyx_GOTREF(__pyx_v_self->ndim);
  __Pyx_DECREF(__pyx_v_self->ndim);
  __pyx_v_self->ndim = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "netCDF4/_netCDF4.pyx":4453
 *         # set ndim attribute (number of dimensions).
 *         self.ndim = _inq_varndims(self._grpid, self._varid, self._grp.auto_complex)
 *         self._name = name             # <<<<<<<<<<<<<<
 *         # default for automatically applying scale_factor and
 *         # add_offset, and converting to/from masked arrays is True.
*/
  __Pyx_INCREF(__pyx_v_name);
  __Pyx_GIVEREF(__pyx_v_name);
  __Pyx_GOTREF(__pyx_v_self->_name);
  __Pyx_DECREF(__pyx_v_self->_name);
  __pyx_v_self->_name = __pyx_v_name;

  /* "netCDF4/_netCDF4.pyx":4456
 *         # default for automatically applying scale_factor and
 *         # add_offset, and converting to/from masked arrays is True.
 *         self.scale = True             # <<<<<<<<<<<<<<
 *         self.mask = True
 *         # issue 809: default for converting arrays with no missing values to
*/
  __Pyx_INCREF(Py_True);
  __Pyx_GIVEREF(Py_True);
  __Pyx_GOTREF(__pyx_v_self->scale);
  __Pyx_DECREF(__pyx_v_self->scale);
  __pyx_v_self->scale = Py_True;

  /* "netCDF4/_netCDF4.pyx":4457
 *         # add_offset, and converting to/from masked arrays is True.
 *         self.scale = True
 *         self.mask = True             # <<<<<<<<<<<<<<
 *         # issue 809: default for converting arrays with no missing values to
 *         # regular numpy arrays
*/
  __Pyx_INCREF(Py_True);
  __Pyx_GIVEREF(Py_True);
  __Pyx_GOTREF(__pyx_v_self->mask);
  __Pyx_DECREF(__pyx_v_self->mask);
  __pyx_v_self->mask = Py_True;

  /* "netCDF4/_netCDF4.pyx":4460
 *         # issue 809: default for converting arrays with no missing values to
 *         # regular numpy arrays
 *         self.always_mask = True             # <<<<<<<<<<<<<<
 *         # default is to automatically convert to/from character
 *         # to string arrays when _Encoding variable attribute is set.
*/
  __Pyx_INCREF(Py_True);
  __Pyx_GIVEREF(Py_True);
  __Pyx_GOTREF(__pyx_v_self->always_mask);
  __Pyx_DECREF(__pyx_v_self->always_mask);
  __pyx_v_self->always_mask = Py_True;

  /* "netCDF4/_netCDF4.pyx":4463
 *         # default is to automatically convert to/from character
 *         # to string arrays when _Encoding variable attribute is set.
 *         self.chartostring = True             # <<<<<<<<<<<<<<
 *         # propagate _ncstring_attrs__ setting from parent group.
 *         self._ncstring_attrs__ = grp._ncstring_attrs__
*/
  __Pyx_INCREF(Py_True);
  __Pyx_GIVEREF(Py_True);
  __Pyx_GOTREF(__pyx_v_self->chartostring);
  __Pyx_DECREF(__pyx_v_self->chartostring);
  __pyx_v_self->chartostring = Py_True;

  /* "netCDF4/_netCDF4.pyx":4465
 *         self.chartostring = True
 *         # propagate _ncstring_attrs__ setting from parent group.
 *         self._ncstring_attrs__ = grp._ncstring_attrs__             # <<<<<<<<<<<<<<
 *         if 'least_significant_digit' in self.ncattrs():
 *             self._has_lsd = True
*/
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_mstate_global->__pyx_n_u_ncstring_attrs); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4465, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  __Pyx_GOTREF(__pyx_v_self->_ncstring_attrs__);
  __Pyx_DECREF(__pyx_v_self->_ncstring_attrs__);
  __pyx_v_self->_ncstring_attrs__ = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "netCDF4/_netCDF4.pyx":4466
 *         # propagate _ncstring_attrs__ setting from parent group.
 *         self._ncstring_attrs__ = grp._ncstring_attrs__
 *         if 'least_significant_digit' in self.ncattrs():             # <<<<<<<<<<<<<<
 *             self._has_lsd = True
 *         # avoid calling nc_get_vars for strided slices by default.
*/
  __pyx_t_2 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_8 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_ncattrs, __pyx_callargs+__pyx_t_8, (1-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4466, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  }
  __pyx_t_6 = (__Pyx_PySequence_ContainsTF(__pyx_mstate_global->__pyx_n_u_least_significant_digit, __pyx_t_3, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 4466, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__pyx_t_6) {

    /* "netCDF4/_netCDF4.pyx":4467
 *         self._ncstring_attrs__ = grp._ncstring_attrs__
 *         if 'least_significant_digit' in self.ncattrs():
 *             self._has_lsd = True             # <<<<<<<<<<<<<<
 *         # avoid calling nc_get_vars for strided slices by default.
 *         # a fix for strided slice access using HDF5 was added
*/
    __Pyx_INCREF(Py_True);
    __Pyx_GIVEREF(Py_True);
    __Pyx_GOTREF(__pyx_v_self->_has_lsd);
    __Pyx_DECREF(__pyx_v_self->_has_lsd);
    __pyx_v_self->_has_lsd = Py_True;

    /* "netCDF4/_netCDF4.pyx":4466
 *         # propagate _ncstring_attrs__ setting from parent group.
 *         self._ncstring_attrs__ = grp._ncstring_attrs__
 *         if 'least_significant_digit' in self.ncattrs():             # <<<<<<<<<<<<<<
 *             self._has_lsd = True
 *         # avoid calling nc_get_vars for strided slices by default.
*/
  }

  /* "netCDF4/_netCDF4.pyx":4472
 *         # in 4.6.2.
 *         # always use nc_get_vars for strided access with OpenDAP (issue #838).
 *         if __netcdf4libversion__ >= "4.6.2" or\             # <<<<<<<<<<<<<<
 *            self._grp.filepath().startswith('http'):
 *             self._use_get_vars = True
*/
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_netcdf4libversion); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4472, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = PyObject_RichCompare(__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_4_6_2, Py_GE); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4472, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 4472, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (!__pyx_t_7) {
  } else {
    __pyx_t_6 = __pyx_t_7;
    goto __pyx_L194_bool_binop_done;
  }

  /* "netCDF4/_netCDF4.pyx":4473
 *         # always use nc_get_vars for strided access with OpenDAP (issue #838).
 *         if __netcdf4libversion__ >= "4.6.2" or\
 *            self._grp.filepath().startswith('http'):             # <<<<<<<<<<<<<<
 *             self._use_get_vars = True
 *         else:
*/
  __pyx_t_10 = __pyx_v_self->_grp;
  __Pyx_INCREF(__pyx_t_10);
  __pyx_t_8 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_10, NULL};
    __pyx_t_14 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_filepath, __pyx_callargs+__pyx_t_8, (1-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
    if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 4473, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
  }
  __pyx_t_3 = __pyx_t_14;
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_8 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_n_u_http};
    __pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_startswith, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4473, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 4473, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_6 = __pyx_t_7;
  __pyx_L194_bool_binop_done:;

  /* "netCDF4/_netCDF4.pyx":4472
 *         # in 4.6.2.
 *         # always use nc_get_vars for strided access with OpenDAP (issue #838).
 *         if __netcdf4libversion__ >= "4.6.2" or\             # <<<<<<<<<<<<<<
 *            self._grp.filepath().startswith('http'):
 *             self._use_get_vars = True
*/
  if (__pyx_t_6) {

    /* "netCDF4/_netCDF4.pyx":4474
 *         if __netcdf4libversion__ >= "4.6.2" or\
 *            self._grp.filepath().startswith('http'):
 *             self._use_get_vars = True             # <<<<<<<<<<<<<<
 *         else:
 *             self._use_get_vars = False
*/
    __Pyx_INCREF(Py_True);
    __Pyx_GIVEREF(Py_True);
    __Pyx_GOTREF(__pyx_v_self->_use_get_vars);
    __Pyx_DECREF(__pyx_v_self->_use_get_vars);
    __pyx_v_self->_use_get_vars = Py_True;

    /* "netCDF4/_netCDF4.pyx":4472
 *         # in 4.6.2.
 *         # always use nc_get_vars for strided access with OpenDAP (issue #838).
 *         if __netcdf4libversion__ >= "4.6.2" or\             # <<<<<<<<<<<<<<
 *            self._grp.filepath().startswith('http'):
 *             self._use_get_vars = True
*/
    goto __pyx_L193;
  }

  /* "netCDF4/_netCDF4.pyx":4476
 *             self._use_get_vars = True
 *         else:
 *             self._use_get_vars = False             # <<<<<<<<<<<<<<
 * 
 *     def _fix_complex_numbers(self):
*/
  /*else*/ {
    __Pyx_INCREF(Py_False);
    __Pyx_GIVEREF(Py_False);
    __Pyx_GOTREF(__pyx_v_self->_use_get_vars);
    __Pyx_DECREF(__pyx_v_self->_use_get_vars);
    __pyx_v_self->_use_get_vars = Py_False;
  }
  __pyx_L193:;

  /* "netCDF4/_netCDF4.pyx":3913
 *     __orthogonal_indexing__, _has_lsd, _use_get_vars, _ncstring_attrs__, auto_complex
 * 
 *     def __init__(self, grp, name, datatype, dimensions=(),             # <<<<<<<<<<<<<<
 *             compression=None, zlib=False,
 *             complevel=4, shuffle=True, szip_coding='nn', szip_pixels_per_block=8,
*/

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_XDECREF(__pyx_t_27);
  __Pyx_AddTraceback("netCDF4._netCDF4.Variable.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_error_info);
  __Pyx_XDECREF(__pyx_v_user_type);
  __Pyx_XDECREF(__pyx_v_is_complex);
  __Pyx_XDECREF(__pyx_v_dtype_endian);
  __Pyx_XDECREF(__pyx_v_bytestr);
  __Pyx_XDECREF(__pyx_v_msg);
  __Pyx_XDECREF(__pyx_v_fillval);
  __Pyx_XDECREF(__pyx_v_dim);
  __Pyx_XDECREF(__pyx_v_datatype);
  __Pyx_XDECREF(__pyx_v_compression);
  __Pyx_XDECREF(__pyx_v_zlib);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":4478
 *             self._use_get_vars = False
 * 
 *     def _fix_complex_numbers(self):             # <<<<<<<<<<<<<<
 *         cdef char name[NC_MAX_NAME + 1]
 *         cdef int complex_typeid, complex_dim_id
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_3_fix_complex_numbers(PyObject *__pyx_v_self, 
#if 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_7netCDF4_8_netCDF4_8Variable_3_fix_complex_numbers = {"_fix_complex_numbers", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_8Variable_3_fix_complex_numbers, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_3_fix_complex_numbers(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_fix_complex_numbers (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("_fix_complex_numbers", 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("_fix_complex_numbers", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_8Variable_2_fix_complex_numbers(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_2_fix_complex_numbers(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self) {
  char __pyx_v_name[(NC_MAX_NAME + 1)];
  int __pyx_v_complex_typeid;
  int __pyx_v_complex_dim_id;
  PyObject *__pyx_v_error_info = NULL;
  int __pyx_v_ierr;
  PyObject *__pyx_v_np_complex_type = NULL;
  PyObject *__pyx_v_compound_complex_type = NULL;
  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[5];
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  size_t __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9[3];
  Py_ssize_t __pyx_t_10;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_fix_complex_numbers", 0);

  /* "netCDF4/_netCDF4.pyx":4482
 *         cdef int complex_typeid, complex_dim_id
 * 
 *         error_info = f"(variable '{name}', group '{self._grp.name}')"             # <<<<<<<<<<<<<<
 * 
 *         if <bint>pfnc_var_is_complex_type(self._grpid, self._varid):
*/
  __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4482, __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(0, 4482, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_grp, __pyx_mstate_global->__pyx_n_u_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4482, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_FormatSimple(__pyx_t_1, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4482, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_4[0] = __pyx_mstate_global->__pyx_kp_u_variable;
  __pyx_t_4[1] = __pyx_t_2;
  __pyx_t_4[2] = __pyx_mstate_global->__pyx_kp_u_group;
  __pyx_t_4[3] = __pyx_t_3;
  __pyx_t_4[4] = __pyx_mstate_global->__pyx_kp_u__17;
  __pyx_t_1 = __Pyx_PyUnicode_Join(__pyx_t_4, 5, 11 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_2) + 10 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3) + 2, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3));
  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4482, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_error_info = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":4484
 *         error_info = f"(variable '{name}', group '{self._grp.name}')"
 * 
 *         if <bint>pfnc_var_is_complex_type(self._grpid, self._varid):             # <<<<<<<<<<<<<<
 *             self._isprimitive = False
 *             self._iscompound = True
*/
  __pyx_t_5 = pfnc_var_is_complex_type(__pyx_v_self->_grpid, __pyx_v_self->_varid);
  if (__pyx_t_5) {

    /* "netCDF4/_netCDF4.pyx":4485
 * 
 *         if <bint>pfnc_var_is_complex_type(self._grpid, self._varid):
 *             self._isprimitive = False             # <<<<<<<<<<<<<<
 *             self._iscompound = True
 *             with nogil:
*/
    __Pyx_INCREF(Py_False);
    __Pyx_GIVEREF(Py_False);
    __Pyx_GOTREF(__pyx_v_self->_isprimitive);
    __Pyx_DECREF(__pyx_v_self->_isprimitive);
    __pyx_v_self->_isprimitive = Py_False;

    /* "netCDF4/_netCDF4.pyx":4486
 *         if <bint>pfnc_var_is_complex_type(self._grpid, self._varid):
 *             self._isprimitive = False
 *             self._iscompound = True             # <<<<<<<<<<<<<<
 *             with nogil:
 *                 ierr = pfnc_inq_var_complex_base_type(self._grpid, self._varid, &complex_typeid)
*/
    __Pyx_INCREF(Py_True);
    __Pyx_GIVEREF(Py_True);
    __Pyx_GOTREF(__pyx_v_self->_iscompound);
    __Pyx_DECREF(__pyx_v_self->_iscompound);
    __pyx_v_self->_iscompound = Py_True;

    /* "netCDF4/_netCDF4.pyx":4487
 *             self._isprimitive = False
 *             self._iscompound = True
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 ierr = pfnc_inq_var_complex_base_type(self._grpid, self._varid, &complex_typeid)
 *             _ensure_nc_success(ierr, extra_msg=error_info)
*/
    {
        PyThreadState * _save;
        _save = PyEval_SaveThread();
        __Pyx_FastGIL_Remember();
        /*try:*/ {

          /* "netCDF4/_netCDF4.pyx":4488
 *             self._iscompound = True
 *             with nogil:
 *                 ierr = pfnc_inq_var_complex_base_type(self._grpid, self._varid, &complex_typeid)             # <<<<<<<<<<<<<<
 *             _ensure_nc_success(ierr, extra_msg=error_info)
 * 
*/
          __pyx_v_ierr = pfnc_inq_var_complex_base_type(__pyx_v_self->_grpid, __pyx_v_self->_varid, (&__pyx_v_complex_typeid));
        }

        /* "netCDF4/_netCDF4.pyx":4487
 *             self._isprimitive = False
 *             self._iscompound = True
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 ierr = pfnc_inq_var_complex_base_type(self._grpid, self._varid, &complex_typeid)
 *             _ensure_nc_success(ierr, extra_msg=error_info)
*/
        /*finally:*/ {
          /*normal exit:*/{
            __Pyx_FastGIL_Forget();
            PyEval_RestoreThread(_save);
            goto __pyx_L6;
          }
          __pyx_L6:;
        }
    }

    /* "netCDF4/_netCDF4.pyx":4489
 *             with nogil:
 *                 ierr = pfnc_inq_var_complex_base_type(self._grpid, self._varid, &complex_typeid)
 *             _ensure_nc_success(ierr, extra_msg=error_info)             # <<<<<<<<<<<<<<
 * 
 *             np_complex_type = _nctonptype[complex_typeid]
*/
    __pyx_t_3 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4489, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_6 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4489, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
      assert(__pyx_t_3);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_2, __pyx__function);
      __pyx_t_7 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_3, __pyx_t_6};
      __pyx_t_8 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4489, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_extra_msg, __pyx_v_error_info, __pyx_t_8, __pyx_callargs+2, 0) < (0)) __PYX_ERR(0, 4489, __pyx_L1_error)
      __pyx_t_1 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_t_2, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_8);
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4489, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":4491
 *             _ensure_nc_success(ierr, extra_msg=error_info)
 * 
 *             np_complex_type = _nctonptype[complex_typeid]             # <<<<<<<<<<<<<<
 *             compound_complex_type = f"{np_complex_type}, {np_complex_type}"
 * 
*/
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_nctonptype); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4491, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, __pyx_v_complex_typeid, int, 1, __Pyx_PyLong_From_int, 0, 1, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4491, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_v_np_complex_type = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "netCDF4/_netCDF4.pyx":4492
 * 
 *             np_complex_type = _nctonptype[complex_typeid]
 *             compound_complex_type = f"{np_complex_type}, {np_complex_type}"             # <<<<<<<<<<<<<<
 * 
 *             self._cmptype = CompoundType(
*/
    __pyx_t_2 = __Pyx_PyObject_FormatSimple(__pyx_v_np_complex_type, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4492, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = __Pyx_PyObject_FormatSimple(__pyx_v_np_complex_type, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4492, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_9[0] = __pyx_t_2;
    __pyx_t_9[1] = __pyx_mstate_global->__pyx_kp_u__14;
    __pyx_t_9[2] = __pyx_t_1;
    __pyx_t_8 = __Pyx_PyUnicode_Join(__pyx_t_9, 3, __Pyx_PyUnicode_GET_LENGTH(__pyx_t_2) + 2 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_1), 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1));
    if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4492, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_v_compound_complex_type = ((PyObject*)__pyx_t_8);
    __pyx_t_8 = 0;

    /* "netCDF4/_netCDF4.pyx":4494
 *             compound_complex_type = f"{np_complex_type}, {np_complex_type}"
 * 
 *             self._cmptype = CompoundType(             # <<<<<<<<<<<<<<
 *                 self._grp, compound_complex_type, "complex", typeid=complex_typeid
 *             )
*/
    __pyx_t_1 = NULL;

    /* "netCDF4/_netCDF4.pyx":4495
 * 
 *             self._cmptype = CompoundType(
 *                 self._grp, compound_complex_type, "complex", typeid=complex_typeid             # <<<<<<<<<<<<<<
 *             )
 *         else:
*/
    __pyx_t_2 = __Pyx_PyLong_From_int(__pyx_v_complex_typeid); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4495, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_7 = 1;
    {
      PyObject *__pyx_callargs[4 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_1, __pyx_v_self->_grp, __pyx_v_compound_complex_type, __pyx_mstate_global->__pyx_n_u_complex};
      __pyx_t_6 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4494, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_typeid, __pyx_t_2, __pyx_t_6, __pyx_callargs+4, 0) < (0)) __PYX_ERR(0, 4494, __pyx_L1_error)
      __pyx_t_8 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_CompoundType, __pyx_callargs+__pyx_t_7, (4-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_6);
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4494, __pyx_L1_error)
      __Pyx_GOTREF((PyObject *)__pyx_t_8);
    }

    /* "netCDF4/_netCDF4.pyx":4494
 *             compound_complex_type = f"{np_complex_type}, {np_complex_type}"
 * 
 *             self._cmptype = CompoundType(             # <<<<<<<<<<<<<<
 *                 self._grp, compound_complex_type, "complex", typeid=complex_typeid
 *             )
*/
    __Pyx_GIVEREF((PyObject *)__pyx_t_8);
    __Pyx_GOTREF(__pyx_v_self->_cmptype);
    __Pyx_DECREF(__pyx_v_self->_cmptype);
    __pyx_v_self->_cmptype = ((PyObject *)__pyx_t_8);
    __pyx_t_8 = 0;

    /* "netCDF4/_netCDF4.pyx":4484
 *         error_info = f"(variable '{name}', group '{self._grp.name}')"
 * 
 *         if <bint>pfnc_var_is_complex_type(self._grpid, self._varid):             # <<<<<<<<<<<<<<
 *             self._isprimitive = False
 *             self._iscompound = True
*/
    goto __pyx_L3;
  }

  /* "netCDF4/_netCDF4.pyx":4498
 *             )
 *         else:
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 ierr = pfnc_get_complex_dim(self._grpid, &complex_dim_id)
 *             _ensure_nc_success(ierr, extra_msg=error_info)
*/
  /*else*/ {
    {
        PyThreadState * _save;
        _save = PyEval_SaveThread();
        __Pyx_FastGIL_Remember();
        /*try:*/ {

          /* "netCDF4/_netCDF4.pyx":4499
 *         else:
 *             with nogil:
 *                 ierr = pfnc_get_complex_dim(self._grpid, &complex_dim_id)             # <<<<<<<<<<<<<<
 *             _ensure_nc_success(ierr, extra_msg=error_info)
 *             with nogil:
*/
          __pyx_v_ierr = pfnc_get_complex_dim(__pyx_v_self->_grpid, (&__pyx_v_complex_dim_id));
        }

        /* "netCDF4/_netCDF4.pyx":4498
 *             )
 *         else:
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 ierr = pfnc_get_complex_dim(self._grpid, &complex_dim_id)
 *             _ensure_nc_success(ierr, extra_msg=error_info)
*/
        /*finally:*/ {
          /*normal exit:*/{
            __Pyx_FastGIL_Forget();
            PyEval_RestoreThread(_save);
            goto __pyx_L9;
          }
          __pyx_L9:;
        }
    }

    /* "netCDF4/_netCDF4.pyx":4500
 *             with nogil:
 *                 ierr = pfnc_get_complex_dim(self._grpid, &complex_dim_id)
 *             _ensure_nc_success(ierr, extra_msg=error_info)             # <<<<<<<<<<<<<<
 *             with nogil:
 *                 ierr = nc_inq_dimname(self._grpid, complex_dim_id, name)
*/
    __pyx_t_6 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4500, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4500, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_7 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
      assert(__pyx_t_6);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_2, __pyx__function);
      __pyx_t_7 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_6, __pyx_t_1};
      __pyx_t_3 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4500, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_extra_msg, __pyx_v_error_info, __pyx_t_3, __pyx_callargs+2, 0) < (0)) __PYX_ERR(0, 4500, __pyx_L1_error)
      __pyx_t_8 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_t_2, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_3);
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4500, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
    }
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

    /* "netCDF4/_netCDF4.pyx":4501
 *                 ierr = pfnc_get_complex_dim(self._grpid, &complex_dim_id)
 *             _ensure_nc_success(ierr, extra_msg=error_info)
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 ierr = nc_inq_dimname(self._grpid, complex_dim_id, name)
 *             _ensure_nc_success(ierr, extra_msg=error_info)
*/
    {
        PyThreadState * _save;
        _save = PyEval_SaveThread();
        __Pyx_FastGIL_Remember();
        /*try:*/ {

          /* "netCDF4/_netCDF4.pyx":4502
 *             _ensure_nc_success(ierr, extra_msg=error_info)
 *             with nogil:
 *                 ierr = nc_inq_dimname(self._grpid, complex_dim_id, name)             # <<<<<<<<<<<<<<
 *             _ensure_nc_success(ierr, extra_msg=error_info)
 *             self._grp.dimensions[name.decode("utf-8")] = Dimension(
*/
          __pyx_v_ierr = nc_inq_dimname(__pyx_v_self->_grpid, __pyx_v_complex_dim_id, __pyx_v_name);
        }

        /* "netCDF4/_netCDF4.pyx":4501
 *                 ierr = pfnc_get_complex_dim(self._grpid, &complex_dim_id)
 *             _ensure_nc_success(ierr, extra_msg=error_info)
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 ierr = nc_inq_dimname(self._grpid, complex_dim_id, name)
 *             _ensure_nc_success(ierr, extra_msg=error_info)
*/
        /*finally:*/ {
          /*normal exit:*/{
            __Pyx_FastGIL_Forget();
            PyEval_RestoreThread(_save);
            goto __pyx_L12;
          }
          __pyx_L12:;
        }
    }

    /* "netCDF4/_netCDF4.pyx":4503
 *             with nogil:
 *                 ierr = nc_inq_dimname(self._grpid, complex_dim_id, name)
 *             _ensure_nc_success(ierr, extra_msg=error_info)             # <<<<<<<<<<<<<<
 *             self._grp.dimensions[name.decode("utf-8")] = Dimension(
 *                 self._grp, name, size=2, id=complex_dim_id
*/
    __pyx_t_2 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4503, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_1 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4503, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_7 = 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_7 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_2, __pyx_t_1};
      __pyx_t_6 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4503, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_extra_msg, __pyx_v_error_info, __pyx_t_6, __pyx_callargs+2, 0) < (0)) __PYX_ERR(0, 4503, __pyx_L1_error)
      __pyx_t_8 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_t_3, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_6);
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4503, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
    }
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

    /* "netCDF4/_netCDF4.pyx":4504
 *                 ierr = nc_inq_dimname(self._grpid, complex_dim_id, name)
 *             _ensure_nc_success(ierr, extra_msg=error_info)
 *             self._grp.dimensions[name.decode("utf-8")] = Dimension(             # <<<<<<<<<<<<<<
 *                 self._grp, name, size=2, id=complex_dim_id
 *             )
*/
    __pyx_t_3 = NULL;

    /* "netCDF4/_netCDF4.pyx":4505
 *             _ensure_nc_success(ierr, extra_msg=error_info)
 *             self._grp.dimensions[name.decode("utf-8")] = Dimension(
 *                 self._grp, name, size=2, id=complex_dim_id             # <<<<<<<<<<<<<<
 *             )
 * 
*/
    __pyx_t_6 = __Pyx_PyBytes_FromString(__pyx_v_name); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4505, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_1 = __Pyx_PyLong_From_int(__pyx_v_complex_dim_id); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4505, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_7 = 1;
    {
      PyObject *__pyx_callargs[3 + ((CYTHON_VECTORCALL) ? 2 : 0)] = {__pyx_t_3, __pyx_v_self->_grp, __pyx_t_6};
      __pyx_t_2 = __Pyx_MakeVectorcallBuilderKwds(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4504, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_size, __pyx_mstate_global->__pyx_int_2, __pyx_t_2, __pyx_callargs+3, 0) < (0)) __PYX_ERR(0, 4504, __pyx_L1_error)
      if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_id, __pyx_t_1, __pyx_t_2, __pyx_callargs+3, 1) < (0)) __PYX_ERR(0, 4504, __pyx_L1_error)
      __pyx_t_8 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Dimension, __pyx_callargs+__pyx_t_7, (3-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_2);
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4504, __pyx_L1_error)
      __Pyx_GOTREF((PyObject *)__pyx_t_8);
    }

    /* "netCDF4/_netCDF4.pyx":4504
 *                 ierr = nc_inq_dimname(self._grpid, complex_dim_id, name)
 *             _ensure_nc_success(ierr, extra_msg=error_info)
 *             self._grp.dimensions[name.decode("utf-8")] = Dimension(             # <<<<<<<<<<<<<<
 *                 self._grp, name, size=2, id=complex_dim_id
 *             )
*/
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_grp, __pyx_mstate_global->__pyx_n_u_dimensions); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4504, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_10 = __Pyx_ssize_strlen(__pyx_v_name); if (unlikely(__pyx_t_10 == ((Py_ssize_t)-1))) __PYX_ERR(0, 4504, __pyx_L1_error)
    __pyx_t_1 = __Pyx_decode_c_string(__pyx_v_name, 0, __pyx_t_10, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4504, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    if (unlikely((PyObject_SetItem(__pyx_t_2, __pyx_t_1, ((PyObject *)__pyx_t_8)) < 0))) __PYX_ERR(0, 4504, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF((PyObject *)__pyx_t_8); __pyx_t_8 = 0;
  }
  __pyx_L3:;

  /* "netCDF4/_netCDF4.pyx":4478
 *             self._use_get_vars = False
 * 
 *     def _fix_complex_numbers(self):             # <<<<<<<<<<<<<<
 *         cdef char name[NC_MAX_NAME + 1]
 *         cdef int complex_typeid, complex_dim_id
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("netCDF4._netCDF4.Variable._fix_complex_numbers", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_error_info);
  __Pyx_XDECREF(__pyx_v_np_complex_type);
  __Pyx_XDECREF(__pyx_v_compound_complex_type);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":4508
 *             )
 * 
 *     def __array__(self):             # <<<<<<<<<<<<<<
 *         # numpy special method that returns a numpy array.
 *         # allows numpy ufuncs to work faster on Variable objects
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_5__array__(PyObject *__pyx_v_self, 
#if 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_7netCDF4_8_netCDF4_8Variable_5__array__ = {"__array__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_8Variable_5__array__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_5__array__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__array__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__array__", 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("__array__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_8Variable_4__array__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_4__array__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__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("__array__", 0);

  /* "netCDF4/_netCDF4.pyx":4512
 *         # allows numpy ufuncs to work faster on Variable objects
 *         # (issue 216).
 *         return self[...]             # <<<<<<<<<<<<<<
 * 
 *     def __repr__(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self), Py_Ellipsis); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4512, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":4508
 *             )
 * 
 *     def __array__(self):             # <<<<<<<<<<<<<<
 *         # numpy special method that returns a numpy array.
 *         # allows numpy ufuncs to work faster on Variable objects
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("netCDF4._netCDF4.Variable.__array__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":4514
 *         return self[...]
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return self.__str__()
 * 
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_7__repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_7__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_7netCDF4_8_netCDF4_8Variable_6__repr__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_6__repr__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__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("__repr__", 0);

  /* "netCDF4/_netCDF4.pyx":4515
 * 
 *     def __repr__(self):
 *         return self.__str__()             # <<<<<<<<<<<<<<
 * 
 *     def __str__(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_str_2, __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(0, 4515, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":4514
 *         return self[...]
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return self.__str__()
 * 
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("netCDF4._netCDF4.Variable.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":4517
 *         return self.__str__()
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         cdef int ierr, no_fill
 *         if not dir(self._grp):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_9__str__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_9__str__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__str__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_8Variable_8__str__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_7netCDF4_8_netCDF4_8Variable_7__str___2generator5(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "netCDF4/_netCDF4.pyx":4532
 *             show_more_dtype = False
 *             kind = str(self.dtype)
 *         dimnames = tuple(_tostr(dimname) for dimname in self.dimensions)             # <<<<<<<<<<<<<<
 *         ncdump.append('%s %s(%s)' %\
 *             (kind, self._name, ', '.join(dimnames)))
*/

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_7__str___genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_8_genexpr *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("genexpr", 0);
  __pyx_cur_scope = (struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_8_genexpr *)__pyx_tp_new_7netCDF4_8_netCDF4___pyx_scope_struct_8_genexpr(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_8_genexpr, __pyx_mstate_global->__pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_8_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(0, 4532, __pyx_L1_error)
  } else {
    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_genexpr_arg_0 = __pyx_genexpr_arg_0;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_genexpr_arg_0);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_genexpr_arg_0);
  {
    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_7netCDF4_8_netCDF4_8Variable_7__str___2generator5, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[5]), (PyObject *) __pyx_cur_scope, __pyx_mstate_global->__pyx_n_u_genexpr, __pyx_mstate_global->__pyx_n_u_str___locals_genexpr, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4); if (unlikely(!gen)) __PYX_ERR(0, 4532, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("netCDF4._netCDF4.Variable.__str__.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_7netCDF4_8_netCDF4_8Variable_7__str___2generator5(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_8_genexpr *__pyx_cur_scope = ((struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_8_genexpr *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  PyObject *(*__pyx_t_3)(PyObject *);
  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_RefNannyDeclarations
  __Pyx_RefNannySetupContext("genexpr", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    case 1: goto __pyx_L6_resume_from_yield;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(__pyx_sent_value != Py_None)) {
    if (unlikely(__pyx_sent_value)) PyErr_SetString(PyExc_TypeError, "can't send non-None value to a just-started generator");
    __PYX_ERR(0, 4532, __pyx_L1_error)
  }
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(0, 4532, __pyx_L1_error) }
  if (likely(PyList_CheckExact(__pyx_cur_scope->__pyx_genexpr_arg_0)) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_genexpr_arg_0)) {
    __pyx_t_1 = __pyx_cur_scope->__pyx_genexpr_arg_0; __Pyx_INCREF(__pyx_t_1);
    __pyx_t_2 = 0;
    __pyx_t_3 = NULL;
  } else {
    __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_cur_scope->__pyx_genexpr_arg_0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4532, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4532, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 4532, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) break;
        }
        __pyx_t_4 = __Pyx_PyList_GetItemRefFast(__pyx_t_1, __pyx_t_2, __Pyx_ReferenceSharing_OwnStrongReference);
        ++__pyx_t_2;
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 4532, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2));
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2);
        #endif
        ++__pyx_t_2;
      }
      if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4532, __pyx_L1_error)
    } else {
      __pyx_t_4 = __pyx_t_3(__pyx_t_1);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 4532, __pyx_L1_error)
          PyErr_Clear();
        }
        break;
      }
    }
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_dimname);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_dimname, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_5 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_tostr); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4532, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = 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_7 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_cur_scope->__pyx_v_dimname};
      __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_6, __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_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4532, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
    }
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    __Pyx_XGIVEREF(__pyx_t_1);
    __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
    __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
    __pyx_cur_scope->__pyx_t_2 = __pyx_t_3;
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
    /* return from generator, yielding value */
    __pyx_generator->resume_label = 1;
    return __pyx_r;
    __pyx_L6_resume_from_yield:;
    __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
    __pyx_cur_scope->__pyx_t_0 = 0;
    __Pyx_XGOTREF(__pyx_t_1);
    __pyx_t_2 = __pyx_cur_scope->__pyx_t_1;
    __pyx_t_3 = __pyx_cur_scope->__pyx_t_2;
    if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 4532, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);

  /* 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_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  if (__Pyx_PyErr_Occurred()) {
    __Pyx_Generator_Replace_StopIteration(0);
    __Pyx_AddTraceback("genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  }
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  #if !CYTHON_USE_EXC_INFO_STACK
  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
  #endif
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":4517
 *         return self.__str__()
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         cdef int ierr, no_fill
 *         if not dir(self._grp):
*/

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_8__str__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self) {
  int __pyx_v_ierr;
  int __pyx_v_no_fill;
  PyObject *__pyx_v_ncdump = NULL;
  int __pyx_v_show_more_dtype;
  PyObject *__pyx_v_kind = NULL;
  PyObject *__pyx_v_dimnames = NULL;
  PyObject *__pyx_v_name = NULL;
  PyObject *__pyx_v_unlimdims = NULL;
  PyObject *__pyx_v_dimname = NULL;
  PyObject *__pyx_v_dim = NULL;
  PyObject *__pyx_v_fillval = NULL;
  PyObject *__pyx_v_msg = NULL;
  PyObject *__pyx_gb_7netCDF4_8_netCDF4_8Variable_7__str___2generator5 = 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[6];
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  size_t __pyx_t_8;
  Py_ssize_t __pyx_t_9;
  PyObject *(*__pyx_t_10)(PyObject *);
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12[4];
  PyObject *__pyx_t_13[3];
  PyObject *__pyx_t_14 = NULL;
  PyObject *__pyx_t_15 = NULL;
  PyObject *__pyx_t_16 = NULL;
  int __pyx_t_17;
  PyObject *__pyx_t_18 = NULL;
  PyObject *__pyx_t_19 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__str__", 0);

  /* "netCDF4/_netCDF4.pyx":4519
 *     def __str__(self):
 *         cdef int ierr, no_fill
 *         if not dir(self._grp):             # <<<<<<<<<<<<<<
 *             return 'Variable object no longer valid'
 *         ncdump = [repr(type(self)).replace("._netCDF4", "")]
*/
  __pyx_t_1 = __pyx_v_self->_grp;
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Dir(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4519, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 4519, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = (!__pyx_t_3);
  if (__pyx_t_4) {

    /* "netCDF4/_netCDF4.pyx":4520
 *         cdef int ierr, no_fill
 *         if not dir(self._grp):
 *             return 'Variable object no longer valid'             # <<<<<<<<<<<<<<
 *         ncdump = [repr(type(self)).replace("._netCDF4", "")]
 *         show_more_dtype = True
*/
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u_Variable_object_no_longer_valid);
    __pyx_r = __pyx_mstate_global->__pyx_kp_u_Variable_object_no_longer_valid;
    goto __pyx_L0;

    /* "netCDF4/_netCDF4.pyx":4519
 *     def __str__(self):
 *         cdef int ierr, no_fill
 *         if not dir(self._grp):             # <<<<<<<<<<<<<<
 *             return 'Variable object no longer valid'
 *         ncdump = [repr(type(self)).replace("._netCDF4", "")]
*/
  }

  /* "netCDF4/_netCDF4.pyx":4521
 *         if not dir(self._grp):
 *             return 'Variable object no longer valid'
 *         ncdump = [repr(type(self)).replace("._netCDF4", "")]             # <<<<<<<<<<<<<<
 *         show_more_dtype = True
 *         if self._iscompound:
*/
  __pyx_t_2 = PyObject_Repr(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4521, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (unlikely(__pyx_t_2 == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "replace");
    __PYX_ERR(0, 4521, __pyx_L1_error)
  }
  __pyx_t_1 = PyUnicode_Replace(((PyObject*)__pyx_t_2), __pyx_mstate_global->__pyx_kp_u_netCDF4, __pyx_mstate_global->__pyx_kp_u__4, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4521, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4521, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_t_1) != (0)) __PYX_ERR(0, 4521, __pyx_L1_error);
  __pyx_t_1 = 0;
  __pyx_v_ncdump = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":4522
 *             return 'Variable object no longer valid'
 *         ncdump = [repr(type(self)).replace("._netCDF4", "")]
 *         show_more_dtype = True             # <<<<<<<<<<<<<<
 *         if self._iscompound:
 *             kind = 'compound'
*/
  __pyx_v_show_more_dtype = 1;

  /* "netCDF4/_netCDF4.pyx":4523
 *         ncdump = [repr(type(self)).replace("._netCDF4", "")]
 *         show_more_dtype = True
 *         if self._iscompound:             # <<<<<<<<<<<<<<
 *             kind = 'compound'
 *         elif self._isvlen:
*/
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_self->_iscompound); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 4523, __pyx_L1_error)
  if (__pyx_t_4) {

    /* "netCDF4/_netCDF4.pyx":4524
 *         show_more_dtype = True
 *         if self._iscompound:
 *             kind = 'compound'             # <<<<<<<<<<<<<<
 *         elif self._isvlen:
 *             kind = 'vlen'
*/
    __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_compound);
    __pyx_v_kind = __pyx_mstate_global->__pyx_n_u_compound;

    /* "netCDF4/_netCDF4.pyx":4523
 *         ncdump = [repr(type(self)).replace("._netCDF4", "")]
 *         show_more_dtype = True
 *         if self._iscompound:             # <<<<<<<<<<<<<<
 *             kind = 'compound'
 *         elif self._isvlen:
*/
    goto __pyx_L4;
  }

  /* "netCDF4/_netCDF4.pyx":4525
 *         if self._iscompound:
 *             kind = 'compound'
 *         elif self._isvlen:             # <<<<<<<<<<<<<<
 *             kind = 'vlen'
 *         elif self._isenum:
*/
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_self->_isvlen); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 4525, __pyx_L1_error)
  if (__pyx_t_4) {

    /* "netCDF4/_netCDF4.pyx":4526
 *             kind = 'compound'
 *         elif self._isvlen:
 *             kind = 'vlen'             # <<<<<<<<<<<<<<
 *         elif self._isenum:
 *             kind = 'enum'
*/
    __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_vlen);
    __pyx_v_kind = __pyx_mstate_global->__pyx_n_u_vlen;

    /* "netCDF4/_netCDF4.pyx":4525
 *         if self._iscompound:
 *             kind = 'compound'
 *         elif self._isvlen:             # <<<<<<<<<<<<<<
 *             kind = 'vlen'
 *         elif self._isenum:
*/
    goto __pyx_L4;
  }

  /* "netCDF4/_netCDF4.pyx":4527
 *         elif self._isvlen:
 *             kind = 'vlen'
 *         elif self._isenum:             # <<<<<<<<<<<<<<
 *             kind = 'enum'
 *         else:
*/
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_self->_isenum); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 4527, __pyx_L1_error)
  if (__pyx_t_4) {

    /* "netCDF4/_netCDF4.pyx":4528
 *             kind = 'vlen'
 *         elif self._isenum:
 *             kind = 'enum'             # <<<<<<<<<<<<<<
 *         else:
 *             show_more_dtype = False
*/
    __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_enum);
    __pyx_v_kind = __pyx_mstate_global->__pyx_n_u_enum;

    /* "netCDF4/_netCDF4.pyx":4527
 *         elif self._isvlen:
 *             kind = 'vlen'
 *         elif self._isenum:             # <<<<<<<<<<<<<<
 *             kind = 'enum'
 *         else:
*/
    goto __pyx_L4;
  }

  /* "netCDF4/_netCDF4.pyx":4530
 *             kind = 'enum'
 *         else:
 *             show_more_dtype = False             # <<<<<<<<<<<<<<
 *             kind = str(self.dtype)
 *         dimnames = tuple(_tostr(dimname) for dimname in self.dimensions)
*/
  /*else*/ {
    __pyx_v_show_more_dtype = 0;

    /* "netCDF4/_netCDF4.pyx":4531
 *         else:
 *             show_more_dtype = False
 *             kind = str(self.dtype)             # <<<<<<<<<<<<<<
 *         dimnames = tuple(_tostr(dimname) for dimname in self.dimensions)
 *         ncdump.append('%s %s(%s)' %\
*/
    __pyx_t_2 = __Pyx_PyObject_Unicode(__pyx_v_self->dtype); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4531, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_v_kind = ((PyObject*)__pyx_t_2);
    __pyx_t_2 = 0;
  }
  __pyx_L4:;

  /* "netCDF4/_netCDF4.pyx":4532
 *             show_more_dtype = False
 *             kind = str(self.dtype)
 *         dimnames = tuple(_tostr(dimname) for dimname in self.dimensions)             # <<<<<<<<<<<<<<
 *         ncdump.append('%s %s(%s)' %\
 *             (kind, self._name, ', '.join(dimnames)))
*/
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_dimensions); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4532, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __pyx_pf_7netCDF4_8_netCDF4_8Variable_7__str___genexpr(NULL, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4532, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PySequence_Tuple(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4532, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_dimnames = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":4534
 *         dimnames = tuple(_tostr(dimname) for dimname in self.dimensions)
 *         ncdump.append('%s %s(%s)' %\
 *             (kind, self._name, ', '.join(dimnames)))             # <<<<<<<<<<<<<<
 *         for name in self.ncattrs():
 *             ncdump.append('    %s: %s' % (name, self.getncattr(name)))
*/
  __pyx_t_2 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Str(__pyx_v_self->_name), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4534, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = PyUnicode_Join(__pyx_mstate_global->__pyx_kp_u__14, __pyx_v_dimnames); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4534, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5[0] = __pyx_v_kind;
  __pyx_t_5[1] = __pyx_mstate_global->__pyx_kp_u__8;
  __pyx_t_5[2] = __pyx_t_2;
  __pyx_t_5[3] = __pyx_mstate_global->__pyx_kp_u__19;
  __pyx_t_5[4] = __pyx_t_1;
  __pyx_t_5[5] = __pyx_mstate_global->__pyx_kp_u__2;

  /* "netCDF4/_netCDF4.pyx":4533
 *             kind = str(self.dtype)
 *         dimnames = tuple(_tostr(dimname) for dimname in self.dimensions)
 *         ncdump.append('%s %s(%s)' %\             # <<<<<<<<<<<<<<
 *             (kind, self._name, ', '.join(dimnames)))
 *         for name in self.ncattrs():
*/
  __pyx_t_6 = __Pyx_PyUnicode_Join(__pyx_t_5, 6, __Pyx_PyUnicode_GET_LENGTH(__pyx_v_kind) + 1 * 3 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_2) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_1), 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_v_kind) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1));
  if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4533, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_7 = __Pyx_PyList_Append(__pyx_v_ncdump, __pyx_t_6); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(0, 4533, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "netCDF4/_netCDF4.pyx":4535
 *         ncdump.append('%s %s(%s)' %\
 *             (kind, self._name, ', '.join(dimnames)))
 *         for name in self.ncattrs():             # <<<<<<<<<<<<<<
 *             ncdump.append('    %s: %s' % (name, self.getncattr(name)))
 *         if show_more_dtype:
*/
  __pyx_t_1 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_8 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_1, NULL};
    __pyx_t_6 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_ncattrs, __pyx_callargs+__pyx_t_8, (1-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4535, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
  }
  if (likely(PyList_CheckExact(__pyx_t_6)) || PyTuple_CheckExact(__pyx_t_6)) {
    __pyx_t_1 = __pyx_t_6; __Pyx_INCREF(__pyx_t_1);
    __pyx_t_9 = 0;
    __pyx_t_10 = NULL;
  } else {
    __pyx_t_9 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4535, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_10 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4535, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  for (;;) {
    if (likely(!__pyx_t_10)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 4535, __pyx_L1_error)
          #endif
          if (__pyx_t_9 >= __pyx_temp) break;
        }
        __pyx_t_6 = __Pyx_PyList_GetItemRefFast(__pyx_t_1, __pyx_t_9, __Pyx_ReferenceSharing_OwnStrongReference);
        ++__pyx_t_9;
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 4535, __pyx_L1_error)
          #endif
          if (__pyx_t_9 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_6 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_9));
        #else
        __pyx_t_6 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_9);
        #endif
        ++__pyx_t_9;
      }
      if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4535, __pyx_L1_error)
    } else {
      __pyx_t_6 = __pyx_t_10(__pyx_t_1);
      if (unlikely(!__pyx_t_6)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 4535, __pyx_L1_error)
          PyErr_Clear();
        }
        break;
      }
    }
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_6);
    __pyx_t_6 = 0;

    /* "netCDF4/_netCDF4.pyx":4536
 *             (kind, self._name, ', '.join(dimnames)))
 *         for name in self.ncattrs():
 *             ncdump.append('    %s: %s' % (name, self.getncattr(name)))             # <<<<<<<<<<<<<<
 *         if show_more_dtype:
 *             ncdump.append('%s data type: %s' % (kind, self.dtype))
*/
    __pyx_t_6 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Str(__pyx_v_name), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4536, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_getncattr); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4536, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_11 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_name); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 4536, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Str(__pyx_t_11), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4536, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __pyx_t_12[0] = __pyx_mstate_global->__pyx_kp_u__13;
    __pyx_t_12[1] = __pyx_t_6;
    __pyx_t_12[2] = __pyx_mstate_global->__pyx_kp_u__7;
    __pyx_t_12[3] = __pyx_t_2;
    __pyx_t_11 = __Pyx_PyUnicode_Join(__pyx_t_12, 4, 4 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6) + 2 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_2), 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2));
    if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 4536, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_7 = __Pyx_PyList_Append(__pyx_v_ncdump, __pyx_t_11); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(0, 4536, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

    /* "netCDF4/_netCDF4.pyx":4535
 *         ncdump.append('%s %s(%s)' %\
 *             (kind, self._name, ', '.join(dimnames)))
 *         for name in self.ncattrs():             # <<<<<<<<<<<<<<
 *             ncdump.append('    %s: %s' % (name, self.getncattr(name)))
 *         if show_more_dtype:
*/
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":4537
 *         for name in self.ncattrs():
 *             ncdump.append('    %s: %s' % (name, self.getncattr(name)))
 *         if show_more_dtype:             # <<<<<<<<<<<<<<
 *             ncdump.append('%s data type: %s' % (kind, self.dtype))
 *         unlimdims = []
*/
  if (__pyx_v_show_more_dtype) {

    /* "netCDF4/_netCDF4.pyx":4538
 *             ncdump.append('    %s: %s' % (name, self.getncattr(name)))
 *         if show_more_dtype:
 *             ncdump.append('%s data type: %s' % (kind, self.dtype))             # <<<<<<<<<<<<<<
 *         unlimdims = []
 *         for dimname in self.dimensions:
*/
    __pyx_t_1 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Str(__pyx_v_self->dtype), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4538, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_13[0] = __pyx_v_kind;
    __pyx_t_13[1] = __pyx_mstate_global->__pyx_kp_u_data_type;
    __pyx_t_13[2] = __pyx_t_1;
    __pyx_t_11 = __Pyx_PyUnicode_Join(__pyx_t_13, 3, __Pyx_PyUnicode_GET_LENGTH(__pyx_v_kind) + 12 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_1), 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_v_kind) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1));
    if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 4538, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_7 = __Pyx_PyList_Append(__pyx_v_ncdump, __pyx_t_11); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(0, 4538, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

    /* "netCDF4/_netCDF4.pyx":4537
 *         for name in self.ncattrs():
 *             ncdump.append('    %s: %s' % (name, self.getncattr(name)))
 *         if show_more_dtype:             # <<<<<<<<<<<<<<
 *             ncdump.append('%s data type: %s' % (kind, self.dtype))
 *         unlimdims = []
*/
  }

  /* "netCDF4/_netCDF4.pyx":4539
 *         if show_more_dtype:
 *             ncdump.append('%s data type: %s' % (kind, self.dtype))
 *         unlimdims = []             # <<<<<<<<<<<<<<
 *         for dimname in self.dimensions:
 *             dim = _find_dim(self._grp, dimname)
*/
  __pyx_t_11 = PyList_New(0); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 4539, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_v_unlimdims = ((PyObject*)__pyx_t_11);
  __pyx_t_11 = 0;

  /* "netCDF4/_netCDF4.pyx":4540
 *             ncdump.append('%s data type: %s' % (kind, self.dtype))
 *         unlimdims = []
 *         for dimname in self.dimensions:             # <<<<<<<<<<<<<<
 *             dim = _find_dim(self._grp, dimname)
 *             if dim.isunlimited():
*/
  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_dimensions); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 4540, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (likely(PyList_CheckExact(__pyx_t_11)) || PyTuple_CheckExact(__pyx_t_11)) {
    __pyx_t_1 = __pyx_t_11; __Pyx_INCREF(__pyx_t_1);
    __pyx_t_9 = 0;
    __pyx_t_10 = NULL;
  } else {
    __pyx_t_9 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_11); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4540, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_10 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4540, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  for (;;) {
    if (likely(!__pyx_t_10)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 4540, __pyx_L1_error)
          #endif
          if (__pyx_t_9 >= __pyx_temp) break;
        }
        __pyx_t_11 = __Pyx_PyList_GetItemRefFast(__pyx_t_1, __pyx_t_9, __Pyx_ReferenceSharing_OwnStrongReference);
        ++__pyx_t_9;
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 4540, __pyx_L1_error)
          #endif
          if (__pyx_t_9 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_11 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_9));
        #else
        __pyx_t_11 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_9);
        #endif
        ++__pyx_t_9;
      }
      if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 4540, __pyx_L1_error)
    } else {
      __pyx_t_11 = __pyx_t_10(__pyx_t_1);
      if (unlikely(!__pyx_t_11)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 4540, __pyx_L1_error)
          PyErr_Clear();
        }
        break;
      }
    }
    __Pyx_GOTREF(__pyx_t_11);
    __Pyx_XDECREF_SET(__pyx_v_dimname, __pyx_t_11);
    __pyx_t_11 = 0;

    /* "netCDF4/_netCDF4.pyx":4541
 *         unlimdims = []
 *         for dimname in self.dimensions:
 *             dim = _find_dim(self._grp, dimname)             # <<<<<<<<<<<<<<
 *             if dim.isunlimited():
 *                 unlimdims.append(dimname)
*/
    __pyx_t_2 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_find_dim); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4541, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_8 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_6);
      assert(__pyx_t_2);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_6, __pyx__function);
      __pyx_t_8 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_v_self->_grp, __pyx_v_dimname};
      __pyx_t_11 = __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_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 4541, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_11);
    }
    __Pyx_XDECREF_SET(__pyx_v_dim, __pyx_t_11);
    __pyx_t_11 = 0;

    /* "netCDF4/_netCDF4.pyx":4542
 *         for dimname in self.dimensions:
 *             dim = _find_dim(self._grp, dimname)
 *             if dim.isunlimited():             # <<<<<<<<<<<<<<
 *                 unlimdims.append(dimname)
 *         if (self._grp.path != '/'): ncdump.append('path = %s' % self._grp.path)
*/
    __pyx_t_6 = __pyx_v_dim;
    __Pyx_INCREF(__pyx_t_6);
    __pyx_t_8 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL};
      __pyx_t_11 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_isunlimited, __pyx_callargs+__pyx_t_8, (1-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 4542, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_11);
    }
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_11); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 4542, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    if (__pyx_t_4) {

      /* "netCDF4/_netCDF4.pyx":4543
 *             dim = _find_dim(self._grp, dimname)
 *             if dim.isunlimited():
 *                 unlimdims.append(dimname)             # <<<<<<<<<<<<<<
 *         if (self._grp.path != '/'): ncdump.append('path = %s' % self._grp.path)
 *         ncdump.append('unlimited dimensions: %s' % ', '.join(unlimdims))
*/
      __pyx_t_7 = __Pyx_PyList_Append(__pyx_v_unlimdims, __pyx_v_dimname); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(0, 4543, __pyx_L1_error)

      /* "netCDF4/_netCDF4.pyx":4542
 *         for dimname in self.dimensions:
 *             dim = _find_dim(self._grp, dimname)
 *             if dim.isunlimited():             # <<<<<<<<<<<<<<
 *                 unlimdims.append(dimname)
 *         if (self._grp.path != '/'): ncdump.append('path = %s' % self._grp.path)
*/
    }

    /* "netCDF4/_netCDF4.pyx":4540
 *             ncdump.append('%s data type: %s' % (kind, self.dtype))
 *         unlimdims = []
 *         for dimname in self.dimensions:             # <<<<<<<<<<<<<<
 *             dim = _find_dim(self._grp, dimname)
 *             if dim.isunlimited():
*/
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":4544
 *             if dim.isunlimited():
 *                 unlimdims.append(dimname)
 *         if (self._grp.path != '/'): ncdump.append('path = %s' % self._grp.path)             # <<<<<<<<<<<<<<
 *         ncdump.append('unlimited dimensions: %s' % ', '.join(unlimdims))
 *         ncdump.append('current shape = %r' % (self.shape,))
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_grp, __pyx_mstate_global->__pyx_n_u_path); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4544, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_mstate_global->__pyx_kp_u__10, Py_NE)); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 4544, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_4) {
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_grp, __pyx_mstate_global->__pyx_n_u_path); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4544, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_11 = __Pyx_PyUnicode_FormatSafe(__pyx_mstate_global->__pyx_kp_u_path_s, __pyx_t_1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 4544, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_7 = __Pyx_PyList_Append(__pyx_v_ncdump, __pyx_t_11); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(0, 4544, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  }

  /* "netCDF4/_netCDF4.pyx":4545
 *                 unlimdims.append(dimname)
 *         if (self._grp.path != '/'): ncdump.append('path = %s' % self._grp.path)
 *         ncdump.append('unlimited dimensions: %s' % ', '.join(unlimdims))             # <<<<<<<<<<<<<<
 *         ncdump.append('current shape = %r' % (self.shape,))
 *         if __netcdf4libversion__ < '4.5.1' and\
*/
  __pyx_t_11 = PyUnicode_Join(__pyx_mstate_global->__pyx_kp_u__14, __pyx_v_unlimdims); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 4545, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_1 = PyUnicode_Format(__pyx_mstate_global->__pyx_kp_u_unlimited_dimensions_s, __pyx_t_11); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4545, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_7 = __Pyx_PyList_Append(__pyx_v_ncdump, __pyx_t_1); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(0, 4545, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":4546
 *         if (self._grp.path != '/'): ncdump.append('path = %s' % self._grp.path)
 *         ncdump.append('unlimited dimensions: %s' % ', '.join(unlimdims))
 *         ncdump.append('current shape = %r' % (self.shape,))             # <<<<<<<<<<<<<<
 *         if __netcdf4libversion__ < '4.5.1' and\
 *             self._grp.file_format.startswith('NETCDF3'):
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_shape); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4546, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_11 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_t_1), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 4546, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_current_shape, __pyx_t_11); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4546, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_7 = __Pyx_PyList_Append(__pyx_v_ncdump, __pyx_t_1); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(0, 4546, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":4547
 *         ncdump.append('unlimited dimensions: %s' % ', '.join(unlimdims))
 *         ncdump.append('current shape = %r' % (self.shape,))
 *         if __netcdf4libversion__ < '4.5.1' and\             # <<<<<<<<<<<<<<
 *             self._grp.file_format.startswith('NETCDF3'):
 *             # issue #908: no_fill not correct for NETCDF3 files before 4.5.1
*/
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_netcdf4libversion); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4547, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_11 = PyObject_RichCompare(__pyx_t_1, __pyx_mstate_global->__pyx_kp_u_4_5_1, Py_LT); __Pyx_XGOTREF(__pyx_t_11); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 4547, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_11); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 4547, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__pyx_t_3) {
  } else {
    __pyx_t_4 = __pyx_t_3;
    goto __pyx_L15_bool_binop_done;
  }

  /* "netCDF4/_netCDF4.pyx":4548
 *         ncdump.append('current shape = %r' % (self.shape,))
 *         if __netcdf4libversion__ < '4.5.1' and\
 *             self._grp.file_format.startswith('NETCDF3'):             # <<<<<<<<<<<<<<
 *             # issue #908: no_fill not correct for NETCDF3 files before 4.5.1
 *             # before 4.5.1 there was no way to turn off filling on a
*/
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_grp, __pyx_mstate_global->__pyx_n_u_file_format); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4548, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_1 = __pyx_t_6;
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_8 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_mstate_global->__pyx_n_u_NETCDF3};
    __pyx_t_11 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_startswith, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 4548, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
  }
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_11); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 4548, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_4 = __pyx_t_3;
  __pyx_L15_bool_binop_done:;

  /* "netCDF4/_netCDF4.pyx":4547
 *         ncdump.append('unlimited dimensions: %s' % ', '.join(unlimdims))
 *         ncdump.append('current shape = %r' % (self.shape,))
 *         if __netcdf4libversion__ < '4.5.1' and\             # <<<<<<<<<<<<<<
 *             self._grp.file_format.startswith('NETCDF3'):
 *             # issue #908: no_fill not correct for NETCDF3 files before 4.5.1
*/
  if (__pyx_t_4) {

    /* "netCDF4/_netCDF4.pyx":4552
 *             # before 4.5.1 there was no way to turn off filling on a
 *             # per-variable basis for classic files.
 *             no_fill=0             # <<<<<<<<<<<<<<
 *         else:
 *             with nogil:
*/
    __pyx_v_no_fill = 0;

    /* "netCDF4/_netCDF4.pyx":4547
 *         ncdump.append('unlimited dimensions: %s' % ', '.join(unlimdims))
 *         ncdump.append('current shape = %r' % (self.shape,))
 *         if __netcdf4libversion__ < '4.5.1' and\             # <<<<<<<<<<<<<<
 *             self._grp.file_format.startswith('NETCDF3'):
 *             # issue #908: no_fill not correct for NETCDF3 files before 4.5.1
*/
    goto __pyx_L14;
  }

  /* "netCDF4/_netCDF4.pyx":4554
 *             no_fill=0
 *         else:
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 ierr = nc_inq_var_fill(self._grpid,self._varid,&no_fill,NULL)
 *             _ensure_nc_success(ierr)
*/
  /*else*/ {
    {
        PyThreadState * _save;
        _save = PyEval_SaveThread();
        __Pyx_FastGIL_Remember();
        /*try:*/ {

          /* "netCDF4/_netCDF4.pyx":4555
 *         else:
 *             with nogil:
 *                 ierr = nc_inq_var_fill(self._grpid,self._varid,&no_fill,NULL)             # <<<<<<<<<<<<<<
 *             _ensure_nc_success(ierr)
 *         if self._isprimitive:
*/
          __pyx_v_ierr = nc_inq_var_fill(__pyx_v_self->_grpid, __pyx_v_self->_varid, (&__pyx_v_no_fill), NULL);
        }

        /* "netCDF4/_netCDF4.pyx":4554
 *             no_fill=0
 *         else:
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 ierr = nc_inq_var_fill(self._grpid,self._varid,&no_fill,NULL)
 *             _ensure_nc_success(ierr)
*/
        /*finally:*/ {
          /*normal exit:*/{
            __Pyx_FastGIL_Forget();
            PyEval_RestoreThread(_save);
            goto __pyx_L19;
          }
          __pyx_L19:;
        }
    }

    /* "netCDF4/_netCDF4.pyx":4556
 *             with nogil:
 *                 ierr = nc_inq_var_fill(self._grpid,self._varid,&no_fill,NULL)
 *             _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 *         if self._isprimitive:
 *             if no_fill != 1:
*/
    __pyx_t_6 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4556, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4556, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_8 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_1))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1);
      assert(__pyx_t_6);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_1, __pyx__function);
      __pyx_t_8 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_2};
      __pyx_t_11 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_1, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 4556, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_11);
    }
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  }
  __pyx_L14:;

  /* "netCDF4/_netCDF4.pyx":4557
 *                 ierr = nc_inq_var_fill(self._grpid,self._varid,&no_fill,NULL)
 *             _ensure_nc_success(ierr)
 *         if self._isprimitive:             # <<<<<<<<<<<<<<
 *             if no_fill != 1:
 *                 try:
*/
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_self->_isprimitive); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 4557, __pyx_L1_error)
  if (__pyx_t_4) {

    /* "netCDF4/_netCDF4.pyx":4558
 *             _ensure_nc_success(ierr)
 *         if self._isprimitive:
 *             if no_fill != 1:             # <<<<<<<<<<<<<<
 *                 try:
 *                     fillval = self._FillValue
*/
    __pyx_t_4 = (__pyx_v_no_fill != 1);
    if (__pyx_t_4) {

      /* "netCDF4/_netCDF4.pyx":4559
 *         if self._isprimitive:
 *             if no_fill != 1:
 *                 try:             # <<<<<<<<<<<<<<
 *                     fillval = self._FillValue
 *                     msg = 'filling on'
*/
      {
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        __Pyx_ExceptionSave(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16);
        __Pyx_XGOTREF(__pyx_t_14);
        __Pyx_XGOTREF(__pyx_t_15);
        __Pyx_XGOTREF(__pyx_t_16);
        /*try:*/ {

          /* "netCDF4/_netCDF4.pyx":4560
 *             if no_fill != 1:
 *                 try:
 *                     fillval = self._FillValue             # <<<<<<<<<<<<<<
 *                     msg = 'filling on'
 *                 except AttributeError:
*/
          __pyx_t_11 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_FillValue); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 4560, __pyx_L22_error)
          __Pyx_GOTREF(__pyx_t_11);
          __pyx_v_fillval = __pyx_t_11;
          __pyx_t_11 = 0;

          /* "netCDF4/_netCDF4.pyx":4561
 *                 try:
 *                     fillval = self._FillValue
 *                     msg = 'filling on'             # <<<<<<<<<<<<<<
 *                 except AttributeError:
 *                     fillval = default_fillvals[self.dtype.str[1:]]
*/
          __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u_filling_on);
          __pyx_v_msg = __pyx_mstate_global->__pyx_kp_u_filling_on;

          /* "netCDF4/_netCDF4.pyx":4559
 *         if self._isprimitive:
 *             if no_fill != 1:
 *                 try:             # <<<<<<<<<<<<<<
 *                     fillval = self._FillValue
 *                     msg = 'filling on'
*/
        }
        __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
        __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
        __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
        goto __pyx_L27_try_end;
        __pyx_L22_error:;
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;

        /* "netCDF4/_netCDF4.pyx":4562
 *                     fillval = self._FillValue
 *                     msg = 'filling on'
 *                 except AttributeError:             # <<<<<<<<<<<<<<
 *                     fillval = default_fillvals[self.dtype.str[1:]]
 *                     if self.dtype.str[1:] in ['u1','i1']:
*/
        __pyx_t_17 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_AttributeError))));
        if (__pyx_t_17) {
          __Pyx_AddTraceback("netCDF4._netCDF4.Variable.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_11, &__pyx_t_1, &__pyx_t_2) < 0) __PYX_ERR(0, 4562, __pyx_L24_except_error)
          __Pyx_XGOTREF(__pyx_t_11);
          __Pyx_XGOTREF(__pyx_t_1);
          __Pyx_XGOTREF(__pyx_t_2);

          /* "netCDF4/_netCDF4.pyx":4563
 *                     msg = 'filling on'
 *                 except AttributeError:
 *                     fillval = default_fillvals[self.dtype.str[1:]]             # <<<<<<<<<<<<<<
 *                     if self.dtype.str[1:] in ['u1','i1']:
 *                         msg = 'filling on, default _FillValue of %s ignored' % fillval
*/
          __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_default_fillvals); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4563, __pyx_L24_except_error)
          __Pyx_GOTREF(__pyx_t_6);
          __pyx_t_18 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->dtype, __pyx_mstate_global->__pyx_n_u_str); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 4563, __pyx_L24_except_error)
          __Pyx_GOTREF(__pyx_t_18);
          __pyx_t_19 = __Pyx_PyObject_GetSlice(__pyx_t_18, 1, 0, NULL, NULL, &__pyx_mstate_global->__pyx_slice[0], 1, 0, 1); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 4563, __pyx_L24_except_error)
          __Pyx_GOTREF(__pyx_t_19);
          __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
          __pyx_t_18 = __Pyx_PyObject_GetItem(__pyx_t_6, __pyx_t_19); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 4563, __pyx_L24_except_error)
          __Pyx_GOTREF(__pyx_t_18);
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
          __Pyx_XDECREF_SET(__pyx_v_fillval, __pyx_t_18);
          __pyx_t_18 = 0;

          /* "netCDF4/_netCDF4.pyx":4564
 *                 except AttributeError:
 *                     fillval = default_fillvals[self.dtype.str[1:]]
 *                     if self.dtype.str[1:] in ['u1','i1']:             # <<<<<<<<<<<<<<
 *                         msg = 'filling on, default _FillValue of %s ignored' % fillval
 *                     else:
*/
          __pyx_t_18 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->dtype, __pyx_mstate_global->__pyx_n_u_str); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 4564, __pyx_L24_except_error)
          __Pyx_GOTREF(__pyx_t_18);
          __pyx_t_19 = __Pyx_PyObject_GetSlice(__pyx_t_18, 1, 0, NULL, NULL, &__pyx_mstate_global->__pyx_slice[0], 1, 0, 1); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 4564, __pyx_L24_except_error)
          __Pyx_GOTREF(__pyx_t_19);
          __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
          __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_t_19, __pyx_mstate_global->__pyx_n_u_u1, Py_EQ)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 4564, __pyx_L24_except_error)
          if (!__pyx_t_3) {
          } else {
            __pyx_t_4 = __pyx_t_3;
            goto __pyx_L31_bool_binop_done;
          }
          __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_t_19, __pyx_mstate_global->__pyx_n_u_i1, Py_EQ)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 4564, __pyx_L24_except_error)
          __pyx_t_4 = __pyx_t_3;
          __pyx_L31_bool_binop_done:;
          __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
          __pyx_t_3 = __pyx_t_4;
          if (__pyx_t_3) {

            /* "netCDF4/_netCDF4.pyx":4565
 *                     fillval = default_fillvals[self.dtype.str[1:]]
 *                     if self.dtype.str[1:] in ['u1','i1']:
 *                         msg = 'filling on, default _FillValue of %s ignored' % fillval             # <<<<<<<<<<<<<<
 *                     else:
 *                         msg = 'filling on, default _FillValue of %s used' % fillval
*/
            __pyx_t_19 = __Pyx_PyUnicode_FormatSafe(__pyx_mstate_global->__pyx_kp_u_filling_on_default__FillValue_of, __pyx_v_fillval); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 4565, __pyx_L24_except_error)
            __Pyx_GOTREF(__pyx_t_19);
            __Pyx_XDECREF_SET(__pyx_v_msg, ((PyObject*)__pyx_t_19));
            __pyx_t_19 = 0;

            /* "netCDF4/_netCDF4.pyx":4564
 *                 except AttributeError:
 *                     fillval = default_fillvals[self.dtype.str[1:]]
 *                     if self.dtype.str[1:] in ['u1','i1']:             # <<<<<<<<<<<<<<
 *                         msg = 'filling on, default _FillValue of %s ignored' % fillval
 *                     else:
*/
            goto __pyx_L30;
          }

          /* "netCDF4/_netCDF4.pyx":4567
 *                         msg = 'filling on, default _FillValue of %s ignored' % fillval
 *                     else:
 *                         msg = 'filling on, default _FillValue of %s used' % fillval             # <<<<<<<<<<<<<<
 *                 ncdump.append(msg)
 *             else:
*/
          /*else*/ {
            __pyx_t_19 = __Pyx_PyUnicode_FormatSafe(__pyx_mstate_global->__pyx_kp_u_filling_on_default__FillValue_of_2, __pyx_v_fillval); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 4567, __pyx_L24_except_error)
            __Pyx_GOTREF(__pyx_t_19);
            __Pyx_XDECREF_SET(__pyx_v_msg, ((PyObject*)__pyx_t_19));
            __pyx_t_19 = 0;
          }
          __pyx_L30:;
          __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
          goto __pyx_L23_exception_handled;
        }
        goto __pyx_L24_except_error;

        /* "netCDF4/_netCDF4.pyx":4559
 *         if self._isprimitive:
 *             if no_fill != 1:
 *                 try:             # <<<<<<<<<<<<<<
 *                     fillval = self._FillValue
 *                     msg = 'filling on'
*/
        __pyx_L24_except_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);
        goto __pyx_L1_error;
        __pyx_L23_exception_handled:;
        __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_L27_try_end:;
      }

      /* "netCDF4/_netCDF4.pyx":4568
 *                     else:
 *                         msg = 'filling on, default _FillValue of %s used' % fillval
 *                 ncdump.append(msg)             # <<<<<<<<<<<<<<
 *             else:
 *                 ncdump.append('filling off')
*/
      __pyx_t_7 = __Pyx_PyList_Append(__pyx_v_ncdump, __pyx_v_msg); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(0, 4568, __pyx_L1_error)

      /* "netCDF4/_netCDF4.pyx":4558
 *             _ensure_nc_success(ierr)
 *         if self._isprimitive:
 *             if no_fill != 1:             # <<<<<<<<<<<<<<
 *                 try:
 *                     fillval = self._FillValue
*/
      goto __pyx_L21;
    }

    /* "netCDF4/_netCDF4.pyx":4570
 *                 ncdump.append(msg)
 *             else:
 *                 ncdump.append('filling off')             # <<<<<<<<<<<<<<
 * 
 * 
*/
    /*else*/ {
      __pyx_t_7 = __Pyx_PyList_Append(__pyx_v_ncdump, __pyx_mstate_global->__pyx_kp_u_filling_off); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(0, 4570, __pyx_L1_error)
    }
    __pyx_L21:;

    /* "netCDF4/_netCDF4.pyx":4557
 *                 ierr = nc_inq_var_fill(self._grpid,self._varid,&no_fill,NULL)
 *             _ensure_nc_success(ierr)
 *         if self._isprimitive:             # <<<<<<<<<<<<<<
 *             if no_fill != 1:
 *                 try:
*/
  }

  /* "netCDF4/_netCDF4.pyx":4573
 * 
 * 
 *         return '\n'.join(ncdump)             # <<<<<<<<<<<<<<
 * 
 *     def _getdims(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyUnicode_Join(__pyx_mstate_global->__pyx_kp_u__15, __pyx_v_ncdump); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4573, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":4517
 *         return self.__str__()
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         cdef int ierr, no_fill
 *         if not dir(self._grp):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_18);
  __Pyx_XDECREF(__pyx_t_19);
  __Pyx_AddTraceback("netCDF4._netCDF4.Variable.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_ncdump);
  __Pyx_XDECREF(__pyx_v_kind);
  __Pyx_XDECREF(__pyx_v_dimnames);
  __Pyx_XDECREF(__pyx_v_name);
  __Pyx_XDECREF(__pyx_v_unlimdims);
  __Pyx_XDECREF(__pyx_v_dimname);
  __Pyx_XDECREF(__pyx_v_dim);
  __Pyx_XDECREF(__pyx_v_fillval);
  __Pyx_XDECREF(__pyx_v_msg);
  __Pyx_XDECREF(__pyx_gb_7netCDF4_8_netCDF4_8Variable_7__str___2generator5);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":4575
 *         return '\n'.join(ncdump)
 * 
 *     def _getdims(self):             # <<<<<<<<<<<<<<
 *         # Private method to get variables's dimension names
 *         cdef int ierr, dimid
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_11_getdims(PyObject *__pyx_v_self, 
#if 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_7netCDF4_8_netCDF4_8Variable_11_getdims = {"_getdims", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_8Variable_11_getdims, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_11_getdims(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_getdims (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("_getdims", 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("_getdims", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_8Variable_10_getdims(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_10_getdims(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self) {
  int __pyx_v_ierr;
  int __pyx_v_dimid;
  char __pyx_v_namstring[(NC_MAX_NAME + 1)];
  PyObject *__pyx_v_dimids = NULL;
  PyObject *__pyx_v_dimensions = NULL;
  PyObject *__pyx_v_name = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  PyObject *(*__pyx_t_4)(PyObject *);
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  size_t __pyx_t_10;
  Py_ssize_t __pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_getdims", 0);

  /* "netCDF4/_netCDF4.pyx":4580
 *         cdef char namstring[NC_MAX_NAME+1]
 * 
 *         dimids = _inq_vardimid(self._grpid, self._varid, self._grp.auto_complex)             # <<<<<<<<<<<<<<
 * 
 *         # loop over dimensions, retrieve names.
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_grp, __pyx_mstate_global->__pyx_n_u_auto_complex); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4580, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 4580, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __pyx_f_7netCDF4_8_netCDF4__inq_vardimid(__pyx_v_self->_grpid, __pyx_v_self->_varid, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4580, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_dimids = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":4583
 * 
 *         # loop over dimensions, retrieve names.
 *         dimensions = ()             # <<<<<<<<<<<<<<
 *         for dimid in dimids:
 *             with nogil:
*/
  __Pyx_INCREF(__pyx_mstate_global->__pyx_empty_tuple);
  __pyx_v_dimensions = __pyx_mstate_global->__pyx_empty_tuple;

  /* "netCDF4/_netCDF4.pyx":4584
 *         # loop over dimensions, retrieve names.
 *         dimensions = ()
 *         for dimid in dimids:             # <<<<<<<<<<<<<<
 *             with nogil:
 *                 ierr = nc_inq_dimname(self._grpid, dimid, namstring)
*/
  if (likely(PyList_CheckExact(__pyx_v_dimids)) || PyTuple_CheckExact(__pyx_v_dimids)) {
    __pyx_t_1 = __pyx_v_dimids; __Pyx_INCREF(__pyx_t_1);
    __pyx_t_3 = 0;
    __pyx_t_4 = NULL;
  } else {
    __pyx_t_3 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_dimids); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4584, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_4 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4584, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_4)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 4584, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        __pyx_t_5 = __Pyx_PyList_GetItemRefFast(__pyx_t_1, __pyx_t_3, __Pyx_ReferenceSharing_OwnStrongReference);
        ++__pyx_t_3;
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 4584, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_3));
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_3);
        #endif
        ++__pyx_t_3;
      }
      if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4584, __pyx_L1_error)
    } else {
      __pyx_t_5 = __pyx_t_4(__pyx_t_1);
      if (unlikely(!__pyx_t_5)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 4584, __pyx_L1_error)
          PyErr_Clear();
        }
        break;
      }
    }
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __Pyx_PyLong_As_int(__pyx_t_5); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 4584, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_v_dimid = __pyx_t_6;

    /* "netCDF4/_netCDF4.pyx":4585
 *         dimensions = ()
 *         for dimid in dimids:
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 ierr = nc_inq_dimname(self._grpid, dimid, namstring)
 *             _ensure_nc_success(ierr)
*/
    {
        PyThreadState * _save;
        _save = PyEval_SaveThread();
        __Pyx_FastGIL_Remember();
        /*try:*/ {

          /* "netCDF4/_netCDF4.pyx":4586
 *         for dimid in dimids:
 *             with nogil:
 *                 ierr = nc_inq_dimname(self._grpid, dimid, namstring)             # <<<<<<<<<<<<<<
 *             _ensure_nc_success(ierr)
 *             name = namstring.decode('utf-8')
*/
          __pyx_v_ierr = nc_inq_dimname(__pyx_v_self->_grpid, __pyx_v_dimid, __pyx_v_namstring);
        }

        /* "netCDF4/_netCDF4.pyx":4585
 *         dimensions = ()
 *         for dimid in dimids:
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 ierr = nc_inq_dimname(self._grpid, dimid, namstring)
 *             _ensure_nc_success(ierr)
*/
        /*finally:*/ {
          /*normal exit:*/{
            __Pyx_FastGIL_Forget();
            PyEval_RestoreThread(_save);
            goto __pyx_L9;
          }
          __pyx_L9:;
        }
    }

    /* "netCDF4/_netCDF4.pyx":4587
 *             with nogil:
 *                 ierr = nc_inq_dimname(self._grpid, dimid, namstring)
 *             _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 *             name = namstring.decode('utf-8')
 *             dimensions = dimensions + (name,)
*/
    __pyx_t_7 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4587, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_9 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 4587, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_10 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(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_10 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_9};
      __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_8, __pyx_callargs+__pyx_t_10, (2-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4587, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
    }
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "netCDF4/_netCDF4.pyx":4588
 *                 ierr = nc_inq_dimname(self._grpid, dimid, namstring)
 *             _ensure_nc_success(ierr)
 *             name = namstring.decode('utf-8')             # <<<<<<<<<<<<<<
 *             dimensions = dimensions + (name,)
 * 
*/
    __pyx_t_11 = __Pyx_ssize_strlen(__pyx_v_namstring); if (unlikely(__pyx_t_11 == ((Py_ssize_t)-1))) __PYX_ERR(0, 4588, __pyx_L1_error)
    __pyx_t_5 = __Pyx_decode_c_string(__pyx_v_namstring, 0, __pyx_t_11, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4588, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "netCDF4/_netCDF4.pyx":4589
 *             _ensure_nc_success(ierr)
 *             name = namstring.decode('utf-8')
 *             dimensions = dimensions + (name,)             # <<<<<<<<<<<<<<
 * 
 *         return dimensions
*/
    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4589, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_INCREF(__pyx_v_name);
    __Pyx_GIVEREF(__pyx_v_name);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_name) != (0)) __PYX_ERR(0, 4589, __pyx_L1_error);
    __pyx_t_8 = PyNumber_Add(__pyx_v_dimensions, __pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4589, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF_SET(__pyx_v_dimensions, ((PyObject*)__pyx_t_8));
    __pyx_t_8 = 0;

    /* "netCDF4/_netCDF4.pyx":4584
 *         # loop over dimensions, retrieve names.
 *         dimensions = ()
 *         for dimid in dimids:             # <<<<<<<<<<<<<<
 *             with nogil:
 *                 ierr = nc_inq_dimname(self._grpid, dimid, namstring)
*/
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":4591
 *             dimensions = dimensions + (name,)
 * 
 *         return dimensions             # <<<<<<<<<<<<<<
 * 
 *     def _getname(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_dimensions);
  __pyx_r = __pyx_v_dimensions;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":4575
 *         return '\n'.join(ncdump)
 * 
 *     def _getdims(self):             # <<<<<<<<<<<<<<
 *         # Private method to get variables's dimension names
 *         cdef int ierr, dimid
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("netCDF4._netCDF4.Variable._getdims", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_dimids);
  __Pyx_XDECREF(__pyx_v_dimensions);
  __Pyx_XDECREF(__pyx_v_name);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":4593
 *         return dimensions
 * 
 *     def _getname(self):             # <<<<<<<<<<<<<<
 *         # Private method to get name associated with instance
 *         cdef int err, _grpid
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_13_getname(PyObject *__pyx_v_self, 
#if 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_7netCDF4_8_netCDF4_8Variable_13_getname = {"_getname", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_8Variable_13_getname, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_13_getname(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_getname (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("_getname", 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("_getname", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_8Variable_12_getname(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_12_getname(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self) {
  int __pyx_v__grpid;
  char __pyx_v_namstring[(NC_MAX_NAME + 1)];
  int __pyx_v_ierr;
  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;
  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("_getname", 0);

  /* "netCDF4/_netCDF4.pyx":4597
 *         cdef int err, _grpid
 *         cdef char namstring[NC_MAX_NAME+1]
 *         _grpid = self._grp._grpid             # <<<<<<<<<<<<<<
 *         with nogil:
 *             ierr = nc_inq_varname(_grpid, self._varid, namstring)
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_grp, __pyx_mstate_global->__pyx_n_u_grpid); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4597, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyLong_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 4597, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v__grpid = __pyx_t_2;

  /* "netCDF4/_netCDF4.pyx":4598
 *         cdef char namstring[NC_MAX_NAME+1]
 *         _grpid = self._grp._grpid
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_inq_varname(_grpid, self._varid, namstring)
 *         _ensure_nc_success(ierr)
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "netCDF4/_netCDF4.pyx":4599
 *         _grpid = self._grp._grpid
 *         with nogil:
 *             ierr = nc_inq_varname(_grpid, self._varid, namstring)             # <<<<<<<<<<<<<<
 *         _ensure_nc_success(ierr)
 *         return namstring.decode('utf-8')
*/
        __pyx_v_ierr = nc_inq_varname(__pyx_v__grpid, __pyx_v_self->_varid, __pyx_v_namstring);
      }

      /* "netCDF4/_netCDF4.pyx":4598
 *         cdef char namstring[NC_MAX_NAME+1]
 *         _grpid = self._grp._grpid
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_inq_varname(_grpid, self._varid, namstring)
 *         _ensure_nc_success(ierr)
*/
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "netCDF4/_netCDF4.pyx":4600
 *         with nogil:
 *             ierr = nc_inq_varname(_grpid, self._varid, namstring)
 *         _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 *         return namstring.decode('utf-8')
 * 
*/
  __pyx_t_3 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4600, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4600, __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_1 = __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_1)) __PYX_ERR(0, 4600, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":4601
 *             ierr = nc_inq_varname(_grpid, self._varid, namstring)
 *         _ensure_nc_success(ierr)
 *         return namstring.decode('utf-8')             # <<<<<<<<<<<<<<
 * 
 *     property name:
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_7 = __Pyx_ssize_strlen(__pyx_v_namstring); if (unlikely(__pyx_t_7 == ((Py_ssize_t)-1))) __PYX_ERR(0, 4601, __pyx_L1_error)
  __pyx_t_1 = __Pyx_decode_c_string(__pyx_v_namstring, 0, __pyx_t_7, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4601, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":4593
 *         return dimensions
 * 
 *     def _getname(self):             # <<<<<<<<<<<<<<
 *         # Private method to get name associated with instance
 *         cdef int err, _grpid
*/

  /* 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("netCDF4._netCDF4.Variable._getname", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":4605
 *     property name:
 *         """string name of Variable instance"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._getname()
 *         def __set__(self,value):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_4name_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_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_7netCDF4_8_netCDF4_8Variable_4name___get__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_4name___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__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);

  /* "netCDF4/_netCDF4.pyx":4606
 *         """string name of Variable instance"""
 *         def __get__(self):
 *             return self._getname()             # <<<<<<<<<<<<<<
 *         def __set__(self,value):
 *             raise AttributeError("name cannot be altered")
*/
  __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_getname, __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(0, 4606, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":4605
 *     property name:
 *         """string name of Variable instance"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._getname()
 *         def __set__(self,value):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("netCDF4._netCDF4.Variable.name.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":4607
 *         def __get__(self):
 *             return self._getname()
 *         def __set__(self,value):             # <<<<<<<<<<<<<<
 *             raise AttributeError("name cannot be altered")
 * 
*/

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_4name_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_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_7netCDF4_8_netCDF4_8Variable_4name_2__set__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_4name_2__set__(CYTHON_UNUSED struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, CYTHON_UNUSED 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);

  /* "netCDF4/_netCDF4.pyx":4608
 *             return self._getname()
 *         def __set__(self,value):
 *             raise AttributeError("name cannot be altered")             # <<<<<<<<<<<<<<
 * 
 *     property datatype:
*/
  __pyx_t_2 = NULL;
  __pyx_t_3 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_name_cannot_be_altered};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_AttributeError)), __pyx_callargs+__pyx_t_3, (2-__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(0, 4608, __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(0, 4608, __pyx_L1_error)

  /* "netCDF4/_netCDF4.pyx":4607
 *         def __get__(self):
 *             return self._getname()
 *         def __set__(self,value):             # <<<<<<<<<<<<<<
 *             raise AttributeError("name cannot be altered")
 * 
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("netCDF4._netCDF4.Variable.name.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":4614
 *         VLType/CompoundType/EnumType instance
 *         (for compound, vlen  or enum data types)"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             if self._iscompound:
 *                 return self._cmptype
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_8datatype_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_8datatype_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_7netCDF4_8_netCDF4_8Variable_8datatype___get__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_8datatype___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__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("__get__", 0);

  /* "netCDF4/_netCDF4.pyx":4615
 *         (for compound, vlen  or enum data types)"""
 *         def __get__(self):
 *             if self._iscompound:             # <<<<<<<<<<<<<<
 *                 return self._cmptype
 *             elif self._isvlen:
*/
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->_iscompound); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 4615, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "netCDF4/_netCDF4.pyx":4616
 *         def __get__(self):
 *             if self._iscompound:
 *                 return self._cmptype             # <<<<<<<<<<<<<<
 *             elif self._isvlen:
 *                 return self._vltype
*/
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_self->_cmptype);
    __pyx_r = __pyx_v_self->_cmptype;
    goto __pyx_L0;

    /* "netCDF4/_netCDF4.pyx":4615
 *         (for compound, vlen  or enum data types)"""
 *         def __get__(self):
 *             if self._iscompound:             # <<<<<<<<<<<<<<
 *                 return self._cmptype
 *             elif self._isvlen:
*/
  }

  /* "netCDF4/_netCDF4.pyx":4617
 *             if self._iscompound:
 *                 return self._cmptype
 *             elif self._isvlen:             # <<<<<<<<<<<<<<
 *                 return self._vltype
 *             elif self._isenum:
*/
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->_isvlen); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 4617, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "netCDF4/_netCDF4.pyx":4618
 *                 return self._cmptype
 *             elif self._isvlen:
 *                 return self._vltype             # <<<<<<<<<<<<<<
 *             elif self._isenum:
 *                 return self._enumtype
*/
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_self->_vltype);
    __pyx_r = __pyx_v_self->_vltype;
    goto __pyx_L0;

    /* "netCDF4/_netCDF4.pyx":4617
 *             if self._iscompound:
 *                 return self._cmptype
 *             elif self._isvlen:             # <<<<<<<<<<<<<<
 *                 return self._vltype
 *             elif self._isenum:
*/
  }

  /* "netCDF4/_netCDF4.pyx":4619
 *             elif self._isvlen:
 *                 return self._vltype
 *             elif self._isenum:             # <<<<<<<<<<<<<<
 *                 return self._enumtype
 *             elif self._isprimitive:
*/
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->_isenum); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 4619, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "netCDF4/_netCDF4.pyx":4620
 *                 return self._vltype
 *             elif self._isenum:
 *                 return self._enumtype             # <<<<<<<<<<<<<<
 *             elif self._isprimitive:
 *                 return self.dtype
*/
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_self->_enumtype);
    __pyx_r = __pyx_v_self->_enumtype;
    goto __pyx_L0;

    /* "netCDF4/_netCDF4.pyx":4619
 *             elif self._isvlen:
 *                 return self._vltype
 *             elif self._isenum:             # <<<<<<<<<<<<<<
 *                 return self._enumtype
 *             elif self._isprimitive:
*/
  }

  /* "netCDF4/_netCDF4.pyx":4621
 *             elif self._isenum:
 *                 return self._enumtype
 *             elif self._isprimitive:             # <<<<<<<<<<<<<<
 *                 return self.dtype
 * 
*/
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->_isprimitive); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 4621, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "netCDF4/_netCDF4.pyx":4622
 *                 return self._enumtype
 *             elif self._isprimitive:
 *                 return self.dtype             # <<<<<<<<<<<<<<
 * 
 *     property shape:
*/
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_self->dtype);
    __pyx_r = __pyx_v_self->dtype;
    goto __pyx_L0;

    /* "netCDF4/_netCDF4.pyx":4621
 *             elif self._isenum:
 *                 return self._enumtype
 *             elif self._isprimitive:             # <<<<<<<<<<<<<<
 *                 return self.dtype
 * 
*/
  }

  /* "netCDF4/_netCDF4.pyx":4614
 *         VLType/CompoundType/EnumType instance
 *         (for compound, vlen  or enum data types)"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             if self._iscompound:
 *                 return self._cmptype
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("netCDF4._netCDF4.Variable.datatype.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":4626
 *     property shape:
 *         """find current sizes of all variable dimensions"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             shape = ()
 *             for dimname in self._getdims():
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_5shape_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_5shape_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_7netCDF4_8_netCDF4_8Variable_5shape___get__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_5shape___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self) {
  PyObject *__pyx_v_shape = NULL;
  PyObject *__pyx_v_dimname = NULL;
  PyObject *__pyx_v_dim = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  size_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  PyObject *(*__pyx_t_5)(PyObject *);
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  Py_ssize_t __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "netCDF4/_netCDF4.pyx":4627
 *         """find current sizes of all variable dimensions"""
 *         def __get__(self):
 *             shape = ()             # <<<<<<<<<<<<<<
 *             for dimname in self._getdims():
 *                 # look in current group, and parents for dim.
*/
  __Pyx_INCREF(__pyx_mstate_global->__pyx_empty_tuple);
  __pyx_v_shape = __pyx_mstate_global->__pyx_empty_tuple;

  /* "netCDF4/_netCDF4.pyx":4628
 *         def __get__(self):
 *             shape = ()
 *             for dimname in self._getdims():             # <<<<<<<<<<<<<<
 *                 # look in current group, and parents for dim.
 *                 dim = _find_dim(self._grp,dimname)
*/
  __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_getdims, __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(0, 4628, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
    __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2);
    __pyx_t_4 = 0;
    __pyx_t_5 = NULL;
  } else {
    __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4628, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_5 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4628, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  for (;;) {
    if (likely(!__pyx_t_5)) {
      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(0, 4628, __pyx_L1_error)
          #endif
          if (__pyx_t_4 >= __pyx_temp) break;
        }
        __pyx_t_1 = __Pyx_PyList_GetItemRefFast(__pyx_t_2, __pyx_t_4, __Pyx_ReferenceSharing_OwnStrongReference);
        ++__pyx_t_4;
      } 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(0, 4628, __pyx_L1_error)
          #endif
          if (__pyx_t_4 >= __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_4));
        #else
        __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_4);
        #endif
        ++__pyx_t_4;
      }
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4628, __pyx_L1_error)
    } else {
      __pyx_t_1 = __pyx_t_5(__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(0, 4628, __pyx_L1_error)
          PyErr_Clear();
        }
        break;
      }
    }
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_XDECREF_SET(__pyx_v_dimname, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":4630
 *             for dimname in self._getdims():
 *                 # look in current group, and parents for dim.
 *                 dim = _find_dim(self._grp,dimname)             # <<<<<<<<<<<<<<
 *                 shape = shape + (len(dim),)
 *             return shape
*/
    __pyx_t_6 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_find_dim); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4630, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_3 = 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_3 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_v_self->_grp, __pyx_v_dimname};
      __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_3, (3-__pyx_t_3) | (__pyx_t_3*__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(0, 4630, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_XDECREF_SET(__pyx_v_dim, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":4631
 *                 # look in current group, and parents for dim.
 *                 dim = _find_dim(self._grp,dimname)
 *                 shape = shape + (len(dim),)             # <<<<<<<<<<<<<<
 *             return shape
 *         def __set__(self,value):
*/
    __pyx_t_8 = PyObject_Length(__pyx_v_dim); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(0, 4631, __pyx_L1_error)
    __pyx_t_1 = PyLong_FromSsize_t(__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4631, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4631, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_GIVEREF(__pyx_t_1);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1) != (0)) __PYX_ERR(0, 4631, __pyx_L1_error);
    __pyx_t_1 = 0;
    __pyx_t_1 = PyNumber_Add(__pyx_v_shape, __pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4631, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF_SET(__pyx_v_shape, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":4628
 *         def __get__(self):
 *             shape = ()
 *             for dimname in self._getdims():             # <<<<<<<<<<<<<<
 *                 # look in current group, and parents for dim.
 *                 dim = _find_dim(self._grp,dimname)
*/
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":4632
 *                 dim = _find_dim(self._grp,dimname)
 *                 shape = shape + (len(dim),)
 *             return shape             # <<<<<<<<<<<<<<
 *         def __set__(self,value):
 *             raise AttributeError("shape cannot be altered")
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_shape);
  __pyx_r = __pyx_v_shape;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":4626
 *     property shape:
 *         """find current sizes of all variable dimensions"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             shape = ()
 *             for dimname in self._getdims():
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("netCDF4._netCDF4.Variable.shape.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_shape);
  __Pyx_XDECREF(__pyx_v_dimname);
  __Pyx_XDECREF(__pyx_v_dim);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":4633
 *                 shape = shape + (len(dim),)
 *             return shape
 *         def __set__(self,value):             # <<<<<<<<<<<<<<
 *             raise AttributeError("shape cannot be altered")
 * 
*/

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_5shape_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_5shape_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_7netCDF4_8_netCDF4_8Variable_5shape_2__set__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_5shape_2__set__(CYTHON_UNUSED struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, CYTHON_UNUSED 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);

  /* "netCDF4/_netCDF4.pyx":4634
 *             return shape
 *         def __set__(self,value):
 *             raise AttributeError("shape cannot be altered")             # <<<<<<<<<<<<<<
 * 
 *     property size:
*/
  __pyx_t_2 = NULL;
  __pyx_t_3 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_shape_cannot_be_altered};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_AttributeError)), __pyx_callargs+__pyx_t_3, (2-__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(0, 4634, __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(0, 4634, __pyx_L1_error)

  /* "netCDF4/_netCDF4.pyx":4633
 *                 shape = shape + (len(dim),)
 *             return shape
 *         def __set__(self,value):             # <<<<<<<<<<<<<<
 *             raise AttributeError("shape cannot be altered")
 * 
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("netCDF4._netCDF4.Variable.shape.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":4638
 *     property size:
 *         """Return the number of stored elements."""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             # issue #957: add int since prod(())=1.0
 *             return int(numpy.prod(self.shape))
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_4size_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_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_7netCDF4_8_netCDF4_8Variable_4size___get__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_4size___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  size_t __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "netCDF4/_netCDF4.pyx":4640
 *         def __get__(self):
 *             # issue #957: add int since prod(())=1.0
 *             return int(numpy.prod(self.shape))             # <<<<<<<<<<<<<<
 * 
 *     property dimensions:
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4640, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_prod); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4640, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_shape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4640, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(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_5 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__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;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4640, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_t_4 = __Pyx_PyNumber_Int(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4640, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":4638
 *     property size:
 *         """Return the number of stored elements."""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             # issue #957: add int since prod(())=1.0
 *             return int(numpy.prod(self.shape))
*/

  /* 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("netCDF4._netCDF4.Variable.size.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":4644
 *     property dimensions:
 *         """get variables's dimension names"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._getdims()
 *         def __set__(self,value):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_10dimensions_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_10dimensions_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_7netCDF4_8_netCDF4_8Variable_10dimensions___get__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_10dimensions___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__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);

  /* "netCDF4/_netCDF4.pyx":4645
 *         """get variables's dimension names"""
 *         def __get__(self):
 *             return self._getdims()             # <<<<<<<<<<<<<<
 *         def __set__(self,value):
 *             raise AttributeError("dimensions cannot be altered")
*/
  __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_getdims, __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(0, 4645, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":4644
 *     property dimensions:
 *         """get variables's dimension names"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._getdims()
 *         def __set__(self,value):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("netCDF4._netCDF4.Variable.dimensions.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":4646
 *         def __get__(self):
 *             return self._getdims()
 *         def __set__(self,value):             # <<<<<<<<<<<<<<
 *             raise AttributeError("dimensions cannot be altered")
 * 
*/

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_10dimensions_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_10dimensions_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_7netCDF4_8_netCDF4_8Variable_10dimensions_2__set__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_10dimensions_2__set__(CYTHON_UNUSED struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, CYTHON_UNUSED 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);

  /* "netCDF4/_netCDF4.pyx":4647
 *             return self._getdims()
 *         def __set__(self,value):
 *             raise AttributeError("dimensions cannot be altered")             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_t_2 = NULL;
  __pyx_t_3 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_dimensions_cannot_be_altered};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_AttributeError)), __pyx_callargs+__pyx_t_3, (2-__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(0, 4647, __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(0, 4647, __pyx_L1_error)

  /* "netCDF4/_netCDF4.pyx":4646
 *         def __get__(self):
 *             return self._getdims()
 *         def __set__(self,value):             # <<<<<<<<<<<<<<
 *             raise AttributeError("dimensions cannot be altered")
 * 
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("netCDF4._netCDF4.Variable.dimensions.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":4650
 * 
 * 
 *     def group(self):             # <<<<<<<<<<<<<<
 *         """
 * **`group(self)`**
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_15group(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7netCDF4_8_netCDF4_8Variable_14group, "\n**`group(self)`**\n\nreturn the group that this `Variable` is a member of.");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_8Variable_15group = {"group", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_8Variable_15group, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_8Variable_14group};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_15group(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("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("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("group", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_8Variable_14group(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_14group(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("group", 0);

  /* "netCDF4/_netCDF4.pyx":4655
 * 
 * return the group that this `Variable` is a member of."""
 *         return self._grp             # <<<<<<<<<<<<<<
 * 
 *     def get_fill_value(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_grp);
  __pyx_r = __pyx_v_self->_grp;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":4650
 * 
 * 
 *     def group(self):             # <<<<<<<<<<<<<<
 *         """
 * **`group(self)`**
*/

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

/* "netCDF4/_netCDF4.pyx":4657
 *         return self._grp
 * 
 *     def get_fill_value(self):             # <<<<<<<<<<<<<<
 *         """
 * **`get_fill_value(self)`**
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_17get_fill_value(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7netCDF4_8_netCDF4_8Variable_16get_fill_value, "\n**`get_fill_value(self)`**\n\nreturn the fill value associated with this `Variable` (returns `None` if data is not\npre-filled). Works even if default fill value was used, and `_FillValue` attribute\ndoes not exist.");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_8Variable_17get_fill_value = {"get_fill_value", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_8Variable_17get_fill_value, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_8Variable_16get_fill_value};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_17get_fill_value(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_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_fill_value (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (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_fill_value", 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_fill_value", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_8Variable_16get_fill_value(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_16get_fill_value(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self) {
  int __pyx_v_ierr;
  int __pyx_v_no_fill;
  PyObject *__pyx_v_fillval = NULL;
  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;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_t_10;
  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("get_fill_value", 0);

  /* "netCDF4/_netCDF4.pyx":4665
 * does not exist."""
 *         cdef int ierr, no_fill
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_inq_var_fill(self._grpid,self._varid,&no_fill,NULL)
 *         _ensure_nc_success(ierr)
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "netCDF4/_netCDF4.pyx":4666
 *         cdef int ierr, no_fill
 *         with nogil:
 *             ierr = nc_inq_var_fill(self._grpid,self._varid,&no_fill,NULL)             # <<<<<<<<<<<<<<
 *         _ensure_nc_success(ierr)
 *         if no_fill == 1: # no filling for this variable
*/
        __pyx_v_ierr = nc_inq_var_fill(__pyx_v_self->_grpid, __pyx_v_self->_varid, (&__pyx_v_no_fill), NULL);
      }

      /* "netCDF4/_netCDF4.pyx":4665
 * does not exist."""
 *         cdef int ierr, no_fill
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_inq_var_fill(self._grpid,self._varid,&no_fill,NULL)
 *         _ensure_nc_success(ierr)
*/
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "netCDF4/_netCDF4.pyx":4667
 *         with nogil:
 *             ierr = nc_inq_var_fill(self._grpid,self._varid,&no_fill,NULL)
 *         _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 *         if no_fill == 1: # no filling for this variable
 *             return None
*/
  __pyx_t_2 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4667, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4667, __pyx_L1_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[2] = {__pyx_t_2, __pyx_t_4};
    __pyx_t_1 = __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_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(0, 4667, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":4668
 *             ierr = nc_inq_var_fill(self._grpid,self._varid,&no_fill,NULL)
 *         _ensure_nc_success(ierr)
 *         if no_fill == 1: # no filling for this variable             # <<<<<<<<<<<<<<
 *             return None
 *         else:
*/
  __pyx_t_6 = (__pyx_v_no_fill == 1);
  if (__pyx_t_6) {

    /* "netCDF4/_netCDF4.pyx":4669
 *         _ensure_nc_success(ierr)
 *         if no_fill == 1: # no filling for this variable
 *             return None             # <<<<<<<<<<<<<<
 *         else:
 *             try:
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "netCDF4/_netCDF4.pyx":4668
 *             ierr = nc_inq_var_fill(self._grpid,self._varid,&no_fill,NULL)
 *         _ensure_nc_success(ierr)
 *         if no_fill == 1: # no filling for this variable             # <<<<<<<<<<<<<<
 *             return None
 *         else:
*/
  }

  /* "netCDF4/_netCDF4.pyx":4671
 *             return None
 *         else:
 *             try:             # <<<<<<<<<<<<<<
 *                 fillval = self._FillValue
 *                 return fillval
*/
  /*else*/ {
    {
      __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:*/ {

        /* "netCDF4/_netCDF4.pyx":4672
 *         else:
 *             try:
 *                 fillval = self._FillValue             # <<<<<<<<<<<<<<
 *                 return fillval
 *             except AttributeError:
*/
        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_FillValue); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4672, __pyx_L7_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_v_fillval = __pyx_t_1;
        __pyx_t_1 = 0;

        /* "netCDF4/_netCDF4.pyx":4673
 *             try:
 *                 fillval = self._FillValue
 *                 return fillval             # <<<<<<<<<<<<<<
 *             except AttributeError:
 *                 # _FillValue attribute not set, see if we can retrieve _FillValue.
*/
        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(__pyx_v_fillval);
        __pyx_r = __pyx_v_fillval;
        goto __pyx_L11_try_return;

        /* "netCDF4/_netCDF4.pyx":4671
 *             return None
 *         else:
 *             try:             # <<<<<<<<<<<<<<
 *                 fillval = self._FillValue
 *                 return fillval
*/
      }
      __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;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;

      /* "netCDF4/_netCDF4.pyx":4674
 *                 fillval = self._FillValue
 *                 return fillval
 *             except AttributeError:             # <<<<<<<<<<<<<<
 *                 # _FillValue attribute not set, see if we can retrieve _FillValue.
 *                 # for primitive data types.
*/
      __pyx_t_10 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_AttributeError))));
      if (__pyx_t_10) {
        __Pyx_AddTraceback("netCDF4._netCDF4.Variable.get_fill_value", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_3, &__pyx_t_4) < 0) __PYX_ERR(0, 4674, __pyx_L9_except_error)
        __Pyx_XGOTREF(__pyx_t_1);
        __Pyx_XGOTREF(__pyx_t_3);
        __Pyx_XGOTREF(__pyx_t_4);

        /* "netCDF4/_netCDF4.pyx":4677
 *                 # _FillValue attribute not set, see if we can retrieve _FillValue.
 *                 # for primitive data types.
 *                 if self._isprimitive:             # <<<<<<<<<<<<<<
 *                     #return numpy.array(default_fillvals[self.dtype.str[1:]],self.dtype)
 *                     fillval = numpy.empty((),self.dtype)
*/
        __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_self->_isprimitive); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 4677, __pyx_L9_except_error)
        if (__pyx_t_6) {

          /* "netCDF4/_netCDF4.pyx":4679
 *                 if self._isprimitive:
 *                     #return numpy.array(default_fillvals[self.dtype.str[1:]],self.dtype)
 *                     fillval = numpy.empty((),self.dtype)             # <<<<<<<<<<<<<<
 *                     ierr=nc_inq_var_fill(self._grpid,self._varid,&no_fill,PyArray_DATA(fillval))
 *                     _ensure_nc_success(ierr)
*/
          __pyx_t_11 = NULL;
          __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_mstate_global->__pyx_n_u_numpy); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 4679, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_12);
          __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_mstate_global->__pyx_n_u_empty); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 4679, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_13);
          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
          __pyx_t_5 = 1;
          #if CYTHON_UNPACK_METHODS
          if (unlikely(PyMethod_Check(__pyx_t_13))) {
            __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_13);
            assert(__pyx_t_11);
            PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_13);
            __Pyx_INCREF(__pyx_t_11);
            __Pyx_INCREF(__pyx__function);
            __Pyx_DECREF_SET(__pyx_t_13, __pyx__function);
            __pyx_t_5 = 0;
          }
          #endif
          {
            PyObject *__pyx_callargs[3] = {__pyx_t_11, __pyx_mstate_global->__pyx_empty_tuple, __pyx_v_self->dtype};
            __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_13, __pyx_callargs+__pyx_t_5, (3-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
            __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
            __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
            if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4679, __pyx_L9_except_error)
            __Pyx_GOTREF(__pyx_t_2);
          }
          __Pyx_XDECREF_SET(__pyx_v_fillval, __pyx_t_2);
          __pyx_t_2 = 0;

          /* "netCDF4/_netCDF4.pyx":4680
 *                     #return numpy.array(default_fillvals[self.dtype.str[1:]],self.dtype)
 *                     fillval = numpy.empty((),self.dtype)
 *                     ierr=nc_inq_var_fill(self._grpid,self._varid,&no_fill,PyArray_DATA(fillval))             # <<<<<<<<<<<<<<
 *                     _ensure_nc_success(ierr)
 *                     return fillval
*/
          if (!(likely(((__pyx_v_fillval) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_fillval, __pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_ndarray))))) __PYX_ERR(0, 4680, __pyx_L9_except_error)
          __pyx_v_ierr = nc_inq_var_fill(__pyx_v_self->_grpid, __pyx_v_self->_varid, (&__pyx_v_no_fill), PyArray_DATA(((PyArrayObject *)__pyx_v_fillval)));

          /* "netCDF4/_netCDF4.pyx":4681
 *                     fillval = numpy.empty((),self.dtype)
 *                     ierr=nc_inq_var_fill(self._grpid,self._varid,&no_fill,PyArray_DATA(fillval))
 *                     _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 *                     return fillval
 *                 else:
*/
          __pyx_t_13 = NULL;
          __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 4681, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_11);
          __pyx_t_12 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 4681, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_12);
          __pyx_t_5 = 1;
          #if CYTHON_UNPACK_METHODS
          if (unlikely(PyMethod_Check(__pyx_t_11))) {
            __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_11);
            assert(__pyx_t_13);
            PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_11);
            __Pyx_INCREF(__pyx_t_13);
            __Pyx_INCREF(__pyx__function);
            __Pyx_DECREF_SET(__pyx_t_11, __pyx__function);
            __pyx_t_5 = 0;
          }
          #endif
          {
            PyObject *__pyx_callargs[2] = {__pyx_t_13, __pyx_t_12};
            __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_11, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
            __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
            __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
            __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
            if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4681, __pyx_L9_except_error)
            __Pyx_GOTREF(__pyx_t_2);
          }
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

          /* "netCDF4/_netCDF4.pyx":4682
 *                     ierr=nc_inq_var_fill(self._grpid,self._varid,&no_fill,PyArray_DATA(fillval))
 *                     _ensure_nc_success(ierr)
 *                     return fillval             # <<<<<<<<<<<<<<
 *                 else:
 *                     # no default filling for non-primitive data types.
*/
          __Pyx_XDECREF(__pyx_r);
          __Pyx_INCREF(__pyx_v_fillval);
          __pyx_r = __pyx_v_fillval;
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          goto __pyx_L10_except_return;

          /* "netCDF4/_netCDF4.pyx":4677
 *                 # _FillValue attribute not set, see if we can retrieve _FillValue.
 *                 # for primitive data types.
 *                 if self._isprimitive:             # <<<<<<<<<<<<<<
 *                     #return numpy.array(default_fillvals[self.dtype.str[1:]],self.dtype)
 *                     fillval = numpy.empty((),self.dtype)
*/
        }

        /* "netCDF4/_netCDF4.pyx":4685
 *                 else:
 *                     # no default filling for non-primitive data types.
 *                     return None             # <<<<<<<<<<<<<<
 * 
 *     def ncattrs(self):
*/
        /*else*/ {
          __Pyx_XDECREF(__pyx_r);
          __pyx_r = Py_None; __Pyx_INCREF(Py_None);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          goto __pyx_L10_except_return;
        }
      }
      goto __pyx_L9_except_error;

      /* "netCDF4/_netCDF4.pyx":4671
 *             return None
 *         else:
 *             try:             # <<<<<<<<<<<<<<
 *                 fillval = self._FillValue
 *                 return fillval
*/
      __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_L11_try_return:;
      __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_L0;
      __pyx_L10_except_return:;
      __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_L0;
    }
  }

  /* "netCDF4/_netCDF4.pyx":4657
 *         return self._grp
 * 
 *     def get_fill_value(self):             # <<<<<<<<<<<<<<
 *         """
 * **`get_fill_value(self)`**
*/

  /* 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_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_AddTraceback("netCDF4._netCDF4.Variable.get_fill_value", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_fillval);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":4687
 *                     return None
 * 
 *     def ncattrs(self):             # <<<<<<<<<<<<<<
 *         """
 * **`ncattrs(self)`**
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_19ncattrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7netCDF4_8_netCDF4_8Variable_18ncattrs, "\n**`ncattrs(self)`**\n\nreturn netCDF attribute names for this `Variable` in a list.");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_8Variable_19ncattrs = {"ncattrs", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_8Variable_19ncattrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_8Variable_18ncattrs};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_19ncattrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ncattrs (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("ncattrs", 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("ncattrs", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_8Variable_18ncattrs(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_18ncattrs(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__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("ncattrs", 0);

  /* "netCDF4/_netCDF4.pyx":4692
 * 
 * return netCDF attribute names for this `Variable` in a list."""
 *         return _get_att_names(self._grpid, self._varid)             # <<<<<<<<<<<<<<
 * 
 *     def setncattr(self,name,value):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_7netCDF4_8_netCDF4__get_att_names(__pyx_v_self->_grpid, __pyx_v_self->_varid); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4692, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":4687
 *                     return None
 * 
 *     def ncattrs(self):             # <<<<<<<<<<<<<<
 *         """
 * **`ncattrs(self)`**
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("netCDF4._netCDF4.Variable.ncattrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":4694
 *         return _get_att_names(self._grpid, self._varid)
 * 
 *     def setncattr(self,name,value):             # <<<<<<<<<<<<<<
 *         """
 * **`setncattr(self,name,value)`**
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_21setncattr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7netCDF4_8_netCDF4_8Variable_20setncattr, "\n**`setncattr(self,name,value)`**\n\nset a netCDF variable attribute using name,value pair.  Use if you need to set a\nnetCDF attribute with the same name as one of the reserved python\nattributes.");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_8Variable_21setncattr = {"setncattr", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_8Variable_21setncattr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_8Variable_20setncattr};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_21setncattr(PyObject *__pyx_v_self, 
#if CYTHON_METH_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;
  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("setncattr (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 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,&__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(0, 4694, __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(0, 4694, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 4694, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "setncattr", 0) < (0)) __PYX_ERR(0, 4694, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("setncattr", 1, 2, 2, i); __PYX_ERR(0, 4694, __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(0, 4694, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 4694, __pyx_L3_error)
    }
    __pyx_v_name = values[0];
    __pyx_v_value = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setncattr", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 4694, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4.Variable.setncattr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_8Variable_20setncattr(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self), __pyx_v_name, __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_7netCDF4_8_netCDF4_8Variable_20setncattr(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_value) {
  nc_type __pyx_v_xtype;
  PyObject *__pyx_v_msg = NULL;
  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;
  struct __pyx_opt_args_7netCDF4_8_netCDF4__set_att __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setncattr", 0);

  /* "netCDF4/_netCDF4.pyx":4702
 * attributes."""
 *         cdef nc_type xtype
 *         xtype=-99             # <<<<<<<<<<<<<<
 *         # issue #959 - trying to set _FillValue results in mysterious
 *         # error when close method is called so catch it here. It is
*/
  __pyx_v_xtype = -99;

  /* "netCDF4/_netCDF4.pyx":4706
 *         # error when close method is called so catch it here. It is
 *         # already caught in __setattr__.
 *         if name == '_FillValue':             # <<<<<<<<<<<<<<
 *             msg='_FillValue attribute must be set when variable is '+\
 *             'created (using fill_value keyword to createVariable)'
*/
  __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v_name, __pyx_mstate_global->__pyx_n_u_FillValue, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 4706, __pyx_L1_error)
  if (unlikely(__pyx_t_1)) {

    /* "netCDF4/_netCDF4.pyx":4707
 *         # already caught in __setattr__.
 *         if name == '_FillValue':
 *             msg='_FillValue attribute must be set when variable is '+\             # <<<<<<<<<<<<<<
 *             'created (using fill_value keyword to createVariable)'
 *             raise AttributeError(msg)
*/
    __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u_FillValue_attribute_must_be_set);
    __pyx_v_msg = __pyx_mstate_global->__pyx_kp_u_FillValue_attribute_must_be_set;

    /* "netCDF4/_netCDF4.pyx":4709
 *             msg='_FillValue attribute must be set when variable is '+\
 *             'created (using fill_value keyword to createVariable)'
 *             raise AttributeError(msg)             # <<<<<<<<<<<<<<
 *         if self._grp.data_model != 'NETCDF4': self._grp._redef()
 *         _set_att(self._grp, self._varid, name, value, xtype=xtype, force_ncstring=self._ncstring_attrs__)
*/
    __pyx_t_3 = NULL;
    __pyx_t_4 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_msg};
      __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_AttributeError)), __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(0, 4709, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(0, 4709, __pyx_L1_error)

    /* "netCDF4/_netCDF4.pyx":4706
 *         # error when close method is called so catch it here. It is
 *         # already caught in __setattr__.
 *         if name == '_FillValue':             # <<<<<<<<<<<<<<
 *             msg='_FillValue attribute must be set when variable is '+\
 *             'created (using fill_value keyword to createVariable)'
*/
  }

  /* "netCDF4/_netCDF4.pyx":4710
 *             'created (using fill_value keyword to createVariable)'
 *             raise AttributeError(msg)
 *         if self._grp.data_model != 'NETCDF4': self._grp._redef()             # <<<<<<<<<<<<<<
 *         _set_att(self._grp, self._varid, name, value, xtype=xtype, force_ncstring=self._ncstring_attrs__)
 *         if self._grp.data_model != 'NETCDF4': self._grp._enddef()
*/
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_grp, __pyx_mstate_global->__pyx_n_u_data_model); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4710, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_NETCDF4, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 4710, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__pyx_t_1) {
    __pyx_t_3 = __pyx_v_self->_grp;
    __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_redef, __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(0, 4710, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }

  /* "netCDF4/_netCDF4.pyx":4711
 *             raise AttributeError(msg)
 *         if self._grp.data_model != 'NETCDF4': self._grp._redef()
 *         _set_att(self._grp, self._varid, name, value, xtype=xtype, force_ncstring=self._ncstring_attrs__)             # <<<<<<<<<<<<<<
 *         if self._grp.data_model != 'NETCDF4': self._grp._enddef()
 * 
*/
  __pyx_t_2 = __pyx_v_self->_grp;
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = __pyx_v_self->_ncstring_attrs__;
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_6.__pyx_n = 2;
  __pyx_t_6.xtype = __pyx_v_xtype;
  __pyx_t_6.force_ncstring = __pyx_t_3;
  __pyx_t_5 = __pyx_f_7netCDF4_8_netCDF4__set_att(__pyx_t_2, __pyx_v_self->_varid, __pyx_v_name, __pyx_v_value, &__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4711, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "netCDF4/_netCDF4.pyx":4712
 *         if self._grp.data_model != 'NETCDF4': self._grp._redef()
 *         _set_att(self._grp, self._varid, name, value, xtype=xtype, force_ncstring=self._ncstring_attrs__)
 *         if self._grp.data_model != 'NETCDF4': self._grp._enddef()             # <<<<<<<<<<<<<<
 * 
 *     def setncattr_string(self,name,value):
*/
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_grp, __pyx_mstate_global->__pyx_n_u_data_model); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4712, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_NETCDF4, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 4712, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__pyx_t_1) {
    __pyx_t_3 = __pyx_v_self->_grp;
    __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_enddef, __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(0, 4712, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
    }
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }

  /* "netCDF4/_netCDF4.pyx":4694
 *         return _get_att_names(self._grpid, self._varid)
 * 
 *     def setncattr(self,name,value):             # <<<<<<<<<<<<<<
 *         """
 * **`setncattr(self,name,value)`**
*/

  /* 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_5);
  __Pyx_AddTraceback("netCDF4._netCDF4.Variable.setncattr", __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;
}

/* "netCDF4/_netCDF4.pyx":4714
 *         if self._grp.data_model != 'NETCDF4': self._grp._enddef()
 * 
 *     def setncattr_string(self,name,value):             # <<<<<<<<<<<<<<
 *         """
 * **`setncattr_string(self,name,value)`**
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_23setncattr_string(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7netCDF4_8_netCDF4_8Variable_22setncattr_string, "\n**`setncattr_string(self,name,value)`**\n\nset a netCDF variable string attribute using name,value pair.\nUse if you need to ensure that a netCDF attribute is created with type\n`NC_STRING` if the file format is `NETCDF4`.\nUse if you need to set an attribute to an array of variable-length strings.");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_8Variable_23setncattr_string = {"setncattr_string", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_8Variable_23setncattr_string, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_8Variable_22setncattr_string};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_23setncattr_string(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_name = 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("setncattr_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_name,&__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(0, 4714, __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(0, 4714, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 4714, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "setncattr_string", 0) < (0)) __PYX_ERR(0, 4714, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("setncattr_string", 1, 2, 2, i); __PYX_ERR(0, 4714, __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(0, 4714, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 4714, __pyx_L3_error)
    }
    __pyx_v_name = values[0];
    __pyx_v_value = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setncattr_string", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 4714, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4.Variable.setncattr_string", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_8Variable_22setncattr_string(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self), __pyx_v_name, __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_7netCDF4_8_netCDF4_8Variable_22setncattr_string(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_value) {
  nc_type __pyx_v_xtype;
  PyObject *__pyx_v_msg = NULL;
  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;
  struct __pyx_opt_args_7netCDF4_8_netCDF4__set_att __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setncattr_string", 0);

  /* "netCDF4/_netCDF4.pyx":4723
 * Use if you need to set an attribute to an array of variable-length strings."""
 *         cdef nc_type xtype
 *         xtype=-99             # <<<<<<<<<<<<<<
 *         if self._grp.data_model != 'NETCDF4':
 *             msg='file format does not support NC_STRING attributes'
*/
  __pyx_v_xtype = -99;

  /* "netCDF4/_netCDF4.pyx":4724
 *         cdef nc_type xtype
 *         xtype=-99
 *         if self._grp.data_model != 'NETCDF4':             # <<<<<<<<<<<<<<
 *             msg='file format does not support NC_STRING attributes'
 *             raise OSError(msg)
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_grp, __pyx_mstate_global->__pyx_n_u_data_model); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4724, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_NETCDF4, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 4724, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (unlikely(__pyx_t_2)) {

    /* "netCDF4/_netCDF4.pyx":4725
 *         xtype=-99
 *         if self._grp.data_model != 'NETCDF4':
 *             msg='file format does not support NC_STRING attributes'             # <<<<<<<<<<<<<<
 *             raise OSError(msg)
 *         _set_att(self._grp, self._varid, name, value, xtype=xtype, force_ncstring=True)
*/
    __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u_file_format_does_not_support_NC);
    __pyx_v_msg = __pyx_mstate_global->__pyx_kp_u_file_format_does_not_support_NC;

    /* "netCDF4/_netCDF4.pyx":4726
 *         if self._grp.data_model != 'NETCDF4':
 *             msg='file format does not support NC_STRING attributes'
 *             raise OSError(msg)             # <<<<<<<<<<<<<<
 *         _set_att(self._grp, self._varid, name, value, xtype=xtype, force_ncstring=True)
 * 
*/
    __pyx_t_3 = NULL;
    __pyx_t_4 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_msg};
      __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_OSError)), __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(0, 4726, __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(0, 4726, __pyx_L1_error)

    /* "netCDF4/_netCDF4.pyx":4724
 *         cdef nc_type xtype
 *         xtype=-99
 *         if self._grp.data_model != 'NETCDF4':             # <<<<<<<<<<<<<<
 *             msg='file format does not support NC_STRING attributes'
 *             raise OSError(msg)
*/
  }

  /* "netCDF4/_netCDF4.pyx":4727
 *             msg='file format does not support NC_STRING attributes'
 *             raise OSError(msg)
 *         _set_att(self._grp, self._varid, name, value, xtype=xtype, force_ncstring=True)             # <<<<<<<<<<<<<<
 * 
 *     def setncatts(self,attdict):
*/
  __pyx_t_1 = __pyx_v_self->_grp;
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_5.__pyx_n = 2;
  __pyx_t_5.xtype = __pyx_v_xtype;
  __pyx_t_5.force_ncstring = Py_True;
  __pyx_t_3 = __pyx_f_7netCDF4_8_netCDF4__set_att(__pyx_t_1, __pyx_v_self->_varid, __pyx_v_name, __pyx_v_value, &__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4727, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "netCDF4/_netCDF4.pyx":4714
 *         if self._grp.data_model != 'NETCDF4': self._grp._enddef()
 * 
 *     def setncattr_string(self,name,value):             # <<<<<<<<<<<<<<
 *         """
 * **`setncattr_string(self,name,value)`**
*/

  /* 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("netCDF4._netCDF4.Variable.setncattr_string", __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;
}

/* "netCDF4/_netCDF4.pyx":4729
 *         _set_att(self._grp, self._varid, name, value, xtype=xtype, force_ncstring=True)
 * 
 *     def setncatts(self,attdict):             # <<<<<<<<<<<<<<
 *         """
 * **`setncatts(self,attdict)`**
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_25setncatts(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7netCDF4_8_netCDF4_8Variable_24setncatts, "\n**`setncatts(self,attdict)`**\n\nset a bunch of netCDF variable attributes at once using a python dictionary.\nThis may be faster when setting a lot of attributes for a `NETCDF3`\nformatted file, since nc_redef/nc_enddef is not called in between setting\neach attribute");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_8Variable_25setncatts = {"setncatts", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_8Variable_25setncatts, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_8Variable_24setncatts};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_25setncatts(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_attdict = 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("setncatts (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_attdict,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 4729, __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(0, 4729, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "setncatts", 0) < (0)) __PYX_ERR(0, 4729, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("setncatts", 1, 1, 1, i); __PYX_ERR(0, 4729, __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(0, 4729, __pyx_L3_error)
    }
    __pyx_v_attdict = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setncatts", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 4729, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4.Variable.setncatts", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_8Variable_24setncatts(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self), __pyx_v_attdict);

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_24setncatts(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, PyObject *__pyx_v_attdict) {
  PyObject *__pyx_v_name = NULL;
  PyObject *__pyx_v_value = NULL;
  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;
  Py_ssize_t __pyx_t_5;
  Py_ssize_t __pyx_t_6;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setncatts", 0);

  /* "netCDF4/_netCDF4.pyx":4737
 * formatted file, since nc_redef/nc_enddef is not called in between setting
 * each attribute"""
 *         if self._grp.data_model != 'NETCDF4': self._grp._redef()             # <<<<<<<<<<<<<<
 *         for name, value in attdict.items():
 *             _set_att(self._grp, self._varid, name, value)
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_grp, __pyx_mstate_global->__pyx_n_u_data_model); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4737, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_NETCDF4, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 4737, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {
    __pyx_t_3 = __pyx_v_self->_grp;
    __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_redef, __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(0, 4737, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }

  /* "netCDF4/_netCDF4.pyx":4738
 * each attribute"""
 *         if self._grp.data_model != 'NETCDF4': self._grp._redef()
 *         for name, value in attdict.items():             # <<<<<<<<<<<<<<
 *             _set_att(self._grp, self._varid, name, value)
 *         if self._grp.data_model != 'NETCDF4': self._grp._enddef()
*/
  __pyx_t_5 = 0;
  if (unlikely(__pyx_v_attdict == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "items");
    __PYX_ERR(0, 4738, __pyx_L1_error)
  }
  __pyx_t_3 = __Pyx_dict_iterator(__pyx_v_attdict, 0, __pyx_mstate_global->__pyx_n_u_items, (&__pyx_t_6), (&__pyx_t_7)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4738, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_1);
  __pyx_t_1 = __pyx_t_3;
  __pyx_t_3 = 0;
  while (1) {
    __pyx_t_9 = __Pyx_dict_iter_next(__pyx_t_1, __pyx_t_6, &__pyx_t_5, &__pyx_t_3, &__pyx_t_8, NULL, __pyx_t_7);
    if (unlikely(__pyx_t_9 == 0)) break;
    if (unlikely(__pyx_t_9 == -1)) __PYX_ERR(0, 4738, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_3);
    __pyx_t_3 = 0;
    __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_8);
    __pyx_t_8 = 0;

    /* "netCDF4/_netCDF4.pyx":4739
 *         if self._grp.data_model != 'NETCDF4': self._grp._redef()
 *         for name, value in attdict.items():
 *             _set_att(self._grp, self._varid, name, value)             # <<<<<<<<<<<<<<
 *         if self._grp.data_model != 'NETCDF4': self._grp._enddef()
 * 
*/
    __pyx_t_8 = __pyx_v_self->_grp;
    __Pyx_INCREF(__pyx_t_8);
    __pyx_t_3 = __pyx_f_7netCDF4_8_netCDF4__set_att(__pyx_t_8, __pyx_v_self->_varid, __pyx_v_name, __pyx_v_value, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4739, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":4740
 *         for name, value in attdict.items():
 *             _set_att(self._grp, self._varid, name, value)
 *         if self._grp.data_model != 'NETCDF4': self._grp._enddef()             # <<<<<<<<<<<<<<
 * 
 *     def getncattr(self,name,encoding='utf-8'):
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_grp, __pyx_mstate_global->__pyx_n_u_data_model); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4740, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_NETCDF4, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 4740, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {
    __pyx_t_3 = __pyx_v_self->_grp;
    __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_enddef, __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(0, 4740, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }

  /* "netCDF4/_netCDF4.pyx":4729
 *         _set_att(self._grp, self._varid, name, value, xtype=xtype, force_ncstring=True)
 * 
 *     def setncatts(self,attdict):             # <<<<<<<<<<<<<<
 *         """
 * **`setncatts(self,attdict)`**
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("netCDF4._netCDF4.Variable.setncatts", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_name);
  __Pyx_XDECREF(__pyx_v_value);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":4742
 *         if self._grp.data_model != 'NETCDF4': self._grp._enddef()
 * 
 *     def getncattr(self,name,encoding='utf-8'):             # <<<<<<<<<<<<<<
 *         """
 * **`getncattr(self,name)`**
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_27getncattr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7netCDF4_8_netCDF4_8Variable_26getncattr, "\n**`getncattr(self,name)`**\n\nretrieve a netCDF variable attribute.  Use if you need to set a\nnetCDF attribute with the same name as one of the reserved python\nattributes.\n\noption kwarg `encoding` can be used to specify the\ncharacter encoding of a string attribute (default is `utf-8`).");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_8Variable_27getncattr = {"getncattr", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_8Variable_27getncattr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_8Variable_26getncattr};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_27getncattr(PyObject *__pyx_v_self, 
#if CYTHON_METH_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;
  PyObject *__pyx_v_encoding = 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("getncattr (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 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,&__pyx_mstate_global->__pyx_n_u_encoding,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 4742, __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(0, 4742, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 4742, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "getncattr", 0) < (0)) __PYX_ERR(0, 4742, __pyx_L3_error)
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_kp_u_utf_8));
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("getncattr", 0, 1, 2, i); __PYX_ERR(0, 4742, __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(0, 4742, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 4742, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_kp_u_utf_8));
    }
    __pyx_v_name = values[0];
    __pyx_v_encoding = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("getncattr", 0, 1, 2, __pyx_nargs); __PYX_ERR(0, 4742, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4.Variable.getncattr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_8Variable_26getncattr(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self), __pyx_v_name, __pyx_v_encoding);

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_26getncattr(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_encoding) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  struct __pyx_opt_args_7netCDF4_8_netCDF4__get_att __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getncattr", 0);

  /* "netCDF4/_netCDF4.pyx":4752
 * option kwarg `encoding` can be used to specify the
 * character encoding of a string attribute (default is `utf-8`)."""
 *         return _get_att(self._grp, self._varid, name, encoding=encoding)             # <<<<<<<<<<<<<<
 * 
 *     def delncattr(self, name):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_v_self->_grp;
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_3.__pyx_n = 1;
  __pyx_t_3.encoding = __pyx_v_encoding;
  __pyx_t_2 = __pyx_f_7netCDF4_8_netCDF4__get_att(__pyx_t_1, __pyx_v_self->_varid, __pyx_v_name, &__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4752, __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;

  /* "netCDF4/_netCDF4.pyx":4742
 *         if self._grp.data_model != 'NETCDF4': self._grp._enddef()
 * 
 *     def getncattr(self,name,encoding='utf-8'):             # <<<<<<<<<<<<<<
 *         """
 * **`getncattr(self,name)`**
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("netCDF4._netCDF4.Variable.getncattr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":4754
 *         return _get_att(self._grp, self._varid, name, encoding=encoding)
 * 
 *     def delncattr(self, name):             # <<<<<<<<<<<<<<
 *         """
 * **`delncattr(self,name,value)`**
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_29delncattr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7netCDF4_8_netCDF4_8Variable_28delncattr, "\n**`delncattr(self,name,value)`**\n\ndelete a netCDF variable attribute.  Use if you need to delete a\nnetCDF attribute with the same name as one of the reserved python\nattributes.");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_8Variable_29delncattr = {"delncattr", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_8Variable_29delncattr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_8Variable_28delncattr};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_29delncattr(PyObject *__pyx_v_self, 
#if CYTHON_METH_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("delncattr (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 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,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 4754, __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(0, 4754, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "delncattr", 0) < (0)) __PYX_ERR(0, 4754, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("delncattr", 1, 1, 1, i); __PYX_ERR(0, 4754, __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(0, 4754, __pyx_L3_error)
    }
    __pyx_v_name = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("delncattr", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 4754, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4.Variable.delncattr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_8Variable_28delncattr(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__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_7netCDF4_8_netCDF4_8Variable_28delncattr(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, PyObject *__pyx_v_name) {
  char *__pyx_v_attname;
  PyObject *__pyx_v_bytestr = NULL;
  int __pyx_v_ierr;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  char *__pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  size_t __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("delncattr", 0);

  /* "netCDF4/_netCDF4.pyx":4762
 * attributes."""
 *         cdef char *attname
 *         bytestr = _strencode(name)             # <<<<<<<<<<<<<<
 *         attname = bytestr
 *         if self._grp.data_model != 'NETCDF4': self._grp._redef()
*/
  __pyx_t_1 = __pyx_f_7netCDF4_8_netCDF4__strencode(__pyx_v_name, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4762, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_bytestr = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":4763
 *         cdef char *attname
 *         bytestr = _strencode(name)
 *         attname = bytestr             # <<<<<<<<<<<<<<
 *         if self._grp.data_model != 'NETCDF4': self._grp._redef()
 *         with nogil:
*/
  __pyx_t_2 = __Pyx_PyObject_AsWritableString(__pyx_v_bytestr); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 4763, __pyx_L1_error)
  __pyx_v_attname = __pyx_t_2;

  /* "netCDF4/_netCDF4.pyx":4764
 *         bytestr = _strencode(name)
 *         attname = bytestr
 *         if self._grp.data_model != 'NETCDF4': self._grp._redef()             # <<<<<<<<<<<<<<
 *         with nogil:
 *             ierr = nc_del_att(self._grpid, self._varid, attname)
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_grp, __pyx_mstate_global->__pyx_n_u_data_model); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4764, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_NETCDF4, Py_NE)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 4764, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_3) {
    __pyx_t_4 = __pyx_v_self->_grp;
    __Pyx_INCREF(__pyx_t_4);
    __pyx_t_5 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
      __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_redef, __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_1)) __PYX_ERR(0, 4764, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }

  /* "netCDF4/_netCDF4.pyx":4765
 *         attname = bytestr
 *         if self._grp.data_model != 'NETCDF4': self._grp._redef()
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_del_att(self._grpid, self._varid, attname)
 *         if self._grp.data_model != 'NETCDF4': self._grp._enddef()
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "netCDF4/_netCDF4.pyx":4766
 *         if self._grp.data_model != 'NETCDF4': self._grp._redef()
 *         with nogil:
 *             ierr = nc_del_att(self._grpid, self._varid, attname)             # <<<<<<<<<<<<<<
 *         if self._grp.data_model != 'NETCDF4': self._grp._enddef()
 *         _ensure_nc_success(ierr)
*/
        __pyx_v_ierr = nc_del_att(__pyx_v_self->_grpid, __pyx_v_self->_varid, __pyx_v_attname);
      }

      /* "netCDF4/_netCDF4.pyx":4765
 *         attname = bytestr
 *         if self._grp.data_model != 'NETCDF4': self._grp._redef()
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_del_att(self._grpid, self._varid, attname)
 *         if self._grp.data_model != 'NETCDF4': self._grp._enddef()
*/
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L6;
        }
        __pyx_L6:;
      }
  }

  /* "netCDF4/_netCDF4.pyx":4767
 *         with nogil:
 *             ierr = nc_del_att(self._grpid, self._varid, attname)
 *         if self._grp.data_model != 'NETCDF4': self._grp._enddef()             # <<<<<<<<<<<<<<
 *         _ensure_nc_success(ierr)
 * 
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_grp, __pyx_mstate_global->__pyx_n_u_data_model); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4767, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_NETCDF4, Py_NE)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 4767, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_3) {
    __pyx_t_4 = __pyx_v_self->_grp;
    __Pyx_INCREF(__pyx_t_4);
    __pyx_t_5 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
      __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_enddef, __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_1)) __PYX_ERR(0, 4767, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }

  /* "netCDF4/_netCDF4.pyx":4768
 *             ierr = nc_del_att(self._grpid, self._varid, attname)
 *         if self._grp.data_model != 'NETCDF4': self._grp._enddef()
 *         _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 * 
 *     def filters(self):
*/
  __pyx_t_4 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4768, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4768, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(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_5 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_7};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_6, __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_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4768, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":4754
 *         return _get_att(self._grp, self._varid, name, encoding=encoding)
 * 
 *     def delncattr(self, name):             # <<<<<<<<<<<<<<
 *         """
 * **`delncattr(self,name,value)`**
*/

  /* 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_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("netCDF4._netCDF4.Variable.delncattr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_bytestr);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":4770
 *         _ensure_nc_success(ierr)
 * 
 *     def filters(self):             # <<<<<<<<<<<<<<
 *         """
 * **`filters(self)`**
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_31filters(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7netCDF4_8_netCDF4_8Variable_30filters, "\n**`filters(self)`**\n\nreturn dictionary containing HDF5 filter parameters.");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_8Variable_31filters = {"filters", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_8Variable_31filters, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_8Variable_30filters};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_31filters(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("filters (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("filters", 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("filters", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_8Variable_30filters(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_30filters(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self) {
  int __pyx_v_ierr;
  int __pyx_v_ideflate;
  int __pyx_v_ishuffle;
  int __pyx_v_icomplevel;
  int __pyx_v_ifletcher32;
  int __pyx_v_izstd;
  int __pyx_v_ibzip2;
  int __pyx_v_iblosc;
  int __pyx_v_iszip;
  int __pyx_v_iszip_coding;
  int __pyx_v_iszip_pixels_per_block;
  int __pyx_v_icomplevel_zstd;
  int __pyx_v_icomplevel_bzip2;
  unsigned int __pyx_v_iblosc_shuffle;
  unsigned int __pyx_v_iblosc_compressor;
  unsigned int __pyx_v_iblosc_blocksize;
  unsigned int __pyx_v_iblosc_complevel;
  PyObject *__pyx_v_filtdict = NULL;
  unsigned int __pyx_v_blosc_compressor;
  int __pyx_v_szip_coding;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  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("filters", 0);

  /* "netCDF4/_netCDF4.pyx":4776
 * return dictionary containing HDF5 filter parameters."""
 *         cdef int ierr,ideflate,ishuffle,icomplevel,ifletcher32
 *         cdef int izstd=0             # <<<<<<<<<<<<<<
 *         cdef int ibzip2=0
 *         cdef int iblosc=0
*/
  __pyx_v_izstd = 0;

  /* "netCDF4/_netCDF4.pyx":4777
 *         cdef int ierr,ideflate,ishuffle,icomplevel,ifletcher32
 *         cdef int izstd=0
 *         cdef int ibzip2=0             # <<<<<<<<<<<<<<
 *         cdef int iblosc=0
 *         cdef int iszip=0
*/
  __pyx_v_ibzip2 = 0;

  /* "netCDF4/_netCDF4.pyx":4778
 *         cdef int izstd=0
 *         cdef int ibzip2=0
 *         cdef int iblosc=0             # <<<<<<<<<<<<<<
 *         cdef int iszip=0
 *         cdef int iszip_coding=0
*/
  __pyx_v_iblosc = 0;

  /* "netCDF4/_netCDF4.pyx":4779
 *         cdef int ibzip2=0
 *         cdef int iblosc=0
 *         cdef int iszip=0             # <<<<<<<<<<<<<<
 *         cdef int iszip_coding=0
 *         cdef int iszip_pixels_per_block=0
*/
  __pyx_v_iszip = 0;

  /* "netCDF4/_netCDF4.pyx":4780
 *         cdef int iblosc=0
 *         cdef int iszip=0
 *         cdef int iszip_coding=0             # <<<<<<<<<<<<<<
 *         cdef int iszip_pixels_per_block=0
 *         cdef int icomplevel_zstd=0
*/
  __pyx_v_iszip_coding = 0;

  /* "netCDF4/_netCDF4.pyx":4781
 *         cdef int iszip=0
 *         cdef int iszip_coding=0
 *         cdef int iszip_pixels_per_block=0             # <<<<<<<<<<<<<<
 *         cdef int icomplevel_zstd=0
 *         cdef int icomplevel_bzip2=0
*/
  __pyx_v_iszip_pixels_per_block = 0;

  /* "netCDF4/_netCDF4.pyx":4782
 *         cdef int iszip_coding=0
 *         cdef int iszip_pixels_per_block=0
 *         cdef int icomplevel_zstd=0             # <<<<<<<<<<<<<<
 *         cdef int icomplevel_bzip2=0
 *         cdef unsigned int iblosc_shuffle=0
*/
  __pyx_v_icomplevel_zstd = 0;

  /* "netCDF4/_netCDF4.pyx":4783
 *         cdef int iszip_pixels_per_block=0
 *         cdef int icomplevel_zstd=0
 *         cdef int icomplevel_bzip2=0             # <<<<<<<<<<<<<<
 *         cdef unsigned int iblosc_shuffle=0
 *         cdef unsigned int iblosc_compressor=0
*/
  __pyx_v_icomplevel_bzip2 = 0;

  /* "netCDF4/_netCDF4.pyx":4784
 *         cdef int icomplevel_zstd=0
 *         cdef int icomplevel_bzip2=0
 *         cdef unsigned int iblosc_shuffle=0             # <<<<<<<<<<<<<<
 *         cdef unsigned int iblosc_compressor=0
 *         cdef unsigned int iblosc_blocksize=0
*/
  __pyx_v_iblosc_shuffle = 0;

  /* "netCDF4/_netCDF4.pyx":4785
 *         cdef int icomplevel_bzip2=0
 *         cdef unsigned int iblosc_shuffle=0
 *         cdef unsigned int iblosc_compressor=0             # <<<<<<<<<<<<<<
 *         cdef unsigned int iblosc_blocksize=0
 *         cdef unsigned int iblosc_complevel=0
*/
  __pyx_v_iblosc_compressor = 0;

  /* "netCDF4/_netCDF4.pyx":4786
 *         cdef unsigned int iblosc_shuffle=0
 *         cdef unsigned int iblosc_compressor=0
 *         cdef unsigned int iblosc_blocksize=0             # <<<<<<<<<<<<<<
 *         cdef unsigned int iblosc_complevel=0
 *         filtdict = {'zlib':False,'szip':False,'zstd':False,'bzip2':False,'blosc':False,'shuffle':False,'complevel':0,'fletcher32':False}
*/
  __pyx_v_iblosc_blocksize = 0;

  /* "netCDF4/_netCDF4.pyx":4787
 *         cdef unsigned int iblosc_compressor=0
 *         cdef unsigned int iblosc_blocksize=0
 *         cdef unsigned int iblosc_complevel=0             # <<<<<<<<<<<<<<
 *         filtdict = {'zlib':False,'szip':False,'zstd':False,'bzip2':False,'blosc':False,'shuffle':False,'complevel':0,'fletcher32':False}
 *         if self._grp.data_model not in ['NETCDF4_CLASSIC','NETCDF4']: return
*/
  __pyx_v_iblosc_complevel = 0;

  /* "netCDF4/_netCDF4.pyx":4788
 *         cdef unsigned int iblosc_blocksize=0
 *         cdef unsigned int iblosc_complevel=0
 *         filtdict = {'zlib':False,'szip':False,'zstd':False,'bzip2':False,'blosc':False,'shuffle':False,'complevel':0,'fletcher32':False}             # <<<<<<<<<<<<<<
 *         if self._grp.data_model not in ['NETCDF4_CLASSIC','NETCDF4']: return
 *         with nogil:
*/
  __pyx_t_1 = __Pyx_PyDict_NewPresized(8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4788, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_zlib, Py_False) < (0)) __PYX_ERR(0, 4788, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_szip, Py_False) < (0)) __PYX_ERR(0, 4788, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_zstd, Py_False) < (0)) __PYX_ERR(0, 4788, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_bzip2, Py_False) < (0)) __PYX_ERR(0, 4788, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_blosc, Py_False) < (0)) __PYX_ERR(0, 4788, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_shuffle, Py_False) < (0)) __PYX_ERR(0, 4788, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_complevel, __pyx_mstate_global->__pyx_int_0) < (0)) __PYX_ERR(0, 4788, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_fletcher32, Py_False) < (0)) __PYX_ERR(0, 4788, __pyx_L1_error)
  __pyx_v_filtdict = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":4789
 *         cdef unsigned int iblosc_complevel=0
 *         filtdict = {'zlib':False,'szip':False,'zstd':False,'bzip2':False,'blosc':False,'shuffle':False,'complevel':0,'fletcher32':False}
 *         if self._grp.data_model not in ['NETCDF4_CLASSIC','NETCDF4']: return             # <<<<<<<<<<<<<<
 *         with nogil:
 *             ierr = nc_inq_var_deflate(self._grpid, self._varid, &ishuffle, &ideflate, &icomplevel)
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_grp, __pyx_mstate_global->__pyx_n_u_data_model); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4789, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_NETCDF4_CLASSIC, Py_NE)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 4789, __pyx_L1_error)
  if (__pyx_t_3) {
  } else {
    __pyx_t_2 = __pyx_t_3;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_NETCDF4, Py_NE)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 4789, __pyx_L1_error)
  __pyx_t_2 = __pyx_t_3;
  __pyx_L4_bool_binop_done:;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = __pyx_t_2;
  if (__pyx_t_3) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;
  }

  /* "netCDF4/_netCDF4.pyx":4790
 *         filtdict = {'zlib':False,'szip':False,'zstd':False,'bzip2':False,'blosc':False,'shuffle':False,'complevel':0,'fletcher32':False}
 *         if self._grp.data_model not in ['NETCDF4_CLASSIC','NETCDF4']: return
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_inq_var_deflate(self._grpid, self._varid, &ishuffle, &ideflate, &icomplevel)
 *         _ensure_nc_success(ierr)
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "netCDF4/_netCDF4.pyx":4791
 *         if self._grp.data_model not in ['NETCDF4_CLASSIC','NETCDF4']: return
 *         with nogil:
 *             ierr = nc_inq_var_deflate(self._grpid, self._varid, &ishuffle, &ideflate, &icomplevel)             # <<<<<<<<<<<<<<
 *         _ensure_nc_success(ierr)
 *         with nogil:
*/
        __pyx_v_ierr = nc_inq_var_deflate(__pyx_v_self->_grpid, __pyx_v_self->_varid, (&__pyx_v_ishuffle), (&__pyx_v_ideflate), (&__pyx_v_icomplevel));
      }

      /* "netCDF4/_netCDF4.pyx":4790
 *         filtdict = {'zlib':False,'szip':False,'zstd':False,'bzip2':False,'blosc':False,'shuffle':False,'complevel':0,'fletcher32':False}
 *         if self._grp.data_model not in ['NETCDF4_CLASSIC','NETCDF4']: return
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_inq_var_deflate(self._grpid, self._varid, &ishuffle, &ideflate, &icomplevel)
 *         _ensure_nc_success(ierr)
*/
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L8;
        }
        __pyx_L8:;
      }
  }

  /* "netCDF4/_netCDF4.pyx":4792
 *         with nogil:
 *             ierr = nc_inq_var_deflate(self._grpid, self._varid, &ishuffle, &ideflate, &icomplevel)
 *         _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 *         with nogil:
 *             ierr = nc_inq_var_fletcher32(self._grpid, self._varid, &ifletcher32)
*/
  __pyx_t_4 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4792, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4792, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = 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_7 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_6};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __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;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4792, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":4793
 *             ierr = nc_inq_var_deflate(self._grpid, self._varid, &ishuffle, &ideflate, &icomplevel)
 *         _ensure_nc_success(ierr)
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_inq_var_fletcher32(self._grpid, self._varid, &ifletcher32)
 *         _ensure_nc_success(ierr)
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "netCDF4/_netCDF4.pyx":4794
 *         _ensure_nc_success(ierr)
 *         with nogil:
 *             ierr = nc_inq_var_fletcher32(self._grpid, self._varid, &ifletcher32)             # <<<<<<<<<<<<<<
 *         _ensure_nc_success(ierr)
 *         if __has_zstandard_support__:
*/
        __pyx_v_ierr = nc_inq_var_fletcher32(__pyx_v_self->_grpid, __pyx_v_self->_varid, (&__pyx_v_ifletcher32));
      }

      /* "netCDF4/_netCDF4.pyx":4793
 *             ierr = nc_inq_var_deflate(self._grpid, self._varid, &ishuffle, &ideflate, &icomplevel)
 *         _ensure_nc_success(ierr)
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_inq_var_fletcher32(self._grpid, self._varid, &ifletcher32)
 *         _ensure_nc_success(ierr)
*/
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L11;
        }
        __pyx_L11:;
      }
  }

  /* "netCDF4/_netCDF4.pyx":4795
 *         with nogil:
 *             ierr = nc_inq_var_fletcher32(self._grpid, self._varid, &ifletcher32)
 *         _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 *         if __has_zstandard_support__:
 *             with nogil:
*/
  __pyx_t_5 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4795, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_4 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4795, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_7 = 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_7 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_4};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_6, __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;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4795, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":4796
 *             ierr = nc_inq_var_fletcher32(self._grpid, self._varid, &ifletcher32)
 *         _ensure_nc_success(ierr)
 *         if __has_zstandard_support__:             # <<<<<<<<<<<<<<
 *             with nogil:
 *                 ierr = nc_inq_var_zstandard(self._grpid, self._varid, &izstd,\
*/
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_has_zstandard_support); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4796, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 4796, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_3) {

    /* "netCDF4/_netCDF4.pyx":4797
 *         _ensure_nc_success(ierr)
 *         if __has_zstandard_support__:
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 ierr = nc_inq_var_zstandard(self._grpid, self._varid, &izstd,\
 *                        &icomplevel_zstd)
*/
    {
        PyThreadState * _save;
        _save = PyEval_SaveThread();
        __Pyx_FastGIL_Remember();
        /*try:*/ {

          /* "netCDF4/_netCDF4.pyx":4798
 *         if __has_zstandard_support__:
 *             with nogil:
 *                 ierr = nc_inq_var_zstandard(self._grpid, self._varid, &izstd,\             # <<<<<<<<<<<<<<
 *                        &icomplevel_zstd)
 *             if ierr != 0: izstd=0
*/
          __pyx_v_ierr = nc_inq_var_zstandard(__pyx_v_self->_grpid, __pyx_v_self->_varid, (&__pyx_v_izstd), (&__pyx_v_icomplevel_zstd));
        }

        /* "netCDF4/_netCDF4.pyx":4797
 *         _ensure_nc_success(ierr)
 *         if __has_zstandard_support__:
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 ierr = nc_inq_var_zstandard(self._grpid, self._varid, &izstd,\
 *                        &icomplevel_zstd)
*/
        /*finally:*/ {
          /*normal exit:*/{
            __Pyx_FastGIL_Forget();
            PyEval_RestoreThread(_save);
            goto __pyx_L15;
          }
          __pyx_L15:;
        }
    }

    /* "netCDF4/_netCDF4.pyx":4800
 *                 ierr = nc_inq_var_zstandard(self._grpid, self._varid, &izstd,\
 *                        &icomplevel_zstd)
 *             if ierr != 0: izstd=0             # <<<<<<<<<<<<<<
 *             # _ensure_nc_success(ierr)
 *         if __has_bzip2_support__:
*/
    __pyx_t_3 = (__pyx_v_ierr != 0);
    if (__pyx_t_3) {
      __pyx_v_izstd = 0;
    }

    /* "netCDF4/_netCDF4.pyx":4796
 *             ierr = nc_inq_var_fletcher32(self._grpid, self._varid, &ifletcher32)
 *         _ensure_nc_success(ierr)
 *         if __has_zstandard_support__:             # <<<<<<<<<<<<<<
 *             with nogil:
 *                 ierr = nc_inq_var_zstandard(self._grpid, self._varid, &izstd,\
*/
  }

  /* "netCDF4/_netCDF4.pyx":4802
 *             if ierr != 0: izstd=0
 *             # _ensure_nc_success(ierr)
 *         if __has_bzip2_support__:             # <<<<<<<<<<<<<<
 *             with nogil:
 *                 ierr = nc_inq_var_bzip2(self._grpid, self._varid, &ibzip2,\
*/
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_has_bzip2_support); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4802, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 4802, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_3) {

    /* "netCDF4/_netCDF4.pyx":4803
 *             # _ensure_nc_success(ierr)
 *         if __has_bzip2_support__:
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 ierr = nc_inq_var_bzip2(self._grpid, self._varid, &ibzip2,\
 *                        &icomplevel_bzip2)
*/
    {
        PyThreadState * _save;
        _save = PyEval_SaveThread();
        __Pyx_FastGIL_Remember();
        /*try:*/ {

          /* "netCDF4/_netCDF4.pyx":4804
 *         if __has_bzip2_support__:
 *             with nogil:
 *                 ierr = nc_inq_var_bzip2(self._grpid, self._varid, &ibzip2,\             # <<<<<<<<<<<<<<
 *                        &icomplevel_bzip2)
 *             if ierr != 0: ibzip2=0
*/
          __pyx_v_ierr = nc_inq_var_bzip2(__pyx_v_self->_grpid, __pyx_v_self->_varid, (&__pyx_v_ibzip2), (&__pyx_v_icomplevel_bzip2));
        }

        /* "netCDF4/_netCDF4.pyx":4803
 *             # _ensure_nc_success(ierr)
 *         if __has_bzip2_support__:
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 ierr = nc_inq_var_bzip2(self._grpid, self._varid, &ibzip2,\
 *                        &icomplevel_bzip2)
*/
        /*finally:*/ {
          /*normal exit:*/{
            __Pyx_FastGIL_Forget();
            PyEval_RestoreThread(_save);
            goto __pyx_L20;
          }
          __pyx_L20:;
        }
    }

    /* "netCDF4/_netCDF4.pyx":4806
 *                 ierr = nc_inq_var_bzip2(self._grpid, self._varid, &ibzip2,\
 *                        &icomplevel_bzip2)
 *             if ierr != 0: ibzip2=0             # <<<<<<<<<<<<<<
 *             #_ensure_nc_success(ierr)
 *         if __has_blosc_support__:
*/
    __pyx_t_3 = (__pyx_v_ierr != 0);
    if (__pyx_t_3) {
      __pyx_v_ibzip2 = 0;
    }

    /* "netCDF4/_netCDF4.pyx":4802
 *             if ierr != 0: izstd=0
 *             # _ensure_nc_success(ierr)
 *         if __has_bzip2_support__:             # <<<<<<<<<<<<<<
 *             with nogil:
 *                 ierr = nc_inq_var_bzip2(self._grpid, self._varid, &ibzip2,\
*/
  }

  /* "netCDF4/_netCDF4.pyx":4808
 *             if ierr != 0: ibzip2=0
 *             #_ensure_nc_success(ierr)
 *         if __has_blosc_support__:             # <<<<<<<<<<<<<<
 *             with nogil:
 *                 ierr = nc_inq_var_blosc(self._grpid, self._varid, &iblosc,\
*/
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_has_blosc_support); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4808, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 4808, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_3) {

    /* "netCDF4/_netCDF4.pyx":4809
 *             #_ensure_nc_success(ierr)
 *         if __has_blosc_support__:
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 ierr = nc_inq_var_blosc(self._grpid, self._varid, &iblosc,\
 *                        &iblosc_compressor,&iblosc_complevel,&iblosc_blocksize,&iblosc_shuffle)
*/
    {
        PyThreadState * _save;
        _save = PyEval_SaveThread();
        __Pyx_FastGIL_Remember();
        /*try:*/ {

          /* "netCDF4/_netCDF4.pyx":4810
 *         if __has_blosc_support__:
 *             with nogil:
 *                 ierr = nc_inq_var_blosc(self._grpid, self._varid, &iblosc,\             # <<<<<<<<<<<<<<
 *                        &iblosc_compressor,&iblosc_complevel,&iblosc_blocksize,&iblosc_shuffle)
 *             if ierr != 0: iblosc=0
*/
          __pyx_v_ierr = nc_inq_var_blosc(__pyx_v_self->_grpid, __pyx_v_self->_varid, (&__pyx_v_iblosc), (&__pyx_v_iblosc_compressor), (&__pyx_v_iblosc_complevel), (&__pyx_v_iblosc_blocksize), (&__pyx_v_iblosc_shuffle));
        }

        /* "netCDF4/_netCDF4.pyx":4809
 *             #_ensure_nc_success(ierr)
 *         if __has_blosc_support__:
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 ierr = nc_inq_var_blosc(self._grpid, self._varid, &iblosc,\
 *                        &iblosc_compressor,&iblosc_complevel,&iblosc_blocksize,&iblosc_shuffle)
*/
        /*finally:*/ {
          /*normal exit:*/{
            __Pyx_FastGIL_Forget();
            PyEval_RestoreThread(_save);
            goto __pyx_L25;
          }
          __pyx_L25:;
        }
    }

    /* "netCDF4/_netCDF4.pyx":4812
 *                 ierr = nc_inq_var_blosc(self._grpid, self._varid, &iblosc,\
 *                        &iblosc_compressor,&iblosc_complevel,&iblosc_blocksize,&iblosc_shuffle)
 *             if ierr != 0: iblosc=0             # <<<<<<<<<<<<<<
 *             #_ensure_nc_success(ierr)
 *         if __has_szip_support__:
*/
    __pyx_t_3 = (__pyx_v_ierr != 0);
    if (__pyx_t_3) {
      __pyx_v_iblosc = 0;
    }

    /* "netCDF4/_netCDF4.pyx":4808
 *             if ierr != 0: ibzip2=0
 *             #_ensure_nc_success(ierr)
 *         if __has_blosc_support__:             # <<<<<<<<<<<<<<
 *             with nogil:
 *                 ierr = nc_inq_var_blosc(self._grpid, self._varid, &iblosc,\
*/
  }

  /* "netCDF4/_netCDF4.pyx":4814
 *             if ierr != 0: iblosc=0
 *             #_ensure_nc_success(ierr)
 *         if __has_szip_support__:             # <<<<<<<<<<<<<<
 *             with nogil:
 *                 ierr = nc_inq_var_szip(self._grpid, self._varid, &iszip_coding,\
*/
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_has_szip_support); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4814, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 4814, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_3) {

    /* "netCDF4/_netCDF4.pyx":4815
 *             #_ensure_nc_success(ierr)
 *         if __has_szip_support__:
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 ierr = nc_inq_var_szip(self._grpid, self._varid, &iszip_coding,\
 *                        &iszip_pixels_per_block)
*/
    {
        PyThreadState * _save;
        _save = PyEval_SaveThread();
        __Pyx_FastGIL_Remember();
        /*try:*/ {

          /* "netCDF4/_netCDF4.pyx":4816
 *         if __has_szip_support__:
 *             with nogil:
 *                 ierr = nc_inq_var_szip(self._grpid, self._varid, &iszip_coding,\             # <<<<<<<<<<<<<<
 *                        &iszip_pixels_per_block)
 *             if ierr != 0:
*/
          __pyx_v_ierr = nc_inq_var_szip(__pyx_v_self->_grpid, __pyx_v_self->_varid, (&__pyx_v_iszip_coding), (&__pyx_v_iszip_pixels_per_block));
        }

        /* "netCDF4/_netCDF4.pyx":4815
 *             #_ensure_nc_success(ierr)
 *         if __has_szip_support__:
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 ierr = nc_inq_var_szip(self._grpid, self._varid, &iszip_coding,\
 *                        &iszip_pixels_per_block)
*/
        /*finally:*/ {
          /*normal exit:*/{
            __Pyx_FastGIL_Forget();
            PyEval_RestoreThread(_save);
            goto __pyx_L30;
          }
          __pyx_L30:;
        }
    }

    /* "netCDF4/_netCDF4.pyx":4818
 *                 ierr = nc_inq_var_szip(self._grpid, self._varid, &iszip_coding,\
 *                        &iszip_pixels_per_block)
 *             if ierr != 0:             # <<<<<<<<<<<<<<
 *                 iszip=0
 *             else:
*/
    __pyx_t_3 = (__pyx_v_ierr != 0);
    if (__pyx_t_3) {

      /* "netCDF4/_netCDF4.pyx":4819
 *                        &iszip_pixels_per_block)
 *             if ierr != 0:
 *                 iszip=0             # <<<<<<<<<<<<<<
 *             else:
 *                 if iszip_coding:
*/
      __pyx_v_iszip = 0;

      /* "netCDF4/_netCDF4.pyx":4818
 *                 ierr = nc_inq_var_szip(self._grpid, self._varid, &iszip_coding,\
 *                        &iszip_pixels_per_block)
 *             if ierr != 0:             # <<<<<<<<<<<<<<
 *                 iszip=0
 *             else:
*/
      goto __pyx_L31;
    }

    /* "netCDF4/_netCDF4.pyx":4821
 *                 iszip=0
 *             else:
 *                 if iszip_coding:             # <<<<<<<<<<<<<<
 *                     iszip=1
 *                 else:
*/
    /*else*/ {
      __pyx_t_3 = (__pyx_v_iszip_coding != 0);
      if (__pyx_t_3) {

        /* "netCDF4/_netCDF4.pyx":4822
 *             else:
 *                 if iszip_coding:
 *                     iszip=1             # <<<<<<<<<<<<<<
 *                 else:
 *                     iszip=0
*/
        __pyx_v_iszip = 1;

        /* "netCDF4/_netCDF4.pyx":4821
 *                 iszip=0
 *             else:
 *                 if iszip_coding:             # <<<<<<<<<<<<<<
 *                     iszip=1
 *                 else:
*/
        goto __pyx_L32;
      }

      /* "netCDF4/_netCDF4.pyx":4824
 *                     iszip=1
 *                 else:
 *                     iszip=0             # <<<<<<<<<<<<<<
 *             #_ensure_nc_success(ierr)
 *         if ideflate:
*/
      /*else*/ {
        __pyx_v_iszip = 0;
      }
      __pyx_L32:;
    }
    __pyx_L31:;

    /* "netCDF4/_netCDF4.pyx":4814
 *             if ierr != 0: iblosc=0
 *             #_ensure_nc_success(ierr)
 *         if __has_szip_support__:             # <<<<<<<<<<<<<<
 *             with nogil:
 *                 ierr = nc_inq_var_szip(self._grpid, self._varid, &iszip_coding,\
*/
  }

  /* "netCDF4/_netCDF4.pyx":4826
 *                     iszip=0
 *             #_ensure_nc_success(ierr)
 *         if ideflate:             # <<<<<<<<<<<<<<
 *             filtdict['zlib']=True
 *             filtdict['complevel']=icomplevel
*/
  __pyx_t_3 = (__pyx_v_ideflate != 0);
  if (__pyx_t_3) {

    /* "netCDF4/_netCDF4.pyx":4827
 *             #_ensure_nc_success(ierr)
 *         if ideflate:
 *             filtdict['zlib']=True             # <<<<<<<<<<<<<<
 *             filtdict['complevel']=icomplevel
 *         if izstd:
*/
    if (unlikely((PyDict_SetItem(__pyx_v_filtdict, __pyx_mstate_global->__pyx_n_u_zlib, Py_True) < 0))) __PYX_ERR(0, 4827, __pyx_L1_error)

    /* "netCDF4/_netCDF4.pyx":4828
 *         if ideflate:
 *             filtdict['zlib']=True
 *             filtdict['complevel']=icomplevel             # <<<<<<<<<<<<<<
 *         if izstd:
 *             filtdict['zstd']=True
*/
    __pyx_t_1 = __Pyx_PyLong_From_int(__pyx_v_icomplevel); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4828, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    if (unlikely((PyDict_SetItem(__pyx_v_filtdict, __pyx_mstate_global->__pyx_n_u_complevel, __pyx_t_1) < 0))) __PYX_ERR(0, 4828, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":4826
 *                     iszip=0
 *             #_ensure_nc_success(ierr)
 *         if ideflate:             # <<<<<<<<<<<<<<
 *             filtdict['zlib']=True
 *             filtdict['complevel']=icomplevel
*/
  }

  /* "netCDF4/_netCDF4.pyx":4829
 *             filtdict['zlib']=True
 *             filtdict['complevel']=icomplevel
 *         if izstd:             # <<<<<<<<<<<<<<
 *             filtdict['zstd']=True
 *             filtdict['complevel']=icomplevel_zstd
*/
  __pyx_t_3 = (__pyx_v_izstd != 0);
  if (__pyx_t_3) {

    /* "netCDF4/_netCDF4.pyx":4830
 *             filtdict['complevel']=icomplevel
 *         if izstd:
 *             filtdict['zstd']=True             # <<<<<<<<<<<<<<
 *             filtdict['complevel']=icomplevel_zstd
 *         if ibzip2:
*/
    if (unlikely((PyDict_SetItem(__pyx_v_filtdict, __pyx_mstate_global->__pyx_n_u_zstd, Py_True) < 0))) __PYX_ERR(0, 4830, __pyx_L1_error)

    /* "netCDF4/_netCDF4.pyx":4831
 *         if izstd:
 *             filtdict['zstd']=True
 *             filtdict['complevel']=icomplevel_zstd             # <<<<<<<<<<<<<<
 *         if ibzip2:
 *             filtdict['bzip2']=True
*/
    __pyx_t_1 = __Pyx_PyLong_From_int(__pyx_v_icomplevel_zstd); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4831, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    if (unlikely((PyDict_SetItem(__pyx_v_filtdict, __pyx_mstate_global->__pyx_n_u_complevel, __pyx_t_1) < 0))) __PYX_ERR(0, 4831, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":4829
 *             filtdict['zlib']=True
 *             filtdict['complevel']=icomplevel
 *         if izstd:             # <<<<<<<<<<<<<<
 *             filtdict['zstd']=True
 *             filtdict['complevel']=icomplevel_zstd
*/
  }

  /* "netCDF4/_netCDF4.pyx":4832
 *             filtdict['zstd']=True
 *             filtdict['complevel']=icomplevel_zstd
 *         if ibzip2:             # <<<<<<<<<<<<<<
 *             filtdict['bzip2']=True
 *             filtdict['complevel']=icomplevel_bzip2
*/
  __pyx_t_3 = (__pyx_v_ibzip2 != 0);
  if (__pyx_t_3) {

    /* "netCDF4/_netCDF4.pyx":4833
 *             filtdict['complevel']=icomplevel_zstd
 *         if ibzip2:
 *             filtdict['bzip2']=True             # <<<<<<<<<<<<<<
 *             filtdict['complevel']=icomplevel_bzip2
 *         if iblosc:
*/
    if (unlikely((PyDict_SetItem(__pyx_v_filtdict, __pyx_mstate_global->__pyx_n_u_bzip2, Py_True) < 0))) __PYX_ERR(0, 4833, __pyx_L1_error)

    /* "netCDF4/_netCDF4.pyx":4834
 *         if ibzip2:
 *             filtdict['bzip2']=True
 *             filtdict['complevel']=icomplevel_bzip2             # <<<<<<<<<<<<<<
 *         if iblosc:
 *             blosc_compressor = iblosc_compressor
*/
    __pyx_t_1 = __Pyx_PyLong_From_int(__pyx_v_icomplevel_bzip2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4834, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    if (unlikely((PyDict_SetItem(__pyx_v_filtdict, __pyx_mstate_global->__pyx_n_u_complevel, __pyx_t_1) < 0))) __PYX_ERR(0, 4834, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":4832
 *             filtdict['zstd']=True
 *             filtdict['complevel']=icomplevel_zstd
 *         if ibzip2:             # <<<<<<<<<<<<<<
 *             filtdict['bzip2']=True
 *             filtdict['complevel']=icomplevel_bzip2
*/
  }

  /* "netCDF4/_netCDF4.pyx":4835
 *             filtdict['bzip2']=True
 *             filtdict['complevel']=icomplevel_bzip2
 *         if iblosc:             # <<<<<<<<<<<<<<
 *             blosc_compressor = iblosc_compressor
 *             filtdict['blosc']={'compressor':_blosc_dict_inv[blosc_compressor],'shuffle':iblosc_shuffle}
*/
  __pyx_t_3 = (__pyx_v_iblosc != 0);
  if (__pyx_t_3) {

    /* "netCDF4/_netCDF4.pyx":4836
 *             filtdict['complevel']=icomplevel_bzip2
 *         if iblosc:
 *             blosc_compressor = iblosc_compressor             # <<<<<<<<<<<<<<
 *             filtdict['blosc']={'compressor':_blosc_dict_inv[blosc_compressor],'shuffle':iblosc_shuffle}
 *             filtdict['complevel']=iblosc_complevel
*/
    __pyx_v_blosc_compressor = __pyx_v_iblosc_compressor;

    /* "netCDF4/_netCDF4.pyx":4837
 *         if iblosc:
 *             blosc_compressor = iblosc_compressor
 *             filtdict['blosc']={'compressor':_blosc_dict_inv[blosc_compressor],'shuffle':iblosc_shuffle}             # <<<<<<<<<<<<<<
 *             filtdict['complevel']=iblosc_complevel
 *         if iszip:
*/
    __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4837, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_blosc_dict_inv); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4837, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_6, __pyx_v_blosc_compressor, unsigned int, 0, __Pyx_PyLong_From_unsigned_int, 0, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4837, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (PyDict_SetItem(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_compressor, __pyx_t_4) < (0)) __PYX_ERR(0, 4837, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_PyLong_From_unsigned_int(__pyx_v_iblosc_shuffle); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4837, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (PyDict_SetItem(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_shuffle, __pyx_t_4) < (0)) __PYX_ERR(0, 4837, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely((PyDict_SetItem(__pyx_v_filtdict, __pyx_mstate_global->__pyx_n_u_blosc, __pyx_t_1) < 0))) __PYX_ERR(0, 4837, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":4838
 *             blosc_compressor = iblosc_compressor
 *             filtdict['blosc']={'compressor':_blosc_dict_inv[blosc_compressor],'shuffle':iblosc_shuffle}
 *             filtdict['complevel']=iblosc_complevel             # <<<<<<<<<<<<<<
 *         if iszip:
 *             szip_coding = iszip_coding
*/
    __pyx_t_1 = __Pyx_PyLong_From_unsigned_int(__pyx_v_iblosc_complevel); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4838, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    if (unlikely((PyDict_SetItem(__pyx_v_filtdict, __pyx_mstate_global->__pyx_n_u_complevel, __pyx_t_1) < 0))) __PYX_ERR(0, 4838, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":4835
 *             filtdict['bzip2']=True
 *             filtdict['complevel']=icomplevel_bzip2
 *         if iblosc:             # <<<<<<<<<<<<<<
 *             blosc_compressor = iblosc_compressor
 *             filtdict['blosc']={'compressor':_blosc_dict_inv[blosc_compressor],'shuffle':iblosc_shuffle}
*/
  }

  /* "netCDF4/_netCDF4.pyx":4839
 *             filtdict['blosc']={'compressor':_blosc_dict_inv[blosc_compressor],'shuffle':iblosc_shuffle}
 *             filtdict['complevel']=iblosc_complevel
 *         if iszip:             # <<<<<<<<<<<<<<
 *             szip_coding = iszip_coding
 *             filtdict['szip']={'coding':_szip_dict_inv[szip_coding],'pixels_per_block':iszip_pixels_per_block}
*/
  __pyx_t_3 = (__pyx_v_iszip != 0);
  if (__pyx_t_3) {

    /* "netCDF4/_netCDF4.pyx":4840
 *             filtdict['complevel']=iblosc_complevel
 *         if iszip:
 *             szip_coding = iszip_coding             # <<<<<<<<<<<<<<
 *             filtdict['szip']={'coding':_szip_dict_inv[szip_coding],'pixels_per_block':iszip_pixels_per_block}
 *         if ishuffle:
*/
    __pyx_v_szip_coding = __pyx_v_iszip_coding;

    /* "netCDF4/_netCDF4.pyx":4841
 *         if iszip:
 *             szip_coding = iszip_coding
 *             filtdict['szip']={'coding':_szip_dict_inv[szip_coding],'pixels_per_block':iszip_pixels_per_block}             # <<<<<<<<<<<<<<
 *         if ishuffle:
 *             filtdict['shuffle']=True
*/
    __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4841, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_szip_dict_inv); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4841, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = __Pyx_GetItemInt(__pyx_t_4, __pyx_v_szip_coding, int, 1, __Pyx_PyLong_From_int, 0, 1, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4841, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (PyDict_SetItem(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_coding, __pyx_t_6) < (0)) __PYX_ERR(0, 4841, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = __Pyx_PyLong_From_int(__pyx_v_iszip_pixels_per_block); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4841, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    if (PyDict_SetItem(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_pixels_per_block, __pyx_t_6) < (0)) __PYX_ERR(0, 4841, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely((PyDict_SetItem(__pyx_v_filtdict, __pyx_mstate_global->__pyx_n_u_szip, __pyx_t_1) < 0))) __PYX_ERR(0, 4841, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":4839
 *             filtdict['blosc']={'compressor':_blosc_dict_inv[blosc_compressor],'shuffle':iblosc_shuffle}
 *             filtdict['complevel']=iblosc_complevel
 *         if iszip:             # <<<<<<<<<<<<<<
 *             szip_coding = iszip_coding
 *             filtdict['szip']={'coding':_szip_dict_inv[szip_coding],'pixels_per_block':iszip_pixels_per_block}
*/
  }

  /* "netCDF4/_netCDF4.pyx":4842
 *             szip_coding = iszip_coding
 *             filtdict['szip']={'coding':_szip_dict_inv[szip_coding],'pixels_per_block':iszip_pixels_per_block}
 *         if ishuffle:             # <<<<<<<<<<<<<<
 *             filtdict['shuffle']=True
 *         if ifletcher32:
*/
  __pyx_t_3 = (__pyx_v_ishuffle != 0);
  if (__pyx_t_3) {

    /* "netCDF4/_netCDF4.pyx":4843
 *             filtdict['szip']={'coding':_szip_dict_inv[szip_coding],'pixels_per_block':iszip_pixels_per_block}
 *         if ishuffle:
 *             filtdict['shuffle']=True             # <<<<<<<<<<<<<<
 *         if ifletcher32:
 *             filtdict['fletcher32']=True
*/
    if (unlikely((PyDict_SetItem(__pyx_v_filtdict, __pyx_mstate_global->__pyx_n_u_shuffle, Py_True) < 0))) __PYX_ERR(0, 4843, __pyx_L1_error)

    /* "netCDF4/_netCDF4.pyx":4842
 *             szip_coding = iszip_coding
 *             filtdict['szip']={'coding':_szip_dict_inv[szip_coding],'pixels_per_block':iszip_pixels_per_block}
 *         if ishuffle:             # <<<<<<<<<<<<<<
 *             filtdict['shuffle']=True
 *         if ifletcher32:
*/
  }

  /* "netCDF4/_netCDF4.pyx":4844
 *         if ishuffle:
 *             filtdict['shuffle']=True
 *         if ifletcher32:             # <<<<<<<<<<<<<<
 *             filtdict['fletcher32']=True
 *         return filtdict
*/
  __pyx_t_3 = (__pyx_v_ifletcher32 != 0);
  if (__pyx_t_3) {

    /* "netCDF4/_netCDF4.pyx":4845
 *             filtdict['shuffle']=True
 *         if ifletcher32:
 *             filtdict['fletcher32']=True             # <<<<<<<<<<<<<<
 *         return filtdict
 * 
*/
    if (unlikely((PyDict_SetItem(__pyx_v_filtdict, __pyx_mstate_global->__pyx_n_u_fletcher32, Py_True) < 0))) __PYX_ERR(0, 4845, __pyx_L1_error)

    /* "netCDF4/_netCDF4.pyx":4844
 *         if ishuffle:
 *             filtdict['shuffle']=True
 *         if ifletcher32:             # <<<<<<<<<<<<<<
 *             filtdict['fletcher32']=True
 *         return filtdict
*/
  }

  /* "netCDF4/_netCDF4.pyx":4846
 *         if ifletcher32:
 *             filtdict['fletcher32']=True
 *         return filtdict             # <<<<<<<<<<<<<<
 * 
 *     def quantization(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_filtdict);
  __pyx_r = __pyx_v_filtdict;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":4770
 *         _ensure_nc_success(ierr)
 * 
 *     def filters(self):             # <<<<<<<<<<<<<<
 *         """
 * **`filters(self)`**
*/

  /* 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("netCDF4._netCDF4.Variable.filters", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_filtdict);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":4848
 *         return filtdict
 * 
 *     def quantization(self):             # <<<<<<<<<<<<<<
 *         """
 * **`quantization(self)`**
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_33quantization(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7netCDF4_8_netCDF4_8Variable_32quantization, "\n**`quantization(self)`**\n\nreturn number of significant digits and the algorithm used in quantization.\nReturns None if quantization not active.\n");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_8Variable_33quantization = {"quantization", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_8Variable_33quantization, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_8Variable_32quantization};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_33quantization(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("quantization (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("quantization", 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("quantization", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_8Variable_32quantization(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_32quantization(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self) {
  int __pyx_v_ierr;
  int __pyx_v_nsd;
  int __pyx_v_quantize_mode;
  int __pyx_v_sig_digits;
  PyObject *__pyx_v_quant_mode = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  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("quantization", 0);

  /* "netCDF4/_netCDF4.pyx":4855
 * Returns None if quantization not active.
 * """
 *         if not __has_quantization_support__:             # <<<<<<<<<<<<<<
 *             return None
 * 
*/
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_has_quantization_support); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4855, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 4855, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = (!__pyx_t_2);
  if (__pyx_t_3) {

    /* "netCDF4/_netCDF4.pyx":4856
 * """
 *         if not __has_quantization_support__:
 *             return None             # <<<<<<<<<<<<<<
 * 
 *         cdef int ierr, nsd, quantize_mode
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "netCDF4/_netCDF4.pyx":4855
 * Returns None if quantization not active.
 * """
 *         if not __has_quantization_support__:             # <<<<<<<<<<<<<<
 *             return None
 * 
*/
  }

  /* "netCDF4/_netCDF4.pyx":4859
 * 
 *         cdef int ierr, nsd, quantize_mode
 *         if self._grp.data_model not in ['NETCDF4_CLASSIC','NETCDF4']:             # <<<<<<<<<<<<<<
 *             return None
 * 
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_grp, __pyx_mstate_global->__pyx_n_u_data_model); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4859, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_NETCDF4_CLASSIC, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 4859, __pyx_L1_error)
  if (__pyx_t_2) {
  } else {
    __pyx_t_3 = __pyx_t_2;
    goto __pyx_L5_bool_binop_done;
  }
  __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_NETCDF4, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 4859, __pyx_L1_error)
  __pyx_t_3 = __pyx_t_2;
  __pyx_L5_bool_binop_done:;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_2 = __pyx_t_3;
  if (__pyx_t_2) {

    /* "netCDF4/_netCDF4.pyx":4860
 *         cdef int ierr, nsd, quantize_mode
 *         if self._grp.data_model not in ['NETCDF4_CLASSIC','NETCDF4']:
 *             return None             # <<<<<<<<<<<<<<
 * 
 *         with nogil:
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "netCDF4/_netCDF4.pyx":4859
 * 
 *         cdef int ierr, nsd, quantize_mode
 *         if self._grp.data_model not in ['NETCDF4_CLASSIC','NETCDF4']:             # <<<<<<<<<<<<<<
 *             return None
 * 
*/
  }

  /* "netCDF4/_netCDF4.pyx":4862
 *             return None
 * 
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_inq_var_quantize(self._grpid, self._varid, &quantize_mode, &nsd)
 *         _ensure_nc_success(ierr)
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "netCDF4/_netCDF4.pyx":4863
 * 
 *         with nogil:
 *             ierr = nc_inq_var_quantize(self._grpid, self._varid, &quantize_mode, &nsd)             # <<<<<<<<<<<<<<
 *         _ensure_nc_success(ierr)
 *         if quantize_mode == NC_NOQUANTIZE:
*/
        __pyx_v_ierr = nc_inq_var_quantize(__pyx_v_self->_grpid, __pyx_v_self->_varid, (&__pyx_v_quantize_mode), (&__pyx_v_nsd));
      }

      /* "netCDF4/_netCDF4.pyx":4862
 *             return None
 * 
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_inq_var_quantize(self._grpid, self._varid, &quantize_mode, &nsd)
 *         _ensure_nc_success(ierr)
*/
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L9;
        }
        __pyx_L9:;
      }
  }

  /* "netCDF4/_netCDF4.pyx":4864
 *         with nogil:
 *             ierr = nc_inq_var_quantize(self._grpid, self._varid, &quantize_mode, &nsd)
 *         _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 *         if quantize_mode == NC_NOQUANTIZE:
 *             return None
*/
  __pyx_t_4 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4864, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4864, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = 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_7 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_6};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __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;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4864, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":4865
 *             ierr = nc_inq_var_quantize(self._grpid, self._varid, &quantize_mode, &nsd)
 *         _ensure_nc_success(ierr)
 *         if quantize_mode == NC_NOQUANTIZE:             # <<<<<<<<<<<<<<
 *             return None
 * 
*/
  __pyx_t_2 = (__pyx_v_quantize_mode == NC_NOQUANTIZE);
  if (__pyx_t_2) {

    /* "netCDF4/_netCDF4.pyx":4866
 *         _ensure_nc_success(ierr)
 *         if quantize_mode == NC_NOQUANTIZE:
 *             return None             # <<<<<<<<<<<<<<
 * 
 *         if quantize_mode == NC_QUANTIZE_GRANULARBR:
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "netCDF4/_netCDF4.pyx":4865
 *             ierr = nc_inq_var_quantize(self._grpid, self._varid, &quantize_mode, &nsd)
 *         _ensure_nc_success(ierr)
 *         if quantize_mode == NC_NOQUANTIZE:             # <<<<<<<<<<<<<<
 *             return None
 * 
*/
  }

  /* "netCDF4/_netCDF4.pyx":4868
 *             return None
 * 
 *         if quantize_mode == NC_QUANTIZE_GRANULARBR:             # <<<<<<<<<<<<<<
 *             sig_digits = nsd
 *             quant_mode = 'GranularBitRound'
*/
  switch (__pyx_v_quantize_mode) {
    case NC_QUANTIZE_GRANULARBR:

    /* "netCDF4/_netCDF4.pyx":4869
 * 
 *         if quantize_mode == NC_QUANTIZE_GRANULARBR:
 *             sig_digits = nsd             # <<<<<<<<<<<<<<
 *             quant_mode = 'GranularBitRound'
 *         elif quantize_mode == NC_QUANTIZE_BITROUND:
*/
    __pyx_v_sig_digits = __pyx_v_nsd;

    /* "netCDF4/_netCDF4.pyx":4870
 *         if quantize_mode == NC_QUANTIZE_GRANULARBR:
 *             sig_digits = nsd
 *             quant_mode = 'GranularBitRound'             # <<<<<<<<<<<<<<
 *         elif quantize_mode == NC_QUANTIZE_BITROUND:
 *             sig_digits = nsd # interpreted as bits, not decimal
*/
    __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_GranularBitRound);
    __pyx_v_quant_mode = __pyx_mstate_global->__pyx_n_u_GranularBitRound;

    /* "netCDF4/_netCDF4.pyx":4868
 *             return None
 * 
 *         if quantize_mode == NC_QUANTIZE_GRANULARBR:             # <<<<<<<<<<<<<<
 *             sig_digits = nsd
 *             quant_mode = 'GranularBitRound'
*/
    break;
    case NC_QUANTIZE_BITROUND:

    /* "netCDF4/_netCDF4.pyx":4872
 *             quant_mode = 'GranularBitRound'
 *         elif quantize_mode == NC_QUANTIZE_BITROUND:
 *             sig_digits = nsd # interpreted as bits, not decimal             # <<<<<<<<<<<<<<
 *             quant_mode = 'BitRound'
 *         else:
*/
    __pyx_v_sig_digits = __pyx_v_nsd;

    /* "netCDF4/_netCDF4.pyx":4873
 *         elif quantize_mode == NC_QUANTIZE_BITROUND:
 *             sig_digits = nsd # interpreted as bits, not decimal
 *             quant_mode = 'BitRound'             # <<<<<<<<<<<<<<
 *         else:
 *             sig_digits = nsd
*/
    __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_BitRound);
    __pyx_v_quant_mode = __pyx_mstate_global->__pyx_n_u_BitRound;

    /* "netCDF4/_netCDF4.pyx":4871
 *             sig_digits = nsd
 *             quant_mode = 'GranularBitRound'
 *         elif quantize_mode == NC_QUANTIZE_BITROUND:             # <<<<<<<<<<<<<<
 *             sig_digits = nsd # interpreted as bits, not decimal
 *             quant_mode = 'BitRound'
*/
    break;
    default:

    /* "netCDF4/_netCDF4.pyx":4875
 *             quant_mode = 'BitRound'
 *         else:
 *             sig_digits = nsd             # <<<<<<<<<<<<<<
 *             quant_mode = 'BitGroom'
 *         return sig_digits, quant_mode
*/
    __pyx_v_sig_digits = __pyx_v_nsd;

    /* "netCDF4/_netCDF4.pyx":4876
 *         else:
 *             sig_digits = nsd
 *             quant_mode = 'BitGroom'             # <<<<<<<<<<<<<<
 *         return sig_digits, quant_mode
 * 
*/
    __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_BitGroom);
    __pyx_v_quant_mode = __pyx_mstate_global->__pyx_n_u_BitGroom;
    break;
  }

  /* "netCDF4/_netCDF4.pyx":4877
 *             sig_digits = nsd
 *             quant_mode = 'BitGroom'
 *         return sig_digits, quant_mode             # <<<<<<<<<<<<<<
 * 
 *     def endian(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_int(__pyx_v_sig_digits); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4877, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4877, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1) != (0)) __PYX_ERR(0, 4877, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_quant_mode);
  __Pyx_GIVEREF(__pyx_v_quant_mode);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_quant_mode) != (0)) __PYX_ERR(0, 4877, __pyx_L1_error);
  __pyx_t_1 = 0;
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":4848
 *         return filtdict
 * 
 *     def quantization(self):             # <<<<<<<<<<<<<<
 *         """
 * **`quantization(self)`**
*/

  /* 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("netCDF4._netCDF4.Variable.quantization", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_quant_mode);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":4879
 *         return sig_digits, quant_mode
 * 
 *     def endian(self):             # <<<<<<<<<<<<<<
 *         """
 * **`endian(self)`**
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_35endian(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7netCDF4_8_netCDF4_8Variable_34endian, "\n**`endian(self)`**\n\nreturn endian-ness (`little,big,native`) of variable (as stored in HDF5 file).");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_8Variable_35endian = {"endian", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_8Variable_35endian, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_8Variable_34endian};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_35endian(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("endian (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("endian", 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("endian", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_8Variable_34endian(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_34endian(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self) {
  int __pyx_v_ierr;
  int __pyx_v_iendian;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  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("endian", 0);

  /* "netCDF4/_netCDF4.pyx":4885
 * return endian-ness (`little,big,native`) of variable (as stored in HDF5 file)."""
 *         cdef int ierr, iendian
 *         if self._grp.data_model not in ['NETCDF4_CLASSIC','NETCDF4']:             # <<<<<<<<<<<<<<
 *             return 'native'
 *         with nogil:
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_grp, __pyx_mstate_global->__pyx_n_u_data_model); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4885, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_NETCDF4_CLASSIC, Py_NE)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 4885, __pyx_L1_error)
  if (__pyx_t_3) {
  } else {
    __pyx_t_2 = __pyx_t_3;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_NETCDF4, Py_NE)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 4885, __pyx_L1_error)
  __pyx_t_2 = __pyx_t_3;
  __pyx_L4_bool_binop_done:;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = __pyx_t_2;
  if (__pyx_t_3) {

    /* "netCDF4/_netCDF4.pyx":4886
 *         cdef int ierr, iendian
 *         if self._grp.data_model not in ['NETCDF4_CLASSIC','NETCDF4']:
 *             return 'native'             # <<<<<<<<<<<<<<
 *         with nogil:
 *             ierr = nc_inq_var_endian(self._grpid, self._varid, &iendian)
*/
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_native);
    __pyx_r = __pyx_mstate_global->__pyx_n_u_native;
    goto __pyx_L0;

    /* "netCDF4/_netCDF4.pyx":4885
 * return endian-ness (`little,big,native`) of variable (as stored in HDF5 file)."""
 *         cdef int ierr, iendian
 *         if self._grp.data_model not in ['NETCDF4_CLASSIC','NETCDF4']:             # <<<<<<<<<<<<<<
 *             return 'native'
 *         with nogil:
*/
  }

  /* "netCDF4/_netCDF4.pyx":4887
 *         if self._grp.data_model not in ['NETCDF4_CLASSIC','NETCDF4']:
 *             return 'native'
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_inq_var_endian(self._grpid, self._varid, &iendian)
 *         _ensure_nc_success(ierr)
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "netCDF4/_netCDF4.pyx":4888
 *             return 'native'
 *         with nogil:
 *             ierr = nc_inq_var_endian(self._grpid, self._varid, &iendian)             # <<<<<<<<<<<<<<
 *         _ensure_nc_success(ierr)
 *         if iendian == NC_ENDIAN_LITTLE:
*/
        __pyx_v_ierr = nc_inq_var_endian(__pyx_v_self->_grpid, __pyx_v_self->_varid, (&__pyx_v_iendian));
      }

      /* "netCDF4/_netCDF4.pyx":4887
 *         if self._grp.data_model not in ['NETCDF4_CLASSIC','NETCDF4']:
 *             return 'native'
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_inq_var_endian(self._grpid, self._varid, &iendian)
 *         _ensure_nc_success(ierr)
*/
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L8;
        }
        __pyx_L8:;
      }
  }

  /* "netCDF4/_netCDF4.pyx":4889
 *         with nogil:
 *             ierr = nc_inq_var_endian(self._grpid, self._varid, &iendian)
 *         _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 *         if iendian == NC_ENDIAN_LITTLE:
 *             return 'little'
*/
  __pyx_t_4 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4889, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4889, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = 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_7 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_6};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __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;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4889, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":4890
 *             ierr = nc_inq_var_endian(self._grpid, self._varid, &iendian)
 *         _ensure_nc_success(ierr)
 *         if iendian == NC_ENDIAN_LITTLE:             # <<<<<<<<<<<<<<
 *             return 'little'
 *         elif iendian == NC_ENDIAN_BIG:
*/
  switch (__pyx_v_iendian) {
    case NC_ENDIAN_LITTLE:

    /* "netCDF4/_netCDF4.pyx":4891
 *         _ensure_nc_success(ierr)
 *         if iendian == NC_ENDIAN_LITTLE:
 *             return 'little'             # <<<<<<<<<<<<<<
 *         elif iendian == NC_ENDIAN_BIG:
 *             return 'big'
*/
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_little);
    __pyx_r = __pyx_mstate_global->__pyx_n_u_little;
    goto __pyx_L0;

    /* "netCDF4/_netCDF4.pyx":4890
 *             ierr = nc_inq_var_endian(self._grpid, self._varid, &iendian)
 *         _ensure_nc_success(ierr)
 *         if iendian == NC_ENDIAN_LITTLE:             # <<<<<<<<<<<<<<
 *             return 'little'
 *         elif iendian == NC_ENDIAN_BIG:
*/
    break;
    case NC_ENDIAN_BIG:

    /* "netCDF4/_netCDF4.pyx":4893
 *             return 'little'
 *         elif iendian == NC_ENDIAN_BIG:
 *             return 'big'             # <<<<<<<<<<<<<<
 *         else:
 *             return 'native'
*/
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_big);
    __pyx_r = __pyx_mstate_global->__pyx_n_u_big;
    goto __pyx_L0;

    /* "netCDF4/_netCDF4.pyx":4892
 *         if iendian == NC_ENDIAN_LITTLE:
 *             return 'little'
 *         elif iendian == NC_ENDIAN_BIG:             # <<<<<<<<<<<<<<
 *             return 'big'
 *         else:
*/
    break;
    default:

    /* "netCDF4/_netCDF4.pyx":4895
 *             return 'big'
 *         else:
 *             return 'native'             # <<<<<<<<<<<<<<
 * 
 *     def chunking(self):
*/
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_native);
    __pyx_r = __pyx_mstate_global->__pyx_n_u_native;
    goto __pyx_L0;
    break;
  }

  /* "netCDF4/_netCDF4.pyx":4879
 *         return sig_digits, quant_mode
 * 
 *     def endian(self):             # <<<<<<<<<<<<<<
 *         """
 * **`endian(self)`**
*/

  /* 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("netCDF4._netCDF4.Variable.endian", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":4897
 *             return 'native'
 * 
 *     def chunking(self):             # <<<<<<<<<<<<<<
 *         """
 * **`chunking(self)`**
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_37chunking(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7netCDF4_8_netCDF4_8Variable_36chunking, "\n**`chunking(self)`**\n\nreturn variable chunking information.  If the dataset is\ndefined to be contiguous (and hence there is no chunking) the word 'contiguous'\nis returned.  Otherwise, a sequence with the chunksize for\neach dimension is returned.");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_8Variable_37chunking = {"chunking", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_8Variable_37chunking, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_8Variable_36chunking};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_37chunking(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("chunking (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("chunking", 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("chunking", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_8Variable_36chunking(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_36chunking(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self) {
  int __pyx_v_ierr;
  int __pyx_v_icontiguous;
  int __pyx_v_ndims;
  size_t *__pyx_v_chunksizesp;
  PyObject *__pyx_v_chunksizes = NULL;
  int __pyx_v_n;
  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;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  size_t __pyx_t_8;
  int __pyx_t_9;
  int __pyx_t_10;
  int __pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("chunking", 0);

  /* "netCDF4/_netCDF4.pyx":4907
 *         cdef int ierr, icontiguous, ndims
 *         cdef size_t *chunksizesp
 *         if self._grp.data_model not in ['NETCDF4_CLASSIC','NETCDF4']: return None             # <<<<<<<<<<<<<<
 *         ndims = self.ndim
 *         chunksizesp = <size_t *>malloc(sizeof(size_t) * ndims)
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_grp, __pyx_mstate_global->__pyx_n_u_data_model); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4907, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_NETCDF4_CLASSIC, Py_NE)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 4907, __pyx_L1_error)
  if (__pyx_t_3) {
  } else {
    __pyx_t_2 = __pyx_t_3;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_NETCDF4, Py_NE)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 4907, __pyx_L1_error)
  __pyx_t_2 = __pyx_t_3;
  __pyx_L4_bool_binop_done:;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = __pyx_t_2;
  if (__pyx_t_3) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;
  }

  /* "netCDF4/_netCDF4.pyx":4908
 *         cdef size_t *chunksizesp
 *         if self._grp.data_model not in ['NETCDF4_CLASSIC','NETCDF4']: return None
 *         ndims = self.ndim             # <<<<<<<<<<<<<<
 *         chunksizesp = <size_t *>malloc(sizeof(size_t) * ndims)
 *         with nogil:
*/
  __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_v_self->ndim); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 4908, __pyx_L1_error)
  __pyx_v_ndims = __pyx_t_4;

  /* "netCDF4/_netCDF4.pyx":4909
 *         if self._grp.data_model not in ['NETCDF4_CLASSIC','NETCDF4']: return None
 *         ndims = self.ndim
 *         chunksizesp = <size_t *>malloc(sizeof(size_t) * ndims)             # <<<<<<<<<<<<<<
 *         with nogil:
 *             ierr = nc_inq_var_chunking(self._grpid, self._varid, &icontiguous, chunksizesp)
*/
  __pyx_v_chunksizesp = ((size_t *)malloc(((sizeof(size_t)) * __pyx_v_ndims)));

  /* "netCDF4/_netCDF4.pyx":4910
 *         ndims = self.ndim
 *         chunksizesp = <size_t *>malloc(sizeof(size_t) * ndims)
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_inq_var_chunking(self._grpid, self._varid, &icontiguous, chunksizesp)
 *         _ensure_nc_success(ierr)
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "netCDF4/_netCDF4.pyx":4911
 *         chunksizesp = <size_t *>malloc(sizeof(size_t) * ndims)
 *         with nogil:
 *             ierr = nc_inq_var_chunking(self._grpid, self._varid, &icontiguous, chunksizesp)             # <<<<<<<<<<<<<<
 *         _ensure_nc_success(ierr)
 *         chunksizes=[]
*/
        __pyx_v_ierr = nc_inq_var_chunking(__pyx_v_self->_grpid, __pyx_v_self->_varid, (&__pyx_v_icontiguous), __pyx_v_chunksizesp);
      }

      /* "netCDF4/_netCDF4.pyx":4910
 *         ndims = self.ndim
 *         chunksizesp = <size_t *>malloc(sizeof(size_t) * ndims)
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_inq_var_chunking(self._grpid, self._varid, &icontiguous, chunksizesp)
 *         _ensure_nc_success(ierr)
*/
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L8;
        }
        __pyx_L8:;
      }
  }

  /* "netCDF4/_netCDF4.pyx":4912
 *         with nogil:
 *             ierr = nc_inq_var_chunking(self._grpid, self._varid, &icontiguous, chunksizesp)
 *         _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 *         chunksizes=[]
 *         for n in range(ndims):
*/
  __pyx_t_5 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4912, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4912, __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_1 = __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_1)) __PYX_ERR(0, 4912, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":4913
 *             ierr = nc_inq_var_chunking(self._grpid, self._varid, &icontiguous, chunksizesp)
 *         _ensure_nc_success(ierr)
 *         chunksizes=[]             # <<<<<<<<<<<<<<
 *         for n in range(ndims):
 *             chunksizes.append(chunksizesp[n])
*/
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4913, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_chunksizes = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":4914
 *         _ensure_nc_success(ierr)
 *         chunksizes=[]
 *         for n in range(ndims):             # <<<<<<<<<<<<<<
 *             chunksizes.append(chunksizesp[n])
 *         free(chunksizesp)
*/
  __pyx_t_4 = __pyx_v_ndims;
  __pyx_t_9 = __pyx_t_4;
  for (__pyx_t_10 = 0; __pyx_t_10 < __pyx_t_9; __pyx_t_10+=1) {
    __pyx_v_n = __pyx_t_10;

    /* "netCDF4/_netCDF4.pyx":4915
 *         chunksizes=[]
 *         for n in range(ndims):
 *             chunksizes.append(chunksizesp[n])             # <<<<<<<<<<<<<<
 *         free(chunksizesp)
 *         if icontiguous:
*/
    __pyx_t_1 = __Pyx_PyLong_FromSize_t((__pyx_v_chunksizesp[__pyx_v_n])); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4915, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_chunksizes, __pyx_t_1); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(0, 4915, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }

  /* "netCDF4/_netCDF4.pyx":4916
 *         for n in range(ndims):
 *             chunksizes.append(chunksizesp[n])
 *         free(chunksizesp)             # <<<<<<<<<<<<<<
 *         if icontiguous:
 *             return 'contiguous'
*/
  free(__pyx_v_chunksizesp);

  /* "netCDF4/_netCDF4.pyx":4917
 *             chunksizes.append(chunksizesp[n])
 *         free(chunksizesp)
 *         if icontiguous:             # <<<<<<<<<<<<<<
 *             return 'contiguous'
 *         else:
*/
  __pyx_t_3 = (__pyx_v_icontiguous != 0);
  if (__pyx_t_3) {

    /* "netCDF4/_netCDF4.pyx":4918
 *         free(chunksizesp)
 *         if icontiguous:
 *             return 'contiguous'             # <<<<<<<<<<<<<<
 *         else:
 *             return chunksizes
*/
    __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;

    /* "netCDF4/_netCDF4.pyx":4917
 *             chunksizes.append(chunksizesp[n])
 *         free(chunksizesp)
 *         if icontiguous:             # <<<<<<<<<<<<<<
 *             return 'contiguous'
 *         else:
*/
  }

  /* "netCDF4/_netCDF4.pyx":4920
 *             return 'contiguous'
 *         else:
 *             return chunksizes             # <<<<<<<<<<<<<<
 * 
 *     def get_var_chunk_cache(self):
*/
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_chunksizes);
    __pyx_r = __pyx_v_chunksizes;
    goto __pyx_L0;
  }

  /* "netCDF4/_netCDF4.pyx":4897
 *             return 'native'
 * 
 *     def chunking(self):             # <<<<<<<<<<<<<<
 *         """
 * **`chunking(self)`**
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("netCDF4._netCDF4.Variable.chunking", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_chunksizes);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":4922
 *             return chunksizes
 * 
 *     def get_var_chunk_cache(self):             # <<<<<<<<<<<<<<
 *         """
 * **`get_var_chunk_cache(self)`**
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_39get_var_chunk_cache(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7netCDF4_8_netCDF4_8Variable_38get_var_chunk_cache, "\n**`get_var_chunk_cache(self)`**\n\nreturn variable chunk cache information in a tuple (size,nelems,preemption).\nSee netcdf C library documentation for `nc_get_var_chunk_cache` for\ndetails.");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_8Variable_39get_var_chunk_cache = {"get_var_chunk_cache", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_8Variable_39get_var_chunk_cache, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_8Variable_38get_var_chunk_cache};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_39get_var_chunk_cache(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_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_var_chunk_cache (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (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_var_chunk_cache", 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_var_chunk_cache", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_8Variable_38get_var_chunk_cache(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_38get_var_chunk_cache(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self) {
  int __pyx_v_ierr;
  size_t __pyx_v_sizep;
  size_t __pyx_v_nelemsp;
  float __pyx_v_preemptionp;
  size_t __pyx_v_size;
  size_t __pyx_v_nelems;
  float __pyx_v_preemption;
  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_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("get_var_chunk_cache", 0);

  /* "netCDF4/_netCDF4.pyx":4932
 *         cdef size_t sizep, nelemsp
 *         cdef float preemptionp
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_get_var_chunk_cache(self._grpid, self._varid, &sizep,
 *                    &nelemsp, &preemptionp)
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "netCDF4/_netCDF4.pyx":4933
 *         cdef float preemptionp
 *         with nogil:
 *             ierr = nc_get_var_chunk_cache(self._grpid, self._varid, &sizep,             # <<<<<<<<<<<<<<
 *                    &nelemsp, &preemptionp)
 *         _ensure_nc_success(ierr)
*/
        __pyx_v_ierr = nc_get_var_chunk_cache(__pyx_v_self->_grpid, __pyx_v_self->_varid, (&__pyx_v_sizep), (&__pyx_v_nelemsp), (&__pyx_v_preemptionp));
      }

      /* "netCDF4/_netCDF4.pyx":4932
 *         cdef size_t sizep, nelemsp
 *         cdef float preemptionp
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_get_var_chunk_cache(self._grpid, self._varid, &sizep,
 *                    &nelemsp, &preemptionp)
*/
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "netCDF4/_netCDF4.pyx":4935
 *             ierr = nc_get_var_chunk_cache(self._grpid, self._varid, &sizep,
 *                    &nelemsp, &preemptionp)
 *         _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 *         size = sizep; nelems = nelemsp; preemption = preemptionp
 *         return (size,nelems,preemption)
*/
  __pyx_t_2 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4935, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4935, __pyx_L1_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[2] = {__pyx_t_2, __pyx_t_4};
    __pyx_t_1 = __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_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(0, 4935, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":4936
 *                    &nelemsp, &preemptionp)
 *         _ensure_nc_success(ierr)
 *         size = sizep; nelems = nelemsp; preemption = preemptionp             # <<<<<<<<<<<<<<
 *         return (size,nelems,preemption)
 * 
*/
  __pyx_v_size = __pyx_v_sizep;
  __pyx_v_nelems = __pyx_v_nelemsp;
  __pyx_v_preemption = __pyx_v_preemptionp;

  /* "netCDF4/_netCDF4.pyx":4937
 *         _ensure_nc_success(ierr)
 *         size = sizep; nelems = nelemsp; preemption = preemptionp
 *         return (size,nelems,preemption)             # <<<<<<<<<<<<<<
 * 
 *     def set_var_chunk_cache(self,size=None,nelems=None,preemption=None):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_FromSize_t(__pyx_v_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4937, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyLong_FromSize_t(__pyx_v_nelems); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4937, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyFloat_FromDouble(__pyx_v_preemption); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4937, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4937, __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(0, 4937, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_3) != (0)) __PYX_ERR(0, 4937, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_4);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_t_4) != (0)) __PYX_ERR(0, 4937, __pyx_L1_error);
  __pyx_t_1 = 0;
  __pyx_t_3 = 0;
  __pyx_t_4 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":4922
 *             return chunksizes
 * 
 *     def get_var_chunk_cache(self):             # <<<<<<<<<<<<<<
 *         """
 * **`get_var_chunk_cache(self)`**
*/

  /* 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("netCDF4._netCDF4.Variable.get_var_chunk_cache", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":4939
 *         return (size,nelems,preemption)
 * 
 *     def set_var_chunk_cache(self,size=None,nelems=None,preemption=None):             # <<<<<<<<<<<<<<
 *         """
 * **`set_var_chunk_cache(self,size=None,nelems=None,preemption=None)`**
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_41set_var_chunk_cache(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7netCDF4_8_netCDF4_8Variable_40set_var_chunk_cache, "\n**`set_var_chunk_cache(self,size=None,nelems=None,preemption=None)`**\n\nchange variable chunk cache settings.\nSee netcdf C library documentation for `nc_set_var_chunk_cache` for\ndetails.");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_8Variable_41set_var_chunk_cache = {"set_var_chunk_cache", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_8Variable_41set_var_chunk_cache, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_8Variable_40set_var_chunk_cache};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_41set_var_chunk_cache(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_size = 0;
  PyObject *__pyx_v_nelems = 0;
  PyObject *__pyx_v_preemption = 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("set_var_chunk_cache (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 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,&__pyx_mstate_global->__pyx_n_u_nelems,&__pyx_mstate_global->__pyx_n_u_preemption,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 4939, __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(0, 4939, __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(0, 4939, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 4939, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_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_var_chunk_cache", 0) < (0)) __PYX_ERR(0, 4939, __pyx_L3_error)
      if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[2]) values[2] = __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(0, 4939, __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(0, 4939, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 4939, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None));
    }
    __pyx_v_size = values[0];
    __pyx_v_nelems = values[1];
    __pyx_v_preemption = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("set_var_chunk_cache", 0, 0, 3, __pyx_nargs); __PYX_ERR(0, 4939, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4.Variable.set_var_chunk_cache", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_8Variable_40set_var_chunk_cache(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self), __pyx_v_size, __pyx_v_nelems, __pyx_v_preemption);

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_40set_var_chunk_cache(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, PyObject *__pyx_v_size, PyObject *__pyx_v_nelems, PyObject *__pyx_v_preemption) {
  int __pyx_v_ierr;
  size_t __pyx_v_sizep;
  size_t __pyx_v_nelemsp;
  float __pyx_v_preemptionp;
  PyObject *__pyx_v_size_orig = NULL;
  PyObject *__pyx_v_nelems_orig = NULL;
  PyObject *__pyx_v_preemption_orig = NULL;
  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;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *(*__pyx_t_7)(PyObject *);
  int __pyx_t_8;
  float __pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("set_var_chunk_cache", 0);

  /* "netCDF4/_netCDF4.pyx":4950
 *         cdef float preemptionp
 *         # reset chunk cache size, leave other parameters unchanged.
 *         size_orig, nelems_orig, preemption_orig = self.get_var_chunk_cache()             # <<<<<<<<<<<<<<
 *         if size is not None:
 *             sizep = size
*/
  __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_var_chunk_cache, __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(0, 4950, __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 != 3)) {
      if (size > 3) __Pyx_RaiseTooManyValuesError(3);
      else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
      __PYX_ERR(0, 4950, __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_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_2 = __Pyx_PyList_GetItemRefFast(sequence, 0, __Pyx_ReferenceSharing_SharedReference);
      if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4950, __pyx_L1_error)
      __Pyx_XGOTREF(__pyx_t_2);
      __pyx_t_4 = __Pyx_PyList_GetItemRefFast(sequence, 1, __Pyx_ReferenceSharing_SharedReference);
      if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4950, __pyx_L1_error)
      __Pyx_XGOTREF(__pyx_t_4);
      __pyx_t_5 = __Pyx_PyList_GetItemRefFast(sequence, 2, __Pyx_ReferenceSharing_SharedReference);
      if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4950, __pyx_L1_error)
      __Pyx_XGOTREF(__pyx_t_5);
    }
    #else
    __pyx_t_2 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4950, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4950, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4950, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    #endif
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  } else {
    Py_ssize_t index = -1;
    __pyx_t_6 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4950, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_7 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_6);
    index = 0; __pyx_t_2 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_2);
    index = 1; __pyx_t_4 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_4)) goto __pyx_L3_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_4);
    index = 2; __pyx_t_5 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_5)) goto __pyx_L3_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_5);
    if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 3) < (0)) __PYX_ERR(0, 4950, __pyx_L1_error)
    __pyx_t_7 = NULL;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    goto __pyx_L4_unpacking_done;
    __pyx_L3_unpacking_failed:;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_7 = NULL;
    if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
    __PYX_ERR(0, 4950, __pyx_L1_error)
    __pyx_L4_unpacking_done:;
  }
  __pyx_v_size_orig = __pyx_t_2;
  __pyx_t_2 = 0;
  __pyx_v_nelems_orig = __pyx_t_4;
  __pyx_t_4 = 0;
  __pyx_v_preemption_orig = __pyx_t_5;
  __pyx_t_5 = 0;

  /* "netCDF4/_netCDF4.pyx":4951
 *         # reset chunk cache size, leave other parameters unchanged.
 *         size_orig, nelems_orig, preemption_orig = self.get_var_chunk_cache()
 *         if size is not None:             # <<<<<<<<<<<<<<
 *             sizep = size
 *         else:
*/
  __pyx_t_8 = (__pyx_v_size != Py_None);
  if (__pyx_t_8) {

    /* "netCDF4/_netCDF4.pyx":4952
 *         size_orig, nelems_orig, preemption_orig = self.get_var_chunk_cache()
 *         if size is not None:
 *             sizep = size             # <<<<<<<<<<<<<<
 *         else:
 *             sizep = size_orig
*/
    __pyx_t_3 = __Pyx_PyLong_As_size_t(__pyx_v_size); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 4952, __pyx_L1_error)
    __pyx_v_sizep = __pyx_t_3;

    /* "netCDF4/_netCDF4.pyx":4951
 *         # reset chunk cache size, leave other parameters unchanged.
 *         size_orig, nelems_orig, preemption_orig = self.get_var_chunk_cache()
 *         if size is not None:             # <<<<<<<<<<<<<<
 *             sizep = size
 *         else:
*/
    goto __pyx_L5;
  }

  /* "netCDF4/_netCDF4.pyx":4954
 *             sizep = size
 *         else:
 *             sizep = size_orig             # <<<<<<<<<<<<<<
 *         if nelems is not None:
 *             nelemsp = nelems
*/
  /*else*/ {
    __pyx_t_3 = __Pyx_PyLong_As_size_t(__pyx_v_size_orig); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 4954, __pyx_L1_error)
    __pyx_v_sizep = __pyx_t_3;
  }
  __pyx_L5:;

  /* "netCDF4/_netCDF4.pyx":4955
 *         else:
 *             sizep = size_orig
 *         if nelems is not None:             # <<<<<<<<<<<<<<
 *             nelemsp = nelems
 *         else:
*/
  __pyx_t_8 = (__pyx_v_nelems != Py_None);
  if (__pyx_t_8) {

    /* "netCDF4/_netCDF4.pyx":4956
 *             sizep = size_orig
 *         if nelems is not None:
 *             nelemsp = nelems             # <<<<<<<<<<<<<<
 *         else:
 *             nelemsp = nelems_orig
*/
    __pyx_t_3 = __Pyx_PyLong_As_size_t(__pyx_v_nelems); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 4956, __pyx_L1_error)
    __pyx_v_nelemsp = __pyx_t_3;

    /* "netCDF4/_netCDF4.pyx":4955
 *         else:
 *             sizep = size_orig
 *         if nelems is not None:             # <<<<<<<<<<<<<<
 *             nelemsp = nelems
 *         else:
*/
    goto __pyx_L6;
  }

  /* "netCDF4/_netCDF4.pyx":4958
 *             nelemsp = nelems
 *         else:
 *             nelemsp = nelems_orig             # <<<<<<<<<<<<<<
 *         if preemption is not None:
 *             preemptionp = preemption
*/
  /*else*/ {
    __pyx_t_3 = __Pyx_PyLong_As_size_t(__pyx_v_nelems_orig); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 4958, __pyx_L1_error)
    __pyx_v_nelemsp = __pyx_t_3;
  }
  __pyx_L6:;

  /* "netCDF4/_netCDF4.pyx":4959
 *         else:
 *             nelemsp = nelems_orig
 *         if preemption is not None:             # <<<<<<<<<<<<<<
 *             preemptionp = preemption
 *         else:
*/
  __pyx_t_8 = (__pyx_v_preemption != Py_None);
  if (__pyx_t_8) {

    /* "netCDF4/_netCDF4.pyx":4960
 *             nelemsp = nelems_orig
 *         if preemption is not None:
 *             preemptionp = preemption             # <<<<<<<<<<<<<<
 *         else:
 *             preemptionp = preemption_orig
*/
    __pyx_t_9 = __Pyx_PyFloat_AsFloat(__pyx_v_preemption); if (unlikely((__pyx_t_9 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 4960, __pyx_L1_error)
    __pyx_v_preemptionp = __pyx_t_9;

    /* "netCDF4/_netCDF4.pyx":4959
 *         else:
 *             nelemsp = nelems_orig
 *         if preemption is not None:             # <<<<<<<<<<<<<<
 *             preemptionp = preemption
 *         else:
*/
    goto __pyx_L7;
  }

  /* "netCDF4/_netCDF4.pyx":4962
 *             preemptionp = preemption
 *         else:
 *             preemptionp = preemption_orig             # <<<<<<<<<<<<<<
 *         with nogil:
 *             ierr = nc_set_var_chunk_cache(self._grpid, self._varid, sizep,
*/
  /*else*/ {
    __pyx_t_9 = __Pyx_PyFloat_AsFloat(__pyx_v_preemption_orig); if (unlikely((__pyx_t_9 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 4962, __pyx_L1_error)
    __pyx_v_preemptionp = __pyx_t_9;
  }
  __pyx_L7:;

  /* "netCDF4/_netCDF4.pyx":4963
 *         else:
 *             preemptionp = preemption_orig
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_set_var_chunk_cache(self._grpid, self._varid, sizep,
 *                    nelemsp, preemptionp)
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "netCDF4/_netCDF4.pyx":4964
 *             preemptionp = preemption_orig
 *         with nogil:
 *             ierr = nc_set_var_chunk_cache(self._grpid, self._varid, sizep,             # <<<<<<<<<<<<<<
 *                    nelemsp, preemptionp)
 *         _ensure_nc_success(ierr)
*/
        __pyx_v_ierr = nc_set_var_chunk_cache(__pyx_v_self->_grpid, __pyx_v_self->_varid, __pyx_v_sizep, __pyx_v_nelemsp, __pyx_v_preemptionp);
      }

      /* "netCDF4/_netCDF4.pyx":4963
 *         else:
 *             preemptionp = preemption_orig
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_set_var_chunk_cache(self._grpid, self._varid, sizep,
 *                    nelemsp, preemptionp)
*/
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L10;
        }
        __pyx_L10:;
      }
  }

  /* "netCDF4/_netCDF4.pyx":4966
 *             ierr = nc_set_var_chunk_cache(self._grpid, self._varid, sizep,
 *                    nelemsp, preemptionp)
 *         _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 * 
 *     def __delattr__(self,name):
*/
  __pyx_t_5 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4966, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4966, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = 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_3 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_2};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4966, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":4939
 *         return (size,nelems,preemption)
 * 
 *     def set_var_chunk_cache(self,size=None,nelems=None,preemption=None):             # <<<<<<<<<<<<<<
 *         """
 * **`set_var_chunk_cache(self,size=None,nelems=None,preemption=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_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("netCDF4._netCDF4.Variable.set_var_chunk_cache", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_size_orig);
  __Pyx_XDECREF(__pyx_v_nelems_orig);
  __Pyx_XDECREF(__pyx_v_preemption_orig);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":4968
 *         _ensure_nc_success(ierr)
 * 
 *     def __delattr__(self,name):             # <<<<<<<<<<<<<<
 *         # if it's a netCDF attribute, remove it
 *         if name not in _private_atts:
*/

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_43__delattr__(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_43__delattr__(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__delattr__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_8Variable_42__delattr__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self), ((PyObject *)__pyx_v_name));

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

static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_42__delattr__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, PyObject *__pyx_v_name) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  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;
  PyObject *__pyx_t_8[5];
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__delattr__", 0);

  /* "netCDF4/_netCDF4.pyx":4970
 *     def __delattr__(self,name):
 *         # if it's a netCDF attribute, remove it
 *         if name not in _private_atts:             # <<<<<<<<<<<<<<
 *             self.delncattr(name)
 *         else:
*/
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_private_atts); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4970, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_v_name, __pyx_t_1, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 4970, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (likely(__pyx_t_2)) {

    /* "netCDF4/_netCDF4.pyx":4971
 *         # if it's a netCDF attribute, remove it
 *         if name not in _private_atts:
 *             self.delncattr(name)             # <<<<<<<<<<<<<<
 *         else:
 *             raise AttributeError(
*/
    __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_name};
      __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_delncattr, __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_1)) __PYX_ERR(0, 4971, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":4970
 *     def __delattr__(self,name):
 *         # if it's a netCDF attribute, remove it
 *         if name not in _private_atts:             # <<<<<<<<<<<<<<
 *             self.delncattr(name)
 *         else:
*/
    goto __pyx_L3;
  }

  /* "netCDF4/_netCDF4.pyx":4973
 *             self.delncattr(name)
 *         else:
 *             raise AttributeError(             # <<<<<<<<<<<<<<
 *             "'%s' is one of the reserved attributes %s, cannot delete. Use delncattr instead." % (name, tuple(_private_atts)))
 * 
*/
  /*else*/ {
    __pyx_t_3 = NULL;

    /* "netCDF4/_netCDF4.pyx":4974
 *         else:
 *             raise AttributeError(
 *             "'%s' is one of the reserved attributes %s, cannot delete. Use delncattr instead." % (name, tuple(_private_atts)))             # <<<<<<<<<<<<<<
 * 
 *     def __setattr__(self,name,value):
*/
    __pyx_t_5 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Str(__pyx_v_name), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4974, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_private_atts); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4974, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = __Pyx_PySequence_Tuple(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4974, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Str(__pyx_t_7), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4974, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_8[0] = __pyx_mstate_global->__pyx_kp_u__9;
    __pyx_t_8[1] = __pyx_t_5;
    __pyx_t_8[2] = __pyx_mstate_global->__pyx_kp_u_is_one_of_the_reserved_attribut;
    __pyx_t_8[3] = __pyx_t_6;
    __pyx_t_8[4] = __pyx_mstate_global->__pyx_kp_u_cannot_delete_Use_delncattr_ins;
    __pyx_t_7 = __Pyx_PyUnicode_Join(__pyx_t_8, 5, 1 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5) + 36 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6) + 39, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6));
    if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4974, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __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_7};
      __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_AttributeError)), __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_7); __pyx_t_7 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4973, __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(0, 4973, __pyx_L1_error)
  }
  __pyx_L3:;

  /* "netCDF4/_netCDF4.pyx":4968
 *         _ensure_nc_success(ierr)
 * 
 *     def __delattr__(self,name):             # <<<<<<<<<<<<<<
 *         # if it's a netCDF attribute, remove it
 *         if name not in _private_atts:
*/

  /* 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_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("netCDF4._netCDF4.Variable.__delattr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":4976
 *             "'%s' is one of the reserved attributes %s, cannot delete. Use delncattr instead." % (name, tuple(_private_atts)))
 * 
 *     def __setattr__(self,name,value):             # <<<<<<<<<<<<<<
 *         # if name in _private_atts, it is stored at the python
 *         # level and not in the netCDF file.
*/

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_45__setattr__(PyObject *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_45__setattr__(PyObject *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_value) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setattr__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_8Variable_44__setattr__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self), ((PyObject *)__pyx_v_name), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_44__setattr__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_value) {
  PyObject *__pyx_v_msg = NULL;
  PyObject *__pyx_v_valuea = NULL;
  int __pyx_r;
  __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_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[5];
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setattr__", 0);
  __Pyx_INCREF(__pyx_v_value);

  /* "netCDF4/_netCDF4.pyx":4979
 *         # if name in _private_atts, it is stored at the python
 *         # level and not in the netCDF file.
 *         if name not in _private_atts:             # <<<<<<<<<<<<<<
 *             # if setting _FillValue or missing_value, make sure value
 *             # has same type and byte order as variable.
*/
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_private_atts); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4979, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_v_name, __pyx_t_1, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 4979, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {

    /* "netCDF4/_netCDF4.pyx":4982
 *             # if setting _FillValue or missing_value, make sure value
 *             # has same type and byte order as variable.
 *             if name == '_FillValue':             # <<<<<<<<<<<<<<
 *                 msg='_FillValue attribute must be set when variable is '+\
 *                 'created (using fill_value keyword to createVariable)'
*/
    __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_v_name, __pyx_mstate_global->__pyx_n_u_FillValue, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 4982, __pyx_L1_error)
    if (unlikely(__pyx_t_2)) {

      /* "netCDF4/_netCDF4.pyx":4983
 *             # has same type and byte order as variable.
 *             if name == '_FillValue':
 *                 msg='_FillValue attribute must be set when variable is '+\             # <<<<<<<<<<<<<<
 *                 'created (using fill_value keyword to createVariable)'
 *                 raise AttributeError(msg)
*/
      __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u_FillValue_attribute_must_be_set);
      __pyx_v_msg = __pyx_mstate_global->__pyx_kp_u_FillValue_attribute_must_be_set;

      /* "netCDF4/_netCDF4.pyx":4985
 *                 msg='_FillValue attribute must be set when variable is '+\
 *                 'created (using fill_value keyword to createVariable)'
 *                 raise AttributeError(msg)             # <<<<<<<<<<<<<<
 *                 #if self._isprimitive:
 *                 #    value = numpy.array(value, self.dtype)
*/
      __pyx_t_3 = NULL;
      __pyx_t_4 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_msg};
        __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_AttributeError)), __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(0, 4985, __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(0, 4985, __pyx_L1_error)

      /* "netCDF4/_netCDF4.pyx":4982
 *             # if setting _FillValue or missing_value, make sure value
 *             # has same type and byte order as variable.
 *             if name == '_FillValue':             # <<<<<<<<<<<<<<
 *                 msg='_FillValue attribute must be set when variable is '+\
 *                 'created (using fill_value keyword to createVariable)'
*/
    }

    /* "netCDF4/_netCDF4.pyx":4992
 *                 #    "VLEN or compound variable"
 *                 #    raise AttributeError(msg)
 *             elif name in ['valid_min','valid_max','valid_range','missing_value'] and self._isprimitive:             # <<<<<<<<<<<<<<
 *                 # make sure these attributes written in same data type as variable.
 *                 # also make sure it is written in native byte order
*/
    __Pyx_INCREF(__pyx_v_name);
    __pyx_t_1 = __pyx_v_name;
    __pyx_t_6 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_valid_min, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 4992, __pyx_L1_error)
    if (!__pyx_t_6) {
    } else {
      __pyx_t_5 = __pyx_t_6;
      goto __pyx_L7_bool_binop_done;
    }
    __pyx_t_6 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_valid_max, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 4992, __pyx_L1_error)
    if (!__pyx_t_6) {
    } else {
      __pyx_t_5 = __pyx_t_6;
      goto __pyx_L7_bool_binop_done;
    }
    __pyx_t_6 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_valid_range, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 4992, __pyx_L1_error)
    if (!__pyx_t_6) {
    } else {
      __pyx_t_5 = __pyx_t_6;
      goto __pyx_L7_bool_binop_done;
    }
    __pyx_t_6 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_missing_value, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 4992, __pyx_L1_error)
    __pyx_t_5 = __pyx_t_6;
    __pyx_L7_bool_binop_done:;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_6 = __pyx_t_5;
    if (__pyx_t_6) {
    } else {
      __pyx_t_2 = __pyx_t_6;
      goto __pyx_L5_bool_binop_done;
    }
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_self->_isprimitive); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 4992, __pyx_L1_error)
    __pyx_t_2 = __pyx_t_6;
    __pyx_L5_bool_binop_done:;
    if (__pyx_t_2) {

      /* "netCDF4/_netCDF4.pyx":4996
 *                 # also make sure it is written in native byte order
 *                 # (the same as the data)
 *                 valuea = numpy.array(value, self.dtype)             # <<<<<<<<<<<<<<
 *                 # check to see if array cast is safe
 *                 if _safecast(numpy.array(value),valuea):
*/
      __pyx_t_3 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_numpy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4996, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_array); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4996, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_4 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_8))) {
        __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_8);
        assert(__pyx_t_3);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_8, __pyx__function);
        __pyx_t_4 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_v_value, __pyx_v_self->dtype};
        __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_8, __pyx_callargs+__pyx_t_4, (3-__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_1)) __PYX_ERR(0, 4996, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
      }
      __pyx_v_valuea = __pyx_t_1;
      __pyx_t_1 = 0;

      /* "netCDF4/_netCDF4.pyx":4998
 *                 valuea = numpy.array(value, self.dtype)
 *                 # check to see if array cast is safe
 *                 if _safecast(numpy.array(value),valuea):             # <<<<<<<<<<<<<<
 *                     value = valuea
 *                     if not value.dtype.isnative: value.byteswap(True)
*/
      __pyx_t_8 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_safecast); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4998, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_9 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_numpy); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4998, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_array); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 4998, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_11);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __pyx_t_4 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_11))) {
        __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_11);
        assert(__pyx_t_9);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_11);
        __Pyx_INCREF(__pyx_t_9);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_11, __pyx__function);
        __pyx_t_4 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_v_value};
        __pyx_t_7 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_11, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
        if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4998, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
      }
      __pyx_t_4 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_3))) {
        __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_3);
        assert(__pyx_t_8);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
        __pyx_t_4 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[3] = {__pyx_t_8, __pyx_t_7, __pyx_v_valuea};
        __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_3, __pyx_callargs+__pyx_t_4, (3-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4998, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
      }
      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 4998, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (__pyx_t_2) {

        /* "netCDF4/_netCDF4.pyx":4999
 *                 # check to see if array cast is safe
 *                 if _safecast(numpy.array(value),valuea):
 *                     value = valuea             # <<<<<<<<<<<<<<
 *                     if not value.dtype.isnative: value.byteswap(True)
 *                 else: # otherwise don't do it, but issue a warning
*/
        __Pyx_INCREF(__pyx_v_valuea);
        __Pyx_DECREF_SET(__pyx_v_value, __pyx_v_valuea);

        /* "netCDF4/_netCDF4.pyx":5000
 *                 if _safecast(numpy.array(value),valuea):
 *                     value = valuea
 *                     if not value.dtype.isnative: value.byteswap(True)             # <<<<<<<<<<<<<<
 *                 else: # otherwise don't do it, but issue a warning
 *                     msg="WARNING: %s cannot be safely cast to variable dtype" \
*/
        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_value, __pyx_mstate_global->__pyx_n_u_dtype); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5000, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_isnative); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5000, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 5000, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_t_6 = (!__pyx_t_2);
        if (__pyx_t_6) {
          __pyx_t_1 = __pyx_v_value;
          __Pyx_INCREF(__pyx_t_1);
          __pyx_t_4 = 0;
          {
            PyObject *__pyx_callargs[2] = {__pyx_t_1, Py_True};
            __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_byteswap, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
            __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
            if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5000, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_3);
          }
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        }

        /* "netCDF4/_netCDF4.pyx":4998
 *                 valuea = numpy.array(value, self.dtype)
 *                 # check to see if array cast is safe
 *                 if _safecast(numpy.array(value),valuea):             # <<<<<<<<<<<<<<
 *                     value = valuea
 *                     if not value.dtype.isnative: value.byteswap(True)
*/
        goto __pyx_L11;
      }

      /* "netCDF4/_netCDF4.pyx":5002
 *                     if not value.dtype.isnative: value.byteswap(True)
 *                 else: # otherwise don't do it, but issue a warning
 *                     msg="WARNING: %s cannot be safely cast to variable dtype" \             # <<<<<<<<<<<<<<
 *                     % name
 *                     warnings.warn(msg)
*/
      /*else*/ {

        /* "netCDF4/_netCDF4.pyx":5003
 *                 else: # otherwise don't do it, but issue a warning
 *                     msg="WARNING: %s cannot be safely cast to variable dtype" \
 *                     % name             # <<<<<<<<<<<<<<
 *                     warnings.warn(msg)
 *             self.setncattr(name, value)
*/
        __pyx_t_3 = __Pyx_PyUnicode_FormatSafe(__pyx_mstate_global->__pyx_kp_u_WARNING_s_cannot_be_safely_cast, __pyx_v_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5003, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_v_msg = ((PyObject*)__pyx_t_3);
        __pyx_t_3 = 0;

        /* "netCDF4/_netCDF4.pyx":5004
 *                     msg="WARNING: %s cannot be safely cast to variable dtype" \
 *                     % name
 *                     warnings.warn(msg)             # <<<<<<<<<<<<<<
 *             self.setncattr(name, value)
 *         elif not name.endswith('__'):
*/
        __pyx_t_1 = NULL;
        __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_warnings); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5004, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_warn); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 5004, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_4 = 1;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_8))) {
          __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_8);
          assert(__pyx_t_1);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_8);
          __Pyx_INCREF(__pyx_t_1);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_8, __pyx__function);
          __pyx_t_4 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_v_msg};
          __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_8, __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_8); __pyx_t_8 = 0;
          if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5004, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
        }
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      }
      __pyx_L11:;

      /* "netCDF4/_netCDF4.pyx":4992
 *                 #    "VLEN or compound variable"
 *                 #    raise AttributeError(msg)
 *             elif name in ['valid_min','valid_max','valid_range','missing_value'] and self._isprimitive:             # <<<<<<<<<<<<<<
 *                 # make sure these attributes written in same data type as variable.
 *                 # also make sure it is written in native byte order
*/
    }

    /* "netCDF4/_netCDF4.pyx":5005
 *                     % name
 *                     warnings.warn(msg)
 *             self.setncattr(name, value)             # <<<<<<<<<<<<<<
 *         elif not name.endswith('__'):
 *             if hasattr(self,name):
*/
    __pyx_t_8 = ((PyObject *)__pyx_v_self);
    __Pyx_INCREF(__pyx_t_8);
    __pyx_t_4 = 0;
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_8, __pyx_v_name, __pyx_v_value};
      __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_setncattr, __pyx_callargs+__pyx_t_4, (3-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5005, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "netCDF4/_netCDF4.pyx":4979
 *         # if name in _private_atts, it is stored at the python
 *         # level and not in the netCDF file.
 *         if name not in _private_atts:             # <<<<<<<<<<<<<<
 *             # if setting _FillValue or missing_value, make sure value
 *             # has same type and byte order as variable.
*/
    goto __pyx_L3;
  }

  /* "netCDF4/_netCDF4.pyx":5006
 *                     warnings.warn(msg)
 *             self.setncattr(name, value)
 *         elif not name.endswith('__'):             # <<<<<<<<<<<<<<
 *             if hasattr(self,name):
 *                 raise AttributeError(
*/
  __pyx_t_8 = __pyx_v_name;
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_4 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_mstate_global->__pyx_n_u__16};
    __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_endswith, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5006, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  }
  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 5006, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_2 = (!__pyx_t_6);
  if (__pyx_t_2) {

    /* "netCDF4/_netCDF4.pyx":5007
 *             self.setncattr(name, value)
 *         elif not name.endswith('__'):
 *             if hasattr(self,name):             # <<<<<<<<<<<<<<
 *                 raise AttributeError(
 *                 "'%s' is one of the reserved attributes %s, cannot rebind. Use setncattr instead." % (name, tuple(_private_atts)))
*/
    __pyx_t_2 = __Pyx_HasAttr(((PyObject *)__pyx_v_self), __pyx_v_name); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 5007, __pyx_L1_error)
    if (unlikely(__pyx_t_2)) {

      /* "netCDF4/_netCDF4.pyx":5008
 *         elif not name.endswith('__'):
 *             if hasattr(self,name):
 *                 raise AttributeError(             # <<<<<<<<<<<<<<
 *                 "'%s' is one of the reserved attributes %s, cannot rebind. Use setncattr instead." % (name, tuple(_private_atts)))
 *             else:
*/
      __pyx_t_8 = NULL;

      /* "netCDF4/_netCDF4.pyx":5009
 *             if hasattr(self,name):
 *                 raise AttributeError(
 *                 "'%s' is one of the reserved attributes %s, cannot rebind. Use setncattr instead." % (name, tuple(_private_atts)))             # <<<<<<<<<<<<<<
 *             else:
 *                 self.__dict__[name]=value
*/
      __pyx_t_1 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Str(__pyx_v_name), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5009, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_private_atts); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5009, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_11 = __Pyx_PySequence_Tuple(__pyx_t_7); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 5009, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_11);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_7 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Str(__pyx_t_11), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5009, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __pyx_t_12[0] = __pyx_mstate_global->__pyx_kp_u__9;
      __pyx_t_12[1] = __pyx_t_1;
      __pyx_t_12[2] = __pyx_mstate_global->__pyx_kp_u_is_one_of_the_reserved_attribut;
      __pyx_t_12[3] = __pyx_t_7;
      __pyx_t_12[4] = __pyx_mstate_global->__pyx_kp_u_cannot_rebind_Use_setncattr_ins;
      __pyx_t_11 = __Pyx_PyUnicode_Join(__pyx_t_12, 5, 1 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_1) + 36 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_7) + 39, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_7));
      if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 5009, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_11);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_4 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_11};
        __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_AttributeError)), __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
        if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5008, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
      }
      __Pyx_Raise(__pyx_t_3, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __PYX_ERR(0, 5008, __pyx_L1_error)

      /* "netCDF4/_netCDF4.pyx":5007
 *             self.setncattr(name, value)
 *         elif not name.endswith('__'):
 *             if hasattr(self,name):             # <<<<<<<<<<<<<<
 *                 raise AttributeError(
 *                 "'%s' is one of the reserved attributes %s, cannot rebind. Use setncattr instead." % (name, tuple(_private_atts)))
*/
    }

    /* "netCDF4/_netCDF4.pyx":5011
 *                 "'%s' is one of the reserved attributes %s, cannot rebind. Use setncattr instead." % (name, tuple(_private_atts)))
 *             else:
 *                 self.__dict__[name]=value             # <<<<<<<<<<<<<<
 * 
 *     def __getattr__(self,name):
*/
    /*else*/ {
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_dict); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5011, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      if (unlikely((PyObject_SetItem(__pyx_t_3, __pyx_v_name, __pyx_v_value) < 0))) __PYX_ERR(0, 5011, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }

    /* "netCDF4/_netCDF4.pyx":5006
 *                     warnings.warn(msg)
 *             self.setncattr(name, value)
 *         elif not name.endswith('__'):             # <<<<<<<<<<<<<<
 *             if hasattr(self,name):
 *                 raise AttributeError(
*/
  }
  __pyx_L3:;

  /* "netCDF4/_netCDF4.pyx":4976
 *             "'%s' is one of the reserved attributes %s, cannot delete. Use delncattr instead." % (name, tuple(_private_atts)))
 * 
 *     def __setattr__(self,name,value):             # <<<<<<<<<<<<<<
 *         # if name in _private_atts, it is stored at the python
 *         # level and not in the netCDF file.
*/

  /* 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_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("netCDF4._netCDF4.Variable.__setattr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_msg);
  __Pyx_XDECREF(__pyx_v_valuea);
  __Pyx_XDECREF(__pyx_v_value);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":5013
 *                 self.__dict__[name]=value
 * 
 *     def __getattr__(self,name):             # <<<<<<<<<<<<<<
 *         # if name in _private_atts, it is stored at the python
 *         # level and not in the netCDF file.
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_47__getattr__(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_47__getattr__(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__getattr__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_8Variable_46__getattr__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self), ((PyObject *)__pyx_v_name));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_46__getattr__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_v_names = NULL;
  PyObject *__pyx_v_values = NULL;
  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;
  Py_ssize_t __pyx_t_6;
  PyObject *(*__pyx_t_7)(PyObject *);
  PyObject *__pyx_t_8 = NULL;
  int __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__getattr__", 0);
  __Pyx_INCREF(__pyx_v_name);

  /* "netCDF4/_netCDF4.pyx":5016
 *         # if name in _private_atts, it is stored at the python
 *         # level and not in the netCDF file.
 *         if name.startswith('__') and name.endswith('__'):             # <<<<<<<<<<<<<<
 *             # if __dict__ requested, return a dict with netCDF attributes.
 *             if name == '__dict__':
*/
  __pyx_t_3 = __pyx_v_name;
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_4 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_n_u__16};
    __pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_startswith, __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(0, 5016, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 5016, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__pyx_t_5) {
  } else {
    __pyx_t_1 = __pyx_t_5;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_3 = __pyx_v_name;
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_4 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_n_u__16};
    __pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_endswith, __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(0, 5016, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 5016, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_1 = __pyx_t_5;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "netCDF4/_netCDF4.pyx":5018
 *         if name.startswith('__') and name.endswith('__'):
 *             # if __dict__ requested, return a dict with netCDF attributes.
 *             if name == '__dict__':             # <<<<<<<<<<<<<<
 *                 names = self.ncattrs()
 *                 values = []
*/
    __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v_name, __pyx_mstate_global->__pyx_n_u_dict, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 5018, __pyx_L1_error)
    if (likely(__pyx_t_1)) {

      /* "netCDF4/_netCDF4.pyx":5019
 *             # if __dict__ requested, return a dict with netCDF attributes.
 *             if name == '__dict__':
 *                 names = self.ncattrs()             # <<<<<<<<<<<<<<
 *                 values = []
 *                 for name in names:
*/
      __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_ncattrs, __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(0, 5019, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
      }
      __pyx_v_names = __pyx_t_2;
      __pyx_t_2 = 0;

      /* "netCDF4/_netCDF4.pyx":5020
 *             if name == '__dict__':
 *                 names = self.ncattrs()
 *                 values = []             # <<<<<<<<<<<<<<
 *                 for name in names:
 *                     values.append(_get_att(self._grp, self._varid, name))
*/
      __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5020, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_v_values = ((PyObject*)__pyx_t_2);
      __pyx_t_2 = 0;

      /* "netCDF4/_netCDF4.pyx":5021
 *                 names = self.ncattrs()
 *                 values = []
 *                 for name in names:             # <<<<<<<<<<<<<<
 *                     values.append(_get_att(self._grp, self._varid, name))
 *                 return dict(zip(names, values))
*/
      if (likely(PyList_CheckExact(__pyx_v_names)) || PyTuple_CheckExact(__pyx_v_names)) {
        __pyx_t_2 = __pyx_v_names; __Pyx_INCREF(__pyx_t_2);
        __pyx_t_6 = 0;
        __pyx_t_7 = NULL;
      } else {
        __pyx_t_6 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_names); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5021, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __pyx_t_7 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5021, __pyx_L1_error)
      }
      for (;;) {
        if (likely(!__pyx_t_7)) {
          if (likely(PyList_CheckExact(__pyx_t_2))) {
            {
              Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2);
              #if !CYTHON_ASSUME_SAFE_SIZE
              if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 5021, __pyx_L1_error)
              #endif
              if (__pyx_t_6 >= __pyx_temp) break;
            }
            __pyx_t_3 = __Pyx_PyList_GetItemRefFast(__pyx_t_2, __pyx_t_6, __Pyx_ReferenceSharing_OwnStrongReference);
            ++__pyx_t_6;
          } 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(0, 5021, __pyx_L1_error)
              #endif
              if (__pyx_t_6 >= __pyx_temp) break;
            }
            #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
            __pyx_t_3 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_6));
            #else
            __pyx_t_3 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_6);
            #endif
            ++__pyx_t_6;
          }
          if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5021, __pyx_L1_error)
        } else {
          __pyx_t_3 = __pyx_t_7(__pyx_t_2);
          if (unlikely(!__pyx_t_3)) {
            PyObject* exc_type = PyErr_Occurred();
            if (exc_type) {
              if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 5021, __pyx_L1_error)
              PyErr_Clear();
            }
            break;
          }
        }
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF_SET(__pyx_v_name, __pyx_t_3);
        __pyx_t_3 = 0;

        /* "netCDF4/_netCDF4.pyx":5022
 *                 values = []
 *                 for name in names:
 *                     values.append(_get_att(self._grp, self._varid, name))             # <<<<<<<<<<<<<<
 *                 return dict(zip(names, values))
 * 
*/
        __pyx_t_3 = __pyx_v_self->_grp;
        __Pyx_INCREF(__pyx_t_3);
        __pyx_t_8 = __pyx_f_7netCDF4_8_netCDF4__get_att(__pyx_t_3, __pyx_v_self->_varid, __pyx_v_name, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 5022, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_values, __pyx_t_8); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(0, 5022, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

        /* "netCDF4/_netCDF4.pyx":5021
 *                 names = self.ncattrs()
 *                 values = []
 *                 for name in names:             # <<<<<<<<<<<<<<
 *                     values.append(_get_att(self._grp, self._varid, name))
 *                 return dict(zip(names, values))
*/
      }
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

      /* "netCDF4/_netCDF4.pyx":5023
 *                 for name in names:
 *                     values.append(_get_att(self._grp, self._varid, name))
 *                 return dict(zip(names, values))             # <<<<<<<<<<<<<<
 * 
 *             else:
*/
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_8 = NULL;
      __pyx_t_10 = NULL;
      __pyx_t_4 = 1;
      {
        PyObject *__pyx_callargs[3] = {__pyx_t_10, __pyx_v_names, __pyx_v_values};
        __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_zip, __pyx_callargs+__pyx_t_4, (3-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5023, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
      }
      __pyx_t_4 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_3};
        __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(&PyDict_Type), __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5023, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
      }
      __pyx_r = __pyx_t_2;
      __pyx_t_2 = 0;
      goto __pyx_L0;

      /* "netCDF4/_netCDF4.pyx":5018
 *         if name.startswith('__') and name.endswith('__'):
 *             # if __dict__ requested, return a dict with netCDF attributes.
 *             if name == '__dict__':             # <<<<<<<<<<<<<<
 *                 names = self.ncattrs()
 *                 values = []
*/
    }

    /* "netCDF4/_netCDF4.pyx":5026
 * 
 *             else:
 *                 raise AttributeError             # <<<<<<<<<<<<<<
 *         elif name in _private_atts:
 *             return self.__dict__[name]
*/
    /*else*/ {
      __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_AttributeError))), 0, 0, 0);
      __PYX_ERR(0, 5026, __pyx_L1_error)
    }

    /* "netCDF4/_netCDF4.pyx":5016
 *         # if name in _private_atts, it is stored at the python
 *         # level and not in the netCDF file.
 *         if name.startswith('__') and name.endswith('__'):             # <<<<<<<<<<<<<<
 *             # if __dict__ requested, return a dict with netCDF attributes.
 *             if name == '__dict__':
*/
  }

  /* "netCDF4/_netCDF4.pyx":5027
 *             else:
 *                 raise AttributeError
 *         elif name in _private_atts:             # <<<<<<<<<<<<<<
 *             return self.__dict__[name]
 *         else:
*/
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_private_atts); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5027, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_v_name, __pyx_t_2, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 5027, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__pyx_t_1) {

    /* "netCDF4/_netCDF4.pyx":5028
 *                 raise AttributeError
 *         elif name in _private_atts:
 *             return self.__dict__[name]             # <<<<<<<<<<<<<<
 *         else:
 *             return self.getncattr(name)
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_dict); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5028, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_t_2, __pyx_v_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5028, __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;

    /* "netCDF4/_netCDF4.pyx":5027
 *             else:
 *                 raise AttributeError
 *         elif name in _private_atts:             # <<<<<<<<<<<<<<
 *             return self.__dict__[name]
 *         else:
*/
  }

  /* "netCDF4/_netCDF4.pyx":5030
 *             return self.__dict__[name]
 *         else:
 *             return self.getncattr(name)             # <<<<<<<<<<<<<<
 * 
 *     def renameAttribute(self, oldname, newname):
*/
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = ((PyObject *)__pyx_v_self);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_t_4 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_name};
      __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_getncattr, __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_3)) __PYX_ERR(0, 5030, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;
  }

  /* "netCDF4/_netCDF4.pyx":5013
 *                 self.__dict__[name]=value
 * 
 *     def __getattr__(self,name):             # <<<<<<<<<<<<<<
 *         # if name in _private_atts, it is stored at the python
 *         # level and not in the netCDF file.
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("netCDF4._netCDF4.Variable.__getattr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_names);
  __Pyx_XDECREF(__pyx_v_values);
  __Pyx_XDECREF(__pyx_v_name);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":5032
 *             return self.getncattr(name)
 * 
 *     def renameAttribute(self, oldname, newname):             # <<<<<<<<<<<<<<
 *         """
 * **`renameAttribute(self, oldname, newname)`**
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_49renameAttribute(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7netCDF4_8_netCDF4_8Variable_48renameAttribute, "\n**`renameAttribute(self, oldname, newname)`**\n\nrename a `Variable` attribute named `oldname` to `newname`.");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_8Variable_49renameAttribute = {"renameAttribute", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_8Variable_49renameAttribute, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_8Variable_48renameAttribute};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_49renameAttribute(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_oldname = 0;
  PyObject *__pyx_v_newname = 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("renameAttribute (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_oldname,&__pyx_mstate_global->__pyx_n_u_newname,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 5032, __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(0, 5032, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 5032, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "renameAttribute", 0) < (0)) __PYX_ERR(0, 5032, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("renameAttribute", 1, 2, 2, i); __PYX_ERR(0, 5032, __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(0, 5032, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 5032, __pyx_L3_error)
    }
    __pyx_v_oldname = values[0];
    __pyx_v_newname = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("renameAttribute", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 5032, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4.Variable.renameAttribute", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_8Variable_48renameAttribute(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self), __pyx_v_oldname, __pyx_v_newname);

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_48renameAttribute(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, PyObject *__pyx_v_oldname, PyObject *__pyx_v_newname) {
  int __pyx_v_ierr;
  char *__pyx_v_oldnamec;
  char *__pyx_v_newnamec;
  PyObject *__pyx_v_bytestr = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  char *__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("renameAttribute", 0);

  /* "netCDF4/_netCDF4.pyx":5040
 *         cdef char *oldnamec
 *         cdef char *newnamec
 *         bytestr = _strencode(oldname)             # <<<<<<<<<<<<<<
 *         oldnamec = bytestr
 *         bytestr = _strencode(newname)
*/
  __pyx_t_1 = __pyx_f_7netCDF4_8_netCDF4__strencode(__pyx_v_oldname, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5040, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_bytestr = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":5041
 *         cdef char *newnamec
 *         bytestr = _strencode(oldname)
 *         oldnamec = bytestr             # <<<<<<<<<<<<<<
 *         bytestr = _strencode(newname)
 *         newnamec = bytestr
*/
  __pyx_t_2 = __Pyx_PyObject_AsWritableString(__pyx_v_bytestr); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 5041, __pyx_L1_error)
  __pyx_v_oldnamec = __pyx_t_2;

  /* "netCDF4/_netCDF4.pyx":5042
 *         bytestr = _strencode(oldname)
 *         oldnamec = bytestr
 *         bytestr = _strencode(newname)             # <<<<<<<<<<<<<<
 *         newnamec = bytestr
 *         with nogil:
*/
  __pyx_t_1 = __pyx_f_7netCDF4_8_netCDF4__strencode(__pyx_v_newname, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5042, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_bytestr, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":5043
 *         oldnamec = bytestr
 *         bytestr = _strencode(newname)
 *         newnamec = bytestr             # <<<<<<<<<<<<<<
 *         with nogil:
 *             ierr = nc_rename_att(self._grpid, self._varid, oldnamec, newnamec)
*/
  __pyx_t_2 = __Pyx_PyObject_AsWritableString(__pyx_v_bytestr); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 5043, __pyx_L1_error)
  __pyx_v_newnamec = __pyx_t_2;

  /* "netCDF4/_netCDF4.pyx":5044
 *         bytestr = _strencode(newname)
 *         newnamec = bytestr
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_rename_att(self._grpid, self._varid, oldnamec, newnamec)
 *         _ensure_nc_success(ierr)
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "netCDF4/_netCDF4.pyx":5045
 *         newnamec = bytestr
 *         with nogil:
 *             ierr = nc_rename_att(self._grpid, self._varid, oldnamec, newnamec)             # <<<<<<<<<<<<<<
 *         _ensure_nc_success(ierr)
 * 
*/
        __pyx_v_ierr = nc_rename_att(__pyx_v_self->_grpid, __pyx_v_self->_varid, __pyx_v_oldnamec, __pyx_v_newnamec);
      }

      /* "netCDF4/_netCDF4.pyx":5044
 *         bytestr = _strencode(newname)
 *         newnamec = bytestr
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_rename_att(self._grpid, self._varid, oldnamec, newnamec)
 *         _ensure_nc_success(ierr)
*/
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "netCDF4/_netCDF4.pyx":5046
 *         with nogil:
 *             ierr = nc_rename_att(self._grpid, self._varid, oldnamec, newnamec)
 *         _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 * 
 *     def __getitem__(self, elem):
*/
  __pyx_t_3 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5046, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5046, __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_1 = __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_1)) __PYX_ERR(0, 5046, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":5032
 *             return self.getncattr(name)
 * 
 *     def renameAttribute(self, oldname, newname):             # <<<<<<<<<<<<<<
 *         """
 * **`renameAttribute(self, oldname, newname)`**
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("netCDF4._netCDF4.Variable.renameAttribute", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_bytestr);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":5048
 *         _ensure_nc_success(ierr)
 * 
 *     def __getitem__(self, elem):             # <<<<<<<<<<<<<<
 *         # This special method is used to index the netCDF variable
 *         # using the "extended slice syntax". The extended slice syntax
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_51__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_elem); /*proto*/
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_51__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_elem) {
  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_7netCDF4_8_netCDF4_8Variable_50__getitem__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self), ((PyObject *)__pyx_v_elem));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_50__getitem__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, PyObject *__pyx_v_elem) {
  PyObject *__pyx_v_start = NULL;
  PyObject *__pyx_v_count = NULL;
  PyObject *__pyx_v_stride = NULL;
  PyObject *__pyx_v_put_ind = NULL;
  PyObject *__pyx_v_datashape = NULL;
  PyObject *__pyx_v_data = NULL;
  PyObject *__pyx_v_squeeze = NULL;
  PyObject *__pyx_v_i = NULL;
  PyObject *__pyx_v_n = NULL;
  PyObject *__pyx_v_a = NULL;
  PyObject *__pyx_v_b = NULL;
  PyObject *__pyx_v_c = NULL;
  PyObject *__pyx_v_datout = NULL;
  PyObject *__pyx_v_shape = NULL;
  int __pyx_v_valid_scaleoffset;
  PyObject *__pyx_v_msg = NULL;
  int __pyx_v_is_unsigned;
  PyObject *__pyx_v_encoding = NULL;
  int __pyx_v_matchdim;
  PyObject *__pyx_v_cnt = NULL;
  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)(PyObject *);
  int __pyx_t_9;
  Py_ssize_t __pyx_t_10;
  PyObject *(*__pyx_t_11)(PyObject *);
  int __pyx_t_12;
  PyObject *__pyx_t_13 = NULL;
  int __pyx_t_14;
  Py_ssize_t __pyx_t_15;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17 = NULL;
  PyObject *__pyx_t_18 = NULL;
  double __pyx_t_19;
  PyObject *__pyx_t_20[3];
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__getitem__", 0);

  /* "netCDF4/_netCDF4.pyx":5055
 *         # to use.
 *         start, count, stride, put_ind =\
 *         _StartCountStride(elem,self.shape,dimensions=self.dimensions,grp=self._grp,use_get_vars=self._use_get_vars)             # <<<<<<<<<<<<<<
 *         datashape = _out_array_shape(count)
 *         if self._isvlen:
*/
  __pyx_t_2 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_StartCountStride); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5055, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_shape); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5055, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_dimensions); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5055, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = 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_6 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[3 + ((CYTHON_VECTORCALL) ? 3 : 0)] = {__pyx_t_2, __pyx_v_elem, __pyx_t_4};
    __pyx_t_7 = __Pyx_MakeVectorcallBuilderKwds(3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5055, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_dimensions, __pyx_t_5, __pyx_t_7, __pyx_callargs+3, 0) < (0)) __PYX_ERR(0, 5055, __pyx_L1_error)
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_grp, __pyx_v_self->_grp, __pyx_t_7, __pyx_callargs+3, 1) < (0)) __PYX_ERR(0, 5055, __pyx_L1_error)
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_use_get_vars, __pyx_v_self->_use_get_vars, __pyx_t_7, __pyx_callargs+3, 2) < (0)) __PYX_ERR(0, 5055, __pyx_L1_error)
    __pyx_t_1 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_t_3, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_7);
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5055, __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 != 4)) {
      if (size > 4) __Pyx_RaiseTooManyValuesError(4);
      else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
      __PYX_ERR(0, 5054, __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_7 = PyTuple_GET_ITEM(sequence, 1);
      __Pyx_INCREF(__pyx_t_7);
      __pyx_t_5 = PyTuple_GET_ITEM(sequence, 2);
      __Pyx_INCREF(__pyx_t_5);
      __pyx_t_4 = PyTuple_GET_ITEM(sequence, 3);
      __Pyx_INCREF(__pyx_t_4);
    } else {
      __pyx_t_3 = __Pyx_PyList_GetItemRefFast(sequence, 0, __Pyx_ReferenceSharing_SharedReference);
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5054, __pyx_L1_error)
      __Pyx_XGOTREF(__pyx_t_3);
      __pyx_t_7 = __Pyx_PyList_GetItemRefFast(sequence, 1, __Pyx_ReferenceSharing_SharedReference);
      if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5054, __pyx_L1_error)
      __Pyx_XGOTREF(__pyx_t_7);
      __pyx_t_5 = __Pyx_PyList_GetItemRefFast(sequence, 2, __Pyx_ReferenceSharing_SharedReference);
      if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5054, __pyx_L1_error)
      __Pyx_XGOTREF(__pyx_t_5);
      __pyx_t_4 = __Pyx_PyList_GetItemRefFast(sequence, 3, __Pyx_ReferenceSharing_SharedReference);
      if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5054, __pyx_L1_error)
      __Pyx_XGOTREF(__pyx_t_4);
    }
    #else
    {
      Py_ssize_t i;
      PyObject** temps[4] = {&__pyx_t_3,&__pyx_t_7,&__pyx_t_5,&__pyx_t_4};
      for (i=0; i < 4; i++) {
        PyObject* item = __Pyx_PySequence_ITEM(sequence, i); if (unlikely(!item)) __PYX_ERR(0, 5054, __pyx_L1_error)
        __Pyx_GOTREF(item);
        *(temps[i]) = item;
      }
    }
    #endif
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  } else {
    Py_ssize_t index = -1;
    PyObject** temps[4] = {&__pyx_t_3,&__pyx_t_7,&__pyx_t_5,&__pyx_t_4};
    __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5054, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_8 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_2);
    for (index=0; index < 4; index++) {
      PyObject* item = __pyx_t_8(__pyx_t_2); if (unlikely(!item)) goto __pyx_L3_unpacking_failed;
      __Pyx_GOTREF(item);
      *(temps[index]) = item;
    }
    if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_2), 4) < (0)) __PYX_ERR(0, 5054, __pyx_L1_error)
    __pyx_t_8 = NULL;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    goto __pyx_L4_unpacking_done;
    __pyx_L3_unpacking_failed:;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_8 = NULL;
    if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
    __PYX_ERR(0, 5054, __pyx_L1_error)
    __pyx_L4_unpacking_done:;
  }

  /* "netCDF4/_netCDF4.pyx":5054
 *         # arguments to the nc_get_var() function, and is much more easy
 *         # to use.
 *         start, count, stride, put_ind =\             # <<<<<<<<<<<<<<
 *         _StartCountStride(elem,self.shape,dimensions=self.dimensions,grp=self._grp,use_get_vars=self._use_get_vars)
 *         datashape = _out_array_shape(count)
*/
  __pyx_v_start = __pyx_t_3;
  __pyx_t_3 = 0;
  __pyx_v_count = __pyx_t_7;
  __pyx_t_7 = 0;
  __pyx_v_stride = __pyx_t_5;
  __pyx_t_5 = 0;
  __pyx_v_put_ind = __pyx_t_4;
  __pyx_t_4 = 0;

  /* "netCDF4/_netCDF4.pyx":5056
 *         start, count, stride, put_ind =\
 *         _StartCountStride(elem,self.shape,dimensions=self.dimensions,grp=self._grp,use_get_vars=self._use_get_vars)
 *         datashape = _out_array_shape(count)             # <<<<<<<<<<<<<<
 *         if self._isvlen:
 *             data = numpy.empty(datashape, dtype='O')
*/
  __pyx_t_4 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_out_array_shape); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5056, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __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[2] = {__pyx_t_4, __pyx_v_count};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __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;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5056, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_v_datashape = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":5057
 *         _StartCountStride(elem,self.shape,dimensions=self.dimensions,grp=self._grp,use_get_vars=self._use_get_vars)
 *         datashape = _out_array_shape(count)
 *         if self._isvlen:             # <<<<<<<<<<<<<<
 *             data = numpy.empty(datashape, dtype='O')
 *         else:
*/
  __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_self->_isvlen); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 5057, __pyx_L1_error)
  if (__pyx_t_9) {

    /* "netCDF4/_netCDF4.pyx":5058
 *         datashape = _out_array_shape(count)
 *         if self._isvlen:
 *             data = numpy.empty(datashape, dtype='O')             # <<<<<<<<<<<<<<
 *         else:
 *             data = numpy.empty(datashape, dtype=self.dtype)
*/
    __pyx_t_5 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5058, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_empty); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5058, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_6 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_7);
      assert(__pyx_t_5);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_7, __pyx__function);
      __pyx_t_6 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_5, __pyx_v_datashape};
      __pyx_t_4 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5058, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_dtype, __pyx_mstate_global->__pyx_n_u_O, __pyx_t_4, __pyx_callargs+2, 0) < (0)) __PYX_ERR(0, 5058, __pyx_L1_error)
      __pyx_t_1 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_4);
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5058, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __pyx_v_data = __pyx_t_1;
    __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":5057
 *         _StartCountStride(elem,self.shape,dimensions=self.dimensions,grp=self._grp,use_get_vars=self._use_get_vars)
 *         datashape = _out_array_shape(count)
 *         if self._isvlen:             # <<<<<<<<<<<<<<
 *             data = numpy.empty(datashape, dtype='O')
 *         else:
*/
    goto __pyx_L5;
  }

  /* "netCDF4/_netCDF4.pyx":5060
 *             data = numpy.empty(datashape, dtype='O')
 *         else:
 *             data = numpy.empty(datashape, dtype=self.dtype)             # <<<<<<<<<<<<<<
 * 
 *         # Determine which dimensions need to be
*/
  /*else*/ {
    __pyx_t_7 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5060, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_empty); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5060, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_6 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
      assert(__pyx_t_7);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
      __pyx_t_6 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_7, __pyx_v_datashape};
      __pyx_t_4 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5060, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_dtype, __pyx_v_self->dtype, __pyx_t_4, __pyx_callargs+2, 0) < (0)) __PYX_ERR(0, 5060, __pyx_L1_error)
      __pyx_t_1 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_4);
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5060, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __pyx_v_data = __pyx_t_1;
    __pyx_t_1 = 0;
  }
  __pyx_L5:;

  /* "netCDF4/_netCDF4.pyx":5066
 *         # The convention used is that for those cases,
 *         # put_ind for this dimension is set to -1 by _StartCountStride.
 *         squeeze = data.ndim * [slice(None),]             # <<<<<<<<<<<<<<
 *         for i,n in enumerate(put_ind.shape[:-1]):
 *             if n == 1 and put_ind.size > 0 and put_ind[...,i].ravel()[0] == -1:
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_mstate_global->__pyx_n_u_ndim); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5066, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = PyList_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5066, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_INCREF(__pyx_mstate_global->__pyx_slice[1]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_slice[1]);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_5, 0, __pyx_mstate_global->__pyx_slice[1]) != (0)) __PYX_ERR(0, 5066, __pyx_L1_error);
  __pyx_t_4 = PyNumber_Multiply(__pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5066, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_v_squeeze = __pyx_t_4;
  __pyx_t_4 = 0;

  /* "netCDF4/_netCDF4.pyx":5067
 *         # put_ind for this dimension is set to -1 by _StartCountStride.
 *         squeeze = data.ndim * [slice(None),]
 *         for i,n in enumerate(put_ind.shape[:-1]):             # <<<<<<<<<<<<<<
 *             if n == 1 and put_ind.size > 0 and put_ind[...,i].ravel()[0] == -1:
 *                 squeeze[i] = 0
*/
  __Pyx_INCREF(__pyx_mstate_global->__pyx_int_0);
  __pyx_t_4 = __pyx_mstate_global->__pyx_int_0;
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_put_ind, __pyx_mstate_global->__pyx_n_u_shape); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5067, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyObject_GetSlice(__pyx_t_5, 0, -1L, NULL, NULL, &__pyx_mstate_global->__pyx_slice[2], 0, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5067, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
    __pyx_t_5 = __pyx_t_1; __Pyx_INCREF(__pyx_t_5);
    __pyx_t_10 = 0;
    __pyx_t_11 = NULL;
  } else {
    __pyx_t_10 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5067, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_11 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 5067, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  for (;;) {
    if (likely(!__pyx_t_11)) {
      if (likely(PyList_CheckExact(__pyx_t_5))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_5);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 5067, __pyx_L1_error)
          #endif
          if (__pyx_t_10 >= __pyx_temp) break;
        }
        __pyx_t_1 = __Pyx_PyList_GetItemRefFast(__pyx_t_5, __pyx_t_10, __Pyx_ReferenceSharing_OwnStrongReference);
        ++__pyx_t_10;
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_5);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 5067, __pyx_L1_error)
          #endif
          if (__pyx_t_10 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_1 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_10));
        #else
        __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_5, __pyx_t_10);
        #endif
        ++__pyx_t_10;
      }
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5067, __pyx_L1_error)
    } else {
      __pyx_t_1 = __pyx_t_11(__pyx_t_5);
      if (unlikely(!__pyx_t_1)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 5067, __pyx_L1_error)
          PyErr_Clear();
        }
        break;
      }
    }
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_XDECREF_SET(__pyx_v_n, __pyx_t_1);
    __pyx_t_1 = 0;
    __Pyx_INCREF(__pyx_t_4);
    __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_4);
    __pyx_t_1 = __Pyx_PyLong_AddObjC(__pyx_t_4, __pyx_mstate_global->__pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5067, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4);
    __pyx_t_4 = __pyx_t_1;
    __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":5068
 *         squeeze = data.ndim * [slice(None),]
 *         for i,n in enumerate(put_ind.shape[:-1]):
 *             if n == 1 and put_ind.size > 0 and put_ind[...,i].ravel()[0] == -1:             # <<<<<<<<<<<<<<
 *                 squeeze[i] = 0
 * 
*/
    __pyx_t_12 = (__Pyx_PyLong_BoolEqObjC(__pyx_v_n, __pyx_mstate_global->__pyx_int_1, 1, 0)); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 5068, __pyx_L1_error)
    if (__pyx_t_12) {
    } else {
      __pyx_t_9 = __pyx_t_12;
      goto __pyx_L9_bool_binop_done;
    }
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_put_ind, __pyx_mstate_global->__pyx_n_u_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5068, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_7 = PyObject_RichCompare(__pyx_t_1, __pyx_mstate_global->__pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5068, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 5068, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (__pyx_t_12) {
    } else {
      __pyx_t_9 = __pyx_t_12;
      goto __pyx_L9_bool_binop_done;
    }
    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5068, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(Py_Ellipsis);
    __Pyx_GIVEREF(Py_Ellipsis);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, Py_Ellipsis) != (0)) __PYX_ERR(0, 5068, __pyx_L1_error);
    __Pyx_INCREF(__pyx_v_i);
    __Pyx_GIVEREF(__pyx_v_i);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_i) != (0)) __PYX_ERR(0, 5068, __pyx_L1_error);
    __pyx_t_2 = __Pyx_PyObject_GetItem(__pyx_v_put_ind, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5068, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_1 = __pyx_t_2;
    __Pyx_INCREF(__pyx_t_1);
    __pyx_t_6 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_1, NULL};
      __pyx_t_7 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_ravel, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (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_7)) __PYX_ERR(0, 5068, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
    }
    __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_7, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5068, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_12 = (__Pyx_PyLong_BoolEqObjC(__pyx_t_2, __pyx_mstate_global->__pyx_int_neg_1, -1L, 0)); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 5068, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_9 = __pyx_t_12;
    __pyx_L9_bool_binop_done:;
    if (__pyx_t_9) {

      /* "netCDF4/_netCDF4.pyx":5069
 *         for i,n in enumerate(put_ind.shape[:-1]):
 *             if n == 1 and put_ind.size > 0 and put_ind[...,i].ravel()[0] == -1:
 *                 squeeze[i] = 0             # <<<<<<<<<<<<<<
 * 
 *         # Reshape the arrays so we can iterate over them.
*/
      if (unlikely((PyObject_SetItem(__pyx_v_squeeze, __pyx_v_i, __pyx_mstate_global->__pyx_int_0) < 0))) __PYX_ERR(0, 5069, __pyx_L1_error)

      /* "netCDF4/_netCDF4.pyx":5068
 *         squeeze = data.ndim * [slice(None),]
 *         for i,n in enumerate(put_ind.shape[:-1]):
 *             if n == 1 and put_ind.size > 0 and put_ind[...,i].ravel()[0] == -1:             # <<<<<<<<<<<<<<
 *                 squeeze[i] = 0
 * 
*/
    }

    /* "netCDF4/_netCDF4.pyx":5067
 *         # put_ind for this dimension is set to -1 by _StartCountStride.
 *         squeeze = data.ndim * [slice(None),]
 *         for i,n in enumerate(put_ind.shape[:-1]):             # <<<<<<<<<<<<<<
 *             if n == 1 and put_ind.size > 0 and put_ind[...,i].ravel()[0] == -1:
 *                 squeeze[i] = 0
*/
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "netCDF4/_netCDF4.pyx":5072
 * 
 *         # Reshape the arrays so we can iterate over them.
 *         start = start.reshape((-1, self.ndim or 1))             # <<<<<<<<<<<<<<
 *         count = count.reshape((-1, self.ndim or 1))
 *         stride = stride.reshape((-1, self.ndim or 1))
*/
  __pyx_t_5 = __pyx_v_start;
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_self->ndim); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 5072, __pyx_L1_error)
  if (!__pyx_t_9) {
  } else {
    __Pyx_INCREF(__pyx_v_self->ndim);
    __pyx_t_2 = __pyx_v_self->ndim;
    goto __pyx_L13_bool_binop_done;
  }
  __pyx_t_7 = __Pyx_PyLong_From_long(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5072, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_2 = __pyx_t_7;
  __pyx_t_7 = 0;
  __pyx_L13_bool_binop_done:;
  __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5072, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_INCREF(__pyx_mstate_global->__pyx_int_neg_1);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_int_neg_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_mstate_global->__pyx_int_neg_1) != (0)) __PYX_ERR(0, 5072, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_2);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_2) != (0)) __PYX_ERR(0, 5072, __pyx_L1_error);
  __pyx_t_2 = 0;
  __pyx_t_6 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_7};
    __pyx_t_4 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_reshape, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5072, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
  }
  __Pyx_DECREF_SET(__pyx_v_start, __pyx_t_4);
  __pyx_t_4 = 0;

  /* "netCDF4/_netCDF4.pyx":5073
 *         # Reshape the arrays so we can iterate over them.
 *         start = start.reshape((-1, self.ndim or 1))
 *         count = count.reshape((-1, self.ndim or 1))             # <<<<<<<<<<<<<<
 *         stride = stride.reshape((-1, self.ndim or 1))
 *         put_ind = put_ind.reshape((-1, self.ndim or 1))
*/
  __pyx_t_7 = __pyx_v_count;
  __Pyx_INCREF(__pyx_t_7);
  __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_self->ndim); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 5073, __pyx_L1_error)
  if (!__pyx_t_9) {
  } else {
    __Pyx_INCREF(__pyx_v_self->ndim);
    __pyx_t_5 = __pyx_v_self->ndim;
    goto __pyx_L15_bool_binop_done;
  }
  __pyx_t_2 = __Pyx_PyLong_From_long(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5073, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_5 = __pyx_t_2;
  __pyx_t_2 = 0;
  __pyx_L15_bool_binop_done:;
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5073, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_mstate_global->__pyx_int_neg_1);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_int_neg_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_mstate_global->__pyx_int_neg_1) != (0)) __PYX_ERR(0, 5073, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_5);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_5) != (0)) __PYX_ERR(0, 5073, __pyx_L1_error);
  __pyx_t_5 = 0;
  __pyx_t_6 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_2};
    __pyx_t_4 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_reshape, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5073, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
  }
  __Pyx_DECREF_SET(__pyx_v_count, __pyx_t_4);
  __pyx_t_4 = 0;

  /* "netCDF4/_netCDF4.pyx":5074
 *         start = start.reshape((-1, self.ndim or 1))
 *         count = count.reshape((-1, self.ndim or 1))
 *         stride = stride.reshape((-1, self.ndim or 1))             # <<<<<<<<<<<<<<
 *         put_ind = put_ind.reshape((-1, self.ndim or 1))
 * 
*/
  __pyx_t_2 = __pyx_v_stride;
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_self->ndim); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 5074, __pyx_L1_error)
  if (!__pyx_t_9) {
  } else {
    __Pyx_INCREF(__pyx_v_self->ndim);
    __pyx_t_7 = __pyx_v_self->ndim;
    goto __pyx_L17_bool_binop_done;
  }
  __pyx_t_5 = __Pyx_PyLong_From_long(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5074, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = __pyx_t_5;
  __pyx_t_5 = 0;
  __pyx_L17_bool_binop_done:;
  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5074, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_INCREF(__pyx_mstate_global->__pyx_int_neg_1);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_int_neg_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_mstate_global->__pyx_int_neg_1) != (0)) __PYX_ERR(0, 5074, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_7);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_7) != (0)) __PYX_ERR(0, 5074, __pyx_L1_error);
  __pyx_t_7 = 0;
  __pyx_t_6 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_5};
    __pyx_t_4 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_reshape, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (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_4)) __PYX_ERR(0, 5074, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
  }
  __Pyx_DECREF_SET(__pyx_v_stride, __pyx_t_4);
  __pyx_t_4 = 0;

  /* "netCDF4/_netCDF4.pyx":5075
 *         count = count.reshape((-1, self.ndim or 1))
 *         stride = stride.reshape((-1, self.ndim or 1))
 *         put_ind = put_ind.reshape((-1, self.ndim or 1))             # <<<<<<<<<<<<<<
 * 
 *         # Fill output array with data chunks.
*/
  __pyx_t_5 = __pyx_v_put_ind;
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_self->ndim); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 5075, __pyx_L1_error)
  if (!__pyx_t_9) {
  } else {
    __Pyx_INCREF(__pyx_v_self->ndim);
    __pyx_t_2 = __pyx_v_self->ndim;
    goto __pyx_L19_bool_binop_done;
  }
  __pyx_t_7 = __Pyx_PyLong_From_long(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5075, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_2 = __pyx_t_7;
  __pyx_t_7 = 0;
  __pyx_L19_bool_binop_done:;
  __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5075, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_INCREF(__pyx_mstate_global->__pyx_int_neg_1);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_int_neg_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_mstate_global->__pyx_int_neg_1) != (0)) __PYX_ERR(0, 5075, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_2);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_2) != (0)) __PYX_ERR(0, 5075, __pyx_L1_error);
  __pyx_t_2 = 0;
  __pyx_t_6 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_7};
    __pyx_t_4 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_reshape, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5075, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
  }
  __Pyx_DECREF_SET(__pyx_v_put_ind, __pyx_t_4);
  __pyx_t_4 = 0;

  /* "netCDF4/_netCDF4.pyx":5078
 * 
 *         # Fill output array with data chunks.
 *         for (a,b,c,i) in zip(start, count, stride, put_ind):             # <<<<<<<<<<<<<<
 *             datout = self._get(a,b,c)
 *             if not hasattr(datout,'shape') or data.shape == datout.shape:
*/
  __pyx_t_7 = NULL;
  __pyx_t_6 = 1;
  {
    PyObject *__pyx_callargs[5] = {__pyx_t_7, __pyx_v_start, __pyx_v_count, __pyx_v_stride, __pyx_v_put_ind};
    __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_zip, __pyx_callargs+__pyx_t_6, (5-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5078, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
  }
  if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
    __pyx_t_7 = __pyx_t_4; __Pyx_INCREF(__pyx_t_7);
    __pyx_t_10 = 0;
    __pyx_t_11 = NULL;
  } else {
    __pyx_t_10 = -1; __pyx_t_7 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5078, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_11 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_7); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 5078, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  for (;;) {
    if (likely(!__pyx_t_11)) {
      if (likely(PyList_CheckExact(__pyx_t_7))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_7);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 5078, __pyx_L1_error)
          #endif
          if (__pyx_t_10 >= __pyx_temp) break;
        }
        __pyx_t_4 = __Pyx_PyList_GetItemRefFast(__pyx_t_7, __pyx_t_10, __Pyx_ReferenceSharing_OwnStrongReference);
        ++__pyx_t_10;
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_7);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 5078, __pyx_L1_error)
          #endif
          if (__pyx_t_10 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_7, __pyx_t_10));
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_7, __pyx_t_10);
        #endif
        ++__pyx_t_10;
      }
      if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5078, __pyx_L1_error)
    } else {
      __pyx_t_4 = __pyx_t_11(__pyx_t_7);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 5078, __pyx_L1_error)
          PyErr_Clear();
        }
        break;
      }
    }
    __Pyx_GOTREF(__pyx_t_4);
    if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) {
      PyObject* sequence = __pyx_t_4;
      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(0, 5078, __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_2 = PyTuple_GET_ITEM(sequence, 1);
        __Pyx_INCREF(__pyx_t_2);
        __pyx_t_1 = PyTuple_GET_ITEM(sequence, 2);
        __Pyx_INCREF(__pyx_t_1);
        __pyx_t_3 = PyTuple_GET_ITEM(sequence, 3);
        __Pyx_INCREF(__pyx_t_3);
      } else {
        __pyx_t_5 = __Pyx_PyList_GetItemRefFast(sequence, 0, __Pyx_ReferenceSharing_SharedReference);
        if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5078, __pyx_L1_error)
        __Pyx_XGOTREF(__pyx_t_5);
        __pyx_t_2 = __Pyx_PyList_GetItemRefFast(sequence, 1, __Pyx_ReferenceSharing_SharedReference);
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5078, __pyx_L1_error)
        __Pyx_XGOTREF(__pyx_t_2);
        __pyx_t_1 = __Pyx_PyList_GetItemRefFast(sequence, 2, __Pyx_ReferenceSharing_SharedReference);
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5078, __pyx_L1_error)
        __Pyx_XGOTREF(__pyx_t_1);
        __pyx_t_3 = __Pyx_PyList_GetItemRefFast(sequence, 3, __Pyx_ReferenceSharing_SharedReference);
        if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5078, __pyx_L1_error)
        __Pyx_XGOTREF(__pyx_t_3);
      }
      #else
      {
        Py_ssize_t i;
        PyObject** temps[4] = {&__pyx_t_5,&__pyx_t_2,&__pyx_t_1,&__pyx_t_3};
        for (i=0; i < 4; i++) {
          PyObject* item = __Pyx_PySequence_ITEM(sequence, i); if (unlikely(!item)) __PYX_ERR(0, 5078, __pyx_L1_error)
          __Pyx_GOTREF(item);
          *(temps[i]) = item;
        }
      }
      #endif
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    } else {
      Py_ssize_t index = -1;
      PyObject** temps[4] = {&__pyx_t_5,&__pyx_t_2,&__pyx_t_1,&__pyx_t_3};
      __pyx_t_13 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 5078, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_13);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_8 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_13);
      for (index=0; index < 4; index++) {
        PyObject* item = __pyx_t_8(__pyx_t_13); if (unlikely(!item)) goto __pyx_L23_unpacking_failed;
        __Pyx_GOTREF(item);
        *(temps[index]) = item;
      }
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_13), 4) < (0)) __PYX_ERR(0, 5078, __pyx_L1_error)
      __pyx_t_8 = NULL;
      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
      goto __pyx_L24_unpacking_done;
      __pyx_L23_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
      __pyx_t_8 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(0, 5078, __pyx_L1_error)
      __pyx_L24_unpacking_done:;
    }
    __Pyx_XDECREF_SET(__pyx_v_a, __pyx_t_5);
    __pyx_t_5 = 0;
    __Pyx_XDECREF_SET(__pyx_v_b, __pyx_t_2);
    __pyx_t_2 = 0;
    __Pyx_XDECREF_SET(__pyx_v_c, __pyx_t_1);
    __pyx_t_1 = 0;
    __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_3);
    __pyx_t_3 = 0;

    /* "netCDF4/_netCDF4.pyx":5079
 *         # Fill output array with data chunks.
 *         for (a,b,c,i) in zip(start, count, stride, put_ind):
 *             datout = self._get(a,b,c)             # <<<<<<<<<<<<<<
 *             if not hasattr(datout,'shape') or data.shape == datout.shape:
 *                 data = datout
*/
    __pyx_t_3 = ((PyObject *)__pyx_v_self);
    __Pyx_INCREF(__pyx_t_3);
    __pyx_t_6 = 0;
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_3, __pyx_v_a, __pyx_v_b, __pyx_v_c};
      __pyx_t_4 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_get, __pyx_callargs+__pyx_t_6, (4-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5079, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_datout, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "netCDF4/_netCDF4.pyx":5080
 *         for (a,b,c,i) in zip(start, count, stride, put_ind):
 *             datout = self._get(a,b,c)
 *             if not hasattr(datout,'shape') or data.shape == datout.shape:             # <<<<<<<<<<<<<<
 *                 data = datout
 *             else:
*/
    __pyx_t_12 = __Pyx_HasAttr(__pyx_v_datout, __pyx_mstate_global->__pyx_n_u_shape); if (unlikely(__pyx_t_12 == ((int)-1))) __PYX_ERR(0, 5080, __pyx_L1_error)
    __pyx_t_14 = (!__pyx_t_12);
    if (!__pyx_t_14) {
    } else {
      __pyx_t_9 = __pyx_t_14;
      goto __pyx_L26_bool_binop_done;
    }
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_mstate_global->__pyx_n_u_shape); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5080, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_datout, __pyx_mstate_global->__pyx_n_u_shape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5080, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_1 = PyObject_RichCompare(__pyx_t_4, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5080, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_14 < 0))) __PYX_ERR(0, 5080, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_9 = __pyx_t_14;
    __pyx_L26_bool_binop_done:;
    if (__pyx_t_9) {

      /* "netCDF4/_netCDF4.pyx":5081
 *             datout = self._get(a,b,c)
 *             if not hasattr(datout,'shape') or data.shape == datout.shape:
 *                 data = datout             # <<<<<<<<<<<<<<
 *             else:
 *                 shape = getattr(data[tuple(i)], 'shape', ())
*/
      __Pyx_INCREF(__pyx_v_datout);
      __Pyx_DECREF_SET(__pyx_v_data, __pyx_v_datout);

      /* "netCDF4/_netCDF4.pyx":5080
 *         for (a,b,c,i) in zip(start, count, stride, put_ind):
 *             datout = self._get(a,b,c)
 *             if not hasattr(datout,'shape') or data.shape == datout.shape:             # <<<<<<<<<<<<<<
 *                 data = datout
 *             else:
*/
      goto __pyx_L25;
    }

    /* "netCDF4/_netCDF4.pyx":5083
 *                 data = datout
 *             else:
 *                 shape = getattr(data[tuple(i)], 'shape', ())             # <<<<<<<<<<<<<<
 *                 if self._isvlen and not len(self.dimensions):
 *                     # special case of scalar VLEN
*/
    /*else*/ {
      __pyx_t_1 = __Pyx_PySequence_Tuple(__pyx_v_i); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5083, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_v_data, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5083, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_1 = __Pyx_GetAttr3(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_shape, __pyx_mstate_global->__pyx_empty_tuple); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5083, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_XDECREF_SET(__pyx_v_shape, __pyx_t_1);
      __pyx_t_1 = 0;

      /* "netCDF4/_netCDF4.pyx":5084
 *             else:
 *                 shape = getattr(data[tuple(i)], 'shape', ())
 *                 if self._isvlen and not len(self.dimensions):             # <<<<<<<<<<<<<<
 *                     # special case of scalar VLEN
 *                     data[0] = datout
*/
      __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_v_self->_isvlen); if (unlikely((__pyx_t_14 < 0))) __PYX_ERR(0, 5084, __pyx_L1_error)
      if (__pyx_t_14) {
      } else {
        __pyx_t_9 = __pyx_t_14;
        goto __pyx_L29_bool_binop_done;
      }
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_dimensions); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5084, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_15 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_15 == ((Py_ssize_t)-1))) __PYX_ERR(0, 5084, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_14 = (!(__pyx_t_15 != 0));
      __pyx_t_9 = __pyx_t_14;
      __pyx_L29_bool_binop_done:;
      if (__pyx_t_9) {

        /* "netCDF4/_netCDF4.pyx":5086
 *                 if self._isvlen and not len(self.dimensions):
 *                     # special case of scalar VLEN
 *                     data[0] = datout             # <<<<<<<<<<<<<<
 *                 else:
 *                     if self._isvlen and not shape:
*/
        if (unlikely((__Pyx_SetItemInt(__pyx_v_data, 0, __pyx_v_datout, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference) < 0))) __PYX_ERR(0, 5086, __pyx_L1_error)

        /* "netCDF4/_netCDF4.pyx":5084
 *             else:
 *                 shape = getattr(data[tuple(i)], 'shape', ())
 *                 if self._isvlen and not len(self.dimensions):             # <<<<<<<<<<<<<<
 *                     # special case of scalar VLEN
 *                     data[0] = datout
*/
        goto __pyx_L28;
      }

      /* "netCDF4/_netCDF4.pyx":5088
 *                     data[0] = datout
 *                 else:
 *                     if self._isvlen and not shape:             # <<<<<<<<<<<<<<
 *                         # issue #1306 - convert length 1 object array to string
 *                         data[tuple(i)] = datout.item()
*/
      /*else*/ {
        __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_v_self->_isvlen); if (unlikely((__pyx_t_14 < 0))) __PYX_ERR(0, 5088, __pyx_L1_error)
        if (__pyx_t_14) {
        } else {
          __pyx_t_9 = __pyx_t_14;
          goto __pyx_L32_bool_binop_done;
        }
        __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_v_shape); if (unlikely((__pyx_t_14 < 0))) __PYX_ERR(0, 5088, __pyx_L1_error)
        __pyx_t_12 = (!__pyx_t_14);
        __pyx_t_9 = __pyx_t_12;
        __pyx_L32_bool_binop_done:;
        if (__pyx_t_9) {

          /* "netCDF4/_netCDF4.pyx":5090
 *                     if self._isvlen and not shape:
 *                         # issue #1306 - convert length 1 object array to string
 *                         data[tuple(i)] = datout.item()             # <<<<<<<<<<<<<<
 *                     else:
 *                         data[tuple(i)] = datout.reshape(shape)
*/
          __pyx_t_3 = __pyx_v_datout;
          __Pyx_INCREF(__pyx_t_3);
          __pyx_t_6 = 0;
          {
            PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
            __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_item, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
            __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
            if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5090, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
          }
          __pyx_t_3 = __Pyx_PySequence_Tuple(__pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5090, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
          if (unlikely((PyObject_SetItem(__pyx_v_data, __pyx_t_3, __pyx_t_1) < 0))) __PYX_ERR(0, 5090, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

          /* "netCDF4/_netCDF4.pyx":5088
 *                     data[0] = datout
 *                 else:
 *                     if self._isvlen and not shape:             # <<<<<<<<<<<<<<
 *                         # issue #1306 - convert length 1 object array to string
 *                         data[tuple(i)] = datout.item()
*/
          goto __pyx_L31;
        }

        /* "netCDF4/_netCDF4.pyx":5092
 *                         data[tuple(i)] = datout.item()
 *                     else:
 *                         data[tuple(i)] = datout.reshape(shape)             # <<<<<<<<<<<<<<
 * 
 *         # Remove extra singleton dimensions.
*/
        /*else*/ {
          __pyx_t_3 = __pyx_v_datout;
          __Pyx_INCREF(__pyx_t_3);
          __pyx_t_6 = 0;
          {
            PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_shape};
            __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_reshape, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
            __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
            if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5092, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
          }
          __pyx_t_3 = __Pyx_PySequence_Tuple(__pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5092, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
          if (unlikely((PyObject_SetItem(__pyx_v_data, __pyx_t_3, __pyx_t_1) < 0))) __PYX_ERR(0, 5092, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        }
        __pyx_L31:;
      }
      __pyx_L28:;
    }
    __pyx_L25:;

    /* "netCDF4/_netCDF4.pyx":5078
 * 
 *         # Fill output array with data chunks.
 *         for (a,b,c,i) in zip(start, count, stride, put_ind):             # <<<<<<<<<<<<<<
 *             datout = self._get(a,b,c)
 *             if not hasattr(datout,'shape') or data.shape == datout.shape:
*/
  }
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":5095
 * 
 *         # Remove extra singleton dimensions.
 *         if hasattr(data,'shape'):             # <<<<<<<<<<<<<<
 *             data = data[tuple(squeeze)]
 *         if hasattr(data,'ndim') and self.ndim == 0:
*/
  __pyx_t_9 = __Pyx_HasAttr(__pyx_v_data, __pyx_mstate_global->__pyx_n_u_shape); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(0, 5095, __pyx_L1_error)
  if (__pyx_t_9) {

    /* "netCDF4/_netCDF4.pyx":5096
 *         # Remove extra singleton dimensions.
 *         if hasattr(data,'shape'):
 *             data = data[tuple(squeeze)]             # <<<<<<<<<<<<<<
 *         if hasattr(data,'ndim') and self.ndim == 0:
 *             # Make sure a numpy scalar array is returned instead of a 1-d array of
*/
    __pyx_t_7 = __Pyx_PySequence_Tuple(__pyx_v_squeeze); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5096, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_v_data, __pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5096, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF_SET(__pyx_v_data, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":5095
 * 
 *         # Remove extra singleton dimensions.
 *         if hasattr(data,'shape'):             # <<<<<<<<<<<<<<
 *             data = data[tuple(squeeze)]
 *         if hasattr(data,'ndim') and self.ndim == 0:
*/
  }

  /* "netCDF4/_netCDF4.pyx":5097
 *         if hasattr(data,'shape'):
 *             data = data[tuple(squeeze)]
 *         if hasattr(data,'ndim') and self.ndim == 0:             # <<<<<<<<<<<<<<
 *             # Make sure a numpy scalar array is returned instead of a 1-d array of
 *             # length 1.
*/
  __pyx_t_12 = __Pyx_HasAttr(__pyx_v_data, __pyx_mstate_global->__pyx_n_u_ndim); if (unlikely(__pyx_t_12 == ((int)-1))) __PYX_ERR(0, 5097, __pyx_L1_error)
  if (__pyx_t_12) {
  } else {
    __pyx_t_9 = __pyx_t_12;
    goto __pyx_L37_bool_binop_done;
  }
  __pyx_t_12 = (__Pyx_PyLong_BoolEqObjC(__pyx_v_self->ndim, __pyx_mstate_global->__pyx_int_0, 0, 0)); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 5097, __pyx_L1_error)
  __pyx_t_9 = __pyx_t_12;
  __pyx_L37_bool_binop_done:;
  if (__pyx_t_9) {

    /* "netCDF4/_netCDF4.pyx":5100
 *             # Make sure a numpy scalar array is returned instead of a 1-d array of
 *             # length 1.
 *             if data.ndim != 0: data = numpy.asarray(data[0])             # <<<<<<<<<<<<<<
 * 
 *         # if auto_scale mode set to True, (through
*/
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_mstate_global->__pyx_n_u_ndim); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5100, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_9 = (__Pyx_PyLong_BoolNeObjC(__pyx_t_1, __pyx_mstate_global->__pyx_int_0, 0, 0)); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 5100, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (__pyx_t_9) {
      __pyx_t_7 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5100, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_asarray); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5100, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_data, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5100, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_6 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(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_6 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_3};
        __pyx_t_1 = __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_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5100, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
      }
      __Pyx_DECREF_SET(__pyx_v_data, __pyx_t_1);
      __pyx_t_1 = 0;
    }

    /* "netCDF4/_netCDF4.pyx":5097
 *         if hasattr(data,'shape'):
 *             data = data[tuple(squeeze)]
 *         if hasattr(data,'ndim') and self.ndim == 0:             # <<<<<<<<<<<<<<
 *             # Make sure a numpy scalar array is returned instead of a 1-d array of
 *             # length 1.
*/
  }

  /* "netCDF4/_netCDF4.pyx":5111
 *         # applied for primitive and (non-string) vlen,
 *         # ignored for compound and enum datatypes.
 *         try: # check to see if scale_factor and add_offset is valid (issue 176).             # <<<<<<<<<<<<<<
 *             if hasattr(self,'scale_factor'): float(self.scale_factor)
 *             if hasattr(self,'add_offset'): float(self.add_offset)
*/
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18);
    __Pyx_XGOTREF(__pyx_t_16);
    __Pyx_XGOTREF(__pyx_t_17);
    __Pyx_XGOTREF(__pyx_t_18);
    /*try:*/ {

      /* "netCDF4/_netCDF4.pyx":5112
 *         # ignored for compound and enum datatypes.
 *         try: # check to see if scale_factor and add_offset is valid (issue 176).
 *             if hasattr(self,'scale_factor'): float(self.scale_factor)             # <<<<<<<<<<<<<<
 *             if hasattr(self,'add_offset'): float(self.add_offset)
 *             valid_scaleoffset = True
*/
      __pyx_t_9 = __Pyx_HasAttr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_scale_factor); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(0, 5112, __pyx_L40_error)
      if (__pyx_t_9) {
        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_scale_factor); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5112, __pyx_L40_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_19 = __Pyx_PyObject_AsDouble(__pyx_t_1); if (unlikely(__PYX_CHECK_FLOAT_EXCEPTION(__pyx_t_19, ((double)((double)-1))) && PyErr_Occurred())) __PYX_ERR(0, 5112, __pyx_L40_error)
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      }

      /* "netCDF4/_netCDF4.pyx":5113
 *         try: # check to see if scale_factor and add_offset is valid (issue 176).
 *             if hasattr(self,'scale_factor'): float(self.scale_factor)
 *             if hasattr(self,'add_offset'): float(self.add_offset)             # <<<<<<<<<<<<<<
 *             valid_scaleoffset = True
 *         except:
*/
      __pyx_t_9 = __Pyx_HasAttr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_add_offset); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(0, 5113, __pyx_L40_error)
      if (__pyx_t_9) {
        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_add_offset); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5113, __pyx_L40_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_19 = __Pyx_PyObject_AsDouble(__pyx_t_1); if (unlikely(__PYX_CHECK_FLOAT_EXCEPTION(__pyx_t_19, ((double)((double)-1))) && PyErr_Occurred())) __PYX_ERR(0, 5113, __pyx_L40_error)
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      }

      /* "netCDF4/_netCDF4.pyx":5114
 *             if hasattr(self,'scale_factor'): float(self.scale_factor)
 *             if hasattr(self,'add_offset'): float(self.add_offset)
 *             valid_scaleoffset = True             # <<<<<<<<<<<<<<
 *         except:
 *             valid_scaleoffset = False
*/
      __pyx_v_valid_scaleoffset = 1;

      /* "netCDF4/_netCDF4.pyx":5111
 *         # applied for primitive and (non-string) vlen,
 *         # ignored for compound and enum datatypes.
 *         try: # check to see if scale_factor and add_offset is valid (issue 176).             # <<<<<<<<<<<<<<
 *             if hasattr(self,'scale_factor'): float(self.scale_factor)
 *             if hasattr(self,'add_offset'): float(self.add_offset)
*/
    }
    __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
    __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
    __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
    goto __pyx_L45_try_end;
    __pyx_L40_error:;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 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_7); __pyx_t_7 = 0;

    /* "netCDF4/_netCDF4.pyx":5115
 *             if hasattr(self,'add_offset'): float(self.add_offset)
 *             valid_scaleoffset = True
 *         except:             # <<<<<<<<<<<<<<
 *             valid_scaleoffset = False
 *             if self.scale:
*/
    /*except:*/ {
      __Pyx_AddTraceback("netCDF4._netCDF4.Variable.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) __PYX_ERR(0, 5115, __pyx_L42_except_error)
      __Pyx_XGOTREF(__pyx_t_1);
      __Pyx_XGOTREF(__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_3);

      /* "netCDF4/_netCDF4.pyx":5116
 *             valid_scaleoffset = True
 *         except:
 *             valid_scaleoffset = False             # <<<<<<<<<<<<<<
 *             if self.scale:
 *                 msg = 'invalid scale_factor or add_offset attribute, no unpacking done...'
*/
      __pyx_v_valid_scaleoffset = 0;

      /* "netCDF4/_netCDF4.pyx":5117
 *         except:
 *             valid_scaleoffset = False
 *             if self.scale:             # <<<<<<<<<<<<<<
 *                 msg = 'invalid scale_factor or add_offset attribute, no unpacking done...'
 *                 warnings.warn(msg)
*/
      __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_self->scale); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 5117, __pyx_L42_except_error)
      if (__pyx_t_9) {

        /* "netCDF4/_netCDF4.pyx":5118
 *             valid_scaleoffset = False
 *             if self.scale:
 *                 msg = 'invalid scale_factor or add_offset attribute, no unpacking done...'             # <<<<<<<<<<<<<<
 *                 warnings.warn(msg)
 * 
*/
        __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u_invalid_scale_factor_or_add_offs);
        __pyx_v_msg = __pyx_mstate_global->__pyx_kp_u_invalid_scale_factor_or_add_offs;

        /* "netCDF4/_netCDF4.pyx":5119
 *             if self.scale:
 *                 msg = 'invalid scale_factor or add_offset attribute, no unpacking done...'
 *                 warnings.warn(msg)             # <<<<<<<<<<<<<<
 * 
 *         if self.mask and (self._isprimitive or self._isenum):\
*/
        __pyx_t_2 = NULL;
        __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_warnings); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5119, __pyx_L42_except_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_warn); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 5119, __pyx_L42_except_error)
        __Pyx_GOTREF(__pyx_t_13);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_t_6 = 1;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_13))) {
          __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_13);
          assert(__pyx_t_2);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_13);
          __Pyx_INCREF(__pyx_t_2);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_13, __pyx__function);
          __pyx_t_6 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_msg};
          __pyx_t_7 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_13, __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_13); __pyx_t_13 = 0;
          if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5119, __pyx_L42_except_error)
          __Pyx_GOTREF(__pyx_t_7);
        }
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

        /* "netCDF4/_netCDF4.pyx":5117
 *         except:
 *             valid_scaleoffset = False
 *             if self.scale:             # <<<<<<<<<<<<<<
 *                 msg = 'invalid scale_factor or add_offset attribute, no unpacking done...'
 *                 warnings.warn(msg)
*/
      }
      __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_L41_exception_handled;
    }

    /* "netCDF4/_netCDF4.pyx":5111
 *         # applied for primitive and (non-string) vlen,
 *         # ignored for compound and enum datatypes.
 *         try: # check to see if scale_factor and add_offset is valid (issue 176).             # <<<<<<<<<<<<<<
 *             if hasattr(self,'scale_factor'): float(self.scale_factor)
 *             if hasattr(self,'add_offset'): float(self.add_offset)
*/
    __pyx_L42_except_error:;
    __Pyx_XGIVEREF(__pyx_t_16);
    __Pyx_XGIVEREF(__pyx_t_17);
    __Pyx_XGIVEREF(__pyx_t_18);
    __Pyx_ExceptionReset(__pyx_t_16, __pyx_t_17, __pyx_t_18);
    goto __pyx_L1_error;
    __pyx_L41_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_16);
    __Pyx_XGIVEREF(__pyx_t_17);
    __Pyx_XGIVEREF(__pyx_t_18);
    __Pyx_ExceptionReset(__pyx_t_16, __pyx_t_17, __pyx_t_18);
    __pyx_L45_try_end:;
  }

  /* "netCDF4/_netCDF4.pyx":5121
 *                 warnings.warn(msg)
 * 
 *         if self.mask and (self._isprimitive or self._isenum):\             # <<<<<<<<<<<<<<
 *             data = self._toma(data)
 *         else:
*/
  __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_v_self->mask); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 5121, __pyx_L1_error)
  if (__pyx_t_12) {
  } else {
    __pyx_t_9 = __pyx_t_12;
    goto __pyx_L52_bool_binop_done;
  }
  __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_v_self->_isprimitive); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 5121, __pyx_L1_error)
  if (!__pyx_t_12) {
  } else {
    __pyx_t_9 = __pyx_t_12;
    goto __pyx_L52_bool_binop_done;
  }
  __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_v_self->_isenum); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 5121, __pyx_L1_error)
  __pyx_t_9 = __pyx_t_12;
  __pyx_L52_bool_binop_done:;
  if (__pyx_t_9) {

    /* "netCDF4/_netCDF4.pyx":5122
 * 
 *         if self.mask and (self._isprimitive or self._isenum):\
 *             data = self._toma(data)             # <<<<<<<<<<<<<<
 *         else:
 *             # if attribute _Unsigned is "true", and variable has signed integer
*/
    __pyx_t_4 = ((PyObject *)__pyx_v_self);
    __Pyx_INCREF(__pyx_t_4);
    __pyx_t_6 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_data};
      __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_toma, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5122, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __Pyx_DECREF_SET(__pyx_v_data, __pyx_t_3);
    __pyx_t_3 = 0;

    /* "netCDF4/_netCDF4.pyx":5121
 *                 warnings.warn(msg)
 * 
 *         if self.mask and (self._isprimitive or self._isenum):\             # <<<<<<<<<<<<<<
 *             data = self._toma(data)
 *         else:
*/
    goto __pyx_L51;
  }

  /* "netCDF4/_netCDF4.pyx":5126
 *             # if attribute _Unsigned is "true", and variable has signed integer
 *             # dtype, return view with corresponding unsigned dtype (issue #656)
 *             if self.scale:  # only do this if autoscale option is on.             # <<<<<<<<<<<<<<
 *                 is_unsigned = getattr(self, '_Unsigned', False) in ["true","True"]
 *                 if is_unsigned and data.dtype.kind == 'i':
*/
  /*else*/ {
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_self->scale); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 5126, __pyx_L1_error)
    if (__pyx_t_9) {

      /* "netCDF4/_netCDF4.pyx":5127
 *             # dtype, return view with corresponding unsigned dtype (issue #656)
 *             if self.scale:  # only do this if autoscale option is on.
 *                 is_unsigned = getattr(self, '_Unsigned', False) in ["true","True"]             # <<<<<<<<<<<<<<
 *                 if is_unsigned and data.dtype.kind == 'i':
 *                     data=data.view('%su%s'%(data.dtype.byteorder,data.dtype.itemsize))
*/
      __pyx_t_3 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_Unsigned, Py_False); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5127, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_12 = (__Pyx_PyUnicode_Equals(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_true, Py_EQ)); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 5127, __pyx_L1_error)
      if (!__pyx_t_12) {
      } else {
        __pyx_t_9 = __pyx_t_12;
        goto __pyx_L56_bool_binop_done;
      }
      __pyx_t_12 = (__Pyx_PyUnicode_Equals(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_True, Py_EQ)); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 5127, __pyx_L1_error)
      __pyx_t_9 = __pyx_t_12;
      __pyx_L56_bool_binop_done:;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_v_is_unsigned = __pyx_t_9;

      /* "netCDF4/_netCDF4.pyx":5128
 *             if self.scale:  # only do this if autoscale option is on.
 *                 is_unsigned = getattr(self, '_Unsigned', False) in ["true","True"]
 *                 if is_unsigned and data.dtype.kind == 'i':             # <<<<<<<<<<<<<<
 *                     data=data.view('%su%s'%(data.dtype.byteorder,data.dtype.itemsize))
 * 
*/
      if (__pyx_v_is_unsigned) {
      } else {
        __pyx_t_9 = __pyx_v_is_unsigned;
        goto __pyx_L59_bool_binop_done;
      }
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_mstate_global->__pyx_n_u_dtype); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5128, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_kind); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5128, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_12 = (__Pyx_PyUnicode_Equals(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_i, Py_EQ)); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 5128, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_9 = __pyx_t_12;
      __pyx_L59_bool_binop_done:;
      if (__pyx_t_9) {

        /* "netCDF4/_netCDF4.pyx":5129
 *                 is_unsigned = getattr(self, '_Unsigned', False) in ["true","True"]
 *                 if is_unsigned and data.dtype.kind == 'i':
 *                     data=data.view('%su%s'%(data.dtype.byteorder,data.dtype.itemsize))             # <<<<<<<<<<<<<<
 * 
 *         if self.scale and\
*/
        __pyx_t_3 = __pyx_v_data;
        __Pyx_INCREF(__pyx_t_3);
        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_mstate_global->__pyx_n_u_dtype); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5129, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_byteorder); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5129, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_t_1 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Str(__pyx_t_7), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5129, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_mstate_global->__pyx_n_u_dtype); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5129, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_itemsize); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 5129, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_13);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_7 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Str(__pyx_t_13), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5129, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
        __pyx_t_20[0] = __pyx_t_1;
        __pyx_t_20[1] = __pyx_mstate_global->__pyx_n_u_u;
        __pyx_t_20[2] = __pyx_t_7;
        __pyx_t_13 = __Pyx_PyUnicode_Join(__pyx_t_20, 3, __Pyx_PyUnicode_GET_LENGTH(__pyx_t_1) + 1 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_7), 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_7));
        if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 5129, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_13);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_6 = 0;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_13};
          __pyx_t_4 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_view, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
          if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5129, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_4);
        }
        __Pyx_DECREF_SET(__pyx_v_data, __pyx_t_4);
        __pyx_t_4 = 0;

        /* "netCDF4/_netCDF4.pyx":5128
 *             if self.scale:  # only do this if autoscale option is on.
 *                 is_unsigned = getattr(self, '_Unsigned', False) in ["true","True"]
 *                 if is_unsigned and data.dtype.kind == 'i':             # <<<<<<<<<<<<<<
 *                     data=data.view('%su%s'%(data.dtype.byteorder,data.dtype.itemsize))
 * 
*/
      }

      /* "netCDF4/_netCDF4.pyx":5126
 *             # if attribute _Unsigned is "true", and variable has signed integer
 *             # dtype, return view with corresponding unsigned dtype (issue #656)
 *             if self.scale:  # only do this if autoscale option is on.             # <<<<<<<<<<<<<<
 *                 is_unsigned = getattr(self, '_Unsigned', False) in ["true","True"]
 *                 if is_unsigned and data.dtype.kind == 'i':
*/
    }
  }
  __pyx_L51:;

  /* "netCDF4/_netCDF4.pyx":5131
 *                     data=data.view('%su%s'%(data.dtype.byteorder,data.dtype.itemsize))
 * 
 *         if self.scale and\             # <<<<<<<<<<<<<<
 *            (self._isprimitive or (self._isvlen and self.dtype != str)) and\
 *            valid_scaleoffset:
*/
  __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_v_self->scale); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 5131, __pyx_L1_error)
  if (__pyx_t_12) {
  } else {
    __pyx_t_9 = __pyx_t_12;
    goto __pyx_L62_bool_binop_done;
  }

  /* "netCDF4/_netCDF4.pyx":5132
 * 
 *         if self.scale and\
 *            (self._isprimitive or (self._isvlen and self.dtype != str)) and\             # <<<<<<<<<<<<<<
 *            valid_scaleoffset:
 *             # if variable has scale_factor and add_offset attributes, apply
*/
  __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_v_self->_isprimitive); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 5132, __pyx_L1_error)
  if (!__pyx_t_12) {
  } else {
    goto __pyx_L64_next_and;
  }
  __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_v_self->_isvlen); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 5132, __pyx_L1_error)
  if (__pyx_t_12) {
  } else {
    __pyx_t_9 = __pyx_t_12;
    goto __pyx_L62_bool_binop_done;
  }
  __pyx_t_4 = PyObject_RichCompare(__pyx_v_self->dtype, ((PyObject *)(&PyUnicode_Type)), Py_NE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5132, __pyx_L1_error)
  __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 5132, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_12) {
  } else {
    __pyx_t_9 = __pyx_t_12;
    goto __pyx_L62_bool_binop_done;
  }
  __pyx_L64_next_and:;

  /* "netCDF4/_netCDF4.pyx":5133
 *         if self.scale and\
 *            (self._isprimitive or (self._isvlen and self.dtype != str)) and\
 *            valid_scaleoffset:             # <<<<<<<<<<<<<<
 *             # if variable has scale_factor and add_offset attributes, apply
 *             # them.
*/
  __pyx_t_9 = __pyx_v_valid_scaleoffset;
  __pyx_L62_bool_binop_done:;

  /* "netCDF4/_netCDF4.pyx":5131
 *                     data=data.view('%su%s'%(data.dtype.byteorder,data.dtype.itemsize))
 * 
 *         if self.scale and\             # <<<<<<<<<<<<<<
 *            (self._isprimitive or (self._isvlen and self.dtype != str)) and\
 *            valid_scaleoffset:
*/
  if (__pyx_t_9) {

    /* "netCDF4/_netCDF4.pyx":5136
 *             # if variable has scale_factor and add_offset attributes, apply
 *             # them.
 *             if hasattr(self, 'scale_factor') and hasattr(self, 'add_offset'):             # <<<<<<<<<<<<<<
 *                 if self.add_offset != 0.0 or self.scale_factor != 1.0:
 *                     data = data*self.scale_factor + self.add_offset
*/
    __pyx_t_12 = __Pyx_HasAttr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_scale_factor); if (unlikely(__pyx_t_12 == ((int)-1))) __PYX_ERR(0, 5136, __pyx_L1_error)
    if (__pyx_t_12) {
    } else {
      __pyx_t_9 = __pyx_t_12;
      goto __pyx_L68_bool_binop_done;
    }
    __pyx_t_12 = __Pyx_HasAttr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_add_offset); if (unlikely(__pyx_t_12 == ((int)-1))) __PYX_ERR(0, 5136, __pyx_L1_error)
    __pyx_t_9 = __pyx_t_12;
    __pyx_L68_bool_binop_done:;
    if (__pyx_t_9) {

      /* "netCDF4/_netCDF4.pyx":5137
 *             # them.
 *             if hasattr(self, 'scale_factor') and hasattr(self, 'add_offset'):
 *                 if self.add_offset != 0.0 or self.scale_factor != 1.0:             # <<<<<<<<<<<<<<
 *                     data = data*self.scale_factor + self.add_offset
 *                 else:
*/
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_add_offset); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5137, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_12 = (__Pyx_PyFloat_BoolNeObjC(__pyx_t_4, __pyx_mstate_global->__pyx_float_0_0, 0.0, 0, 0)); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 5137, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (!__pyx_t_12) {
      } else {
        __pyx_t_9 = __pyx_t_12;
        goto __pyx_L71_bool_binop_done;
      }
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_scale_factor); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5137, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_12 = (__Pyx_PyFloat_BoolNeObjC(__pyx_t_4, __pyx_mstate_global->__pyx_float_1_0, 1.0, 0, 0)); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 5137, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_9 = __pyx_t_12;
      __pyx_L71_bool_binop_done:;
      if (__pyx_t_9) {

        /* "netCDF4/_netCDF4.pyx":5138
 *             if hasattr(self, 'scale_factor') and hasattr(self, 'add_offset'):
 *                 if self.add_offset != 0.0 or self.scale_factor != 1.0:
 *                     data = data*self.scale_factor + self.add_offset             # <<<<<<<<<<<<<<
 *                 else:
 *                     data = data.astype(self.scale_factor.dtype) # issue 913
*/
        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_scale_factor); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5138, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_13 = PyNumber_Multiply(__pyx_v_data, __pyx_t_4); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 5138, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_13);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_add_offset); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5138, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_3 = PyNumber_Add(__pyx_t_13, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5138, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF_SET(__pyx_v_data, __pyx_t_3);
        __pyx_t_3 = 0;

        /* "netCDF4/_netCDF4.pyx":5137
 *             # them.
 *             if hasattr(self, 'scale_factor') and hasattr(self, 'add_offset'):
 *                 if self.add_offset != 0.0 or self.scale_factor != 1.0:             # <<<<<<<<<<<<<<
 *                     data = data*self.scale_factor + self.add_offset
 *                 else:
*/
        goto __pyx_L70;
      }

      /* "netCDF4/_netCDF4.pyx":5140
 *                     data = data*self.scale_factor + self.add_offset
 *                 else:
 *                     data = data.astype(self.scale_factor.dtype) # issue 913             # <<<<<<<<<<<<<<
 *             # else if variable has only scale_factor attribute, rescale.
 *             elif hasattr(self, 'scale_factor') and self.scale_factor != 1.0:
*/
      /*else*/ {
        __pyx_t_4 = __pyx_v_data;
        __Pyx_INCREF(__pyx_t_4);
        __pyx_t_13 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_scale_factor); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 5140, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_13);
        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_dtype); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5140, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
        __pyx_t_6 = 0;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_7};
          __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_astype, __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_7); __pyx_t_7 = 0;
          if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5140, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
        }
        __Pyx_DECREF_SET(__pyx_v_data, __pyx_t_3);
        __pyx_t_3 = 0;
      }
      __pyx_L70:;

      /* "netCDF4/_netCDF4.pyx":5136
 *             # if variable has scale_factor and add_offset attributes, apply
 *             # them.
 *             if hasattr(self, 'scale_factor') and hasattr(self, 'add_offset'):             # <<<<<<<<<<<<<<
 *                 if self.add_offset != 0.0 or self.scale_factor != 1.0:
 *                     data = data*self.scale_factor + self.add_offset
*/
      goto __pyx_L67;
    }

    /* "netCDF4/_netCDF4.pyx":5142
 *                     data = data.astype(self.scale_factor.dtype) # issue 913
 *             # else if variable has only scale_factor attribute, rescale.
 *             elif hasattr(self, 'scale_factor') and self.scale_factor != 1.0:             # <<<<<<<<<<<<<<
 *                 data = data*self.scale_factor
 *             # else if variable has only add_offset attribute, add offset.
*/
    __pyx_t_12 = __Pyx_HasAttr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_scale_factor); if (unlikely(__pyx_t_12 == ((int)-1))) __PYX_ERR(0, 5142, __pyx_L1_error)
    if (__pyx_t_12) {
    } else {
      __pyx_t_9 = __pyx_t_12;
      goto __pyx_L73_bool_binop_done;
    }
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_scale_factor); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5142, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_12 = (__Pyx_PyFloat_BoolNeObjC(__pyx_t_3, __pyx_mstate_global->__pyx_float_1_0, 1.0, 0, 0)); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 5142, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_9 = __pyx_t_12;
    __pyx_L73_bool_binop_done:;
    if (__pyx_t_9) {

      /* "netCDF4/_netCDF4.pyx":5143
 *             # else if variable has only scale_factor attribute, rescale.
 *             elif hasattr(self, 'scale_factor') and self.scale_factor != 1.0:
 *                 data = data*self.scale_factor             # <<<<<<<<<<<<<<
 *             # else if variable has only add_offset attribute, add offset.
 *             elif hasattr(self, 'add_offset') and self.add_offset != 0.0:
*/
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_scale_factor); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5143, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_7 = PyNumber_Multiply(__pyx_v_data, __pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5143, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF_SET(__pyx_v_data, __pyx_t_7);
      __pyx_t_7 = 0;

      /* "netCDF4/_netCDF4.pyx":5142
 *                     data = data.astype(self.scale_factor.dtype) # issue 913
 *             # else if variable has only scale_factor attribute, rescale.
 *             elif hasattr(self, 'scale_factor') and self.scale_factor != 1.0:             # <<<<<<<<<<<<<<
 *                 data = data*self.scale_factor
 *             # else if variable has only add_offset attribute, add offset.
*/
      goto __pyx_L67;
    }

    /* "netCDF4/_netCDF4.pyx":5145
 *                 data = data*self.scale_factor
 *             # else if variable has only add_offset attribute, add offset.
 *             elif hasattr(self, 'add_offset') and self.add_offset != 0.0:             # <<<<<<<<<<<<<<
 *                 data = data + self.add_offset
 * 
*/
    __pyx_t_12 = __Pyx_HasAttr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_add_offset); if (unlikely(__pyx_t_12 == ((int)-1))) __PYX_ERR(0, 5145, __pyx_L1_error)
    if (__pyx_t_12) {
    } else {
      __pyx_t_9 = __pyx_t_12;
      goto __pyx_L75_bool_binop_done;
    }
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_add_offset); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5145, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_12 = (__Pyx_PyFloat_BoolNeObjC(__pyx_t_7, __pyx_mstate_global->__pyx_float_0_0, 0.0, 0, 0)); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 5145, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_9 = __pyx_t_12;
    __pyx_L75_bool_binop_done:;
    if (__pyx_t_9) {

      /* "netCDF4/_netCDF4.pyx":5146
 *             # else if variable has only add_offset attribute, add offset.
 *             elif hasattr(self, 'add_offset') and self.add_offset != 0.0:
 *                 data = data + self.add_offset             # <<<<<<<<<<<<<<
 * 
 *         # if _Encoding is specified for a character variable, return
*/
      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_add_offset); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5146, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_3 = PyNumber_Add(__pyx_v_data, __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5146, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF_SET(__pyx_v_data, __pyx_t_3);
      __pyx_t_3 = 0;

      /* "netCDF4/_netCDF4.pyx":5145
 *                 data = data*self.scale_factor
 *             # else if variable has only add_offset attribute, add offset.
 *             elif hasattr(self, 'add_offset') and self.add_offset != 0.0:             # <<<<<<<<<<<<<<
 *                 data = data + self.add_offset
 * 
*/
    }
    __pyx_L67:;

    /* "netCDF4/_netCDF4.pyx":5131
 *                     data=data.view('%su%s'%(data.dtype.byteorder,data.dtype.itemsize))
 * 
 *         if self.scale and\             # <<<<<<<<<<<<<<
 *            (self._isprimitive or (self._isvlen and self.dtype != str)) and\
 *            valid_scaleoffset:
*/
  }

  /* "netCDF4/_netCDF4.pyx":5150
 *         # if _Encoding is specified for a character variable, return
 *         # a numpy array of strings with one less dimension.
 *         if self.chartostring and getattr(self.dtype,'kind',None) == 'S' and\             # <<<<<<<<<<<<<<
 *            getattr(self.dtype,'itemsize',None) == 1:
 *             encoding = getattr(self,'_Encoding',None)
*/
  __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_v_self->chartostring); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 5150, __pyx_L1_error)
  if (__pyx_t_12) {
  } else {
    __pyx_t_9 = __pyx_t_12;
    goto __pyx_L78_bool_binop_done;
  }
  __pyx_t_3 = __pyx_v_self->dtype;
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_7 = __Pyx_GetAttr3(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_kind, Py_None); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5150, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_12 = (__Pyx_PyUnicode_Equals(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_S, Py_EQ)); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 5150, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (__pyx_t_12) {
  } else {
    __pyx_t_9 = __pyx_t_12;
    goto __pyx_L78_bool_binop_done;
  }

  /* "netCDF4/_netCDF4.pyx":5151
 *         # a numpy array of strings with one less dimension.
 *         if self.chartostring and getattr(self.dtype,'kind',None) == 'S' and\
 *            getattr(self.dtype,'itemsize',None) == 1:             # <<<<<<<<<<<<<<
 *             encoding = getattr(self,'_Encoding',None)
 *             # should this only be done if self.scale = True?
*/
  __pyx_t_7 = __pyx_v_self->dtype;
  __Pyx_INCREF(__pyx_t_7);
  __pyx_t_3 = __Pyx_GetAttr3(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_itemsize, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5151, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_12 = (__Pyx_PyLong_BoolEqObjC(__pyx_t_3, __pyx_mstate_global->__pyx_int_1, 1, 0)); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 5151, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_9 = __pyx_t_12;
  __pyx_L78_bool_binop_done:;

  /* "netCDF4/_netCDF4.pyx":5150
 *         # if _Encoding is specified for a character variable, return
 *         # a numpy array of strings with one less dimension.
 *         if self.chartostring and getattr(self.dtype,'kind',None) == 'S' and\             # <<<<<<<<<<<<<<
 *            getattr(self.dtype,'itemsize',None) == 1:
 *             encoding = getattr(self,'_Encoding',None)
*/
  if (__pyx_t_9) {

    /* "netCDF4/_netCDF4.pyx":5152
 *         if self.chartostring and getattr(self.dtype,'kind',None) == 'S' and\
 *            getattr(self.dtype,'itemsize',None) == 1:
 *             encoding = getattr(self,'_Encoding',None)             # <<<<<<<<<<<<<<
 *             # should this only be done if self.scale = True?
 *             # should there be some other way to disable this?
*/
    __pyx_t_3 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_Encoding, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5152, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_v_encoding = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "netCDF4/_netCDF4.pyx":5155
 *             # should this only be done if self.scale = True?
 *             # should there be some other way to disable this?
 *             if encoding is not None:             # <<<<<<<<<<<<<<
 *                 # only try to return a string array if rightmost dimension of
 *                 # sliced data matches rightmost dimension of char variable
*/
    __pyx_t_9 = (__pyx_v_encoding != Py_None);
    if (__pyx_t_9) {

      /* "netCDF4/_netCDF4.pyx":5158
 *                 # only try to return a string array if rightmost dimension of
 *                 # sliced data matches rightmost dimension of char variable
 *                 if len(data.shape) > 0 and data.shape[-1] == self.shape[-1]:             # <<<<<<<<<<<<<<
 *                     # also make sure slice is along last dimension
 *                     matchdim = True
*/
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_mstate_global->__pyx_n_u_shape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5158, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_10 = PyObject_Length(__pyx_t_3); if (unlikely(__pyx_t_10 == ((Py_ssize_t)-1))) __PYX_ERR(0, 5158, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_12 = (__pyx_t_10 > 0);
      if (__pyx_t_12) {
      } else {
        __pyx_t_9 = __pyx_t_12;
        goto __pyx_L83_bool_binop_done;
      }
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_mstate_global->__pyx_n_u_shape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5158, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_7 = __Pyx_GetItemInt(__pyx_t_3, -1L, long, 1, __Pyx_PyLong_From_long, 0, 1, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5158, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_shape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5158, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_3, -1L, long, 1, __Pyx_PyLong_From_long, 0, 1, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5158, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_3 = PyObject_RichCompare(__pyx_t_7, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5158, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 5158, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_9 = __pyx_t_12;
      __pyx_L83_bool_binop_done:;
      if (__pyx_t_9) {

        /* "netCDF4/_netCDF4.pyx":5160
 *                 if len(data.shape) > 0 and data.shape[-1] == self.shape[-1]:
 *                     # also make sure slice is along last dimension
 *                     matchdim = True             # <<<<<<<<<<<<<<
 *                     for cnt in count:
 *                         if cnt[-1] != self.shape[-1]:
*/
        __pyx_v_matchdim = 1;

        /* "netCDF4/_netCDF4.pyx":5161
 *                     # also make sure slice is along last dimension
 *                     matchdim = True
 *                     for cnt in count:             # <<<<<<<<<<<<<<
 *                         if cnt[-1] != self.shape[-1]:
 *                             matchdim = False
*/
        if (likely(PyList_CheckExact(__pyx_v_count)) || PyTuple_CheckExact(__pyx_v_count)) {
          __pyx_t_3 = __pyx_v_count; __Pyx_INCREF(__pyx_t_3);
          __pyx_t_10 = 0;
          __pyx_t_11 = NULL;
        } else {
          __pyx_t_10 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_count); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5161, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
          __pyx_t_11 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_3); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 5161, __pyx_L1_error)
        }
        for (;;) {
          if (likely(!__pyx_t_11)) {
            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(0, 5161, __pyx_L1_error)
                #endif
                if (__pyx_t_10 >= __pyx_temp) break;
              }
              __pyx_t_4 = __Pyx_PyList_GetItemRefFast(__pyx_t_3, __pyx_t_10, __Pyx_ReferenceSharing_OwnStrongReference);
              ++__pyx_t_10;
            } 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(0, 5161, __pyx_L1_error)
                #endif
                if (__pyx_t_10 >= __pyx_temp) break;
              }
              #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
              __pyx_t_4 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_10));
              #else
              __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_3, __pyx_t_10);
              #endif
              ++__pyx_t_10;
            }
            if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5161, __pyx_L1_error)
          } else {
            __pyx_t_4 = __pyx_t_11(__pyx_t_3);
            if (unlikely(!__pyx_t_4)) {
              PyObject* exc_type = PyErr_Occurred();
              if (exc_type) {
                if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 5161, __pyx_L1_error)
                PyErr_Clear();
              }
              break;
            }
          }
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_XDECREF_SET(__pyx_v_cnt, __pyx_t_4);
          __pyx_t_4 = 0;

          /* "netCDF4/_netCDF4.pyx":5162
 *                     matchdim = True
 *                     for cnt in count:
 *                         if cnt[-1] != self.shape[-1]:             # <<<<<<<<<<<<<<
 *                             matchdim = False
 *                             break
*/
          __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_cnt, -1L, long, 1, __Pyx_PyLong_From_long, 0, 1, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5162, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_4);
          __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_shape); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5162, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __pyx_t_13 = __Pyx_GetItemInt(__pyx_t_7, -1L, long, 1, __Pyx_PyLong_From_long, 0, 1, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 5162, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_13);
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          __pyx_t_7 = PyObject_RichCompare(__pyx_t_4, __pyx_t_13, Py_NE); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5162, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 5162, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          if (__pyx_t_9) {

            /* "netCDF4/_netCDF4.pyx":5163
 *                     for cnt in count:
 *                         if cnt[-1] != self.shape[-1]:
 *                             matchdim = False             # <<<<<<<<<<<<<<
 *                             break
 *                     if matchdim:
*/
            __pyx_v_matchdim = 0;

            /* "netCDF4/_netCDF4.pyx":5164
 *                         if cnt[-1] != self.shape[-1]:
 *                             matchdim = False
 *                             break             # <<<<<<<<<<<<<<
 *                     if matchdim:
 *                         data = chartostring(data, encoding=encoding)
*/
            goto __pyx_L86_break;

            /* "netCDF4/_netCDF4.pyx":5162
 *                     matchdim = True
 *                     for cnt in count:
 *                         if cnt[-1] != self.shape[-1]:             # <<<<<<<<<<<<<<
 *                             matchdim = False
 *                             break
*/
          }

          /* "netCDF4/_netCDF4.pyx":5161
 *                     # also make sure slice is along last dimension
 *                     matchdim = True
 *                     for cnt in count:             # <<<<<<<<<<<<<<
 *                         if cnt[-1] != self.shape[-1]:
 *                             matchdim = False
*/
        }
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        goto __pyx_L88_for_end;
        __pyx_L86_break:;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        goto __pyx_L88_for_end;
        __pyx_L88_for_end:;

        /* "netCDF4/_netCDF4.pyx":5165
 *                             matchdim = False
 *                             break
 *                     if matchdim:             # <<<<<<<<<<<<<<
 *                         data = chartostring(data, encoding=encoding)
 * 
*/
        if (__pyx_v_matchdim) {

          /* "netCDF4/_netCDF4.pyx":5166
 *                             break
 *                     if matchdim:
 *                         data = chartostring(data, encoding=encoding)             # <<<<<<<<<<<<<<
 * 
 *         # if structure array contains char arrays, return view as strings
*/
          __pyx_t_7 = NULL;
          __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_chartostring); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 5166, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_13);
          __pyx_t_6 = 1;
          #if CYTHON_UNPACK_METHODS
          if (unlikely(PyMethod_Check(__pyx_t_13))) {
            __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_13);
            assert(__pyx_t_7);
            PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_13);
            __Pyx_INCREF(__pyx_t_7);
            __Pyx_INCREF(__pyx__function);
            __Pyx_DECREF_SET(__pyx_t_13, __pyx__function);
            __pyx_t_6 = 0;
          }
          #endif
          {
            PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_7, __pyx_v_data};
            __pyx_t_4 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5166, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_4);
            if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_encoding, __pyx_v_encoding, __pyx_t_4, __pyx_callargs+2, 0) < (0)) __PYX_ERR(0, 5166, __pyx_L1_error)
            __pyx_t_3 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_t_13, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_4);
            __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
            __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
            if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5166, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_3);
          }
          __Pyx_DECREF_SET(__pyx_v_data, __pyx_t_3);
          __pyx_t_3 = 0;

          /* "netCDF4/_netCDF4.pyx":5165
 *                             matchdim = False
 *                             break
 *                     if matchdim:             # <<<<<<<<<<<<<<
 *                         data = chartostring(data, encoding=encoding)
 * 
*/
        }

        /* "netCDF4/_netCDF4.pyx":5158
 *                 # only try to return a string array if rightmost dimension of
 *                 # sliced data matches rightmost dimension of char variable
 *                 if len(data.shape) > 0 and data.shape[-1] == self.shape[-1]:             # <<<<<<<<<<<<<<
 *                     # also make sure slice is along last dimension
 *                     matchdim = True
*/
      }

      /* "netCDF4/_netCDF4.pyx":5155
 *             # should this only be done if self.scale = True?
 *             # should there be some other way to disable this?
 *             if encoding is not None:             # <<<<<<<<<<<<<<
 *                 # only try to return a string array if rightmost dimension of
 *                 # sliced data matches rightmost dimension of char variable
*/
    }

    /* "netCDF4/_netCDF4.pyx":5150
 *         # if _Encoding is specified for a character variable, return
 *         # a numpy array of strings with one less dimension.
 *         if self.chartostring and getattr(self.dtype,'kind',None) == 'S' and\             # <<<<<<<<<<<<<<
 *            getattr(self.dtype,'itemsize',None) == 1:
 *             encoding = getattr(self,'_Encoding',None)
*/
  }

  /* "netCDF4/_netCDF4.pyx":5170
 *         # if structure array contains char arrays, return view as strings
 *         # if _Encoding att set (issue #773)
 *         if self._iscompound and \             # <<<<<<<<<<<<<<
 *            self._cmptype.dtype != self._cmptype.dtype_view and \
 *            self.chartostring:
*/
  __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_v_self->_iscompound); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 5170, __pyx_L1_error)
  if (__pyx_t_12) {
  } else {
    __pyx_t_9 = __pyx_t_12;
    goto __pyx_L91_bool_binop_done;
  }

  /* "netCDF4/_netCDF4.pyx":5171
 *         # if _Encoding att set (issue #773)
 *         if self._iscompound and \
 *            self._cmptype.dtype != self._cmptype.dtype_view and \             # <<<<<<<<<<<<<<
 *            self.chartostring:
 * #          self.chartostring and getattr(self,'_Encoding',None) is not None:
*/
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_cmptype, __pyx_mstate_global->__pyx_n_u_dtype); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5171, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_cmptype, __pyx_mstate_global->__pyx_n_u_dtype_view); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 5171, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __pyx_t_4 = PyObject_RichCompare(__pyx_t_3, __pyx_t_13, Py_NE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5171, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 5171, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_12) {
  } else {
    __pyx_t_9 = __pyx_t_12;
    goto __pyx_L91_bool_binop_done;
  }

  /* "netCDF4/_netCDF4.pyx":5172
 *         if self._iscompound and \
 *            self._cmptype.dtype != self._cmptype.dtype_view and \
 *            self.chartostring:             # <<<<<<<<<<<<<<
 * #          self.chartostring and getattr(self,'_Encoding',None) is not None:
 *                 data = data.view(self._cmptype.dtype_view)
*/
  __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_v_self->chartostring); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 5172, __pyx_L1_error)
  __pyx_t_9 = __pyx_t_12;
  __pyx_L91_bool_binop_done:;

  /* "netCDF4/_netCDF4.pyx":5170
 *         # if structure array contains char arrays, return view as strings
 *         # if _Encoding att set (issue #773)
 *         if self._iscompound and \             # <<<<<<<<<<<<<<
 *            self._cmptype.dtype != self._cmptype.dtype_view and \
 *            self.chartostring:
*/
  if (__pyx_t_9) {

    /* "netCDF4/_netCDF4.pyx":5174
 *            self.chartostring:
 * #          self.chartostring and getattr(self,'_Encoding',None) is not None:
 *                 data = data.view(self._cmptype.dtype_view)             # <<<<<<<<<<<<<<
 *         return data
 * 
*/
    __pyx_t_13 = __pyx_v_data;
    __Pyx_INCREF(__pyx_t_13);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_cmptype, __pyx_mstate_global->__pyx_n_u_dtype_view); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5174, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_6 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_13, __pyx_t_3};
      __pyx_t_4 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_view, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5174, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_DECREF_SET(__pyx_v_data, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "netCDF4/_netCDF4.pyx":5170
 *         # if structure array contains char arrays, return view as strings
 *         # if _Encoding att set (issue #773)
 *         if self._iscompound and \             # <<<<<<<<<<<<<<
 *            self._cmptype.dtype != self._cmptype.dtype_view and \
 *            self.chartostring:
*/
  }

  /* "netCDF4/_netCDF4.pyx":5175
 * #          self.chartostring and getattr(self,'_Encoding',None) is not None:
 *                 data = data.view(self._cmptype.dtype_view)
 *         return data             # <<<<<<<<<<<<<<
 * 
 *     def _toma(self,data):
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_data);
  __pyx_r = __pyx_v_data;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":5048
 *         _ensure_nc_success(ierr)
 * 
 *     def __getitem__(self, elem):             # <<<<<<<<<<<<<<
 *         # This special method is used to index the netCDF variable
 *         # using the "extended slice syntax". The extended slice syntax
*/

  /* 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_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_AddTraceback("netCDF4._netCDF4.Variable.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_start);
  __Pyx_XDECREF(__pyx_v_count);
  __Pyx_XDECREF(__pyx_v_stride);
  __Pyx_XDECREF(__pyx_v_put_ind);
  __Pyx_XDECREF(__pyx_v_datashape);
  __Pyx_XDECREF(__pyx_v_data);
  __Pyx_XDECREF(__pyx_v_squeeze);
  __Pyx_XDECREF(__pyx_v_i);
  __Pyx_XDECREF(__pyx_v_n);
  __Pyx_XDECREF(__pyx_v_a);
  __Pyx_XDECREF(__pyx_v_b);
  __Pyx_XDECREF(__pyx_v_c);
  __Pyx_XDECREF(__pyx_v_datout);
  __Pyx_XDECREF(__pyx_v_shape);
  __Pyx_XDECREF(__pyx_v_msg);
  __Pyx_XDECREF(__pyx_v_encoding);
  __Pyx_XDECREF(__pyx_v_cnt);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":5177
 *         return data
 * 
 *     def _toma(self,data):             # <<<<<<<<<<<<<<
 *         cdef int ierr, no_fill
 *         # if attribute _Unsigned is "true", and variable has signed integer
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_53_toma(PyObject *__pyx_v_self, 
#if 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_7netCDF4_8_netCDF4_8Variable_53_toma = {"_toma", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_8Variable_53_toma, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_53_toma(PyObject *__pyx_v_self, 
#if CYTHON_METH_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("_toma (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 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(0, 5177, __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(0, 5177, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "_toma", 0) < (0)) __PYX_ERR(0, 5177, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("_toma", 1, 1, 1, i); __PYX_ERR(0, 5177, __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(0, 5177, __pyx_L3_error)
    }
    __pyx_v_data = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_toma", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 5177, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4.Variable._toma", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_8Variable_52_toma(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__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_7netCDF4_8_netCDF4_8Variable_52_toma(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, PyObject *__pyx_v_data) {
  int __pyx_v_ierr;
  int __pyx_v_no_fill;
  int __pyx_v_is_unsigned;
  PyObject *__pyx_v_is_unsigned_int = NULL;
  PyObject *__pyx_v_dtype_unsigned_int = NULL;
  PyObject *__pyx_v_totalmask = NULL;
  PyObject *__pyx_v_fill_value = NULL;
  PyObject *__pyx_v_safe_missval = NULL;
  PyObject *__pyx_v_mval = NULL;
  PyObject *__pyx_v_mvalmask = NULL;
  PyObject *__pyx_v_m = NULL;
  PyObject *__pyx_v_mvalisnan = NULL;
  PyObject *__pyx_v_safe_fillval = NULL;
  PyObject *__pyx_v_fval = NULL;
  PyObject *__pyx_v_fvalisnan = NULL;
  PyObject *__pyx_v_mask = NULL;
  PyObject *__pyx_v_fillval = NULL;
  PyObject *__pyx_v_has_fillval = NULL;
  PyObject *__pyx_v_validmin = NULL;
  PyObject *__pyx_v_validmax = NULL;
  PyObject *__pyx_v_safe_validrange = NULL;
  PyObject *__pyx_v_safe_validmin = NULL;
  PyObject *__pyx_v_safe_validmax = NULL;
  int __pyx_v_byte_type;
  int __pyx_v_masked_values;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6[3];
  size_t __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  Py_ssize_t __pyx_t_11;
  PyObject *(*__pyx_t_12)(PyObject *);
  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("_toma", 0);
  __Pyx_INCREF(__pyx_v_data);

  /* "netCDF4/_netCDF4.pyx":5183
 *         # #794)
 *         # _Unsigned attribute must be "true" or "True" (string). Issue #1232.
 *         is_unsigned = getattr(self, '_Unsigned', False) in ["True","true"]             # <<<<<<<<<<<<<<
 *         is_unsigned_int = is_unsigned and data.dtype.kind == 'i'
 *         if self.scale and is_unsigned_int:  # only do this if autoscale option is on.
*/
  __pyx_t_1 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_Unsigned, Py_False); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5183, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_True, Py_EQ)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 5183, __pyx_L1_error)
  if (!__pyx_t_3) {
  } else {
    __pyx_t_2 = __pyx_t_3;
    goto __pyx_L3_bool_binop_done;
  }
  __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_true, Py_EQ)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 5183, __pyx_L1_error)
  __pyx_t_2 = __pyx_t_3;
  __pyx_L3_bool_binop_done:;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_is_unsigned = __pyx_t_2;

  /* "netCDF4/_netCDF4.pyx":5184
 *         # _Unsigned attribute must be "true" or "True" (string). Issue #1232.
 *         is_unsigned = getattr(self, '_Unsigned', False) in ["True","true"]
 *         is_unsigned_int = is_unsigned and data.dtype.kind == 'i'             # <<<<<<<<<<<<<<
 *         if self.scale and is_unsigned_int:  # only do this if autoscale option is on.
 *             dtype_unsigned_int='%su%s' % (data.dtype.byteorder,data.dtype.itemsize)
*/
  if (__pyx_v_is_unsigned) {
  } else {
    __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_v_is_unsigned); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5184, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_1 = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L5_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_mstate_global->__pyx_n_u_dtype); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5184, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_kind); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5184, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyObject_RichCompare(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_i, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5184, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_INCREF(__pyx_t_4);
  __pyx_t_1 = __pyx_t_4;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_L5_bool_binop_done:;
  __pyx_v_is_unsigned_int = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":5185
 *         is_unsigned = getattr(self, '_Unsigned', False) in ["True","true"]
 *         is_unsigned_int = is_unsigned and data.dtype.kind == 'i'
 *         if self.scale and is_unsigned_int:  # only do this if autoscale option is on.             # <<<<<<<<<<<<<<
 *             dtype_unsigned_int='%su%s' % (data.dtype.byteorder,data.dtype.itemsize)
 *             data = data.view(dtype_unsigned_int)
*/
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_self->scale); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 5185, __pyx_L1_error)
  if (__pyx_t_3) {
  } else {
    __pyx_t_2 = __pyx_t_3;
    goto __pyx_L8_bool_binop_done;
  }
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_is_unsigned_int); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 5185, __pyx_L1_error)
  __pyx_t_2 = __pyx_t_3;
  __pyx_L8_bool_binop_done:;
  if (__pyx_t_2) {

    /* "netCDF4/_netCDF4.pyx":5186
 *         is_unsigned_int = is_unsigned and data.dtype.kind == 'i'
 *         if self.scale and is_unsigned_int:  # only do this if autoscale option is on.
 *             dtype_unsigned_int='%su%s' % (data.dtype.byteorder,data.dtype.itemsize)             # <<<<<<<<<<<<<<
 *             data = data.view(dtype_unsigned_int)
 *         # private function for creating a masked array, masking missing_values
*/
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_mstate_global->__pyx_n_u_dtype); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5186, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_byteorder); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5186, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Str(__pyx_t_4), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5186, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_mstate_global->__pyx_n_u_dtype); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5186, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_itemsize); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5186, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Str(__pyx_t_5), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5186, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_6[0] = __pyx_t_1;
    __pyx_t_6[1] = __pyx_mstate_global->__pyx_n_u_u;
    __pyx_t_6[2] = __pyx_t_4;
    __pyx_t_5 = __Pyx_PyUnicode_Join(__pyx_t_6, 3, __Pyx_PyUnicode_GET_LENGTH(__pyx_t_1) + 1 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4), 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4));
    if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5186, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_dtype_unsigned_int = ((PyObject*)__pyx_t_5);
    __pyx_t_5 = 0;

    /* "netCDF4/_netCDF4.pyx":5187
 *         if self.scale and is_unsigned_int:  # only do this if autoscale option is on.
 *             dtype_unsigned_int='%su%s' % (data.dtype.byteorder,data.dtype.itemsize)
 *             data = data.view(dtype_unsigned_int)             # <<<<<<<<<<<<<<
 *         # private function for creating a masked array, masking missing_values
 *         # and/or _FillValues.
*/
    __pyx_t_4 = __pyx_v_data;
    __Pyx_INCREF(__pyx_t_4);
    __pyx_t_7 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_dtype_unsigned_int};
      __pyx_t_5 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_view, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5187, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
    }
    __Pyx_DECREF_SET(__pyx_v_data, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "netCDF4/_netCDF4.pyx":5185
 *         is_unsigned = getattr(self, '_Unsigned', False) in ["True","true"]
 *         is_unsigned_int = is_unsigned and data.dtype.kind == 'i'
 *         if self.scale and is_unsigned_int:  # only do this if autoscale option is on.             # <<<<<<<<<<<<<<
 *             dtype_unsigned_int='%su%s' % (data.dtype.byteorder,data.dtype.itemsize)
 *             data = data.view(dtype_unsigned_int)
*/
  }

  /* "netCDF4/_netCDF4.pyx":5190
 *         # private function for creating a masked array, masking missing_values
 *         # and/or _FillValues.
 *         totalmask = numpy.zeros(data.shape, numpy.bool_)             # <<<<<<<<<<<<<<
 *         fill_value = None
 *         safe_missval = self._check_safecast('missing_value')
*/
  __pyx_t_4 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5190, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_zeros); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 5190, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_mstate_global->__pyx_n_u_shape); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5190, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_mstate_global->__pyx_n_u_numpy); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 5190, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_mstate_global->__pyx_n_u_bool); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 5190, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_t_7 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(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_7 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_t_1, __pyx_t_10};
    __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_8, __pyx_callargs+__pyx_t_7, (3-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5190, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
  }
  __pyx_v_totalmask = __pyx_t_5;
  __pyx_t_5 = 0;

  /* "netCDF4/_netCDF4.pyx":5191
 *         # and/or _FillValues.
 *         totalmask = numpy.zeros(data.shape, numpy.bool_)
 *         fill_value = None             # <<<<<<<<<<<<<<
 *         safe_missval = self._check_safecast('missing_value')
 *         if safe_missval:
*/
  __Pyx_INCREF(Py_None);
  __pyx_v_fill_value = Py_None;

  /* "netCDF4/_netCDF4.pyx":5192
 *         totalmask = numpy.zeros(data.shape, numpy.bool_)
 *         fill_value = None
 *         safe_missval = self._check_safecast('missing_value')             # <<<<<<<<<<<<<<
 *         if safe_missval:
 *             mval = numpy.array(self.missing_value, self.dtype)
*/
  __pyx_t_8 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_7 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_mstate_global->__pyx_n_u_missing_value};
    __pyx_t_5 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_check_safecast, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5192, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
  }
  __pyx_v_safe_missval = __pyx_t_5;
  __pyx_t_5 = 0;

  /* "netCDF4/_netCDF4.pyx":5193
 *         fill_value = None
 *         safe_missval = self._check_safecast('missing_value')
 *         if safe_missval:             # <<<<<<<<<<<<<<
 *             mval = numpy.array(self.missing_value, self.dtype)
 *             if self.scale and is_unsigned_int:
*/
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_safe_missval); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 5193, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "netCDF4/_netCDF4.pyx":5194
 *         safe_missval = self._check_safecast('missing_value')
 *         if safe_missval:
 *             mval = numpy.array(self.missing_value, self.dtype)             # <<<<<<<<<<<<<<
 *             if self.scale and is_unsigned_int:
 *                 mval = mval.view(dtype_unsigned_int)
*/
    __pyx_t_8 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_numpy); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 5194, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_array); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5194, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_missing_value); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 5194, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_t_7 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_1))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_1);
      assert(__pyx_t_8);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_1, __pyx__function);
      __pyx_t_7 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_8, __pyx_t_10, __pyx_v_self->dtype};
      __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_1, __pyx_callargs+__pyx_t_7, (3-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5194, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
    }
    __pyx_v_mval = __pyx_t_5;
    __pyx_t_5 = 0;

    /* "netCDF4/_netCDF4.pyx":5195
 *         if safe_missval:
 *             mval = numpy.array(self.missing_value, self.dtype)
 *             if self.scale and is_unsigned_int:             # <<<<<<<<<<<<<<
 *                 mval = mval.view(dtype_unsigned_int)
 *             # create mask from missing values.
*/
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_self->scale); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 5195, __pyx_L1_error)
    if (__pyx_t_3) {
    } else {
      __pyx_t_2 = __pyx_t_3;
      goto __pyx_L12_bool_binop_done;
    }
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_is_unsigned_int); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 5195, __pyx_L1_error)
    __pyx_t_2 = __pyx_t_3;
    __pyx_L12_bool_binop_done:;
    if (__pyx_t_2) {

      /* "netCDF4/_netCDF4.pyx":5196
 *             mval = numpy.array(self.missing_value, self.dtype)
 *             if self.scale and is_unsigned_int:
 *                 mval = mval.view(dtype_unsigned_int)             # <<<<<<<<<<<<<<
 *             # create mask from missing values.
 *             mvalmask = numpy.zeros(data.shape, numpy.bool_)
*/
      __pyx_t_1 = __pyx_v_mval;
      __Pyx_INCREF(__pyx_t_1);
      if (unlikely(!__pyx_v_dtype_unsigned_int)) { __Pyx_RaiseUnboundLocalError("dtype_unsigned_int"); __PYX_ERR(0, 5196, __pyx_L1_error) }
      __pyx_t_7 = 0;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_v_dtype_unsigned_int};
        __pyx_t_5 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_view, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5196, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
      }
      __Pyx_DECREF_SET(__pyx_v_mval, __pyx_t_5);
      __pyx_t_5 = 0;

      /* "netCDF4/_netCDF4.pyx":5195
 *         if safe_missval:
 *             mval = numpy.array(self.missing_value, self.dtype)
 *             if self.scale and is_unsigned_int:             # <<<<<<<<<<<<<<
 *                 mval = mval.view(dtype_unsigned_int)
 *             # create mask from missing values.
*/
    }

    /* "netCDF4/_netCDF4.pyx":5198
 *                 mval = mval.view(dtype_unsigned_int)
 *             # create mask from missing values.
 *             mvalmask = numpy.zeros(data.shape, numpy.bool_)             # <<<<<<<<<<<<<<
 *             if mval.shape == (): # mval a scalar.
 *                 mval = [mval] # make into iterable.
*/
    __pyx_t_1 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_numpy); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 5198, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_zeros); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 5198, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_mstate_global->__pyx_n_u_shape); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 5198, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5198, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_bool); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 5198, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_7 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_8))) {
      __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_8);
      assert(__pyx_t_1);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_8);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_8, __pyx__function);
      __pyx_t_7 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_1, __pyx_t_10, __pyx_t_9};
      __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_8, __pyx_callargs+__pyx_t_7, (3-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5198, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
    }
    __pyx_v_mvalmask = __pyx_t_5;
    __pyx_t_5 = 0;

    /* "netCDF4/_netCDF4.pyx":5199
 *             # create mask from missing values.
 *             mvalmask = numpy.zeros(data.shape, numpy.bool_)
 *             if mval.shape == (): # mval a scalar.             # <<<<<<<<<<<<<<
 *                 mval = [mval] # make into iterable.
 *             for m in mval:
*/
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_mval, __pyx_mstate_global->__pyx_n_u_shape); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5199, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_8 = PyObject_RichCompare(__pyx_t_5, __pyx_mstate_global->__pyx_empty_tuple, Py_EQ); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 5199, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 5199, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    if (__pyx_t_2) {

      /* "netCDF4/_netCDF4.pyx":5200
 *             mvalmask = numpy.zeros(data.shape, numpy.bool_)
 *             if mval.shape == (): # mval a scalar.
 *                 mval = [mval] # make into iterable.             # <<<<<<<<<<<<<<
 *             for m in mval:
 *                 # is scalar missing value a NaN?
*/
      __pyx_t_8 = PyList_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 5200, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_INCREF(__pyx_v_mval);
      __Pyx_GIVEREF(__pyx_v_mval);
      if (__Pyx_PyList_SET_ITEM(__pyx_t_8, 0, __pyx_v_mval) != (0)) __PYX_ERR(0, 5200, __pyx_L1_error);
      __Pyx_DECREF_SET(__pyx_v_mval, __pyx_t_8);
      __pyx_t_8 = 0;

      /* "netCDF4/_netCDF4.pyx":5199
 *             # create mask from missing values.
 *             mvalmask = numpy.zeros(data.shape, numpy.bool_)
 *             if mval.shape == (): # mval a scalar.             # <<<<<<<<<<<<<<
 *                 mval = [mval] # make into iterable.
 *             for m in mval:
*/
    }

    /* "netCDF4/_netCDF4.pyx":5201
 *             if mval.shape == (): # mval a scalar.
 *                 mval = [mval] # make into iterable.
 *             for m in mval:             # <<<<<<<<<<<<<<
 *                 # is scalar missing value a NaN?
 *                 try:
*/
    if (likely(PyList_CheckExact(__pyx_v_mval)) || PyTuple_CheckExact(__pyx_v_mval)) {
      __pyx_t_8 = __pyx_v_mval; __Pyx_INCREF(__pyx_t_8);
      __pyx_t_11 = 0;
      __pyx_t_12 = NULL;
    } else {
      __pyx_t_11 = -1; __pyx_t_8 = PyObject_GetIter(__pyx_v_mval); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 5201, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_12 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_8); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 5201, __pyx_L1_error)
    }
    for (;;) {
      if (likely(!__pyx_t_12)) {
        if (likely(PyList_CheckExact(__pyx_t_8))) {
          {
            Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_8);
            #if !CYTHON_ASSUME_SAFE_SIZE
            if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 5201, __pyx_L1_error)
            #endif
            if (__pyx_t_11 >= __pyx_temp) break;
          }
          __pyx_t_5 = __Pyx_PyList_GetItemRefFast(__pyx_t_8, __pyx_t_11, __Pyx_ReferenceSharing_OwnStrongReference);
          ++__pyx_t_11;
        } else {
          {
            Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_8);
            #if !CYTHON_ASSUME_SAFE_SIZE
            if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 5201, __pyx_L1_error)
            #endif
            if (__pyx_t_11 >= __pyx_temp) break;
          }
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_5 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_8, __pyx_t_11));
          #else
          __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_8, __pyx_t_11);
          #endif
          ++__pyx_t_11;
        }
        if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5201, __pyx_L1_error)
      } else {
        __pyx_t_5 = __pyx_t_12(__pyx_t_8);
        if (unlikely(!__pyx_t_5)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 5201, __pyx_L1_error)
            PyErr_Clear();
          }
          break;
        }
      }
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_XDECREF_SET(__pyx_v_m, __pyx_t_5);
      __pyx_t_5 = 0;

      /* "netCDF4/_netCDF4.pyx":5203
 *             for m in mval:
 *                 # is scalar missing value a NaN?
 *                 try:             # <<<<<<<<<<<<<<
 *                     mvalisnan = numpy.isnan(m)
 *                 except TypeError: # isnan fails on some dtypes (issue 206)
*/
      {
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        __Pyx_ExceptionSave(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15);
        __Pyx_XGOTREF(__pyx_t_13);
        __Pyx_XGOTREF(__pyx_t_14);
        __Pyx_XGOTREF(__pyx_t_15);
        /*try:*/ {

          /* "netCDF4/_netCDF4.pyx":5204
 *                 # is scalar missing value a NaN?
 *                 try:
 *                     mvalisnan = numpy.isnan(m)             # <<<<<<<<<<<<<<
 *                 except TypeError: # isnan fails on some dtypes (issue 206)
 *                     mvalisnan = False
*/
          __pyx_t_9 = NULL;
          __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_numpy); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 5204, __pyx_L17_error)
          __Pyx_GOTREF(__pyx_t_10);
          __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_isnan); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5204, __pyx_L17_error)
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
          __pyx_t_7 = 1;
          #if CYTHON_UNPACK_METHODS
          if (unlikely(PyMethod_Check(__pyx_t_1))) {
            __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_1);
            assert(__pyx_t_9);
            PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_1);
            __Pyx_INCREF(__pyx_t_9);
            __Pyx_INCREF(__pyx__function);
            __Pyx_DECREF_SET(__pyx_t_1, __pyx__function);
            __pyx_t_7 = 0;
          }
          #endif
          {
            PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_v_m};
            __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_1, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
            __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5204, __pyx_L17_error)
            __Pyx_GOTREF(__pyx_t_5);
          }
          __Pyx_XDECREF_SET(__pyx_v_mvalisnan, __pyx_t_5);
          __pyx_t_5 = 0;

          /* "netCDF4/_netCDF4.pyx":5203
 *             for m in mval:
 *                 # is scalar missing value a NaN?
 *                 try:             # <<<<<<<<<<<<<<
 *                     mvalisnan = numpy.isnan(m)
 *                 except TypeError: # isnan fails on some dtypes (issue 206)
*/
        }
        __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;
        goto __pyx_L24_try_end;
        __pyx_L17_error:;
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;

        /* "netCDF4/_netCDF4.pyx":5205
 *                 try:
 *                     mvalisnan = numpy.isnan(m)
 *                 except TypeError: # isnan fails on some dtypes (issue 206)             # <<<<<<<<<<<<<<
 *                     mvalisnan = False
 *                 if mvalisnan:
*/
        __pyx_t_16 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_TypeError))));
        if (__pyx_t_16) {
          __Pyx_ErrRestore(0,0,0);

          /* "netCDF4/_netCDF4.pyx":5206
 *                     mvalisnan = numpy.isnan(m)
 *                 except TypeError: # isnan fails on some dtypes (issue 206)
 *                     mvalisnan = False             # <<<<<<<<<<<<<<
 *                 if mvalisnan:
 *                     mvalmask += numpy.isnan(data)
*/
          __Pyx_INCREF(Py_False);
          __Pyx_XDECREF_SET(__pyx_v_mvalisnan, Py_False);
          goto __pyx_L18_exception_handled;
        }
        goto __pyx_L19_except_error;

        /* "netCDF4/_netCDF4.pyx":5203
 *             for m in mval:
 *                 # is scalar missing value a NaN?
 *                 try:             # <<<<<<<<<<<<<<
 *                     mvalisnan = numpy.isnan(m)
 *                 except TypeError: # isnan fails on some dtypes (issue 206)
*/
        __pyx_L19_except_error:;
        __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);
        goto __pyx_L1_error;
        __pyx_L18_exception_handled:;
        __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_L24_try_end:;
      }

      /* "netCDF4/_netCDF4.pyx":5207
 *                 except TypeError: # isnan fails on some dtypes (issue 206)
 *                     mvalisnan = False
 *                 if mvalisnan:             # <<<<<<<<<<<<<<
 *                     mvalmask += numpy.isnan(data)
 *                 else:
*/
      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_mvalisnan); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 5207, __pyx_L1_error)
      if (__pyx_t_2) {

        /* "netCDF4/_netCDF4.pyx":5208
 *                     mvalisnan = False
 *                 if mvalisnan:
 *                     mvalmask += numpy.isnan(data)             # <<<<<<<<<<<<<<
 *                 else:
 *                     mvalmask += data==m
*/
        __pyx_t_1 = NULL;
        __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_mstate_global->__pyx_n_u_numpy); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 5208, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_mstate_global->__pyx_n_u_isnan); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 5208, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_10);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __pyx_t_7 = 1;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_10))) {
          __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_10);
          assert(__pyx_t_1);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_10);
          __Pyx_INCREF(__pyx_t_1);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_10, __pyx__function);
          __pyx_t_7 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_v_data};
          __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_10, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
          if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5208, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
        }
        __pyx_t_10 = PyNumber_InPlaceAdd(__pyx_v_mvalmask, __pyx_t_5); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 5208, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_10);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF_SET(__pyx_v_mvalmask, __pyx_t_10);
        __pyx_t_10 = 0;

        /* "netCDF4/_netCDF4.pyx":5207
 *                 except TypeError: # isnan fails on some dtypes (issue 206)
 *                     mvalisnan = False
 *                 if mvalisnan:             # <<<<<<<<<<<<<<
 *                     mvalmask += numpy.isnan(data)
 *                 else:
*/
        goto __pyx_L27;
      }

      /* "netCDF4/_netCDF4.pyx":5210
 *                     mvalmask += numpy.isnan(data)
 *                 else:
 *                     mvalmask += data==m             # <<<<<<<<<<<<<<
 *             if mvalmask.any():
 *                 # set fill_value for masked array
*/
      /*else*/ {
        __pyx_t_10 = PyObject_RichCompare(__pyx_v_data, __pyx_v_m, Py_EQ); __Pyx_XGOTREF(__pyx_t_10); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 5210, __pyx_L1_error)
        __pyx_t_5 = PyNumber_InPlaceAdd(__pyx_v_mvalmask, __pyx_t_10); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5210, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        __Pyx_DECREF_SET(__pyx_v_mvalmask, __pyx_t_5);
        __pyx_t_5 = 0;
      }
      __pyx_L27:;

      /* "netCDF4/_netCDF4.pyx":5201
 *             if mval.shape == (): # mval a scalar.
 *                 mval = [mval] # make into iterable.
 *             for m in mval:             # <<<<<<<<<<<<<<
 *                 # is scalar missing value a NaN?
 *                 try:
*/
    }
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

    /* "netCDF4/_netCDF4.pyx":5211
 *                 else:
 *                     mvalmask += data==m
 *             if mvalmask.any():             # <<<<<<<<<<<<<<
 *                 # set fill_value for masked array
 *                 # to missing_value (or 1st element
*/
    __pyx_t_5 = __pyx_v_mvalmask;
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_7 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
      __pyx_t_8 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_any, __pyx_callargs+__pyx_t_7, (1-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 5211, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
    }
    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 5211, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    if (__pyx_t_2) {

      /* "netCDF4/_netCDF4.pyx":5215
 *                 # to missing_value (or 1st element
 *                 # if missing_value is a vector).
 *                 fill_value = mval[0]             # <<<<<<<<<<<<<<
 *                 totalmask += mvalmask
 *         # set mask=True for data == fill value
*/
      __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_mval, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 5215, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF_SET(__pyx_v_fill_value, __pyx_t_8);
      __pyx_t_8 = 0;

      /* "netCDF4/_netCDF4.pyx":5216
 *                 # if missing_value is a vector).
 *                 fill_value = mval[0]
 *                 totalmask += mvalmask             # <<<<<<<<<<<<<<
 *         # set mask=True for data == fill value
 *         safe_fillval = self._check_safecast('_FillValue')
*/
      __pyx_t_8 = PyNumber_InPlaceAdd(__pyx_v_totalmask, __pyx_v_mvalmask); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 5216, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF_SET(__pyx_v_totalmask, __pyx_t_8);
      __pyx_t_8 = 0;

      /* "netCDF4/_netCDF4.pyx":5211
 *                 else:
 *                     mvalmask += data==m
 *             if mvalmask.any():             # <<<<<<<<<<<<<<
 *                 # set fill_value for masked array
 *                 # to missing_value (or 1st element
*/
    }

    /* "netCDF4/_netCDF4.pyx":5193
 *         fill_value = None
 *         safe_missval = self._check_safecast('missing_value')
 *         if safe_missval:             # <<<<<<<<<<<<<<
 *             mval = numpy.array(self.missing_value, self.dtype)
 *             if self.scale and is_unsigned_int:
*/
  }

  /* "netCDF4/_netCDF4.pyx":5218
 *                 totalmask += mvalmask
 *         # set mask=True for data == fill value
 *         safe_fillval = self._check_safecast('_FillValue')             # <<<<<<<<<<<<<<
 *         if safe_fillval:
 *             fval = numpy.array(self._FillValue, self.dtype)
*/
  __pyx_t_5 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_7 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_n_u_FillValue};
    __pyx_t_8 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_check_safecast, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 5218, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
  }
  __pyx_v_safe_fillval = __pyx_t_8;
  __pyx_t_8 = 0;

  /* "netCDF4/_netCDF4.pyx":5219
 *         # set mask=True for data == fill value
 *         safe_fillval = self._check_safecast('_FillValue')
 *         if safe_fillval:             # <<<<<<<<<<<<<<
 *             fval = numpy.array(self._FillValue, self.dtype)
 *             if self.scale and is_unsigned_int:
*/
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_safe_fillval); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 5219, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "netCDF4/_netCDF4.pyx":5220
 *         safe_fillval = self._check_safecast('_FillValue')
 *         if safe_fillval:
 *             fval = numpy.array(self._FillValue, self.dtype)             # <<<<<<<<<<<<<<
 *             if self.scale and is_unsigned_int:
 *                 fval = fval.view(dtype_unsigned_int)
*/
    __pyx_t_5 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_numpy); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 5220, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_array); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5220, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_FillValue); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 5220, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_t_7 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_1))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
      assert(__pyx_t_5);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_1, __pyx__function);
      __pyx_t_7 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_t_10, __pyx_v_self->dtype};
      __pyx_t_8 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_1, __pyx_callargs+__pyx_t_7, (3-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 5220, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
    }
    __pyx_v_fval = __pyx_t_8;
    __pyx_t_8 = 0;

    /* "netCDF4/_netCDF4.pyx":5221
 *         if safe_fillval:
 *             fval = numpy.array(self._FillValue, self.dtype)
 *             if self.scale and is_unsigned_int:             # <<<<<<<<<<<<<<
 *                 fval = fval.view(dtype_unsigned_int)
 *             # is _FillValue a NaN?
*/
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_self->scale); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 5221, __pyx_L1_error)
    if (__pyx_t_3) {
    } else {
      __pyx_t_2 = __pyx_t_3;
      goto __pyx_L32_bool_binop_done;
    }
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_is_unsigned_int); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 5221, __pyx_L1_error)
    __pyx_t_2 = __pyx_t_3;
    __pyx_L32_bool_binop_done:;
    if (__pyx_t_2) {

      /* "netCDF4/_netCDF4.pyx":5222
 *             fval = numpy.array(self._FillValue, self.dtype)
 *             if self.scale and is_unsigned_int:
 *                 fval = fval.view(dtype_unsigned_int)             # <<<<<<<<<<<<<<
 *             # is _FillValue a NaN?
 *             try:
*/
      __pyx_t_1 = __pyx_v_fval;
      __Pyx_INCREF(__pyx_t_1);
      if (unlikely(!__pyx_v_dtype_unsigned_int)) { __Pyx_RaiseUnboundLocalError("dtype_unsigned_int"); __PYX_ERR(0, 5222, __pyx_L1_error) }
      __pyx_t_7 = 0;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_v_dtype_unsigned_int};
        __pyx_t_8 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_view, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 5222, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
      }
      __Pyx_DECREF_SET(__pyx_v_fval, __pyx_t_8);
      __pyx_t_8 = 0;

      /* "netCDF4/_netCDF4.pyx":5221
 *         if safe_fillval:
 *             fval = numpy.array(self._FillValue, self.dtype)
 *             if self.scale and is_unsigned_int:             # <<<<<<<<<<<<<<
 *                 fval = fval.view(dtype_unsigned_int)
 *             # is _FillValue a NaN?
*/
    }

    /* "netCDF4/_netCDF4.pyx":5224
 *                 fval = fval.view(dtype_unsigned_int)
 *             # is _FillValue a NaN?
 *             try:             # <<<<<<<<<<<<<<
 *                 fvalisnan = numpy.isnan(fval)
 *             except: # isnan fails on some dtypes (issue 202)
*/
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_15, &__pyx_t_14, &__pyx_t_13);
      __Pyx_XGOTREF(__pyx_t_15);
      __Pyx_XGOTREF(__pyx_t_14);
      __Pyx_XGOTREF(__pyx_t_13);
      /*try:*/ {

        /* "netCDF4/_netCDF4.pyx":5225
 *             # is _FillValue a NaN?
 *             try:
 *                 fvalisnan = numpy.isnan(fval)             # <<<<<<<<<<<<<<
 *             except: # isnan fails on some dtypes (issue 202)
 *                 fvalisnan = False
*/
        __pyx_t_1 = NULL;
        __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_numpy); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 5225, __pyx_L34_error)
        __Pyx_GOTREF(__pyx_t_10);
        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_isnan); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5225, __pyx_L34_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        __pyx_t_7 = 1;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_5))) {
          __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_5);
          assert(__pyx_t_1);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_1);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
          __pyx_t_7 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_v_fval};
          __pyx_t_8 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 5225, __pyx_L34_error)
          __Pyx_GOTREF(__pyx_t_8);
        }
        __pyx_v_fvalisnan = __pyx_t_8;
        __pyx_t_8 = 0;

        /* "netCDF4/_netCDF4.pyx":5224
 *                 fval = fval.view(dtype_unsigned_int)
 *             # is _FillValue a NaN?
 *             try:             # <<<<<<<<<<<<<<
 *                 fvalisnan = numpy.isnan(fval)
 *             except: # isnan fails on some dtypes (issue 202)
*/
      }
      __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
      __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      goto __pyx_L39_try_end;
      __pyx_L34_error:;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;

      /* "netCDF4/_netCDF4.pyx":5226
 *             try:
 *                 fvalisnan = numpy.isnan(fval)
 *             except: # isnan fails on some dtypes (issue 202)             # <<<<<<<<<<<<<<
 *                 fvalisnan = False
 *             if fvalisnan:
*/
      /*except:*/ {
        __Pyx_ErrRestore(0,0,0);

        /* "netCDF4/_netCDF4.pyx":5227
 *                 fvalisnan = numpy.isnan(fval)
 *             except: # isnan fails on some dtypes (issue 202)
 *                 fvalisnan = False             # <<<<<<<<<<<<<<
 *             if fvalisnan:
 *                 mask = numpy.isnan(data)
*/
        __Pyx_INCREF(Py_False);
        __Pyx_XDECREF_SET(__pyx_v_fvalisnan, Py_False);
        goto __pyx_L35_exception_handled;
      }
      __pyx_L35_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_15);
      __Pyx_XGIVEREF(__pyx_t_14);
      __Pyx_XGIVEREF(__pyx_t_13);
      __Pyx_ExceptionReset(__pyx_t_15, __pyx_t_14, __pyx_t_13);
      __pyx_L39_try_end:;
    }

    /* "netCDF4/_netCDF4.pyx":5228
 *             except: # isnan fails on some dtypes (issue 202)
 *                 fvalisnan = False
 *             if fvalisnan:             # <<<<<<<<<<<<<<
 *                 mask = numpy.isnan(data)
 *             elif (data == fval).any():
*/
    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_fvalisnan); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 5228, __pyx_L1_error)
    if (__pyx_t_2) {

      /* "netCDF4/_netCDF4.pyx":5229
 *                 fvalisnan = False
 *             if fvalisnan:
 *                 mask = numpy.isnan(data)             # <<<<<<<<<<<<<<
 *             elif (data == fval).any():
 *                 mask = data==fval
*/
      __pyx_t_5 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5229, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_isnan); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 5229, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_7 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_10))) {
        __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_10);
        assert(__pyx_t_5);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_10);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_10, __pyx__function);
        __pyx_t_7 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_data};
        __pyx_t_8 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_10, __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_10); __pyx_t_10 = 0;
        if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 5229, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
      }
      __pyx_v_mask = __pyx_t_8;
      __pyx_t_8 = 0;

      /* "netCDF4/_netCDF4.pyx":5228
 *             except: # isnan fails on some dtypes (issue 202)
 *                 fvalisnan = False
 *             if fvalisnan:             # <<<<<<<<<<<<<<
 *                 mask = numpy.isnan(data)
 *             elif (data == fval).any():
*/
      goto __pyx_L42;
    }

    /* "netCDF4/_netCDF4.pyx":5230
 *             if fvalisnan:
 *                 mask = numpy.isnan(data)
 *             elif (data == fval).any():             # <<<<<<<<<<<<<<
 *                 mask = data==fval
 *             else:
*/
    __pyx_t_5 = PyObject_RichCompare(__pyx_v_data, __pyx_v_fval, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5230, __pyx_L1_error)
    __pyx_t_10 = __pyx_t_5;
    __Pyx_INCREF(__pyx_t_10);
    __pyx_t_7 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_10, NULL};
      __pyx_t_8 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_any, __pyx_callargs+__pyx_t_7, (1-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 5230, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
    }
    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 5230, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    if (__pyx_t_2) {

      /* "netCDF4/_netCDF4.pyx":5231
 *                 mask = numpy.isnan(data)
 *             elif (data == fval).any():
 *                 mask = data==fval             # <<<<<<<<<<<<<<
 *             else:
 *                 mask = None
*/
      __pyx_t_8 = PyObject_RichCompare(__pyx_v_data, __pyx_v_fval, Py_EQ); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 5231, __pyx_L1_error)
      __pyx_v_mask = __pyx_t_8;
      __pyx_t_8 = 0;

      /* "netCDF4/_netCDF4.pyx":5230
 *             if fvalisnan:
 *                 mask = numpy.isnan(data)
 *             elif (data == fval).any():             # <<<<<<<<<<<<<<
 *                 mask = data==fval
 *             else:
*/
      goto __pyx_L42;
    }

    /* "netCDF4/_netCDF4.pyx":5233
 *                 mask = data==fval
 *             else:
 *                 mask = None             # <<<<<<<<<<<<<<
 *             if mask is not None:
 *                 if fill_value is None:
*/
    /*else*/ {
      __Pyx_INCREF(Py_None);
      __pyx_v_mask = Py_None;
    }
    __pyx_L42:;

    /* "netCDF4/_netCDF4.pyx":5234
 *             else:
 *                 mask = None
 *             if mask is not None:             # <<<<<<<<<<<<<<
 *                 if fill_value is None:
 *                     fill_value = fval
*/
    __pyx_t_2 = (__pyx_v_mask != Py_None);
    if (__pyx_t_2) {

      /* "netCDF4/_netCDF4.pyx":5235
 *                 mask = None
 *             if mask is not None:
 *                 if fill_value is None:             # <<<<<<<<<<<<<<
 *                     fill_value = fval
 *                 totalmask += mask
*/
      __pyx_t_2 = (__pyx_v_fill_value == Py_None);
      if (__pyx_t_2) {

        /* "netCDF4/_netCDF4.pyx":5236
 *             if mask is not None:
 *                 if fill_value is None:
 *                     fill_value = fval             # <<<<<<<<<<<<<<
 *                 totalmask += mask
 *         # issue 209: don't return masked array if variable filling
*/
        __Pyx_INCREF(__pyx_v_fval);
        __Pyx_DECREF_SET(__pyx_v_fill_value, __pyx_v_fval);

        /* "netCDF4/_netCDF4.pyx":5235
 *                 mask = None
 *             if mask is not None:
 *                 if fill_value is None:             # <<<<<<<<<<<<<<
 *                     fill_value = fval
 *                 totalmask += mask
*/
      }

      /* "netCDF4/_netCDF4.pyx":5237
 *                 if fill_value is None:
 *                     fill_value = fval
 *                 totalmask += mask             # <<<<<<<<<<<<<<
 *         # issue 209: don't return masked array if variable filling
 *         # is disabled.
*/
      __pyx_t_8 = PyNumber_InPlaceAdd(__pyx_v_totalmask, __pyx_v_mask); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 5237, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF_SET(__pyx_v_totalmask, __pyx_t_8);
      __pyx_t_8 = 0;

      /* "netCDF4/_netCDF4.pyx":5234
 *             else:
 *                 mask = None
 *             if mask is not None:             # <<<<<<<<<<<<<<
 *                 if fill_value is None:
 *                     fill_value = fval
*/
    }

    /* "netCDF4/_netCDF4.pyx":5219
 *         # set mask=True for data == fill value
 *         safe_fillval = self._check_safecast('_FillValue')
 *         if safe_fillval:             # <<<<<<<<<<<<<<
 *             fval = numpy.array(self._FillValue, self.dtype)
 *             if self.scale and is_unsigned_int:
*/
    goto __pyx_L30;
  }

  /* "netCDF4/_netCDF4.pyx":5241
 *         # is disabled.
 *         else:
 *             if __netcdf4libversion__ < '4.5.1' and\             # <<<<<<<<<<<<<<
 *                 self._grp.file_format.startswith('NETCDF3'):
 *                 # issue #908: no_fill not correct for NETCDF3 files before 4.5.1
*/
  /*else*/ {
    __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_netcdf4libversion); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 5241, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_5 = PyObject_RichCompare(__pyx_t_8, __pyx_mstate_global->__pyx_kp_u_4_5_1, Py_LT); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5241, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 5241, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (__pyx_t_3) {
    } else {
      __pyx_t_2 = __pyx_t_3;
      goto __pyx_L46_bool_binop_done;
    }

    /* "netCDF4/_netCDF4.pyx":5242
 *         else:
 *             if __netcdf4libversion__ < '4.5.1' and\
 *                 self._grp.file_format.startswith('NETCDF3'):             # <<<<<<<<<<<<<<
 *                 # issue #908: no_fill not correct for NETCDF3 files before 4.5.1
 *                 # before 4.5.1 there was no way to turn off filling on a
*/
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_grp, __pyx_mstate_global->__pyx_n_u_file_format); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 5242, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_t_8 = __pyx_t_10;
    __Pyx_INCREF(__pyx_t_8);
    __pyx_t_7 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_mstate_global->__pyx_n_u_NETCDF3};
      __pyx_t_5 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_startswith, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5242, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
    }
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 5242, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_2 = __pyx_t_3;
    __pyx_L46_bool_binop_done:;

    /* "netCDF4/_netCDF4.pyx":5241
 *         # is disabled.
 *         else:
 *             if __netcdf4libversion__ < '4.5.1' and\             # <<<<<<<<<<<<<<
 *                 self._grp.file_format.startswith('NETCDF3'):
 *                 # issue #908: no_fill not correct for NETCDF3 files before 4.5.1
*/
    if (__pyx_t_2) {

      /* "netCDF4/_netCDF4.pyx":5246
 *                 # before 4.5.1 there was no way to turn off filling on a
 *                 # per-variable basis for classic files.
 *                 no_fill=0             # <<<<<<<<<<<<<<
 *             else:
 *                 with nogil:
*/
      __pyx_v_no_fill = 0;

      /* "netCDF4/_netCDF4.pyx":5241
 *         # is disabled.
 *         else:
 *             if __netcdf4libversion__ < '4.5.1' and\             # <<<<<<<<<<<<<<
 *                 self._grp.file_format.startswith('NETCDF3'):
 *                 # issue #908: no_fill not correct for NETCDF3 files before 4.5.1
*/
      goto __pyx_L45;
    }

    /* "netCDF4/_netCDF4.pyx":5248
 *                 no_fill=0
 *             else:
 *                 with nogil:             # <<<<<<<<<<<<<<
 *                     ierr = nc_inq_var_fill(self._grpid,self._varid,&no_fill,NULL)
 *                 _ensure_nc_success(ierr)
*/
    /*else*/ {
      {
          PyThreadState * _save;
          _save = PyEval_SaveThread();
          __Pyx_FastGIL_Remember();
          /*try:*/ {

            /* "netCDF4/_netCDF4.pyx":5249
 *             else:
 *                 with nogil:
 *                     ierr = nc_inq_var_fill(self._grpid,self._varid,&no_fill,NULL)             # <<<<<<<<<<<<<<
 *                 _ensure_nc_success(ierr)
 *             # if no_fill is not 1, and not a byte variable, then use default fill value.
*/
            __pyx_v_ierr = nc_inq_var_fill(__pyx_v_self->_grpid, __pyx_v_self->_varid, (&__pyx_v_no_fill), NULL);
          }

          /* "netCDF4/_netCDF4.pyx":5248
 *                 no_fill=0
 *             else:
 *                 with nogil:             # <<<<<<<<<<<<<<
 *                     ierr = nc_inq_var_fill(self._grpid,self._varid,&no_fill,NULL)
 *                 _ensure_nc_success(ierr)
*/
          /*finally:*/ {
            /*normal exit:*/{
              __Pyx_FastGIL_Forget();
              PyEval_RestoreThread(_save);
              goto __pyx_L50;
            }
            __pyx_L50:;
          }
      }

      /* "netCDF4/_netCDF4.pyx":5250
 *                 with nogil:
 *                     ierr = nc_inq_var_fill(self._grpid,self._varid,&no_fill,NULL)
 *                 _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 *             # if no_fill is not 1, and not a byte variable, then use default fill value.
 *             # from http://www.unidata.ucar.edu/software/netcdf/docs/netcdf-c/Fill-Values.html#Fill-Values
*/
      __pyx_t_10 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 5250, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_1 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5250, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_7 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_8))) {
        __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_8);
        assert(__pyx_t_10);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_8, __pyx__function);
        __pyx_t_7 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_10, __pyx_t_1};
        __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_8, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5250, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
      }
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __pyx_L45:;

    /* "netCDF4/_netCDF4.pyx":5264
 *             # value unless a _FillValue attribute is set explicitly."
 *             # (do this only for non-vlens, since vlens don't have a default _FillValue)
 *             if not self._isvlen and (no_fill != 1 or self.dtype.str[1:] not in ['u1','i1']):             # <<<<<<<<<<<<<<
 *                 fillval = numpy.array(default_fillvals[self.dtype.str[1:]],self.dtype)
 *                 has_fillval = data == fillval
*/
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_self->_isvlen); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 5264, __pyx_L1_error)
    __pyx_t_17 = (!__pyx_t_3);
    if (__pyx_t_17) {
    } else {
      __pyx_t_2 = __pyx_t_17;
      goto __pyx_L52_bool_binop_done;
    }
    __pyx_t_17 = (__pyx_v_no_fill != 1);
    if (!__pyx_t_17) {
    } else {
      __pyx_t_2 = __pyx_t_17;
      goto __pyx_L52_bool_binop_done;
    }
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->dtype, __pyx_mstate_global->__pyx_n_u_str); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5264, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_8 = __Pyx_PyObject_GetSlice(__pyx_t_5, 1, 0, NULL, NULL, &__pyx_mstate_global->__pyx_slice[0], 1, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 5264, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_u1, Py_NE)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 5264, __pyx_L1_error)
    if (__pyx_t_3) {
    } else {
      __pyx_t_17 = __pyx_t_3;
      goto __pyx_L55_bool_binop_done;
    }
    __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_i1, Py_NE)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 5264, __pyx_L1_error)
    __pyx_t_17 = __pyx_t_3;
    __pyx_L55_bool_binop_done:;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_3 = __pyx_t_17;
    __pyx_t_2 = __pyx_t_3;
    __pyx_L52_bool_binop_done:;
    if (__pyx_t_2) {

      /* "netCDF4/_netCDF4.pyx":5265
 *             # (do this only for non-vlens, since vlens don't have a default _FillValue)
 *             if not self._isvlen and (no_fill != 1 or self.dtype.str[1:] not in ['u1','i1']):
 *                 fillval = numpy.array(default_fillvals[self.dtype.str[1:]],self.dtype)             # <<<<<<<<<<<<<<
 *                 has_fillval = data == fillval
 *                 # if data is an array scalar, has_fillval will be a boolean.
*/
      __pyx_t_5 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5265, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_array); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 5265, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_default_fillvals); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5265, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->dtype, __pyx_mstate_global->__pyx_n_u_str); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 5265, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_4 = __Pyx_PyObject_GetSlice(__pyx_t_9, 1, 0, NULL, NULL, &__pyx_mstate_global->__pyx_slice[0], 1, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5265, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_9 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 5265, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_7 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_10))) {
        __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_10);
        assert(__pyx_t_5);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_10);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_10, __pyx__function);
        __pyx_t_7 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_t_9, __pyx_v_self->dtype};
        __pyx_t_8 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_10, __pyx_callargs+__pyx_t_7, (3-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 5265, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
      }
      __pyx_v_fillval = __pyx_t_8;
      __pyx_t_8 = 0;

      /* "netCDF4/_netCDF4.pyx":5266
 *             if not self._isvlen and (no_fill != 1 or self.dtype.str[1:] not in ['u1','i1']):
 *                 fillval = numpy.array(default_fillvals[self.dtype.str[1:]],self.dtype)
 *                 has_fillval = data == fillval             # <<<<<<<<<<<<<<
 *                 # if data is an array scalar, has_fillval will be a boolean.
 *                 # in that case convert to an array.
*/
      __pyx_t_8 = PyObject_RichCompare(__pyx_v_data, __pyx_v_fillval, Py_EQ); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 5266, __pyx_L1_error)
      __pyx_v_has_fillval = __pyx_t_8;
      __pyx_t_8 = 0;

      /* "netCDF4/_netCDF4.pyx":5269
 *                 # if data is an array scalar, has_fillval will be a boolean.
 *                 # in that case convert to an array.
 *                 if type(has_fillval) == bool: has_fillval=numpy.asarray(has_fillval)             # <<<<<<<<<<<<<<
 *                 if has_fillval.any():
 *                     if fill_value is None:
*/
      __pyx_t_8 = PyObject_RichCompare(((PyObject *)Py_TYPE(__pyx_v_has_fillval)), ((PyObject *)(&PyBool_Type)), Py_EQ); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 5269, __pyx_L1_error)
      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 5269, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (__pyx_t_2) {
        __pyx_t_10 = NULL;
        __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_mstate_global->__pyx_n_u_numpy); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 5269, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_mstate_global->__pyx_n_u_asarray); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5269, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __pyx_t_7 = 1;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_5))) {
          __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_5);
          assert(__pyx_t_10);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_10);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
          __pyx_t_7 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_10, __pyx_v_has_fillval};
          __pyx_t_8 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 5269, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
        }
        __Pyx_DECREF_SET(__pyx_v_has_fillval, __pyx_t_8);
        __pyx_t_8 = 0;
      }

      /* "netCDF4/_netCDF4.pyx":5270
 *                 # in that case convert to an array.
 *                 if type(has_fillval) == bool: has_fillval=numpy.asarray(has_fillval)
 *                 if has_fillval.any():             # <<<<<<<<<<<<<<
 *                     if fill_value is None:
 *                         fill_value = fillval
*/
      __pyx_t_5 = __pyx_v_has_fillval;
      __Pyx_INCREF(__pyx_t_5);
      __pyx_t_7 = 0;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
        __pyx_t_8 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_any, __pyx_callargs+__pyx_t_7, (1-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 5270, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
      }
      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 5270, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (__pyx_t_2) {

        /* "netCDF4/_netCDF4.pyx":5271
 *                 if type(has_fillval) == bool: has_fillval=numpy.asarray(has_fillval)
 *                 if has_fillval.any():
 *                     if fill_value is None:             # <<<<<<<<<<<<<<
 *                         fill_value = fillval
 *                     mask=data==fillval
*/
        __pyx_t_2 = (__pyx_v_fill_value == Py_None);
        if (__pyx_t_2) {

          /* "netCDF4/_netCDF4.pyx":5272
 *                 if has_fillval.any():
 *                     if fill_value is None:
 *                         fill_value = fillval             # <<<<<<<<<<<<<<
 *                     mask=data==fillval
 *                     totalmask += mask
*/
          __Pyx_INCREF(__pyx_v_fillval);
          __Pyx_DECREF_SET(__pyx_v_fill_value, __pyx_v_fillval);

          /* "netCDF4/_netCDF4.pyx":5271
 *                 if type(has_fillval) == bool: has_fillval=numpy.asarray(has_fillval)
 *                 if has_fillval.any():
 *                     if fill_value is None:             # <<<<<<<<<<<<<<
 *                         fill_value = fillval
 *                     mask=data==fillval
*/
        }

        /* "netCDF4/_netCDF4.pyx":5273
 *                     if fill_value is None:
 *                         fill_value = fillval
 *                     mask=data==fillval             # <<<<<<<<<<<<<<
 *                     totalmask += mask
 *         # set mask=True for data outside valid_min,valid_max.
*/
        __pyx_t_8 = PyObject_RichCompare(__pyx_v_data, __pyx_v_fillval, Py_EQ); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 5273, __pyx_L1_error)
        __pyx_v_mask = __pyx_t_8;
        __pyx_t_8 = 0;

        /* "netCDF4/_netCDF4.pyx":5274
 *                         fill_value = fillval
 *                     mask=data==fillval
 *                     totalmask += mask             # <<<<<<<<<<<<<<
 *         # set mask=True for data outside valid_min,valid_max.
 *         # (issue #576)
*/
        __pyx_t_8 = PyNumber_InPlaceAdd(__pyx_v_totalmask, __pyx_v_mask); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 5274, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF_SET(__pyx_v_totalmask, __pyx_t_8);
        __pyx_t_8 = 0;

        /* "netCDF4/_netCDF4.pyx":5270
 *                 # in that case convert to an array.
 *                 if type(has_fillval) == bool: has_fillval=numpy.asarray(has_fillval)
 *                 if has_fillval.any():             # <<<<<<<<<<<<<<
 *                     if fill_value is None:
 *                         fill_value = fillval
*/
      }

      /* "netCDF4/_netCDF4.pyx":5264
 *             # value unless a _FillValue attribute is set explicitly."
 *             # (do this only for non-vlens, since vlens don't have a default _FillValue)
 *             if not self._isvlen and (no_fill != 1 or self.dtype.str[1:] not in ['u1','i1']):             # <<<<<<<<<<<<<<
 *                 fillval = numpy.array(default_fillvals[self.dtype.str[1:]],self.dtype)
 *                 has_fillval = data == fillval
*/
    }
  }
  __pyx_L30:;

  /* "netCDF4/_netCDF4.pyx":5277
 *         # set mask=True for data outside valid_min,valid_max.
 *         # (issue #576)
 *         validmin = None; validmax = None             # <<<<<<<<<<<<<<
 *         # if valid_range exists use that, otherwise
 *         # look for valid_min, valid_max.  No special
*/
  __Pyx_INCREF(Py_None);
  __pyx_v_validmin = Py_None;
  __Pyx_INCREF(Py_None);
  __pyx_v_validmax = Py_None;

  /* "netCDF4/_netCDF4.pyx":5282
 *         # treatment of byte data as described at
 *         # http://www.unidata.ucar.edu/software/netcdf/docs/attribute_conventions.html).
 *         safe_validrange = self._check_safecast('valid_range')             # <<<<<<<<<<<<<<
 *         safe_validmin = self._check_safecast('valid_min')
 *         safe_validmax = self._check_safecast('valid_max')
*/
  __pyx_t_5 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_7 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_n_u_valid_range};
    __pyx_t_8 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_check_safecast, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 5282, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
  }
  __pyx_v_safe_validrange = __pyx_t_8;
  __pyx_t_8 = 0;

  /* "netCDF4/_netCDF4.pyx":5283
 *         # http://www.unidata.ucar.edu/software/netcdf/docs/attribute_conventions.html).
 *         safe_validrange = self._check_safecast('valid_range')
 *         safe_validmin = self._check_safecast('valid_min')             # <<<<<<<<<<<<<<
 *         safe_validmax = self._check_safecast('valid_max')
 *         if safe_validrange and self.valid_range.size == 2:
*/
  __pyx_t_5 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_7 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_n_u_valid_min};
    __pyx_t_8 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_check_safecast, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 5283, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
  }
  __pyx_v_safe_validmin = __pyx_t_8;
  __pyx_t_8 = 0;

  /* "netCDF4/_netCDF4.pyx":5284
 *         safe_validrange = self._check_safecast('valid_range')
 *         safe_validmin = self._check_safecast('valid_min')
 *         safe_validmax = self._check_safecast('valid_max')             # <<<<<<<<<<<<<<
 *         if safe_validrange and self.valid_range.size == 2:
 *             validmin = numpy.array(self.valid_range[0], self.dtype)
*/
  __pyx_t_5 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_7 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_n_u_valid_max};
    __pyx_t_8 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_check_safecast, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 5284, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
  }
  __pyx_v_safe_validmax = __pyx_t_8;
  __pyx_t_8 = 0;

  /* "netCDF4/_netCDF4.pyx":5285
 *         safe_validmin = self._check_safecast('valid_min')
 *         safe_validmax = self._check_safecast('valid_max')
 *         if safe_validrange and self.valid_range.size == 2:             # <<<<<<<<<<<<<<
 *             validmin = numpy.array(self.valid_range[0], self.dtype)
 *             validmax = numpy.array(self.valid_range[1], self.dtype)
*/
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_safe_validrange); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 5285, __pyx_L1_error)
  if (__pyx_t_3) {
  } else {
    __pyx_t_2 = __pyx_t_3;
    goto __pyx_L61_bool_binop_done;
  }
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_valid_range); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 5285, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_size); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5285, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_3 = (__Pyx_PyLong_BoolEqObjC(__pyx_t_5, __pyx_mstate_global->__pyx_int_2, 2, 0)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 5285, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_2 = __pyx_t_3;
  __pyx_L61_bool_binop_done:;
  if (__pyx_t_2) {

    /* "netCDF4/_netCDF4.pyx":5286
 *         safe_validmax = self._check_safecast('valid_max')
 *         if safe_validrange and self.valid_range.size == 2:
 *             validmin = numpy.array(self.valid_range[0], self.dtype)             # <<<<<<<<<<<<<<
 *             validmax = numpy.array(self.valid_range[1], self.dtype)
 *         else:
*/
    __pyx_t_8 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_numpy); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 5286, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_array); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 5286, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_valid_range); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 5286, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_10, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5286, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __pyx_t_7 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(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_7 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_8, __pyx_t_4, __pyx_v_self->dtype};
      __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_9, __pyx_callargs+__pyx_t_7, (3-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5286, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
    }
    __Pyx_DECREF_SET(__pyx_v_validmin, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "netCDF4/_netCDF4.pyx":5287
 *         if safe_validrange and self.valid_range.size == 2:
 *             validmin = numpy.array(self.valid_range[0], self.dtype)
 *             validmax = numpy.array(self.valid_range[1], self.dtype)             # <<<<<<<<<<<<<<
 *         else:
 *             if safe_validmin:
*/
    __pyx_t_9 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5287, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_array); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 5287, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_valid_range); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5287, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_10 = __Pyx_GetItemInt(__pyx_t_4, 1, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 5287, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_7 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_8))) {
      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8);
      assert(__pyx_t_9);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_8);
      __Pyx_INCREF(__pyx_t_9);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_8, __pyx__function);
      __pyx_t_7 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_9, __pyx_t_10, __pyx_v_self->dtype};
      __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_8, __pyx_callargs+__pyx_t_7, (3-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5287, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
    }
    __Pyx_DECREF_SET(__pyx_v_validmax, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "netCDF4/_netCDF4.pyx":5285
 *         safe_validmin = self._check_safecast('valid_min')
 *         safe_validmax = self._check_safecast('valid_max')
 *         if safe_validrange and self.valid_range.size == 2:             # <<<<<<<<<<<<<<
 *             validmin = numpy.array(self.valid_range[0], self.dtype)
 *             validmax = numpy.array(self.valid_range[1], self.dtype)
*/
    goto __pyx_L60;
  }

  /* "netCDF4/_netCDF4.pyx":5289
 *             validmax = numpy.array(self.valid_range[1], self.dtype)
 *         else:
 *             if safe_validmin:             # <<<<<<<<<<<<<<
 *                 validmin = numpy.array(self.valid_min, self.dtype)
 *             if safe_validmax:
*/
  /*else*/ {
    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_safe_validmin); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 5289, __pyx_L1_error)
    if (__pyx_t_2) {

      /* "netCDF4/_netCDF4.pyx":5290
 *         else:
 *             if safe_validmin:
 *                 validmin = numpy.array(self.valid_min, self.dtype)             # <<<<<<<<<<<<<<
 *             if safe_validmax:
 *                 validmax = numpy.array(self.valid_max, self.dtype)
*/
      __pyx_t_8 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_numpy); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 5290, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_array); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 5290, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __pyx_t_10 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_valid_min); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 5290, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __pyx_t_7 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(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_7 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[3] = {__pyx_t_8, __pyx_t_10, __pyx_v_self->dtype};
        __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_9, __pyx_callargs+__pyx_t_7, (3-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5290, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
      }
      __Pyx_DECREF_SET(__pyx_v_validmin, __pyx_t_5);
      __pyx_t_5 = 0;

      /* "netCDF4/_netCDF4.pyx":5289
 *             validmax = numpy.array(self.valid_range[1], self.dtype)
 *         else:
 *             if safe_validmin:             # <<<<<<<<<<<<<<
 *                 validmin = numpy.array(self.valid_min, self.dtype)
 *             if safe_validmax:
*/
    }

    /* "netCDF4/_netCDF4.pyx":5291
 *             if safe_validmin:
 *                 validmin = numpy.array(self.valid_min, self.dtype)
 *             if safe_validmax:             # <<<<<<<<<<<<<<
 *                 validmax = numpy.array(self.valid_max, self.dtype)
 *         if validmin is not None and self.scale and is_unsigned_int:
*/
    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_safe_validmax); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 5291, __pyx_L1_error)
    if (__pyx_t_2) {

      /* "netCDF4/_netCDF4.pyx":5292
 *                 validmin = numpy.array(self.valid_min, self.dtype)
 *             if safe_validmax:
 *                 validmax = numpy.array(self.valid_max, self.dtype)             # <<<<<<<<<<<<<<
 *         if validmin is not None and self.scale and is_unsigned_int:
 *             validmin = validmin.view(dtype_unsigned_int)
*/
      __pyx_t_9 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_numpy); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 5292, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_array); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 5292, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __pyx_t_10 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_valid_max); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 5292, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __pyx_t_7 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_8))) {
        __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8);
        assert(__pyx_t_9);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_9);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_8, __pyx__function);
        __pyx_t_7 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[3] = {__pyx_t_9, __pyx_t_10, __pyx_v_self->dtype};
        __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_8, __pyx_callargs+__pyx_t_7, (3-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5292, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
      }
      __Pyx_DECREF_SET(__pyx_v_validmax, __pyx_t_5);
      __pyx_t_5 = 0;

      /* "netCDF4/_netCDF4.pyx":5291
 *             if safe_validmin:
 *                 validmin = numpy.array(self.valid_min, self.dtype)
 *             if safe_validmax:             # <<<<<<<<<<<<<<
 *                 validmax = numpy.array(self.valid_max, self.dtype)
 *         if validmin is not None and self.scale and is_unsigned_int:
*/
    }
  }
  __pyx_L60:;

  /* "netCDF4/_netCDF4.pyx":5293
 *             if safe_validmax:
 *                 validmax = numpy.array(self.valid_max, self.dtype)
 *         if validmin is not None and self.scale and is_unsigned_int:             # <<<<<<<<<<<<<<
 *             validmin = validmin.view(dtype_unsigned_int)
 *         if validmax is not None and self.scale and is_unsigned_int:
*/
  __pyx_t_3 = (__pyx_v_validmin != Py_None);
  if (__pyx_t_3) {
  } else {
    __pyx_t_2 = __pyx_t_3;
    goto __pyx_L66_bool_binop_done;
  }
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_self->scale); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 5293, __pyx_L1_error)
  if (__pyx_t_3) {
  } else {
    __pyx_t_2 = __pyx_t_3;
    goto __pyx_L66_bool_binop_done;
  }
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_is_unsigned_int); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 5293, __pyx_L1_error)
  __pyx_t_2 = __pyx_t_3;
  __pyx_L66_bool_binop_done:;
  if (__pyx_t_2) {

    /* "netCDF4/_netCDF4.pyx":5294
 *                 validmax = numpy.array(self.valid_max, self.dtype)
 *         if validmin is not None and self.scale and is_unsigned_int:
 *             validmin = validmin.view(dtype_unsigned_int)             # <<<<<<<<<<<<<<
 *         if validmax is not None and self.scale and is_unsigned_int:
 *             validmax = validmax.view(dtype_unsigned_int)
*/
    __pyx_t_8 = __pyx_v_validmin;
    __Pyx_INCREF(__pyx_t_8);
    if (unlikely(!__pyx_v_dtype_unsigned_int)) { __Pyx_RaiseUnboundLocalError("dtype_unsigned_int"); __PYX_ERR(0, 5294, __pyx_L1_error) }
    __pyx_t_7 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_v_dtype_unsigned_int};
      __pyx_t_5 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_view, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5294, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
    }
    __Pyx_DECREF_SET(__pyx_v_validmin, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "netCDF4/_netCDF4.pyx":5293
 *             if safe_validmax:
 *                 validmax = numpy.array(self.valid_max, self.dtype)
 *         if validmin is not None and self.scale and is_unsigned_int:             # <<<<<<<<<<<<<<
 *             validmin = validmin.view(dtype_unsigned_int)
 *         if validmax is not None and self.scale and is_unsigned_int:
*/
  }

  /* "netCDF4/_netCDF4.pyx":5295
 *         if validmin is not None and self.scale and is_unsigned_int:
 *             validmin = validmin.view(dtype_unsigned_int)
 *         if validmax is not None and self.scale and is_unsigned_int:             # <<<<<<<<<<<<<<
 *             validmax = validmax.view(dtype_unsigned_int)
 *         # http://www.unidata.ucar.edu/software/netcdf/docs/attribute_conventions.html).
*/
  __pyx_t_3 = (__pyx_v_validmax != Py_None);
  if (__pyx_t_3) {
  } else {
    __pyx_t_2 = __pyx_t_3;
    goto __pyx_L70_bool_binop_done;
  }
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_self->scale); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 5295, __pyx_L1_error)
  if (__pyx_t_3) {
  } else {
    __pyx_t_2 = __pyx_t_3;
    goto __pyx_L70_bool_binop_done;
  }
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_is_unsigned_int); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 5295, __pyx_L1_error)
  __pyx_t_2 = __pyx_t_3;
  __pyx_L70_bool_binop_done:;
  if (__pyx_t_2) {

    /* "netCDF4/_netCDF4.pyx":5296
 *             validmin = validmin.view(dtype_unsigned_int)
 *         if validmax is not None and self.scale and is_unsigned_int:
 *             validmax = validmax.view(dtype_unsigned_int)             # <<<<<<<<<<<<<<
 *         # http://www.unidata.ucar.edu/software/netcdf/docs/attribute_conventions.html).
 *         # "If the data type is byte and _FillValue
*/
    __pyx_t_8 = __pyx_v_validmax;
    __Pyx_INCREF(__pyx_t_8);
    if (unlikely(!__pyx_v_dtype_unsigned_int)) { __Pyx_RaiseUnboundLocalError("dtype_unsigned_int"); __PYX_ERR(0, 5296, __pyx_L1_error) }
    __pyx_t_7 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_v_dtype_unsigned_int};
      __pyx_t_5 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_view, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5296, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
    }
    __Pyx_DECREF_SET(__pyx_v_validmax, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "netCDF4/_netCDF4.pyx":5295
 *         if validmin is not None and self.scale and is_unsigned_int:
 *             validmin = validmin.view(dtype_unsigned_int)
 *         if validmax is not None and self.scale and is_unsigned_int:             # <<<<<<<<<<<<<<
 *             validmax = validmax.view(dtype_unsigned_int)
 *         # http://www.unidata.ucar.edu/software/netcdf/docs/attribute_conventions.html).
*/
  }

  /* "netCDF4/_netCDF4.pyx":5305
 *         # If the _FillValue is positive then it defines a valid maximum,
 *         #  otherwise it defines a valid minimum."
 *         byte_type = self.dtype.str[1:] in ['u1','i1']             # <<<<<<<<<<<<<<
 *         if safe_fillval:
 *             fval = numpy.array(self._FillValue, self.dtype)
*/
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->dtype, __pyx_mstate_global->__pyx_n_u_str); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_8 = __Pyx_PyObject_GetSlice(__pyx_t_5, 1, 0, NULL, NULL, &__pyx_mstate_global->__pyx_slice[0], 1, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 5305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_u1, Py_EQ)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 5305, __pyx_L1_error)
  if (!__pyx_t_3) {
  } else {
    __pyx_t_2 = __pyx_t_3;
    goto __pyx_L73_bool_binop_done;
  }
  __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_i1, Py_EQ)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 5305, __pyx_L1_error)
  __pyx_t_2 = __pyx_t_3;
  __pyx_L73_bool_binop_done:;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_v_byte_type = __pyx_t_2;

  /* "netCDF4/_netCDF4.pyx":5306
 *         #  otherwise it defines a valid minimum."
 *         byte_type = self.dtype.str[1:] in ['u1','i1']
 *         if safe_fillval:             # <<<<<<<<<<<<<<
 *             fval = numpy.array(self._FillValue, self.dtype)
 *         else:
*/
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_safe_fillval); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 5306, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "netCDF4/_netCDF4.pyx":5307
 *         byte_type = self.dtype.str[1:] in ['u1','i1']
 *         if safe_fillval:
 *             fval = numpy.array(self._FillValue, self.dtype)             # <<<<<<<<<<<<<<
 *         else:
 *             fval = numpy.array(default_fillvals[self.dtype.str[1:]],self.dtype)
*/
    __pyx_t_5 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_numpy); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 5307, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_array); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 5307, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_FillValue); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 5307, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_t_7 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_9))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_9);
      assert(__pyx_t_5);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_9);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_9, __pyx__function);
      __pyx_t_7 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_t_10, __pyx_v_self->dtype};
      __pyx_t_8 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_9, __pyx_callargs+__pyx_t_7, (3-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 5307, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
    }
    __Pyx_XDECREF_SET(__pyx_v_fval, __pyx_t_8);
    __pyx_t_8 = 0;

    /* "netCDF4/_netCDF4.pyx":5306
 *         #  otherwise it defines a valid minimum."
 *         byte_type = self.dtype.str[1:] in ['u1','i1']
 *         if safe_fillval:             # <<<<<<<<<<<<<<
 *             fval = numpy.array(self._FillValue, self.dtype)
 *         else:
*/
    goto __pyx_L75;
  }

  /* "netCDF4/_netCDF4.pyx":5309
 *             fval = numpy.array(self._FillValue, self.dtype)
 *         else:
 *             fval = numpy.array(default_fillvals[self.dtype.str[1:]],self.dtype)             # <<<<<<<<<<<<<<
 *             if byte_type: fval = None
 *         if self.dtype.kind != 'S': # don't set mask for character data
*/
  /*else*/ {
    __pyx_t_9 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_numpy); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 5309, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_array); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5309, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_default_fillvals); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 5309, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->dtype, __pyx_mstate_global->__pyx_n_u_str); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5309, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_1 = __Pyx_PyObject_GetSlice(__pyx_t_4, 1, 0, NULL, NULL, &__pyx_mstate_global->__pyx_slice[0], 1, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5309, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_PyObject_GetItem(__pyx_t_10, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5309, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_7 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_5);
      assert(__pyx_t_9);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_9);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
      __pyx_t_7 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_9, __pyx_t_4, __pyx_v_self->dtype};
      __pyx_t_8 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_7, (3-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 5309, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
    }
    __Pyx_XDECREF_SET(__pyx_v_fval, __pyx_t_8);
    __pyx_t_8 = 0;

    /* "netCDF4/_netCDF4.pyx":5310
 *         else:
 *             fval = numpy.array(default_fillvals[self.dtype.str[1:]],self.dtype)
 *             if byte_type: fval = None             # <<<<<<<<<<<<<<
 *         if self.dtype.kind != 'S': # don't set mask for character data
 *             # issues #761 and #748:  setting valid_min/valid_max to the
*/
    if (__pyx_v_byte_type) {
      __Pyx_INCREF(Py_None);
      __Pyx_DECREF_SET(__pyx_v_fval, Py_None);
    }
  }
  __pyx_L75:;

  /* "netCDF4/_netCDF4.pyx":5311
 *             fval = numpy.array(default_fillvals[self.dtype.str[1:]],self.dtype)
 *             if byte_type: fval = None
 *         if self.dtype.kind != 'S': # don't set mask for character data             # <<<<<<<<<<<<<<
 *             # issues #761 and #748:  setting valid_min/valid_max to the
 *             # _FillVaue is too surprising for many users (despite the
*/
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->dtype, __pyx_mstate_global->__pyx_n_u_kind); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 5311, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_S, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 5311, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__pyx_t_2) {

    /* "netCDF4/_netCDF4.pyx":5320
 *             #if validmax is None and (fval is not None and fval > 0):
 *             #    validmax = fval
 *             if validmin is not None:             # <<<<<<<<<<<<<<
 *                 totalmask += data < validmin
 *             if validmax is not None:
*/
    __pyx_t_2 = (__pyx_v_validmin != Py_None);
    if (__pyx_t_2) {

      /* "netCDF4/_netCDF4.pyx":5321
 *             #    validmax = fval
 *             if validmin is not None:
 *                 totalmask += data < validmin             # <<<<<<<<<<<<<<
 *             if validmax is not None:
 *                 totalmask += data > validmax
*/
      __pyx_t_8 = PyObject_RichCompare(__pyx_v_data, __pyx_v_validmin, Py_LT); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 5321, __pyx_L1_error)
      __pyx_t_5 = PyNumber_InPlaceAdd(__pyx_v_totalmask, __pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5321, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF_SET(__pyx_v_totalmask, __pyx_t_5);
      __pyx_t_5 = 0;

      /* "netCDF4/_netCDF4.pyx":5320
 *             #if validmax is None and (fval is not None and fval > 0):
 *             #    validmax = fval
 *             if validmin is not None:             # <<<<<<<<<<<<<<
 *                 totalmask += data < validmin
 *             if validmax is not None:
*/
    }

    /* "netCDF4/_netCDF4.pyx":5322
 *             if validmin is not None:
 *                 totalmask += data < validmin
 *             if validmax is not None:             # <<<<<<<<<<<<<<
 *                 totalmask += data > validmax
 *         if fill_value is None and fval is not None:
*/
    __pyx_t_2 = (__pyx_v_validmax != Py_None);
    if (__pyx_t_2) {

      /* "netCDF4/_netCDF4.pyx":5323
 *                 totalmask += data < validmin
 *             if validmax is not None:
 *                 totalmask += data > validmax             # <<<<<<<<<<<<<<
 *         if fill_value is None and fval is not None:
 *             fill_value = fval
*/
      __pyx_t_5 = PyObject_RichCompare(__pyx_v_data, __pyx_v_validmax, Py_GT); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5323, __pyx_L1_error)
      __pyx_t_8 = PyNumber_InPlaceAdd(__pyx_v_totalmask, __pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 5323, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF_SET(__pyx_v_totalmask, __pyx_t_8);
      __pyx_t_8 = 0;

      /* "netCDF4/_netCDF4.pyx":5322
 *             if validmin is not None:
 *                 totalmask += data < validmin
 *             if validmax is not None:             # <<<<<<<<<<<<<<
 *                 totalmask += data > validmax
 *         if fill_value is None and fval is not None:
*/
    }

    /* "netCDF4/_netCDF4.pyx":5311
 *             fval = numpy.array(default_fillvals[self.dtype.str[1:]],self.dtype)
 *             if byte_type: fval = None
 *         if self.dtype.kind != 'S': # don't set mask for character data             # <<<<<<<<<<<<<<
 *             # issues #761 and #748:  setting valid_min/valid_max to the
 *             # _FillVaue is too surprising for many users (despite the
*/
  }

  /* "netCDF4/_netCDF4.pyx":5324
 *             if validmax is not None:
 *                 totalmask += data > validmax
 *         if fill_value is None and fval is not None:             # <<<<<<<<<<<<<<
 *             fill_value = fval
 *         # if all else fails, use default _FillValue as fill_value
*/
  __pyx_t_3 = (__pyx_v_fill_value == Py_None);
  if (__pyx_t_3) {
  } else {
    __pyx_t_2 = __pyx_t_3;
    goto __pyx_L81_bool_binop_done;
  }
  __pyx_t_3 = (__pyx_v_fval != Py_None);
  __pyx_t_2 = __pyx_t_3;
  __pyx_L81_bool_binop_done:;
  if (__pyx_t_2) {

    /* "netCDF4/_netCDF4.pyx":5325
 *                 totalmask += data > validmax
 *         if fill_value is None and fval is not None:
 *             fill_value = fval             # <<<<<<<<<<<<<<
 *         # if all else fails, use default _FillValue as fill_value
 *         # for masked array.
*/
    __Pyx_INCREF(__pyx_v_fval);
    __Pyx_DECREF_SET(__pyx_v_fill_value, __pyx_v_fval);

    /* "netCDF4/_netCDF4.pyx":5324
 *             if validmax is not None:
 *                 totalmask += data > validmax
 *         if fill_value is None and fval is not None:             # <<<<<<<<<<<<<<
 *             fill_value = fval
 *         # if all else fails, use default _FillValue as fill_value
*/
  }

  /* "netCDF4/_netCDF4.pyx":5328
 *         # if all else fails, use default _FillValue as fill_value
 *         # for masked array.
 *         if fill_value is None:             # <<<<<<<<<<<<<<
 *             fill_value = default_fillvals[self.dtype.str[1:]]
 *         # create masked array with computed mask
*/
  __pyx_t_2 = (__pyx_v_fill_value == Py_None);
  if (__pyx_t_2) {

    /* "netCDF4/_netCDF4.pyx":5329
 *         # for masked array.
 *         if fill_value is None:
 *             fill_value = default_fillvals[self.dtype.str[1:]]             # <<<<<<<<<<<<<<
 *         # create masked array with computed mask
 *         masked_values = bool(totalmask.any())
*/
    __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_default_fillvals); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 5329, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->dtype, __pyx_mstate_global->__pyx_n_u_str); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5329, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = __Pyx_PyObject_GetSlice(__pyx_t_5, 1, 0, NULL, NULL, &__pyx_mstate_global->__pyx_slice[0], 1, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5329, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_t_8, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5329, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF_SET(__pyx_v_fill_value, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "netCDF4/_netCDF4.pyx":5328
 *         # if all else fails, use default _FillValue as fill_value
 *         # for masked array.
 *         if fill_value is None:             # <<<<<<<<<<<<<<
 *             fill_value = default_fillvals[self.dtype.str[1:]]
 *         # create masked array with computed mask
*/
  }

  /* "netCDF4/_netCDF4.pyx":5331
 *             fill_value = default_fillvals[self.dtype.str[1:]]
 *         # create masked array with computed mask
 *         masked_values = bool(totalmask.any())             # <<<<<<<<<<<<<<
 *         if masked_values:
 *             data = ma.masked_array(data,mask=totalmask,fill_value=fill_value)
*/
  __pyx_t_4 = __pyx_v_totalmask;
  __Pyx_INCREF(__pyx_t_4);
  __pyx_t_7 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
    __pyx_t_5 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_any, __pyx_callargs+__pyx_t_7, (1-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5331, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
  }
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 5331, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_v_masked_values = (!(!__pyx_t_2));

  /* "netCDF4/_netCDF4.pyx":5332
 *         # create masked array with computed mask
 *         masked_values = bool(totalmask.any())
 *         if masked_values:             # <<<<<<<<<<<<<<
 *             data = ma.masked_array(data,mask=totalmask,fill_value=fill_value)
 *         else:
*/
  if (__pyx_v_masked_values) {

    /* "netCDF4/_netCDF4.pyx":5333
 *         masked_values = bool(totalmask.any())
 *         if masked_values:
 *             data = ma.masked_array(data,mask=totalmask,fill_value=fill_value)             # <<<<<<<<<<<<<<
 *         else:
 *             # issue #785: always return masked array, if no values masked
*/
    __pyx_t_4 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_ma); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 5333, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_masked_array); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 5333, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_7 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_9))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_9);
      assert(__pyx_t_4);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_9);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_9, __pyx__function);
      __pyx_t_7 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 2 : 0)] = {__pyx_t_4, __pyx_v_data};
      __pyx_t_8 = __Pyx_MakeVectorcallBuilderKwds(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 5333, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_mask, __pyx_v_totalmask, __pyx_t_8, __pyx_callargs+2, 0) < (0)) __PYX_ERR(0, 5333, __pyx_L1_error)
      if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_fill_value, __pyx_v_fill_value, __pyx_t_8, __pyx_callargs+2, 1) < (0)) __PYX_ERR(0, 5333, __pyx_L1_error)
      __pyx_t_5 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_t_9, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_8);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5333, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
    }
    __Pyx_DECREF_SET(__pyx_v_data, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "netCDF4/_netCDF4.pyx":5332
 *         # create masked array with computed mask
 *         masked_values = bool(totalmask.any())
 *         if masked_values:             # <<<<<<<<<<<<<<
 *             data = ma.masked_array(data,mask=totalmask,fill_value=fill_value)
 *         else:
*/
    goto __pyx_L84;
  }

  /* "netCDF4/_netCDF4.pyx":5336
 *         else:
 *             # issue #785: always return masked array, if no values masked
 *             data = ma.masked_array(data)             # <<<<<<<<<<<<<<
 *         # issue 515 scalar array with mask=True should be converted
 *         # to numpy.ma.MaskedConstant to be consistent with slicing
*/
  /*else*/ {
    __pyx_t_9 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_ma); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 5336, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_masked_array); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5336, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_7 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_4);
      assert(__pyx_t_9);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_9);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
      __pyx_t_7 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_v_data};
      __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5336, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
    }
    __Pyx_DECREF_SET(__pyx_v_data, __pyx_t_5);
    __pyx_t_5 = 0;
  }
  __pyx_L84:;

  /* "netCDF4/_netCDF4.pyx":5340
 *         # to numpy.ma.MaskedConstant to be consistent with slicing
 *         # behavior of masked arrays.
 *         if data.shape == () and data.mask.all():             # <<<<<<<<<<<<<<
 *             # return a scalar numpy masked constant not a 0-d masked array,
 *             # so that data == numpy.ma.masked.
*/
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_mstate_global->__pyx_n_u_shape); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5340, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = PyObject_RichCompare(__pyx_t_5, __pyx_mstate_global->__pyx_empty_tuple, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5340, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 5340, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_3) {
  } else {
    __pyx_t_2 = __pyx_t_3;
    goto __pyx_L86_bool_binop_done;
  }
  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_mstate_global->__pyx_n_u_mask); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 5340, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_5 = __pyx_t_9;
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_7 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
    __pyx_t_4 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_all, __pyx_callargs+__pyx_t_7, (1-__pyx_t_7) | (1*__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_4)) __PYX_ERR(0, 5340, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
  }
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 5340, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_2 = __pyx_t_3;
  __pyx_L86_bool_binop_done:;
  if (__pyx_t_2) {

    /* "netCDF4/_netCDF4.pyx":5343
 *             # return a scalar numpy masked constant not a 0-d masked array,
 *             # so that data == numpy.ma.masked.
 *             data = data[()] # changed from [...] (issue #662)             # <<<<<<<<<<<<<<
 *         elif not self.always_mask and not masked_values:
 *             # issue #809: return a regular numpy array if requested
*/
    __pyx_t_4 = __Pyx_PyObject_GetItem(__pyx_v_data, __pyx_mstate_global->__pyx_empty_tuple); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5343, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_data, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "netCDF4/_netCDF4.pyx":5340
 *         # to numpy.ma.MaskedConstant to be consistent with slicing
 *         # behavior of masked arrays.
 *         if data.shape == () and data.mask.all():             # <<<<<<<<<<<<<<
 *             # return a scalar numpy masked constant not a 0-d masked array,
 *             # so that data == numpy.ma.masked.
*/
    goto __pyx_L85;
  }

  /* "netCDF4/_netCDF4.pyx":5344
 *             # so that data == numpy.ma.masked.
 *             data = data[()] # changed from [...] (issue #662)
 *         elif not self.always_mask and not masked_values:             # <<<<<<<<<<<<<<
 *             # issue #809: return a regular numpy array if requested
 *             # and there are no missing values
*/
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_self->always_mask); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 5344, __pyx_L1_error)
  __pyx_t_17 = (!__pyx_t_3);
  if (__pyx_t_17) {
  } else {
    __pyx_t_2 = __pyx_t_17;
    goto __pyx_L88_bool_binop_done;
  }
  __pyx_t_17 = (!__pyx_v_masked_values);
  __pyx_t_2 = __pyx_t_17;
  __pyx_L88_bool_binop_done:;
  if (__pyx_t_2) {

    /* "netCDF4/_netCDF4.pyx":5347
 *             # issue #809: return a regular numpy array if requested
 *             # and there are no missing values
 *             data = numpy.array(data, copy=False)             # <<<<<<<<<<<<<<
 * 
 *         return data
*/
    __pyx_t_9 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5347, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_array); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 5347, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_7 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_8))) {
      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8);
      assert(__pyx_t_9);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_8);
      __Pyx_INCREF(__pyx_t_9);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_8, __pyx__function);
      __pyx_t_7 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_9, __pyx_v_data};
      __pyx_t_5 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5347, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_copy, Py_False, __pyx_t_5, __pyx_callargs+2, 0) < (0)) __PYX_ERR(0, 5347, __pyx_L1_error)
      __pyx_t_4 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_t_8, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_5);
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5347, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_DECREF_SET(__pyx_v_data, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "netCDF4/_netCDF4.pyx":5344
 *             # so that data == numpy.ma.masked.
 *             data = data[()] # changed from [...] (issue #662)
 *         elif not self.always_mask and not masked_values:             # <<<<<<<<<<<<<<
 *             # issue #809: return a regular numpy array if requested
 *             # and there are no missing values
*/
  }
  __pyx_L85:;

  /* "netCDF4/_netCDF4.pyx":5349
 *             data = numpy.array(data, copy=False)
 * 
 *         return data             # <<<<<<<<<<<<<<
 * 
 *     def _pack(self,data):
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_data);
  __pyx_r = __pyx_v_data;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":5177
 *         return data
 * 
 *     def _toma(self,data):             # <<<<<<<<<<<<<<
 *         cdef int ierr, no_fill
 *         # if attribute _Unsigned is "true", and variable has signed integer
*/

  /* 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_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("netCDF4._netCDF4.Variable._toma", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_is_unsigned_int);
  __Pyx_XDECREF(__pyx_v_dtype_unsigned_int);
  __Pyx_XDECREF(__pyx_v_totalmask);
  __Pyx_XDECREF(__pyx_v_fill_value);
  __Pyx_XDECREF(__pyx_v_safe_missval);
  __Pyx_XDECREF(__pyx_v_mval);
  __Pyx_XDECREF(__pyx_v_mvalmask);
  __Pyx_XDECREF(__pyx_v_m);
  __Pyx_XDECREF(__pyx_v_mvalisnan);
  __Pyx_XDECREF(__pyx_v_safe_fillval);
  __Pyx_XDECREF(__pyx_v_fval);
  __Pyx_XDECREF(__pyx_v_fvalisnan);
  __Pyx_XDECREF(__pyx_v_mask);
  __Pyx_XDECREF(__pyx_v_fillval);
  __Pyx_XDECREF(__pyx_v_has_fillval);
  __Pyx_XDECREF(__pyx_v_validmin);
  __Pyx_XDECREF(__pyx_v_validmax);
  __Pyx_XDECREF(__pyx_v_safe_validrange);
  __Pyx_XDECREF(__pyx_v_safe_validmin);
  __Pyx_XDECREF(__pyx_v_safe_validmax);
  __Pyx_XDECREF(__pyx_v_data);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":5351
 *         return data
 * 
 *     def _pack(self,data):             # <<<<<<<<<<<<<<
 *         # pack non-masked values using scale_factor and add_offset
 *         if hasattr(self, 'scale_factor') and hasattr(self, 'add_offset'):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_55_pack(PyObject *__pyx_v_self, 
#if 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_7netCDF4_8_netCDF4_8Variable_55_pack = {"_pack", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_8Variable_55_pack, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_55_pack(PyObject *__pyx_v_self, 
#if CYTHON_METH_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("_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_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(0, 5351, __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(0, 5351, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_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(0, 5351, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("_pack", 1, 1, 1, i); __PYX_ERR(0, 5351, __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(0, 5351, __pyx_L3_error)
    }
    __pyx_v_data = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_pack", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 5351, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4.Variable._pack", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_8Variable_54_pack(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__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_7netCDF4_8_netCDF4_8Variable_54_pack(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_v_fillval = NULL;
  PyObject *__pyx_v_msg = NULL;
  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;
  size_t __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_pack", 0);
  __Pyx_INCREF(__pyx_v_data);

  /* "netCDF4/_netCDF4.pyx":5353
 *     def _pack(self,data):
 *         # pack non-masked values using scale_factor and add_offset
 *         if hasattr(self, 'scale_factor') and hasattr(self, 'add_offset'):             # <<<<<<<<<<<<<<
 *             data = (data - self.add_offset)/self.scale_factor
 *             if self.dtype.kind in 'iu': data = numpy.around(data)
*/
  __pyx_t_2 = __Pyx_HasAttr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_scale_factor); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 5353, __pyx_L1_error)
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = __Pyx_HasAttr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_add_offset); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 5353, __pyx_L1_error)
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "netCDF4/_netCDF4.pyx":5354
 *         # pack non-masked values using scale_factor and add_offset
 *         if hasattr(self, 'scale_factor') and hasattr(self, 'add_offset'):
 *             data = (data - self.add_offset)/self.scale_factor             # <<<<<<<<<<<<<<
 *             if self.dtype.kind in 'iu': data = numpy.around(data)
 *         elif hasattr(self, 'scale_factor'):
*/
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_add_offset); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5354, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyNumber_Subtract(__pyx_v_data, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5354, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_scale_factor); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5354, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_5 = __Pyx_PyNumber_Divide(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5354, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF_SET(__pyx_v_data, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "netCDF4/_netCDF4.pyx":5355
 *         if hasattr(self, 'scale_factor') and hasattr(self, 'add_offset'):
 *             data = (data - self.add_offset)/self.scale_factor
 *             if self.dtype.kind in 'iu': data = numpy.around(data)             # <<<<<<<<<<<<<<
 *         elif hasattr(self, 'scale_factor'):
 *             data = data/self.scale_factor
*/
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->dtype, __pyx_mstate_global->__pyx_n_u_kind); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5355, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_1 = (__Pyx_PyUnicode_ContainsTF(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_iu, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 5355, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (__pyx_t_1) {
      __pyx_t_3 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5355, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_around); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5355, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_7 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_6))) {
        __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6);
        assert(__pyx_t_3);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_6, __pyx__function);
        __pyx_t_7 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_data};
        __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_6, __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_6); __pyx_t_6 = 0;
        if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5355, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
      }
      __Pyx_DECREF_SET(__pyx_v_data, __pyx_t_5);
      __pyx_t_5 = 0;
    }

    /* "netCDF4/_netCDF4.pyx":5353
 *     def _pack(self,data):
 *         # pack non-masked values using scale_factor and add_offset
 *         if hasattr(self, 'scale_factor') and hasattr(self, 'add_offset'):             # <<<<<<<<<<<<<<
 *             data = (data - self.add_offset)/self.scale_factor
 *             if self.dtype.kind in 'iu': data = numpy.around(data)
*/
    goto __pyx_L3;
  }

  /* "netCDF4/_netCDF4.pyx":5356
 *             data = (data - self.add_offset)/self.scale_factor
 *             if self.dtype.kind in 'iu': data = numpy.around(data)
 *         elif hasattr(self, 'scale_factor'):             # <<<<<<<<<<<<<<
 *             data = data/self.scale_factor
 *             if self.dtype.kind in 'iu': data = numpy.around(data)
*/
  __pyx_t_1 = __Pyx_HasAttr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_scale_factor); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 5356, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "netCDF4/_netCDF4.pyx":5357
 *             if self.dtype.kind in 'iu': data = numpy.around(data)
 *         elif hasattr(self, 'scale_factor'):
 *             data = data/self.scale_factor             # <<<<<<<<<<<<<<
 *             if self.dtype.kind in 'iu': data = numpy.around(data)
 *         elif hasattr(self, 'add_offset'):
*/
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_scale_factor); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5357, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __Pyx_PyNumber_Divide(__pyx_v_data, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5357, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF_SET(__pyx_v_data, __pyx_t_6);
    __pyx_t_6 = 0;

    /* "netCDF4/_netCDF4.pyx":5358
 *         elif hasattr(self, 'scale_factor'):
 *             data = data/self.scale_factor
 *             if self.dtype.kind in 'iu': data = numpy.around(data)             # <<<<<<<<<<<<<<
 *         elif hasattr(self, 'add_offset'):
 *             data = data - self.add_offset
*/
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->dtype, __pyx_mstate_global->__pyx_n_u_kind); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5358, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_1 = (__Pyx_PyUnicode_ContainsTF(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_iu, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 5358, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (__pyx_t_1) {
      __pyx_t_5 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5358, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_around); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5358, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_7 = 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_7 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_data};
        __pyx_t_6 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __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_6)) __PYX_ERR(0, 5358, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
      }
      __Pyx_DECREF_SET(__pyx_v_data, __pyx_t_6);
      __pyx_t_6 = 0;
    }

    /* "netCDF4/_netCDF4.pyx":5356
 *             data = (data - self.add_offset)/self.scale_factor
 *             if self.dtype.kind in 'iu': data = numpy.around(data)
 *         elif hasattr(self, 'scale_factor'):             # <<<<<<<<<<<<<<
 *             data = data/self.scale_factor
 *             if self.dtype.kind in 'iu': data = numpy.around(data)
*/
    goto __pyx_L3;
  }

  /* "netCDF4/_netCDF4.pyx":5359
 *             data = data/self.scale_factor
 *             if self.dtype.kind in 'iu': data = numpy.around(data)
 *         elif hasattr(self, 'add_offset'):             # <<<<<<<<<<<<<<
 *             data = data - self.add_offset
 *             if self.dtype.kind in 'iu': data = numpy.around(data)
*/
  __pyx_t_1 = __Pyx_HasAttr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_add_offset); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 5359, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "netCDF4/_netCDF4.pyx":5360
 *             if self.dtype.kind in 'iu': data = numpy.around(data)
 *         elif hasattr(self, 'add_offset'):
 *             data = data - self.add_offset             # <<<<<<<<<<<<<<
 *             if self.dtype.kind in 'iu': data = numpy.around(data)
 *         if self.dtype != data.dtype:
*/
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_add_offset); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5360, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_4 = PyNumber_Subtract(__pyx_v_data, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5360, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF_SET(__pyx_v_data, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "netCDF4/_netCDF4.pyx":5361
 *         elif hasattr(self, 'add_offset'):
 *             data = data - self.add_offset
 *             if self.dtype.kind in 'iu': data = numpy.around(data)             # <<<<<<<<<<<<<<
 *         if self.dtype != data.dtype:
 *             data = data.astype(self.dtype) # cast data to var type, if necessary.
*/
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->dtype, __pyx_mstate_global->__pyx_n_u_kind); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5361, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_1 = (__Pyx_PyUnicode_ContainsTF(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_iu, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 5361, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (__pyx_t_1) {
      __pyx_t_6 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5361, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_around); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5361, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_7 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_3))) {
        __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
        assert(__pyx_t_6);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
        __pyx_t_7 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_v_data};
        __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_3, __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_3); __pyx_t_3 = 0;
        if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5361, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
      }
      __Pyx_DECREF_SET(__pyx_v_data, __pyx_t_4);
      __pyx_t_4 = 0;
    }

    /* "netCDF4/_netCDF4.pyx":5359
 *             data = data/self.scale_factor
 *             if self.dtype.kind in 'iu': data = numpy.around(data)
 *         elif hasattr(self, 'add_offset'):             # <<<<<<<<<<<<<<
 *             data = data - self.add_offset
 *             if self.dtype.kind in 'iu': data = numpy.around(data)
*/
  }
  __pyx_L3:;

  /* "netCDF4/_netCDF4.pyx":5362
 *             data = data - self.add_offset
 *             if self.dtype.kind in 'iu': data = numpy.around(data)
 *         if self.dtype != data.dtype:             # <<<<<<<<<<<<<<
 *             data = data.astype(self.dtype) # cast data to var type, if necessary.
 *         if ma.isMA(data):
*/
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_mstate_global->__pyx_n_u_dtype); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5362, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = PyObject_RichCompare(__pyx_v_self->dtype, __pyx_t_4, Py_NE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5362, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 5362, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__pyx_t_1) {

    /* "netCDF4/_netCDF4.pyx":5363
 *             if self.dtype.kind in 'iu': data = numpy.around(data)
 *         if self.dtype != data.dtype:
 *             data = data.astype(self.dtype) # cast data to var type, if necessary.             # <<<<<<<<<<<<<<
 *         if ma.isMA(data):
 *             # if underlying data in masked regions of masked array
*/
    __pyx_t_4 = __pyx_v_data;
    __Pyx_INCREF(__pyx_t_4);
    __pyx_t_7 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_self->dtype};
      __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_astype, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5363, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __Pyx_DECREF_SET(__pyx_v_data, __pyx_t_3);
    __pyx_t_3 = 0;

    /* "netCDF4/_netCDF4.pyx":5362
 *             data = data - self.add_offset
 *             if self.dtype.kind in 'iu': data = numpy.around(data)
 *         if self.dtype != data.dtype:             # <<<<<<<<<<<<<<
 *             data = data.astype(self.dtype) # cast data to var type, if necessary.
 *         if ma.isMA(data):
*/
  }

  /* "netCDF4/_netCDF4.pyx":5364
 *         if self.dtype != data.dtype:
 *             data = data.astype(self.dtype) # cast data to var type, if necessary.
 *         if ma.isMA(data):             # <<<<<<<<<<<<<<
 *             # if underlying data in masked regions of masked array
 *             # corresponds to missing values, don't fill masked array -
*/
  __pyx_t_4 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_ma); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5364, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_isMA); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5364, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_7 = 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_7 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_data};
    __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __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_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5364, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  }
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 5364, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__pyx_t_1) {

    /* "netCDF4/_netCDF4.pyx":5368
 *             # corresponds to missing values, don't fill masked array -
 *             # just use underlying data instead
 *             if hasattr(self, 'missing_value') and \             # <<<<<<<<<<<<<<
 *                numpy.all(numpy.isin(data.data[data.mask],self.missing_value)):
 *                 data = data.data
*/
    __pyx_t_2 = __Pyx_HasAttr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_missing_value); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 5368, __pyx_L1_error)
    if (__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L12_bool_binop_done;
    }

    /* "netCDF4/_netCDF4.pyx":5369
 *             # just use underlying data instead
 *             if hasattr(self, 'missing_value') and \
 *                numpy.all(numpy.isin(data.data[data.mask],self.missing_value)):             # <<<<<<<<<<<<<<
 *                 data = data.data
 *             else:
*/
    __pyx_t_5 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5369, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_all); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5369, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_8 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_mstate_global->__pyx_n_u_numpy); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 5369, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_mstate_global->__pyx_n_u_isin); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 5369, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_mstate_global->__pyx_n_u_data); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 5369, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_mstate_global->__pyx_n_u_mask); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 5369, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __pyx_t_12 = __Pyx_PyObject_GetItem(__pyx_t_9, __pyx_t_11); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 5369, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __pyx_t_11 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_missing_value); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 5369, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __pyx_t_7 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_10))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_10);
      assert(__pyx_t_8);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_10);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_10, __pyx__function);
      __pyx_t_7 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_8, __pyx_t_12, __pyx_t_11};
      __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_10, __pyx_callargs+__pyx_t_7, (3-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5369, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
    }
    __pyx_t_7 = 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_7 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_4};
      __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_6, __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;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5369, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 5369, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_1 = __pyx_t_2;
    __pyx_L12_bool_binop_done:;

    /* "netCDF4/_netCDF4.pyx":5368
 *             # corresponds to missing values, don't fill masked array -
 *             # just use underlying data instead
 *             if hasattr(self, 'missing_value') and \             # <<<<<<<<<<<<<<
 *                numpy.all(numpy.isin(data.data[data.mask],self.missing_value)):
 *                 data = data.data
*/
    if (__pyx_t_1) {

      /* "netCDF4/_netCDF4.pyx":5370
 *             if hasattr(self, 'missing_value') and \
 *                numpy.all(numpy.isin(data.data[data.mask],self.missing_value)):
 *                 data = data.data             # <<<<<<<<<<<<<<
 *             else:
 *                 if hasattr(self, 'missing_value'):
*/
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_mstate_global->__pyx_n_u_data); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5370, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF_SET(__pyx_v_data, __pyx_t_3);
      __pyx_t_3 = 0;

      /* "netCDF4/_netCDF4.pyx":5368
 *             # corresponds to missing values, don't fill masked array -
 *             # just use underlying data instead
 *             if hasattr(self, 'missing_value') and \             # <<<<<<<<<<<<<<
 *                numpy.all(numpy.isin(data.data[data.mask],self.missing_value)):
 *                 data = data.data
*/
      goto __pyx_L11;
    }

    /* "netCDF4/_netCDF4.pyx":5372
 *                 data = data.data
 *             else:
 *                 if hasattr(self, 'missing_value'):             # <<<<<<<<<<<<<<
 *                     # if missing value is a scalar, use it as fill_value.
 *                     # if missing value is a vector, raise an exception
*/
    /*else*/ {
      __pyx_t_1 = __Pyx_HasAttr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_missing_value); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 5372, __pyx_L1_error)
      if (__pyx_t_1) {

        /* "netCDF4/_netCDF4.pyx":5376
 *                     # if missing value is a vector, raise an exception
 *                     # since we then don't know how to fill in masked values.
 *                     if numpy.array(self.missing_value).shape == ():             # <<<<<<<<<<<<<<
 *                         fillval = self.missing_value
 *                     else:
*/
        __pyx_t_6 = NULL;
        __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5376, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_array); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5376, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_missing_value); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5376, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_7 = 1;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_5))) {
          __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
          assert(__pyx_t_6);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_6);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
          __pyx_t_7 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_4};
          __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __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_4); __pyx_t_4 = 0;
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5376, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
        }
        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_shape); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5376, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_t_3 = PyObject_RichCompare(__pyx_t_5, __pyx_mstate_global->__pyx_empty_tuple, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5376, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 5376, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        if (likely(__pyx_t_1)) {

          /* "netCDF4/_netCDF4.pyx":5377
 *                     # since we then don't know how to fill in masked values.
 *                     if numpy.array(self.missing_value).shape == ():
 *                         fillval = self.missing_value             # <<<<<<<<<<<<<<
 *                     else:
 *                         msg="cannot assign fill_value for masked array when missing_value attribute is not a scalar"
*/
          __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_missing_value); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5377, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
          __pyx_v_fillval = __pyx_t_3;
          __pyx_t_3 = 0;

          /* "netCDF4/_netCDF4.pyx":5376
 *                     # if missing value is a vector, raise an exception
 *                     # since we then don't know how to fill in masked values.
 *                     if numpy.array(self.missing_value).shape == ():             # <<<<<<<<<<<<<<
 *                         fillval = self.missing_value
 *                     else:
*/
          goto __pyx_L15;
        }

        /* "netCDF4/_netCDF4.pyx":5379
 *                         fillval = self.missing_value
 *                     else:
 *                         msg="cannot assign fill_value for masked array when missing_value attribute is not a scalar"             # <<<<<<<<<<<<<<
 *                         raise RuntimeError(msg)
 *                     if numpy.array(fillval).shape != ():
*/
        /*else*/ {
          __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u_cannot_assign_fill_value_for_mas);
          __pyx_v_msg = __pyx_mstate_global->__pyx_kp_u_cannot_assign_fill_value_for_mas;

          /* "netCDF4/_netCDF4.pyx":5380
 *                     else:
 *                         msg="cannot assign fill_value for masked array when missing_value attribute is not a scalar"
 *                         raise RuntimeError(msg)             # <<<<<<<<<<<<<<
 *                     if numpy.array(fillval).shape != ():
 *                         fillval = fillval[0]
*/
          __pyx_t_5 = NULL;
          __pyx_t_7 = 1;
          {
            PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_msg};
            __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_RuntimeError)), __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(0, 5380, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_3);
          }
          __Pyx_Raise(__pyx_t_3, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          __PYX_ERR(0, 5380, __pyx_L1_error)
        }
        __pyx_L15:;

        /* "netCDF4/_netCDF4.pyx":5381
 *                         msg="cannot assign fill_value for masked array when missing_value attribute is not a scalar"
 *                         raise RuntimeError(msg)
 *                     if numpy.array(fillval).shape != ():             # <<<<<<<<<<<<<<
 *                         fillval = fillval[0]
 *                 elif hasattr(self, '_FillValue'):
*/
        __pyx_t_5 = NULL;
        __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5381, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_array); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5381, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_7 = 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_7 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_fillval};
          __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_6, __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_6); __pyx_t_6 = 0;
          if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5381, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
        }
        __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_shape); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5381, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_t_3 = PyObject_RichCompare(__pyx_t_6, __pyx_mstate_global->__pyx_empty_tuple, Py_NE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5381, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 5381, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        if (__pyx_t_1) {

          /* "netCDF4/_netCDF4.pyx":5382
 *                         raise RuntimeError(msg)
 *                     if numpy.array(fillval).shape != ():
 *                         fillval = fillval[0]             # <<<<<<<<<<<<<<
 *                 elif hasattr(self, '_FillValue'):
 *                     fillval = self._FillValue
*/
          __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_fillval, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5382, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_DECREF_SET(__pyx_v_fillval, __pyx_t_3);
          __pyx_t_3 = 0;

          /* "netCDF4/_netCDF4.pyx":5381
 *                         msg="cannot assign fill_value for masked array when missing_value attribute is not a scalar"
 *                         raise RuntimeError(msg)
 *                     if numpy.array(fillval).shape != ():             # <<<<<<<<<<<<<<
 *                         fillval = fillval[0]
 *                 elif hasattr(self, '_FillValue'):
*/
        }

        /* "netCDF4/_netCDF4.pyx":5372
 *                 data = data.data
 *             else:
 *                 if hasattr(self, 'missing_value'):             # <<<<<<<<<<<<<<
 *                     # if missing value is a scalar, use it as fill_value.
 *                     # if missing value is a vector, raise an exception
*/
        goto __pyx_L14;
      }

      /* "netCDF4/_netCDF4.pyx":5383
 *                     if numpy.array(fillval).shape != ():
 *                         fillval = fillval[0]
 *                 elif hasattr(self, '_FillValue'):             # <<<<<<<<<<<<<<
 *                     fillval = self._FillValue
 *                 else:
*/
      __pyx_t_1 = __Pyx_HasAttr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_FillValue); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 5383, __pyx_L1_error)
      if (__pyx_t_1) {

        /* "netCDF4/_netCDF4.pyx":5384
 *                         fillval = fillval[0]
 *                 elif hasattr(self, '_FillValue'):
 *                     fillval = self._FillValue             # <<<<<<<<<<<<<<
 *                 else:
 *                     fillval = default_fillvals[self.dtype.str[1:]]
*/
        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_FillValue); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5384, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_v_fillval = __pyx_t_3;
        __pyx_t_3 = 0;

        /* "netCDF4/_netCDF4.pyx":5383
 *                     if numpy.array(fillval).shape != ():
 *                         fillval = fillval[0]
 *                 elif hasattr(self, '_FillValue'):             # <<<<<<<<<<<<<<
 *                     fillval = self._FillValue
 *                 else:
*/
        goto __pyx_L14;
      }

      /* "netCDF4/_netCDF4.pyx":5386
 *                     fillval = self._FillValue
 *                 else:
 *                     fillval = default_fillvals[self.dtype.str[1:]]             # <<<<<<<<<<<<<<
 *                 # some versions of numpy have trouble handling
 *                 # MaskedConstants when filling - this is is
*/
      /*else*/ {
        __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_default_fillvals); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5386, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->dtype, __pyx_mstate_global->__pyx_n_u_str); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5386, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_5 = __Pyx_PyObject_GetSlice(__pyx_t_6, 1, 0, NULL, NULL, &__pyx_mstate_global->__pyx_slice[0], 1, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5386, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5386, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_v_fillval = __pyx_t_6;
        __pyx_t_6 = 0;
      }
      __pyx_L14:;

      /* "netCDF4/_netCDF4.pyx":5390
 *                 # MaskedConstants when filling - this is is
 *                 # a workaround (issue #850)
 *                 if data.shape == (1,) and data.mask.all():             # <<<<<<<<<<<<<<
 *                     data = numpy.array([fillval],self.dtype)
 *                 else:
*/
      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_mstate_global->__pyx_n_u_shape); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5390, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_5 = PyObject_RichCompare(__pyx_t_6, __pyx_mstate_global->__pyx_tuple[12], Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5390, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 5390, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (__pyx_t_2) {
      } else {
        __pyx_t_1 = __pyx_t_2;
        goto __pyx_L18_bool_binop_done;
      }
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_mstate_global->__pyx_n_u_mask); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5390, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_6 = __pyx_t_3;
      __Pyx_INCREF(__pyx_t_6);
      __pyx_t_7 = 0;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL};
        __pyx_t_5 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_all, __pyx_callargs+__pyx_t_7, (1-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5390, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
      }
      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 5390, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_1 = __pyx_t_2;
      __pyx_L18_bool_binop_done:;
      if (__pyx_t_1) {

        /* "netCDF4/_netCDF4.pyx":5391
 *                 # a workaround (issue #850)
 *                 if data.shape == (1,) and data.mask.all():
 *                     data = numpy.array([fillval],self.dtype)             # <<<<<<<<<<<<<<
 *                 else:
 *                     data = data.filled(fill_value=fillval)
*/
        __pyx_t_3 = NULL;
        __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5391, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_array); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5391, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_6 = PyList_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5391, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_INCREF(__pyx_v_fillval);
        __Pyx_GIVEREF(__pyx_v_fillval);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_6, 0, __pyx_v_fillval) != (0)) __PYX_ERR(0, 5391, __pyx_L1_error);
        __pyx_t_7 = 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_7 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_t_6, __pyx_v_self->dtype};
          __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_7, (3-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5391, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
        }
        __Pyx_DECREF_SET(__pyx_v_data, __pyx_t_5);
        __pyx_t_5 = 0;

        /* "netCDF4/_netCDF4.pyx":5390
 *                 # MaskedConstants when filling - this is is
 *                 # a workaround (issue #850)
 *                 if data.shape == (1,) and data.mask.all():             # <<<<<<<<<<<<<<
 *                     data = numpy.array([fillval],self.dtype)
 *                 else:
*/
        goto __pyx_L17;
      }

      /* "netCDF4/_netCDF4.pyx":5393
 *                     data = numpy.array([fillval],self.dtype)
 *                 else:
 *                     data = data.filled(fill_value=fillval)             # <<<<<<<<<<<<<<
 *         return data
 * 
*/
      /*else*/ {
        __pyx_t_4 = __pyx_v_data;
        __Pyx_INCREF(__pyx_t_4);
        __pyx_t_7 = 0;
        {
          PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_4, NULL};
          __pyx_t_6 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5393, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_fill_value, __pyx_v_fillval, __pyx_t_6, __pyx_callargs+1, 0) < (0)) __PYX_ERR(0, 5393, __pyx_L1_error)
          __pyx_t_5 = __Pyx_Object_VectorcallMethod_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_n_u_filled, __pyx_callargs+__pyx_t_7, (1-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_6);
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5393, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
        }
        __Pyx_DECREF_SET(__pyx_v_data, __pyx_t_5);
        __pyx_t_5 = 0;
      }
      __pyx_L17:;
    }
    __pyx_L11:;

    /* "netCDF4/_netCDF4.pyx":5364
 *         if self.dtype != data.dtype:
 *             data = data.astype(self.dtype) # cast data to var type, if necessary.
 *         if ma.isMA(data):             # <<<<<<<<<<<<<<
 *             # if underlying data in masked regions of masked array
 *             # corresponds to missing values, don't fill masked array -
*/
  }

  /* "netCDF4/_netCDF4.pyx":5394
 *                 else:
 *                     data = data.filled(fill_value=fillval)
 *         return data             # <<<<<<<<<<<<<<
 * 
 *     def _assign_vlen(self, elem, data):
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_data);
  __pyx_r = __pyx_v_data;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":5351
 *         return data
 * 
 *     def _pack(self,data):             # <<<<<<<<<<<<<<
 *         # pack non-masked values using scale_factor and add_offset
 *         if hasattr(self, 'scale_factor') and hasattr(self, 'add_offset'):
*/

  /* 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_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_AddTraceback("netCDF4._netCDF4.Variable._pack", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_fillval);
  __Pyx_XDECREF(__pyx_v_msg);
  __Pyx_XDECREF(__pyx_v_data);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":5396
 *         return data
 * 
 *     def _assign_vlen(self, elem, data):             # <<<<<<<<<<<<<<
 *         """private method to assign data to a single item in a VLEN variable"""
 *         cdef size_t *startp
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_57_assign_vlen(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7netCDF4_8_netCDF4_8Variable_56_assign_vlen, "private method to assign data to a single item in a VLEN variable");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_8Variable_57_assign_vlen = {"_assign_vlen", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_8Variable_57_assign_vlen, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_8Variable_56_assign_vlen};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_57_assign_vlen(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_elem = 0;
  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[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_assign_vlen (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_elem,&__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(0, 5396, __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(0, 5396, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 5396, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "_assign_vlen", 0) < (0)) __PYX_ERR(0, 5396, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("_assign_vlen", 1, 2, 2, i); __PYX_ERR(0, 5396, __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(0, 5396, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 5396, __pyx_L3_error)
    }
    __pyx_v_elem = values[0];
    __pyx_v_data = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_assign_vlen", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 5396, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4.Variable._assign_vlen", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_8Variable_56_assign_vlen(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self), __pyx_v_elem, __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_7netCDF4_8_netCDF4_8Variable_56_assign_vlen(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, PyObject *__pyx_v_elem, PyObject *__pyx_v_data) {
  size_t *__pyx_v_startp;
  size_t *__pyx_v_countp;
  int __pyx_v_ndims;
  int __pyx_v_n;
  nc_vlen_t *__pyx_v_vldata;
  char **__pyx_v_strdata;
  PyArrayObject *__pyx_v_data2 = 0;
  PyObject *__pyx_v_msg = NULL;
  PyObject *__pyx_v_elemnew = NULL;
  PyObject *__pyx_v_e = NULL;
  PyObject *__pyx_v_enew = NULL;
  PyObject *__pyx_v_start = NULL;
  PyObject *__pyx_v_count = NULL;
  PyObject *__pyx_v_encoding = NULL;
  PyObject *__pyx_v_bytestr = NULL;
  int __pyx_v_ierr;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  size_t __pyx_t_5;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  Py_ssize_t __pyx_t_8;
  PyObject *(*__pyx_t_9)(PyObject *);
  PyObject *__pyx_t_10 = NULL;
  int __pyx_t_11;
  int __pyx_t_12;
  int __pyx_t_13;
  struct __pyx_opt_args_7netCDF4_8_netCDF4__strencode __pyx_t_14;
  char *__pyx_t_15;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17[4];
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_assign_vlen", 0);
  __Pyx_INCREF(__pyx_v_elem);

  /* "netCDF4/_netCDF4.pyx":5404
 *         cdef char **strdata
 *         cdef ndarray data2
 *         if not self._isvlen:             # <<<<<<<<<<<<<<
 *             raise TypeError('_assign_vlen method only for use with VLEN variables')
 *         ndims = self.ndim
*/
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->_isvlen); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 5404, __pyx_L1_error)
  __pyx_t_2 = (!__pyx_t_1);
  if (unlikely(__pyx_t_2)) {

    /* "netCDF4/_netCDF4.pyx":5405
 *         cdef ndarray data2
 *         if not self._isvlen:
 *             raise TypeError('_assign_vlen method only for use with VLEN variables')             # <<<<<<<<<<<<<<
 *         ndims = self.ndim
 *         msg="data can only be assigned to VLEN variables using integer indices"
*/
    __pyx_t_4 = NULL;
    __pyx_t_5 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_assign_vlen_method_only_for_use};
      __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(0, 5405, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(0, 5405, __pyx_L1_error)

    /* "netCDF4/_netCDF4.pyx":5404
 *         cdef char **strdata
 *         cdef ndarray data2
 *         if not self._isvlen:             # <<<<<<<<<<<<<<
 *             raise TypeError('_assign_vlen method only for use with VLEN variables')
 *         ndims = self.ndim
*/
  }

  /* "netCDF4/_netCDF4.pyx":5406
 *         if not self._isvlen:
 *             raise TypeError('_assign_vlen method only for use with VLEN variables')
 *         ndims = self.ndim             # <<<<<<<<<<<<<<
 *         msg="data can only be assigned to VLEN variables using integer indices"
 *         # check to see that elem is a tuple of integers.
*/
  __pyx_t_6 = __Pyx_PyLong_As_int(__pyx_v_self->ndim); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 5406, __pyx_L1_error)
  __pyx_v_ndims = __pyx_t_6;

  /* "netCDF4/_netCDF4.pyx":5407
 *             raise TypeError('_assign_vlen method only for use with VLEN variables')
 *         ndims = self.ndim
 *         msg="data can only be assigned to VLEN variables using integer indices"             # <<<<<<<<<<<<<<
 *         # check to see that elem is a tuple of integers.
 *         # handle negative integers.
*/
  __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u_data_can_only_be_assigned_to_VLE);
  __pyx_v_msg = __pyx_mstate_global->__pyx_kp_u_data_can_only_be_assigned_to_VLE;

  /* "netCDF4/_netCDF4.pyx":5410
 *         # check to see that elem is a tuple of integers.
 *         # handle negative integers.
 *         if _is_int(elem):             # <<<<<<<<<<<<<<
 *             if ndims > 1:
 *                 raise IndexError(msg)
*/
  __pyx_t_4 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_is_int); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5410, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_7))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_7);
    assert(__pyx_t_4);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7);
    __Pyx_INCREF(__pyx_t_4);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_7, __pyx__function);
    __pyx_t_5 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_elem};
    __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __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_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5410, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  }
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 5410, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__pyx_t_2) {

    /* "netCDF4/_netCDF4.pyx":5411
 *         # handle negative integers.
 *         if _is_int(elem):
 *             if ndims > 1:             # <<<<<<<<<<<<<<
 *                 raise IndexError(msg)
 *             if elem < 0:
*/
    __pyx_t_2 = (__pyx_v_ndims > 1);
    if (unlikely(__pyx_t_2)) {

      /* "netCDF4/_netCDF4.pyx":5412
 *         if _is_int(elem):
 *             if ndims > 1:
 *                 raise IndexError(msg)             # <<<<<<<<<<<<<<
 *             if elem < 0:
 *                 if self.shape[0]+elem >= 0:
*/
      __pyx_t_7 = NULL;
      __pyx_t_5 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_v_msg};
        __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_IndexError)), __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5412, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
      }
      __Pyx_Raise(__pyx_t_3, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __PYX_ERR(0, 5412, __pyx_L1_error)

      /* "netCDF4/_netCDF4.pyx":5411
 *         # handle negative integers.
 *         if _is_int(elem):
 *             if ndims > 1:             # <<<<<<<<<<<<<<
 *                 raise IndexError(msg)
 *             if elem < 0:
*/
    }

    /* "netCDF4/_netCDF4.pyx":5413
 *             if ndims > 1:
 *                 raise IndexError(msg)
 *             if elem < 0:             # <<<<<<<<<<<<<<
 *                 if self.shape[0]+elem >= 0:
 *                     elem = self.shape[0]+elem
*/
    __pyx_t_3 = PyObject_RichCompare(__pyx_v_elem, __pyx_mstate_global->__pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5413, __pyx_L1_error)
    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 5413, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__pyx_t_2) {

      /* "netCDF4/_netCDF4.pyx":5414
 *                 raise IndexError(msg)
 *             if elem < 0:
 *                 if self.shape[0]+elem >= 0:             # <<<<<<<<<<<<<<
 *                     elem = self.shape[0]+elem
 *                 else:
*/
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_shape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5414, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_7 = __Pyx_GetItemInt(__pyx_t_3, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5414, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_3 = PyNumber_Add(__pyx_t_7, __pyx_v_elem); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5414, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_7 = PyObject_RichCompare(__pyx_t_3, __pyx_mstate_global->__pyx_int_0, Py_GE); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5414, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 5414, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (likely(__pyx_t_2)) {

        /* "netCDF4/_netCDF4.pyx":5415
 *             if elem < 0:
 *                 if self.shape[0]+elem >= 0:
 *                     elem = self.shape[0]+elem             # <<<<<<<<<<<<<<
 *                 else:
 *                     raise IndexError("Illegal index")
*/
        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_shape); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5415, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_7, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5415, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_7 = PyNumber_Add(__pyx_t_3, __pyx_v_elem); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5415, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF_SET(__pyx_v_elem, __pyx_t_7);
        __pyx_t_7 = 0;

        /* "netCDF4/_netCDF4.pyx":5414
 *                 raise IndexError(msg)
 *             if elem < 0:
 *                 if self.shape[0]+elem >= 0:             # <<<<<<<<<<<<<<
 *                     elem = self.shape[0]+elem
 *                 else:
*/
        goto __pyx_L7;
      }

      /* "netCDF4/_netCDF4.pyx":5417
 *                     elem = self.shape[0]+elem
 *                 else:
 *                     raise IndexError("Illegal index")             # <<<<<<<<<<<<<<
 *         elif isinstance(elem, tuple):
 *             if len(elem) != ndims:
*/
      /*else*/ {
        __pyx_t_3 = NULL;
        __pyx_t_5 = 1;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_Illegal_index};
          __pyx_t_7 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_IndexError)), __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5417, __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(0, 5417, __pyx_L1_error)
      }
      __pyx_L7:;

      /* "netCDF4/_netCDF4.pyx":5413
 *             if ndims > 1:
 *                 raise IndexError(msg)
 *             if elem < 0:             # <<<<<<<<<<<<<<
 *                 if self.shape[0]+elem >= 0:
 *                     elem = self.shape[0]+elem
*/
    }

    /* "netCDF4/_netCDF4.pyx":5410
 *         # check to see that elem is a tuple of integers.
 *         # handle negative integers.
 *         if _is_int(elem):             # <<<<<<<<<<<<<<
 *             if ndims > 1:
 *                 raise IndexError(msg)
*/
    goto __pyx_L4;
  }

  /* "netCDF4/_netCDF4.pyx":5418
 *                 else:
 *                     raise IndexError("Illegal index")
 *         elif isinstance(elem, tuple):             # <<<<<<<<<<<<<<
 *             if len(elem) != ndims:
 *                 raise IndexError("Illegal index")
*/
  __pyx_t_2 = PyTuple_Check(__pyx_v_elem); 
  if (likely(__pyx_t_2)) {

    /* "netCDF4/_netCDF4.pyx":5419
 *                     raise IndexError("Illegal index")
 *         elif isinstance(elem, tuple):
 *             if len(elem) != ndims:             # <<<<<<<<<<<<<<
 *                 raise IndexError("Illegal index")
 *             elemnew = []
*/
    __pyx_t_8 = PyObject_Length(__pyx_v_elem); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(0, 5419, __pyx_L1_error)
    __pyx_t_2 = (__pyx_t_8 != __pyx_v_ndims);
    if (unlikely(__pyx_t_2)) {

      /* "netCDF4/_netCDF4.pyx":5420
 *         elif isinstance(elem, tuple):
 *             if len(elem) != ndims:
 *                 raise IndexError("Illegal index")             # <<<<<<<<<<<<<<
 *             elemnew = []
 *             for n,e in enumerate(elem):
*/
      __pyx_t_3 = NULL;
      __pyx_t_5 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_Illegal_index};
        __pyx_t_7 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_IndexError)), __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5420, __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(0, 5420, __pyx_L1_error)

      /* "netCDF4/_netCDF4.pyx":5419
 *                     raise IndexError("Illegal index")
 *         elif isinstance(elem, tuple):
 *             if len(elem) != ndims:             # <<<<<<<<<<<<<<
 *                 raise IndexError("Illegal index")
 *             elemnew = []
*/
    }

    /* "netCDF4/_netCDF4.pyx":5421
 *             if len(elem) != ndims:
 *                 raise IndexError("Illegal index")
 *             elemnew = []             # <<<<<<<<<<<<<<
 *             for n,e in enumerate(elem):
 *                 if not _is_int(e):
*/
    __pyx_t_7 = PyList_New(0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5421, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_v_elemnew = ((PyObject*)__pyx_t_7);
    __pyx_t_7 = 0;

    /* "netCDF4/_netCDF4.pyx":5422
 *                 raise IndexError("Illegal index")
 *             elemnew = []
 *             for n,e in enumerate(elem):             # <<<<<<<<<<<<<<
 *                 if not _is_int(e):
 *                     raise IndexError(msg)
*/
    __pyx_t_6 = 0;
    if (likely(PyList_CheckExact(__pyx_v_elem)) || PyTuple_CheckExact(__pyx_v_elem)) {
      __pyx_t_7 = __pyx_v_elem; __Pyx_INCREF(__pyx_t_7);
      __pyx_t_8 = 0;
      __pyx_t_9 = NULL;
    } else {
      __pyx_t_8 = -1; __pyx_t_7 = PyObject_GetIter(__pyx_v_elem); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5422, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_9 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_7); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 5422, __pyx_L1_error)
    }
    for (;;) {
      if (likely(!__pyx_t_9)) {
        if (likely(PyList_CheckExact(__pyx_t_7))) {
          {
            Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_7);
            #if !CYTHON_ASSUME_SAFE_SIZE
            if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 5422, __pyx_L1_error)
            #endif
            if (__pyx_t_8 >= __pyx_temp) break;
          }
          __pyx_t_3 = __Pyx_PyList_GetItemRefFast(__pyx_t_7, __pyx_t_8, __Pyx_ReferenceSharing_OwnStrongReference);
          ++__pyx_t_8;
        } else {
          {
            Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_7);
            #if !CYTHON_ASSUME_SAFE_SIZE
            if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 5422, __pyx_L1_error)
            #endif
            if (__pyx_t_8 >= __pyx_temp) break;
          }
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_3 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_7, __pyx_t_8));
          #else
          __pyx_t_3 = __Pyx_PySequence_ITEM(__pyx_t_7, __pyx_t_8);
          #endif
          ++__pyx_t_8;
        }
        if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5422, __pyx_L1_error)
      } else {
        __pyx_t_3 = __pyx_t_9(__pyx_t_7);
        if (unlikely(!__pyx_t_3)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 5422, __pyx_L1_error)
            PyErr_Clear();
          }
          break;
        }
      }
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_XDECREF_SET(__pyx_v_e, __pyx_t_3);
      __pyx_t_3 = 0;
      __pyx_v_n = __pyx_t_6;
      __pyx_t_6 = (__pyx_t_6 + 1);

      /* "netCDF4/_netCDF4.pyx":5423
 *             elemnew = []
 *             for n,e in enumerate(elem):
 *                 if not _is_int(e):             # <<<<<<<<<<<<<<
 *                     raise IndexError(msg)
 *                 elif e < 0:
*/
      __pyx_t_4 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_is_int); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 5423, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __pyx_t_5 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_10))) {
        __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_10);
        assert(__pyx_t_4);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_10);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_10, __pyx__function);
        __pyx_t_5 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_e};
        __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_10, __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_10); __pyx_t_10 = 0;
        if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5423, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
      }
      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 5423, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_1 = (!__pyx_t_2);
      if (unlikely(__pyx_t_1)) {

        /* "netCDF4/_netCDF4.pyx":5424
 *             for n,e in enumerate(elem):
 *                 if not _is_int(e):
 *                     raise IndexError(msg)             # <<<<<<<<<<<<<<
 *                 elif e < 0:
 *                     enew = self.shape[n]+e
*/
        __pyx_t_10 = NULL;
        __pyx_t_5 = 1;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_10, __pyx_v_msg};
          __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_IndexError)), __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
          if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5424, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
        }
        __Pyx_Raise(__pyx_t_3, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __PYX_ERR(0, 5424, __pyx_L1_error)

        /* "netCDF4/_netCDF4.pyx":5423
 *             elemnew = []
 *             for n,e in enumerate(elem):
 *                 if not _is_int(e):             # <<<<<<<<<<<<<<
 *                     raise IndexError(msg)
 *                 elif e < 0:
*/
      }

      /* "netCDF4/_netCDF4.pyx":5425
 *                 if not _is_int(e):
 *                     raise IndexError(msg)
 *                 elif e < 0:             # <<<<<<<<<<<<<<
 *                     enew = self.shape[n]+e
 *                     if enew < 0:
*/
      __pyx_t_3 = PyObject_RichCompare(__pyx_v_e, __pyx_mstate_global->__pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5425, __pyx_L1_error)
      __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 5425, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (__pyx_t_1) {

        /* "netCDF4/_netCDF4.pyx":5426
 *                     raise IndexError(msg)
 *                 elif e < 0:
 *                     enew = self.shape[n]+e             # <<<<<<<<<<<<<<
 *                     if enew < 0:
 *                         raise IndexError("Illegal index")
*/
        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_shape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5426, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_10 = __Pyx_GetItemInt(__pyx_t_3, __pyx_v_n, int, 1, __Pyx_PyLong_From_int, 0, 1, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 5426, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_10);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_t_3 = PyNumber_Add(__pyx_t_10, __pyx_v_e); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5426, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        __Pyx_XDECREF_SET(__pyx_v_enew, __pyx_t_3);
        __pyx_t_3 = 0;

        /* "netCDF4/_netCDF4.pyx":5427
 *                 elif e < 0:
 *                     enew = self.shape[n]+e
 *                     if enew < 0:             # <<<<<<<<<<<<<<
 *                         raise IndexError("Illegal index")
 *                     else:
*/
        __pyx_t_3 = PyObject_RichCompare(__pyx_v_enew, __pyx_mstate_global->__pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5427, __pyx_L1_error)
        __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 5427, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        if (unlikely(__pyx_t_1)) {

          /* "netCDF4/_netCDF4.pyx":5428
 *                     enew = self.shape[n]+e
 *                     if enew < 0:
 *                         raise IndexError("Illegal index")             # <<<<<<<<<<<<<<
 *                     else:
 *                         elemnew.append(self.shape[n]+e)
*/
          __pyx_t_10 = NULL;
          __pyx_t_5 = 1;
          {
            PyObject *__pyx_callargs[2] = {__pyx_t_10, __pyx_mstate_global->__pyx_kp_u_Illegal_index};
            __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_IndexError)), __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
            __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
            if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5428, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_3);
          }
          __Pyx_Raise(__pyx_t_3, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          __PYX_ERR(0, 5428, __pyx_L1_error)

          /* "netCDF4/_netCDF4.pyx":5427
 *                 elif e < 0:
 *                     enew = self.shape[n]+e
 *                     if enew < 0:             # <<<<<<<<<<<<<<
 *                         raise IndexError("Illegal index")
 *                     else:
*/
        }

        /* "netCDF4/_netCDF4.pyx":5430
 *                         raise IndexError("Illegal index")
 *                     else:
 *                         elemnew.append(self.shape[n]+e)             # <<<<<<<<<<<<<<
 *                 else:
 *                     elemnew.append(e)
*/
        /*else*/ {
          __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_shape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5430, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
          __pyx_t_10 = __Pyx_GetItemInt(__pyx_t_3, __pyx_v_n, int, 1, __Pyx_PyLong_From_int, 0, 1, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 5430, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_10);
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          __pyx_t_3 = PyNumber_Add(__pyx_t_10, __pyx_v_e); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5430, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
          __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_elemnew, __pyx_t_3); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(0, 5430, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        }

        /* "netCDF4/_netCDF4.pyx":5425
 *                 if not _is_int(e):
 *                     raise IndexError(msg)
 *                 elif e < 0:             # <<<<<<<<<<<<<<
 *                     enew = self.shape[n]+e
 *                     if enew < 0:
*/
        goto __pyx_L11;
      }

      /* "netCDF4/_netCDF4.pyx":5432
 *                         elemnew.append(self.shape[n]+e)
 *                 else:
 *                     elemnew.append(e)             # <<<<<<<<<<<<<<
 *             elem = tuple(elemnew)
 *         else:
*/
      /*else*/ {
        __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_elemnew, __pyx_v_e); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(0, 5432, __pyx_L1_error)
      }
      __pyx_L11:;

      /* "netCDF4/_netCDF4.pyx":5422
 *                 raise IndexError("Illegal index")
 *             elemnew = []
 *             for n,e in enumerate(elem):             # <<<<<<<<<<<<<<
 *                 if not _is_int(e):
 *                     raise IndexError(msg)
*/
    }
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

    /* "netCDF4/_netCDF4.pyx":5433
 *                 else:
 *                     elemnew.append(e)
 *             elem = tuple(elemnew)             # <<<<<<<<<<<<<<
 *         else:
 *             raise IndexError(msg)
*/
    __pyx_t_7 = PyList_AsTuple(__pyx_v_elemnew); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5433, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF_SET(__pyx_v_elem, __pyx_t_7);
    __pyx_t_7 = 0;

    /* "netCDF4/_netCDF4.pyx":5418
 *                 else:
 *                     raise IndexError("Illegal index")
 *         elif isinstance(elem, tuple):             # <<<<<<<<<<<<<<
 *             if len(elem) != ndims:
 *                 raise IndexError("Illegal index")
*/
    goto __pyx_L4;
  }

  /* "netCDF4/_netCDF4.pyx":5435
 *             elem = tuple(elemnew)
 *         else:
 *             raise IndexError(msg)             # <<<<<<<<<<<<<<
 *         # set start, count
 *         if isinstance(elem, tuple):
*/
  /*else*/ {
    __pyx_t_3 = NULL;
    __pyx_t_5 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_msg};
      __pyx_t_7 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_IndexError)), __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5435, __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(0, 5435, __pyx_L1_error)
  }
  __pyx_L4:;

  /* "netCDF4/_netCDF4.pyx":5437
 *             raise IndexError(msg)
 *         # set start, count
 *         if isinstance(elem, tuple):             # <<<<<<<<<<<<<<
 *             start = list(elem)
 *         else:
*/
  __pyx_t_1 = PyTuple_Check(__pyx_v_elem); 
  if (__pyx_t_1) {

    /* "netCDF4/_netCDF4.pyx":5438
 *         # set start, count
 *         if isinstance(elem, tuple):
 *             start = list(elem)             # <<<<<<<<<<<<<<
 *         else:
 *             start = [elem]
*/
    __pyx_t_7 = PySequence_List(__pyx_v_elem); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5438, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_v_start = ((PyObject*)__pyx_t_7);
    __pyx_t_7 = 0;

    /* "netCDF4/_netCDF4.pyx":5437
 *             raise IndexError(msg)
 *         # set start, count
 *         if isinstance(elem, tuple):             # <<<<<<<<<<<<<<
 *             start = list(elem)
 *         else:
*/
    goto __pyx_L14;
  }

  /* "netCDF4/_netCDF4.pyx":5440
 *             start = list(elem)
 *         else:
 *             start = [elem]             # <<<<<<<<<<<<<<
 *         count = [1]*ndims
 *         startp = <size_t *>malloc(sizeof(size_t) * ndims)
*/
  /*else*/ {
    __pyx_t_7 = PyList_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5440, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_INCREF(__pyx_v_elem);
    __Pyx_GIVEREF(__pyx_v_elem);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_7, 0, __pyx_v_elem) != (0)) __PYX_ERR(0, 5440, __pyx_L1_error);
    __pyx_v_start = ((PyObject*)__pyx_t_7);
    __pyx_t_7 = 0;
  }
  __pyx_L14:;

  /* "netCDF4/_netCDF4.pyx":5441
 *         else:
 *             start = [elem]
 *         count = [1]*ndims             # <<<<<<<<<<<<<<
 *         startp = <size_t *>malloc(sizeof(size_t) * ndims)
 *         countp = <size_t *>malloc(sizeof(size_t) * ndims)
*/
  __pyx_t_7 = PyList_New(1 * ((__pyx_v_ndims<0) ? 0:__pyx_v_ndims)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5441, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  { Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < __pyx_v_ndims; __pyx_temp++) {
      __Pyx_INCREF(__pyx_mstate_global->__pyx_int_1);
      __Pyx_GIVEREF(__pyx_mstate_global->__pyx_int_1);
      if (__Pyx_PyList_SET_ITEM(__pyx_t_7, __pyx_temp, __pyx_mstate_global->__pyx_int_1) != (0)) __PYX_ERR(0, 5441, __pyx_L1_error);
    }
  }
  __pyx_v_count = ((PyObject*)__pyx_t_7);
  __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":5442
 *             start = [elem]
 *         count = [1]*ndims
 *         startp = <size_t *>malloc(sizeof(size_t) * ndims)             # <<<<<<<<<<<<<<
 *         countp = <size_t *>malloc(sizeof(size_t) * ndims)
 *         for n in range(ndims):
*/
  __pyx_v_startp = ((size_t *)malloc(((sizeof(size_t)) * __pyx_v_ndims)));

  /* "netCDF4/_netCDF4.pyx":5443
 *         count = [1]*ndims
 *         startp = <size_t *>malloc(sizeof(size_t) * ndims)
 *         countp = <size_t *>malloc(sizeof(size_t) * ndims)             # <<<<<<<<<<<<<<
 *         for n in range(ndims):
 *             startp[n] = start[n]
*/
  __pyx_v_countp = ((size_t *)malloc(((sizeof(size_t)) * __pyx_v_ndims)));

  /* "netCDF4/_netCDF4.pyx":5444
 *         startp = <size_t *>malloc(sizeof(size_t) * ndims)
 *         countp = <size_t *>malloc(sizeof(size_t) * ndims)
 *         for n in range(ndims):             # <<<<<<<<<<<<<<
 *             startp[n] = start[n]
 *             countp[n] = count[n]
*/
  __pyx_t_6 = __pyx_v_ndims;
  __pyx_t_12 = __pyx_t_6;
  for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
    __pyx_v_n = __pyx_t_13;

    /* "netCDF4/_netCDF4.pyx":5445
 *         countp = <size_t *>malloc(sizeof(size_t) * ndims)
 *         for n in range(ndims):
 *             startp[n] = start[n]             # <<<<<<<<<<<<<<
 *             countp[n] = count[n]
 *         if self.dtype == str: # VLEN string
*/
    __pyx_t_7 = __Pyx_GetItemInt_List(__pyx_v_start, __pyx_v_n, int, 1, __Pyx_PyLong_From_int, 1, 1, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5445, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_5 = __Pyx_PyLong_As_size_t(__pyx_t_7); if (unlikely((__pyx_t_5 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 5445, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    (__pyx_v_startp[__pyx_v_n]) = __pyx_t_5;

    /* "netCDF4/_netCDF4.pyx":5446
 *         for n in range(ndims):
 *             startp[n] = start[n]
 *             countp[n] = count[n]             # <<<<<<<<<<<<<<
 *         if self.dtype == str: # VLEN string
 *             strdata = <char **>malloc(sizeof(char *))
*/
    __pyx_t_7 = __Pyx_GetItemInt_List(__pyx_v_count, __pyx_v_n, int, 1, __Pyx_PyLong_From_int, 1, 1, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5446, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_5 = __Pyx_PyLong_As_size_t(__pyx_t_7); if (unlikely((__pyx_t_5 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 5446, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    (__pyx_v_countp[__pyx_v_n]) = __pyx_t_5;
  }

  /* "netCDF4/_netCDF4.pyx":5447
 *             startp[n] = start[n]
 *             countp[n] = count[n]
 *         if self.dtype == str: # VLEN string             # <<<<<<<<<<<<<<
 *             strdata = <char **>malloc(sizeof(char *))
 *             # use _Encoding attribute to specify string encoding - if
*/
  __pyx_t_7 = PyObject_RichCompare(__pyx_v_self->dtype, ((PyObject *)(&PyUnicode_Type)), Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5447, __pyx_L1_error)
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 5447, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (__pyx_t_1) {

    /* "netCDF4/_netCDF4.pyx":5448
 *             countp[n] = count[n]
 *         if self.dtype == str: # VLEN string
 *             strdata = <char **>malloc(sizeof(char *))             # <<<<<<<<<<<<<<
 *             # use _Encoding attribute to specify string encoding - if
 *             # not given, use 'utf-8'.
*/
    __pyx_v_strdata = ((char **)malloc((sizeof(char *))));

    /* "netCDF4/_netCDF4.pyx":5451
 *             # use _Encoding attribute to specify string encoding - if
 *             # not given, use 'utf-8'.
 *             encoding = getattr(self,'_Encoding','utf-8')             # <<<<<<<<<<<<<<
 *             bytestr = _strencode(data,encoding=encoding)
 *             strdata[0] = bytestr
*/
    __pyx_t_7 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_Encoding, __pyx_mstate_global->__pyx_kp_u_utf_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5451, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_v_encoding = __pyx_t_7;
    __pyx_t_7 = 0;

    /* "netCDF4/_netCDF4.pyx":5452
 *             # not given, use 'utf-8'.
 *             encoding = getattr(self,'_Encoding','utf-8')
 *             bytestr = _strencode(data,encoding=encoding)             # <<<<<<<<<<<<<<
 *             strdata[0] = bytestr
 *             with nogil:
*/
    __pyx_t_14.__pyx_n = 1;
    __pyx_t_14.encoding = __pyx_v_encoding;
    __pyx_t_7 = __pyx_f_7netCDF4_8_netCDF4__strencode(__pyx_v_data, &__pyx_t_14); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5452, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_v_bytestr = __pyx_t_7;
    __pyx_t_7 = 0;

    /* "netCDF4/_netCDF4.pyx":5453
 *             encoding = getattr(self,'_Encoding','utf-8')
 *             bytestr = _strencode(data,encoding=encoding)
 *             strdata[0] = bytestr             # <<<<<<<<<<<<<<
 *             with nogil:
 *                 ierr = nc_put_vara(self._grpid, self._varid,
*/
    __pyx_t_15 = __Pyx_PyObject_AsWritableString(__pyx_v_bytestr); if (unlikely((!__pyx_t_15) && PyErr_Occurred())) __PYX_ERR(0, 5453, __pyx_L1_error)
    (__pyx_v_strdata[0]) = __pyx_t_15;

    /* "netCDF4/_netCDF4.pyx":5454
 *             bytestr = _strencode(data,encoding=encoding)
 *             strdata[0] = bytestr
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 ierr = nc_put_vara(self._grpid, self._varid,
 *                                    startp, countp, strdata)
*/
    {
        PyThreadState * _save;
        _save = PyEval_SaveThread();
        __Pyx_FastGIL_Remember();
        /*try:*/ {

          /* "netCDF4/_netCDF4.pyx":5455
 *             strdata[0] = bytestr
 *             with nogil:
 *                 ierr = nc_put_vara(self._grpid, self._varid,             # <<<<<<<<<<<<<<
 *                                    startp, countp, strdata)
 *             _ensure_nc_success(ierr)
*/
          __pyx_v_ierr = nc_put_vara(__pyx_v_self->_grpid, __pyx_v_self->_varid, __pyx_v_startp, __pyx_v_countp, __pyx_v_strdata);
        }

        /* "netCDF4/_netCDF4.pyx":5454
 *             bytestr = _strencode(data,encoding=encoding)
 *             strdata[0] = bytestr
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 ierr = nc_put_vara(self._grpid, self._varid,
 *                                    startp, countp, strdata)
*/
        /*finally:*/ {
          /*normal exit:*/{
            __Pyx_FastGIL_Forget();
            PyEval_RestoreThread(_save);
            goto __pyx_L20;
          }
          __pyx_L20:;
        }
    }

    /* "netCDF4/_netCDF4.pyx":5457
 *                 ierr = nc_put_vara(self._grpid, self._varid,
 *                                    startp, countp, strdata)
 *             _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 *             free(strdata)
 *         else: # regular VLEN
*/
    __pyx_t_3 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 5457, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_t_4 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5457, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_10))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_10);
      assert(__pyx_t_3);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_10);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_10, __pyx__function);
      __pyx_t_5 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_4};
      __pyx_t_7 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_10, __pyx_callargs+__pyx_t_5, (2-__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;
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5457, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
    }
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

    /* "netCDF4/_netCDF4.pyx":5458
 *                                    startp, countp, strdata)
 *             _ensure_nc_success(ierr)
 *             free(strdata)             # <<<<<<<<<<<<<<
 *         else: # regular VLEN
 *             if data.dtype != self.dtype:
*/
    free(__pyx_v_strdata);

    /* "netCDF4/_netCDF4.pyx":5447
 *             startp[n] = start[n]
 *             countp[n] = count[n]
 *         if self.dtype == str: # VLEN string             # <<<<<<<<<<<<<<
 *             strdata = <char **>malloc(sizeof(char *))
 *             # use _Encoding attribute to specify string encoding - if
*/
    goto __pyx_L17;
  }

  /* "netCDF4/_netCDF4.pyx":5460
 *             free(strdata)
 *         else: # regular VLEN
 *             if data.dtype != self.dtype:             # <<<<<<<<<<<<<<
 *                 raise TypeError("wrong data type: should be %s, got %s" % (self.dtype,data.dtype))
 *             data2 = data
*/
  /*else*/ {
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_mstate_global->__pyx_n_u_dtype); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5460, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_10 = PyObject_RichCompare(__pyx_t_7, __pyx_v_self->dtype, Py_NE); __Pyx_XGOTREF(__pyx_t_10); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 5460, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 5460, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    if (unlikely(__pyx_t_1)) {

      /* "netCDF4/_netCDF4.pyx":5461
 *         else: # regular VLEN
 *             if data.dtype != self.dtype:
 *                 raise TypeError("wrong data type: should be %s, got %s" % (self.dtype,data.dtype))             # <<<<<<<<<<<<<<
 *             data2 = data
 *             vldata = <nc_vlen_t *>malloc(sizeof(nc_vlen_t))
*/
      __pyx_t_7 = NULL;
      __pyx_t_4 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Str(__pyx_v_self->dtype), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5461, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_mstate_global->__pyx_n_u_dtype); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5461, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_16 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Str(__pyx_t_3), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 5461, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_16);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_17[0] = __pyx_mstate_global->__pyx_kp_u_wrong_data_type_should_be;
      __pyx_t_17[1] = __pyx_t_4;
      __pyx_t_17[2] = __pyx_mstate_global->__pyx_kp_u_got;
      __pyx_t_17[3] = __pyx_t_16;
      __pyx_t_3 = __Pyx_PyUnicode_Join(__pyx_t_17, 4, 27 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4) + 6 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_16), 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_16));
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5461, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
      __pyx_t_5 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_3};
        __pyx_t_10 = __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_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 5461, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_10);
      }
      __Pyx_Raise(__pyx_t_10, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __PYX_ERR(0, 5461, __pyx_L1_error)

      /* "netCDF4/_netCDF4.pyx":5460
 *             free(strdata)
 *         else: # regular VLEN
 *             if data.dtype != self.dtype:             # <<<<<<<<<<<<<<
 *                 raise TypeError("wrong data type: should be %s, got %s" % (self.dtype,data.dtype))
 *             data2 = data
*/
    }

    /* "netCDF4/_netCDF4.pyx":5462
 *             if data.dtype != self.dtype:
 *                 raise TypeError("wrong data type: should be %s, got %s" % (self.dtype,data.dtype))
 *             data2 = data             # <<<<<<<<<<<<<<
 *             vldata = <nc_vlen_t *>malloc(sizeof(nc_vlen_t))
 *             vldata[0].len = PyArray_SIZE(data2)
*/
    __pyx_t_10 = __pyx_v_data;
    __Pyx_INCREF(__pyx_t_10);
    if (!(likely(((__pyx_t_10) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_10, __pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_ndarray))))) __PYX_ERR(0, 5462, __pyx_L1_error)
    __pyx_v_data2 = ((PyArrayObject *)__pyx_t_10);
    __pyx_t_10 = 0;

    /* "netCDF4/_netCDF4.pyx":5463
 *                 raise TypeError("wrong data type: should be %s, got %s" % (self.dtype,data.dtype))
 *             data2 = data
 *             vldata = <nc_vlen_t *>malloc(sizeof(nc_vlen_t))             # <<<<<<<<<<<<<<
 *             vldata[0].len = PyArray_SIZE(data2)
 *             vldata[0].p = PyArray_DATA(data2)
*/
    __pyx_v_vldata = ((nc_vlen_t *)malloc((sizeof(nc_vlen_t))));

    /* "netCDF4/_netCDF4.pyx":5464
 *             data2 = data
 *             vldata = <nc_vlen_t *>malloc(sizeof(nc_vlen_t))
 *             vldata[0].len = PyArray_SIZE(data2)             # <<<<<<<<<<<<<<
 *             vldata[0].p = PyArray_DATA(data2)
 *             with nogil:
*/
    (__pyx_v_vldata[0]).len = PyArray_SIZE(__pyx_v_data2);

    /* "netCDF4/_netCDF4.pyx":5465
 *             vldata = <nc_vlen_t *>malloc(sizeof(nc_vlen_t))
 *             vldata[0].len = PyArray_SIZE(data2)
 *             vldata[0].p = PyArray_DATA(data2)             # <<<<<<<<<<<<<<
 *             with nogil:
 *                 ierr = nc_put_vara(self._grpid, self._varid,
*/
    (__pyx_v_vldata[0]).p = PyArray_DATA(__pyx_v_data2);

    /* "netCDF4/_netCDF4.pyx":5466
 *             vldata[0].len = PyArray_SIZE(data2)
 *             vldata[0].p = PyArray_DATA(data2)
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 ierr = nc_put_vara(self._grpid, self._varid,
 *                                    startp, countp, vldata)
*/
    {
        PyThreadState * _save;
        _save = PyEval_SaveThread();
        __Pyx_FastGIL_Remember();
        /*try:*/ {

          /* "netCDF4/_netCDF4.pyx":5467
 *             vldata[0].p = PyArray_DATA(data2)
 *             with nogil:
 *                 ierr = nc_put_vara(self._grpid, self._varid,             # <<<<<<<<<<<<<<
 *                                    startp, countp, vldata)
 *             _ensure_nc_success(ierr)
*/
          __pyx_v_ierr = nc_put_vara(__pyx_v_self->_grpid, __pyx_v_self->_varid, __pyx_v_startp, __pyx_v_countp, __pyx_v_vldata);
        }

        /* "netCDF4/_netCDF4.pyx":5466
 *             vldata[0].len = PyArray_SIZE(data2)
 *             vldata[0].p = PyArray_DATA(data2)
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 ierr = nc_put_vara(self._grpid, self._varid,
 *                                    startp, countp, vldata)
*/
        /*finally:*/ {
          /*normal exit:*/{
            __Pyx_FastGIL_Forget();
            PyEval_RestoreThread(_save);
            goto __pyx_L24;
          }
          __pyx_L24:;
        }
    }

    /* "netCDF4/_netCDF4.pyx":5469
 *                 ierr = nc_put_vara(self._grpid, self._varid,
 *                                    startp, countp, vldata)
 *             _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 *             free(vldata)
 *         free(startp)
*/
    __pyx_t_3 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5469, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_16 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 5469, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_16);
    __pyx_t_5 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_7);
      assert(__pyx_t_3);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_7, __pyx__function);
      __pyx_t_5 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_16};
      __pyx_t_10 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 5469, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
    }
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

    /* "netCDF4/_netCDF4.pyx":5470
 *                                    startp, countp, vldata)
 *             _ensure_nc_success(ierr)
 *             free(vldata)             # <<<<<<<<<<<<<<
 *         free(startp)
 *         free(countp)
*/
    free(__pyx_v_vldata);
  }
  __pyx_L17:;

  /* "netCDF4/_netCDF4.pyx":5471
 *             _ensure_nc_success(ierr)
 *             free(vldata)
 *         free(startp)             # <<<<<<<<<<<<<<
 *         free(countp)
 * 
*/
  free(__pyx_v_startp);

  /* "netCDF4/_netCDF4.pyx":5472
 *             free(vldata)
 *         free(startp)
 *         free(countp)             # <<<<<<<<<<<<<<
 * 
 *     def _check_safecast(self, attname):
*/
  free(__pyx_v_countp);

  /* "netCDF4/_netCDF4.pyx":5396
 *         return data
 * 
 *     def _assign_vlen(self, elem, data):             # <<<<<<<<<<<<<<
 *         """private method to assign data to a single item in a VLEN variable"""
 *         cdef size_t *startp
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_16);
  __Pyx_AddTraceback("netCDF4._netCDF4.Variable._assign_vlen", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_data2);
  __Pyx_XDECREF(__pyx_v_msg);
  __Pyx_XDECREF(__pyx_v_elemnew);
  __Pyx_XDECREF(__pyx_v_e);
  __Pyx_XDECREF(__pyx_v_enew);
  __Pyx_XDECREF(__pyx_v_start);
  __Pyx_XDECREF(__pyx_v_count);
  __Pyx_XDECREF(__pyx_v_encoding);
  __Pyx_XDECREF(__pyx_v_bytestr);
  __Pyx_XDECREF(__pyx_v_elem);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":5474
 *         free(countp)
 * 
 *     def _check_safecast(self, attname):             # <<<<<<<<<<<<<<
 *         # check to see that variable attribute exists
 *         # can can be safely cast to variable data type.
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_59_check_safecast(PyObject *__pyx_v_self, 
#if 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_7netCDF4_8_netCDF4_8Variable_59_check_safecast = {"_check_safecast", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_8Variable_59_check_safecast, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_59_check_safecast(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_attname = 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("_check_safecast (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_attname,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 5474, __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(0, 5474, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "_check_safecast", 0) < (0)) __PYX_ERR(0, 5474, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("_check_safecast", 1, 1, 1, i); __PYX_ERR(0, 5474, __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(0, 5474, __pyx_L3_error)
    }
    __pyx_v_attname = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_check_safecast", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 5474, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4.Variable._check_safecast", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_8Variable_58_check_safecast(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self), __pyx_v_attname);

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_58_check_safecast(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, PyObject *__pyx_v_attname) {
  PyObject *__pyx_v_msg = NULL;
  PyObject *__pyx_v_att = NULL;
  PyObject *__pyx_v_atta = NULL;
  PyObject *__pyx_v_is_safe = NULL;
  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 = 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("_check_safecast", 0);

  /* "netCDF4/_netCDF4.pyx":5478
 *         # can can be safely cast to variable data type.
 *         msg="""WARNING: %s not used since it
 * cannot be safely cast to variable data type""" % attname             # <<<<<<<<<<<<<<
 *         if hasattr(self, attname):
 *             att = numpy.array(self.getncattr(attname))
*/
  __pyx_t_1 = __Pyx_PyUnicode_FormatSafe(__pyx_mstate_global->__pyx_kp_u_WARNING_s_not_used_since_it_cann, __pyx_v_attname); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5478, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_msg = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":5479
 *         msg="""WARNING: %s not used since it
 * cannot be safely cast to variable data type""" % attname
 *         if hasattr(self, attname):             # <<<<<<<<<<<<<<
 *             att = numpy.array(self.getncattr(attname))
 *         else:
*/
  __pyx_t_2 = __Pyx_HasAttr(((PyObject *)__pyx_v_self), __pyx_v_attname); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 5479, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "netCDF4/_netCDF4.pyx":5480
 * cannot be safely cast to variable data type""" % attname
 *         if hasattr(self, attname):
 *             att = numpy.array(self.getncattr(attname))             # <<<<<<<<<<<<<<
 *         else:
 *             return False
*/
    __pyx_t_3 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5480, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_array); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5480, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_6 = ((PyObject *)__pyx_v_self);
    __Pyx_INCREF(__pyx_t_6);
    __pyx_t_7 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_v_attname};
      __pyx_t_4 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_getncattr, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5480, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
    }
    __pyx_t_7 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
      assert(__pyx_t_3);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
      __pyx_t_7 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_4};
      __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __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;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5480, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __pyx_v_att = __pyx_t_1;
    __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":5479
 *         msg="""WARNING: %s not used since it
 * cannot be safely cast to variable data type""" % attname
 *         if hasattr(self, attname):             # <<<<<<<<<<<<<<
 *             att = numpy.array(self.getncattr(attname))
 *         else:
*/
    goto __pyx_L3;
  }

  /* "netCDF4/_netCDF4.pyx":5482
 *             att = numpy.array(self.getncattr(attname))
 *         else:
 *             return False             # <<<<<<<<<<<<<<
 *         try:
 *             atta = numpy.array(att, self.dtype)
*/
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_False);
    __pyx_r = Py_False;
    goto __pyx_L0;
  }
  __pyx_L3:;

  /* "netCDF4/_netCDF4.pyx":5483
 *         else:
 *             return False
 *         try:             # <<<<<<<<<<<<<<
 *             atta = numpy.array(att, self.dtype)
 *         except ValueError:
*/
  {
    __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:*/ {

      /* "netCDF4/_netCDF4.pyx":5484
 *             return False
 *         try:
 *             atta = numpy.array(att, self.dtype)             # <<<<<<<<<<<<<<
 *         except ValueError:
 *             is_safe = False
*/
      __pyx_t_5 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5484, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5484, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_7 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_3))) {
        __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
        assert(__pyx_t_5);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
        __pyx_t_7 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_v_att, __pyx_v_self->dtype};
        __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_3, __pyx_callargs+__pyx_t_7, (3-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5484, __pyx_L4_error)
        __Pyx_GOTREF(__pyx_t_1);
      }
      __pyx_v_atta = __pyx_t_1;
      __pyx_t_1 = 0;

      /* "netCDF4/_netCDF4.pyx":5483
 *         else:
 *             return False
 *         try:             # <<<<<<<<<<<<<<
 *             atta = numpy.array(att, self.dtype)
 *         except ValueError:
*/
    }
    __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_L9_try_end;
    __pyx_L4_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;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;

    /* "netCDF4/_netCDF4.pyx":5485
 *         try:
 *             atta = numpy.array(att, self.dtype)
 *         except ValueError:             # <<<<<<<<<<<<<<
 *             is_safe = False
 *             warnings.warn(msg)
*/
    __pyx_t_11 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_ValueError))));
    if (__pyx_t_11) {
      __Pyx_AddTraceback("netCDF4._netCDF4.Variable._check_safecast", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_3, &__pyx_t_5) < 0) __PYX_ERR(0, 5485, __pyx_L6_except_error)
      __Pyx_XGOTREF(__pyx_t_1);
      __Pyx_XGOTREF(__pyx_t_3);
      __Pyx_XGOTREF(__pyx_t_5);

      /* "netCDF4/_netCDF4.pyx":5486
 *             atta = numpy.array(att, self.dtype)
 *         except ValueError:
 *             is_safe = False             # <<<<<<<<<<<<<<
 *             warnings.warn(msg)
 *             return is_safe
*/
      __Pyx_INCREF(Py_False);
      __pyx_v_is_safe = Py_False;

      /* "netCDF4/_netCDF4.pyx":5487
 *         except ValueError:
 *             is_safe = False
 *             warnings.warn(msg)             # <<<<<<<<<<<<<<
 *             return is_safe
 *         is_safe = _safecast(att,atta)
*/
      __pyx_t_6 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_mstate_global->__pyx_n_u_warnings); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 5487, __pyx_L6_except_error)
      __Pyx_GOTREF(__pyx_t_12);
      __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_mstate_global->__pyx_n_u_warn); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 5487, __pyx_L6_except_error)
      __Pyx_GOTREF(__pyx_t_13);
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __pyx_t_7 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_13))) {
        __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_13);
        assert(__pyx_t_6);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_13);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_13, __pyx__function);
        __pyx_t_7 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_v_msg};
        __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_13, __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_13); __pyx_t_13 = 0;
        if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5487, __pyx_L6_except_error)
        __Pyx_GOTREF(__pyx_t_4);
      }
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

      /* "netCDF4/_netCDF4.pyx":5488
 *             is_safe = False
 *             warnings.warn(msg)
 *             return is_safe             # <<<<<<<<<<<<<<
 *         is_safe = _safecast(att,atta)
 *         if not is_safe:
*/
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(__pyx_v_is_safe);
      __pyx_r = __pyx_v_is_safe;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      goto __pyx_L7_except_return;
    }
    goto __pyx_L6_except_error;

    /* "netCDF4/_netCDF4.pyx":5483
 *         else:
 *             return False
 *         try:             # <<<<<<<<<<<<<<
 *             atta = numpy.array(att, self.dtype)
 *         except ValueError:
*/
    __pyx_L6_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_L7_except_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_L0;
    __pyx_L9_try_end:;
  }

  /* "netCDF4/_netCDF4.pyx":5489
 *             warnings.warn(msg)
 *             return is_safe
 *         is_safe = _safecast(att,atta)             # <<<<<<<<<<<<<<
 *         if not is_safe:
 *             warnings.warn(msg)
*/
  __pyx_t_3 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_safecast); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5489, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
    assert(__pyx_t_3);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_1);
    __Pyx_INCREF(__pyx_t_3);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_1, __pyx__function);
    __pyx_t_7 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_v_att, __pyx_v_atta};
    __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_1, __pyx_callargs+__pyx_t_7, (3-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5489, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
  }
  __pyx_v_is_safe = __pyx_t_5;
  __pyx_t_5 = 0;

  /* "netCDF4/_netCDF4.pyx":5490
 *             return is_safe
 *         is_safe = _safecast(att,atta)
 *         if not is_safe:             # <<<<<<<<<<<<<<
 *             warnings.warn(msg)
 *         return is_safe
*/
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_is_safe); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 5490, __pyx_L1_error)
  __pyx_t_14 = (!__pyx_t_2);
  if (__pyx_t_14) {

    /* "netCDF4/_netCDF4.pyx":5491
 *         is_safe = _safecast(att,atta)
 *         if not is_safe:
 *             warnings.warn(msg)             # <<<<<<<<<<<<<<
 *         return is_safe
 * 
*/
    __pyx_t_1 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_warnings); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5491, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_warn); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5491, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_7 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_4);
      assert(__pyx_t_1);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
      __pyx_t_7 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_v_msg};
      __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5491, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
    }
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "netCDF4/_netCDF4.pyx":5490
 *             return is_safe
 *         is_safe = _safecast(att,atta)
 *         if not is_safe:             # <<<<<<<<<<<<<<
 *             warnings.warn(msg)
 *         return is_safe
*/
  }

  /* "netCDF4/_netCDF4.pyx":5492
 *         if not is_safe:
 *             warnings.warn(msg)
 *         return is_safe             # <<<<<<<<<<<<<<
 * 
 *     def __setitem__(self, elem, data):
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_is_safe);
  __pyx_r = __pyx_v_is_safe;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":5474
 *         free(countp)
 * 
 *     def _check_safecast(self, attname):             # <<<<<<<<<<<<<<
 *         # check to see that variable attribute exists
 *         # can can be safely cast to variable data type.
*/

  /* 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_6);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_AddTraceback("netCDF4._netCDF4.Variable._check_safecast", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_msg);
  __Pyx_XDECREF(__pyx_v_att);
  __Pyx_XDECREF(__pyx_v_atta);
  __Pyx_XDECREF(__pyx_v_is_safe);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":5494
 *         return is_safe
 * 
 *     def __setitem__(self, elem, data):             # <<<<<<<<<<<<<<
 *         # This special method is used to assign to the netCDF variable
 *         # using "extended slice syntax". The extended slice syntax
*/

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_61__setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_elem, PyObject *__pyx_v_data); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_61__setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_elem, PyObject *__pyx_v_data) {
  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_7netCDF4_8_netCDF4_8Variable_60__setitem__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self), ((PyObject *)__pyx_v_elem), ((PyObject *)__pyx_v_data));

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

static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_60__setitem__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, PyObject *__pyx_v_elem, PyObject *__pyx_v_data) {
  PyObject *__pyx_v_encoding = NULL;
  PyObject *__pyx_v_msg = NULL;
  PyObject *__pyx_v_test = NULL;
  PyObject *__pyx_v_val = NULL;
  PyObject *__pyx_v_start = NULL;
  PyObject *__pyx_v_count = NULL;
  PyObject *__pyx_v_stride = NULL;
  PyObject *__pyx_v_put_ind = NULL;
  PyObject *__pyx_v_datashape = NULL;
  PyObject *__pyx_v_a = NULL;
  PyObject *__pyx_v_b = NULL;
  PyObject *__pyx_v_c = NULL;
  PyObject *__pyx_v_i = NULL;
  PyObject *__pyx_v_dataput = NULL;
  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;
  PyObject *__pyx_t_7 = NULL;
  size_t __pyx_t_8;
  int __pyx_t_9;
  Py_ssize_t __pyx_t_10;
  PyObject *__pyx_t_11 = NULL;
  Py_ssize_t __pyx_t_12;
  int __pyx_t_13;
  int __pyx_t_14;
  PyObject *__pyx_t_15 = NULL;
  PyObject *(*__pyx_t_16)(PyObject *);
  PyObject *__pyx_t_17 = NULL;
  PyObject *__pyx_t_18 = NULL;
  PyObject *__pyx_t_19 = NULL;
  PyObject *(*__pyx_t_20)(PyObject *);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setitem__", 0);
  __Pyx_INCREF(__pyx_v_elem);
  __Pyx_INCREF(__pyx_v_data);

  /* "netCDF4/_netCDF4.pyx":5504
 *         # numpy array of strings to a numpy array of characters with one more
 *         # dimension.
 *         if self.chartostring and getattr(self.dtype,'kind',None) == 'S' and\             # <<<<<<<<<<<<<<
 *            getattr(self.dtype,'itemsize',None) == 1:
 *             # NC_CHAR variable
*/
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_self->chartostring); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 5504, __pyx_L1_error)
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_3 = __pyx_v_self->dtype;
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_GetAttr3(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_kind, Py_None); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5504, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_S, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 5504, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }

  /* "netCDF4/_netCDF4.pyx":5505
 *         # dimension.
 *         if self.chartostring and getattr(self.dtype,'kind',None) == 'S' and\
 *            getattr(self.dtype,'itemsize',None) == 1:             # <<<<<<<<<<<<<<
 *             # NC_CHAR variable
 *             encoding = getattr(self,'_Encoding',None)
*/
  __pyx_t_4 = __pyx_v_self->dtype;
  __Pyx_INCREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_GetAttr3(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_itemsize, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5505, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_2 = (__Pyx_PyLong_BoolEqObjC(__pyx_t_3, __pyx_mstate_global->__pyx_int_1, 1, 0)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 5505, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;

  /* "netCDF4/_netCDF4.pyx":5504
 *         # numpy array of strings to a numpy array of characters with one more
 *         # dimension.
 *         if self.chartostring and getattr(self.dtype,'kind',None) == 'S' and\             # <<<<<<<<<<<<<<
 *            getattr(self.dtype,'itemsize',None) == 1:
 *             # NC_CHAR variable
*/
  if (__pyx_t_1) {

    /* "netCDF4/_netCDF4.pyx":5507
 *            getattr(self.dtype,'itemsize',None) == 1:
 *             # NC_CHAR variable
 *             encoding = getattr(self,'_Encoding',None)             # <<<<<<<<<<<<<<
 *             if encoding is not None:
 *                 # _Encoding attribute is set
*/
    __pyx_t_3 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_Encoding, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5507, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_v_encoding = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "netCDF4/_netCDF4.pyx":5508
 *             # NC_CHAR variable
 *             encoding = getattr(self,'_Encoding',None)
 *             if encoding is not None:             # <<<<<<<<<<<<<<
 *                 # _Encoding attribute is set
 *                 # if data is a string or a bytes object, convert to a numpy string array
*/
    __pyx_t_1 = (__pyx_v_encoding != Py_None);
    if (__pyx_t_1) {

      /* "netCDF4/_netCDF4.pyx":5513
 *                 # whose length is equal to the rightmost dimension of the
 *                 # variable.
 *                 if type(data) in [str,bytes]: data = numpy.asarray(data,dtype='S'+repr(self.shape[-1]))             # <<<<<<<<<<<<<<
 *                 if data.dtype.kind in ['S','U'] and data.dtype.itemsize > 1:
 *                     # if data is a numpy string array, convert it to an array
*/
      __Pyx_INCREF(((PyObject *)Py_TYPE(__pyx_v_data)));
      __pyx_t_3 = ((PyObject *)Py_TYPE(__pyx_v_data));
      __pyx_t_4 = PyObject_RichCompare(((PyObject *)__pyx_t_3), ((PyObject *)(&PyUnicode_Type)), Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5513, __pyx_L1_error)
      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 5513, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (!__pyx_t_2) {
      } else {
        __pyx_t_1 = __pyx_t_2;
        goto __pyx_L9_bool_binop_done;
      }
      __pyx_t_4 = PyObject_RichCompare(((PyObject *)__pyx_t_3), ((PyObject *)(&PyBytes_Type)), Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5513, __pyx_L1_error)
      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 5513, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_1 = __pyx_t_2;
      __pyx_L9_bool_binop_done:;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_2 = __pyx_t_1;
      if (__pyx_t_2) {
        __pyx_t_4 = NULL;
        __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5513, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_asarray); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5513, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_shape); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5513, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_7 = __Pyx_GetItemInt(__pyx_t_5, -1L, long, 1, __Pyx_PyLong_From_long, 0, 1, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5513, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_t_5 = PyObject_Repr(__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5513, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_7 = __Pyx_PyUnicode_ConcatSafe(__pyx_mstate_global->__pyx_n_u_S, __pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5513, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_t_8 = 1;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(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[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_4, __pyx_v_data};
          __pyx_t_5 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5513, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_dtype, __pyx_t_7, __pyx_t_5, __pyx_callargs+2, 0) < (0)) __PYX_ERR(0, 5513, __pyx_L1_error)
          __pyx_t_3 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_t_6, __pyx_callargs+__pyx_t_8, (2-__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_7); __pyx_t_7 = 0;
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5513, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
        }
        __Pyx_DECREF_SET(__pyx_v_data, __pyx_t_3);
        __pyx_t_3 = 0;
      }

      /* "netCDF4/_netCDF4.pyx":5514
 *                 # variable.
 *                 if type(data) in [str,bytes]: data = numpy.asarray(data,dtype='S'+repr(self.shape[-1]))
 *                 if data.dtype.kind in ['S','U'] and data.dtype.itemsize > 1:             # <<<<<<<<<<<<<<
 *                     # if data is a numpy string array, convert it to an array
 *                     # of characters with one more dimension.
*/
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_mstate_global->__pyx_n_u_dtype); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5514, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_kind); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5514, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_9 = (__Pyx_PyUnicode_Equals(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_S, Py_EQ)); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 5514, __pyx_L1_error)
      if (!__pyx_t_9) {
      } else {
        __pyx_t_1 = __pyx_t_9;
        goto __pyx_L14_bool_binop_done;
      }
      __pyx_t_9 = (__Pyx_PyUnicode_Equals(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_U, Py_EQ)); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 5514, __pyx_L1_error)
      __pyx_t_1 = __pyx_t_9;
      __pyx_L14_bool_binop_done:;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_9 = __pyx_t_1;
      if (__pyx_t_9) {
      } else {
        __pyx_t_2 = __pyx_t_9;
        goto __pyx_L12_bool_binop_done;
      }
      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_mstate_global->__pyx_n_u_dtype); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5514, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_itemsize); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5514, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_6 = PyObject_RichCompare(__pyx_t_3, __pyx_mstate_global->__pyx_int_1, Py_GT); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5514, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 5514, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_2 = __pyx_t_9;
      __pyx_L12_bool_binop_done:;
      if (__pyx_t_2) {

        /* "netCDF4/_netCDF4.pyx":5517
 *                     # if data is a numpy string array, convert it to an array
 *                     # of characters with one more dimension.
 *                     data = stringtochar(data, encoding=encoding)             # <<<<<<<<<<<<<<
 * 
 *         # if structured data has strings (and _Encoding att set), create view as char arrays
*/
        __pyx_t_3 = NULL;
        __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_stringtochar); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5517, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_8 = 1;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_5))) {
          __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
          assert(__pyx_t_3);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_3);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
          __pyx_t_8 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_3, __pyx_v_data};
          __pyx_t_7 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5517, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_encoding, __pyx_v_encoding, __pyx_t_7, __pyx_callargs+2, 0) < (0)) __PYX_ERR(0, 5517, __pyx_L1_error)
          __pyx_t_6 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_7);
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5517, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
        }
        __Pyx_DECREF_SET(__pyx_v_data, __pyx_t_6);
        __pyx_t_6 = 0;

        /* "netCDF4/_netCDF4.pyx":5514
 *                 # variable.
 *                 if type(data) in [str,bytes]: data = numpy.asarray(data,dtype='S'+repr(self.shape[-1]))
 *                 if data.dtype.kind in ['S','U'] and data.dtype.itemsize > 1:             # <<<<<<<<<<<<<<
 *                     # if data is a numpy string array, convert it to an array
 *                     # of characters with one more dimension.
*/
      }

      /* "netCDF4/_netCDF4.pyx":5508
 *             # NC_CHAR variable
 *             encoding = getattr(self,'_Encoding',None)
 *             if encoding is not None:             # <<<<<<<<<<<<<<
 *                 # _Encoding attribute is set
 *                 # if data is a string or a bytes object, convert to a numpy string array
*/
    }

    /* "netCDF4/_netCDF4.pyx":5504
 *         # numpy array of strings to a numpy array of characters with one more
 *         # dimension.
 *         if self.chartostring and getattr(self.dtype,'kind',None) == 'S' and\             # <<<<<<<<<<<<<<
 *            getattr(self.dtype,'itemsize',None) == 1:
 *             # NC_CHAR variable
*/
  }

  /* "netCDF4/_netCDF4.pyx":5521
 *         # if structured data has strings (and _Encoding att set), create view as char arrays
 *         # (issue #773)
 *         if self._iscompound and \             # <<<<<<<<<<<<<<
 *            self._cmptype.dtype != self._cmptype.dtype_view and \
 *            _set_viewdtype(data.dtype) == self._cmptype.dtype_view and \
*/
  __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_self->_iscompound); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 5521, __pyx_L1_error)
  if (__pyx_t_9) {
  } else {
    __pyx_t_2 = __pyx_t_9;
    goto __pyx_L17_bool_binop_done;
  }

  /* "netCDF4/_netCDF4.pyx":5522
 *         # (issue #773)
 *         if self._iscompound and \
 *            self._cmptype.dtype != self._cmptype.dtype_view and \             # <<<<<<<<<<<<<<
 *            _set_viewdtype(data.dtype) == self._cmptype.dtype_view and \
 *            self.chartostring:
*/
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_cmptype, __pyx_mstate_global->__pyx_n_u_dtype); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5522, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_cmptype, __pyx_mstate_global->__pyx_n_u_dtype_view); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5522, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = PyObject_RichCompare(__pyx_t_6, __pyx_t_5, Py_NE); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5522, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 5522, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (__pyx_t_9) {
  } else {
    __pyx_t_2 = __pyx_t_9;
    goto __pyx_L17_bool_binop_done;
  }

  /* "netCDF4/_netCDF4.pyx":5523
 *         if self._iscompound and \
 *            self._cmptype.dtype != self._cmptype.dtype_view and \
 *            _set_viewdtype(data.dtype) == self._cmptype.dtype_view and \             # <<<<<<<<<<<<<<
 *            self.chartostring:
 * #          self.chartostring and getattr(self,'_Encoding',None) is not None:
*/
  __pyx_t_5 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_set_viewdtype); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5523, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_mstate_global->__pyx_n_u_dtype); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5523, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __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_3};
    __pyx_t_7 = __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_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5523, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
  }
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_cmptype, __pyx_mstate_global->__pyx_n_u_dtype_view); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5523, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_3 = PyObject_RichCompare(__pyx_t_7, __pyx_t_6, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5523, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 5523, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__pyx_t_9) {
  } else {
    __pyx_t_2 = __pyx_t_9;
    goto __pyx_L17_bool_binop_done;
  }

  /* "netCDF4/_netCDF4.pyx":5524
 *            self._cmptype.dtype != self._cmptype.dtype_view and \
 *            _set_viewdtype(data.dtype) == self._cmptype.dtype_view and \
 *            self.chartostring:             # <<<<<<<<<<<<<<
 * #          self.chartostring and getattr(self,'_Encoding',None) is not None:
 *                 # may need to cast input data to aligned type
*/
  __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_self->chartostring); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 5524, __pyx_L1_error)
  __pyx_t_2 = __pyx_t_9;
  __pyx_L17_bool_binop_done:;

  /* "netCDF4/_netCDF4.pyx":5521
 *         # if structured data has strings (and _Encoding att set), create view as char arrays
 *         # (issue #773)
 *         if self._iscompound and \             # <<<<<<<<<<<<<<
 *            self._cmptype.dtype != self._cmptype.dtype_view and \
 *            _set_viewdtype(data.dtype) == self._cmptype.dtype_view and \
*/
  if (__pyx_t_2) {

    /* "netCDF4/_netCDF4.pyx":5527
 * #          self.chartostring and getattr(self,'_Encoding',None) is not None:
 *                 # may need to cast input data to aligned type
 *                 data = data.astype(self._cmptype.dtype_view).view(self._cmptype.dtype)             # <<<<<<<<<<<<<<
 * 
 *         if self._isvlen: # if vlen, should be object array (don't try casting)
*/
    __pyx_t_5 = __pyx_v_data;
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_cmptype, __pyx_mstate_global->__pyx_n_u_dtype_view); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5527, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_8 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_4};
      __pyx_t_7 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_astype, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (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_7)) __PYX_ERR(0, 5527, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
    }
    __pyx_t_6 = __pyx_t_7;
    __Pyx_INCREF(__pyx_t_6);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_cmptype, __pyx_mstate_global->__pyx_n_u_dtype); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5527, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_8 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_4};
      __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_view, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5527, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __Pyx_DECREF_SET(__pyx_v_data, __pyx_t_3);
    __pyx_t_3 = 0;

    /* "netCDF4/_netCDF4.pyx":5521
 *         # if structured data has strings (and _Encoding att set), create view as char arrays
 *         # (issue #773)
 *         if self._iscompound and \             # <<<<<<<<<<<<<<
 *            self._cmptype.dtype != self._cmptype.dtype_view and \
 *            _set_viewdtype(data.dtype) == self._cmptype.dtype_view and \
*/
  }

  /* "netCDF4/_netCDF4.pyx":5529
 *                 data = data.astype(self._cmptype.dtype_view).view(self._cmptype.dtype)
 * 
 *         if self._isvlen: # if vlen, should be object array (don't try casting)             # <<<<<<<<<<<<<<
 *             if self.dtype == str:
 *                 # for string vars, if data is not an array
*/
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_self->_isvlen); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 5529, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "netCDF4/_netCDF4.pyx":5530
 * 
 *         if self._isvlen: # if vlen, should be object array (don't try casting)
 *             if self.dtype == str:             # <<<<<<<<<<<<<<
 *                 # for string vars, if data is not an array
 *                 # assume it is a python string and raise an error
*/
    __pyx_t_3 = PyObject_RichCompare(__pyx_v_self->dtype, ((PyObject *)(&PyUnicode_Type)), Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5530, __pyx_L1_error)
    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 5530, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__pyx_t_2) {

      /* "netCDF4/_netCDF4.pyx":5534
 *                 # assume it is a python string and raise an error
 *                 # if it is an array, but not an object array.
 *                 if not isinstance(data, numpy.ndarray):             # <<<<<<<<<<<<<<
 *                     # issue 458, allow Ellipsis to be used for scalar var
 *                     if type(elem) == type(Ellipsis) and not\
*/
      __pyx_t_2 = __Pyx_TypeCheck(__pyx_v_data, __pyx_mstate_global->__pyx_ptype_5numpy_ndarray); 
      __pyx_t_9 = (!__pyx_t_2);
      if (__pyx_t_9) {

        /* "netCDF4/_netCDF4.pyx":5536
 *                 if not isinstance(data, numpy.ndarray):
 *                     # issue 458, allow Ellipsis to be used for scalar var
 *                     if type(elem) == type(Ellipsis) and not\             # <<<<<<<<<<<<<<
 *                        len(self.dimensions): elem = 0
 *                     self._assign_vlen(elem, data)
*/
        __pyx_t_3 = PyObject_RichCompare(((PyObject *)Py_TYPE(__pyx_v_elem)), ((PyObject *)Py_TYPE(__pyx_builtin_Ellipsis)), Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5536, __pyx_L1_error)
        __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 5536, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        if (__pyx_t_2) {
        } else {
          __pyx_t_9 = __pyx_t_2;
          goto __pyx_L25_bool_binop_done;
        }

        /* "netCDF4/_netCDF4.pyx":5537
 *                     # issue 458, allow Ellipsis to be used for scalar var
 *                     if type(elem) == type(Ellipsis) and not\
 *                        len(self.dimensions): elem = 0             # <<<<<<<<<<<<<<
 *                     self._assign_vlen(elem, data)
 *                     return
*/
        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_dimensions); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5537, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_10 = PyObject_Length(__pyx_t_3); if (unlikely(__pyx_t_10 == ((Py_ssize_t)-1))) __PYX_ERR(0, 5537, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

        /* "netCDF4/_netCDF4.pyx":5536
 *                 if not isinstance(data, numpy.ndarray):
 *                     # issue 458, allow Ellipsis to be used for scalar var
 *                     if type(elem) == type(Ellipsis) and not\             # <<<<<<<<<<<<<<
 *                        len(self.dimensions): elem = 0
 *                     self._assign_vlen(elem, data)
*/
        __pyx_t_2 = (!(__pyx_t_10 != 0));
        __pyx_t_9 = __pyx_t_2;
        __pyx_L25_bool_binop_done:;
        if (__pyx_t_9) {

          /* "netCDF4/_netCDF4.pyx":5537
 *                     # issue 458, allow Ellipsis to be used for scalar var
 *                     if type(elem) == type(Ellipsis) and not\
 *                        len(self.dimensions): elem = 0             # <<<<<<<<<<<<<<
 *                     self._assign_vlen(elem, data)
 *                     return
*/
          __Pyx_INCREF(__pyx_mstate_global->__pyx_int_0);
          __Pyx_DECREF_SET(__pyx_v_elem, __pyx_mstate_global->__pyx_int_0);

          /* "netCDF4/_netCDF4.pyx":5536
 *                 if not isinstance(data, numpy.ndarray):
 *                     # issue 458, allow Ellipsis to be used for scalar var
 *                     if type(elem) == type(Ellipsis) and not\             # <<<<<<<<<<<<<<
 *                        len(self.dimensions): elem = 0
 *                     self._assign_vlen(elem, data)
*/
        }

        /* "netCDF4/_netCDF4.pyx":5538
 *                     if type(elem) == type(Ellipsis) and not\
 *                        len(self.dimensions): elem = 0
 *                     self._assign_vlen(elem, data)             # <<<<<<<<<<<<<<
 *                     return
 *                 elif data.dtype.kind in ['S', 'U']:
*/
        __pyx_t_7 = ((PyObject *)__pyx_v_self);
        __Pyx_INCREF(__pyx_t_7);
        __pyx_t_8 = 0;
        {
          PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_v_elem, __pyx_v_data};
          __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_assign_vlen, __pyx_callargs+__pyx_t_8, (3-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
          if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5538, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
        }
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

        /* "netCDF4/_netCDF4.pyx":5539
 *                        len(self.dimensions): elem = 0
 *                     self._assign_vlen(elem, data)
 *                     return             # <<<<<<<<<<<<<<
 *                 elif data.dtype.kind in ['S', 'U']:
 *                     if ma.isMA(data):
*/
        __pyx_r = 0;
        goto __pyx_L0;

        /* "netCDF4/_netCDF4.pyx":5534
 *                 # assume it is a python string and raise an error
 *                 # if it is an array, but not an object array.
 *                 if not isinstance(data, numpy.ndarray):             # <<<<<<<<<<<<<<
 *                     # issue 458, allow Ellipsis to be used for scalar var
 *                     if type(elem) == type(Ellipsis) and not\
*/
      }

      /* "netCDF4/_netCDF4.pyx":5540
 *                     self._assign_vlen(elem, data)
 *                     return
 *                 elif data.dtype.kind in ['S', 'U']:             # <<<<<<<<<<<<<<
 *                     if ma.isMA(data):
 *                         msg='masked arrays cannot be assigned by VLEN str slices'
*/
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_mstate_global->__pyx_n_u_dtype); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5540, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_kind); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5540, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_S, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 5540, __pyx_L1_error)
      if (!__pyx_t_2) {
      } else {
        __pyx_t_9 = __pyx_t_2;
        goto __pyx_L27_bool_binop_done;
      }
      __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_U, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 5540, __pyx_L1_error)
      __pyx_t_9 = __pyx_t_2;
      __pyx_L27_bool_binop_done:;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_2 = __pyx_t_9;
      if (__pyx_t_2) {

        /* "netCDF4/_netCDF4.pyx":5541
 *                     return
 *                 elif data.dtype.kind in ['S', 'U']:
 *                     if ma.isMA(data):             # <<<<<<<<<<<<<<
 *                         msg='masked arrays cannot be assigned by VLEN str slices'
 *                         raise TypeError(msg)
*/
        __pyx_t_3 = NULL;
        __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_ma); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5541, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_isMA); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5541, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_8 = 1;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_6))) {
          __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6);
          assert(__pyx_t_3);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_6);
          __Pyx_INCREF(__pyx_t_3);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_6, __pyx__function);
          __pyx_t_8 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_data};
          __pyx_t_7 = __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_3); __pyx_t_3 = 0;
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5541, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
        }
        __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 5541, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        if (unlikely(__pyx_t_2)) {

          /* "netCDF4/_netCDF4.pyx":5542
 *                 elif data.dtype.kind in ['S', 'U']:
 *                     if ma.isMA(data):
 *                         msg='masked arrays cannot be assigned by VLEN str slices'             # <<<<<<<<<<<<<<
 *                         raise TypeError(msg)
 *                     data = data.astype(object)
*/
          __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u_masked_arrays_cannot_be_assigned);
          __pyx_v_msg = __pyx_mstate_global->__pyx_kp_u_masked_arrays_cannot_be_assigned;

          /* "netCDF4/_netCDF4.pyx":5543
 *                     if ma.isMA(data):
 *                         msg='masked arrays cannot be assigned by VLEN str slices'
 *                         raise TypeError(msg)             # <<<<<<<<<<<<<<
 *                     data = data.astype(object)
 *                 elif data.dtype.kind != 'O':
*/
          __pyx_t_6 = NULL;
          __pyx_t_8 = 1;
          {
            PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_v_msg};
            __pyx_t_7 = __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_6); __pyx_t_6 = 0;
            if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5543, __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(0, 5543, __pyx_L1_error)

          /* "netCDF4/_netCDF4.pyx":5541
 *                     return
 *                 elif data.dtype.kind in ['S', 'U']:
 *                     if ma.isMA(data):             # <<<<<<<<<<<<<<
 *                         msg='masked arrays cannot be assigned by VLEN str slices'
 *                         raise TypeError(msg)
*/
        }

        /* "netCDF4/_netCDF4.pyx":5544
 *                         msg='masked arrays cannot be assigned by VLEN str slices'
 *                         raise TypeError(msg)
 *                     data = data.astype(object)             # <<<<<<<<<<<<<<
 *                 elif data.dtype.kind != 'O':
 *                     msg = ('only numpy string, unicode or object arrays can '
*/
        __pyx_t_6 = __pyx_v_data;
        __Pyx_INCREF(__pyx_t_6);
        __pyx_t_8 = 0;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_builtin_object};
          __pyx_t_7 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_astype, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
          if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5544, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
        }
        __Pyx_DECREF_SET(__pyx_v_data, __pyx_t_7);
        __pyx_t_7 = 0;

        /* "netCDF4/_netCDF4.pyx":5540
 *                     self._assign_vlen(elem, data)
 *                     return
 *                 elif data.dtype.kind in ['S', 'U']:             # <<<<<<<<<<<<<<
 *                     if ma.isMA(data):
 *                         msg='masked arrays cannot be assigned by VLEN str slices'
*/
        goto __pyx_L23;
      }

      /* "netCDF4/_netCDF4.pyx":5545
 *                         raise TypeError(msg)
 *                     data = data.astype(object)
 *                 elif data.dtype.kind != 'O':             # <<<<<<<<<<<<<<
 *                     msg = ('only numpy string, unicode or object arrays can '
 *                            'be assigned to VLEN str var slices')
*/
      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_mstate_global->__pyx_n_u_dtype); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5545, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_kind); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5545, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_O, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 5545, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(__pyx_t_2)) {

        /* "netCDF4/_netCDF4.pyx":5546
 *                     data = data.astype(object)
 *                 elif data.dtype.kind != 'O':
 *                     msg = ('only numpy string, unicode or object arrays can '             # <<<<<<<<<<<<<<
 *                            'be assigned to VLEN str var slices')
 *                     raise TypeError(msg)
*/
        __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u_only_numpy_string_unicode_or_obj);
        __pyx_v_msg = __pyx_mstate_global->__pyx_kp_u_only_numpy_string_unicode_or_obj;

        /* "netCDF4/_netCDF4.pyx":5548
 *                     msg = ('only numpy string, unicode or object arrays can '
 *                            'be assigned to VLEN str var slices')
 *                     raise TypeError(msg)             # <<<<<<<<<<<<<<
 *             else:
 *                 # for non-string vlen arrays, if data is not multi-dim, or
*/
        __pyx_t_7 = NULL;
        __pyx_t_8 = 1;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_v_msg};
          __pyx_t_6 = __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_7); __pyx_t_7 = 0;
          if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5548, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
        }
        __Pyx_Raise(__pyx_t_6, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __PYX_ERR(0, 5548, __pyx_L1_error)

        /* "netCDF4/_netCDF4.pyx":5545
 *                         raise TypeError(msg)
 *                     data = data.astype(object)
 *                 elif data.dtype.kind != 'O':             # <<<<<<<<<<<<<<
 *                     msg = ('only numpy string, unicode or object arrays can '
 *                            'be assigned to VLEN str var slices')
*/
      }
      __pyx_L23:;

      /* "netCDF4/_netCDF4.pyx":5530
 * 
 *         if self._isvlen: # if vlen, should be object array (don't try casting)
 *             if self.dtype == str:             # <<<<<<<<<<<<<<
 *                 # for string vars, if data is not an array
 *                 # assume it is a python string and raise an error
*/
      goto __pyx_L22;
    }

    /* "netCDF4/_netCDF4.pyx":5553
 *                 # not an object array, assume it represents a single element
 *                 # of the vlen var.
 *                 if not isinstance(data, numpy.ndarray) or data.dtype.kind != 'O':             # <<<<<<<<<<<<<<
 *                     # issue 458, allow Ellipsis to be used for scalar var
 *                     if type(elem) == type(Ellipsis) and not\
*/
    /*else*/ {
      __pyx_t_9 = __Pyx_TypeCheck(__pyx_v_data, __pyx_mstate_global->__pyx_ptype_5numpy_ndarray); 
      __pyx_t_1 = (!__pyx_t_9);
      if (!__pyx_t_1) {
      } else {
        __pyx_t_2 = __pyx_t_1;
        goto __pyx_L31_bool_binop_done;
      }
      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_mstate_global->__pyx_n_u_dtype); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5553, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_kind); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5553, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_O, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 5553, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_2 = __pyx_t_1;
      __pyx_L31_bool_binop_done:;
      if (__pyx_t_2) {

        /* "netCDF4/_netCDF4.pyx":5555
 *                 if not isinstance(data, numpy.ndarray) or data.dtype.kind != 'O':
 *                     # issue 458, allow Ellipsis to be used for scalar var
 *                     if type(elem) == type(Ellipsis) and not\             # <<<<<<<<<<<<<<
 *                        len(self.dimensions): elem = 0
 *                     # pack as integers if desired.
*/
        __pyx_t_7 = PyObject_RichCompare(((PyObject *)Py_TYPE(__pyx_v_elem)), ((PyObject *)Py_TYPE(__pyx_builtin_Ellipsis)), Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5555, __pyx_L1_error)
        __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 5555, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        if (__pyx_t_1) {
        } else {
          __pyx_t_2 = __pyx_t_1;
          goto __pyx_L34_bool_binop_done;
        }

        /* "netCDF4/_netCDF4.pyx":5556
 *                     # issue 458, allow Ellipsis to be used for scalar var
 *                     if type(elem) == type(Ellipsis) and not\
 *                        len(self.dimensions): elem = 0             # <<<<<<<<<<<<<<
 *                     # pack as integers if desired.
 *                     if self.scale:
*/
        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_dimensions); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5556, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_10 = PyObject_Length(__pyx_t_7); if (unlikely(__pyx_t_10 == ((Py_ssize_t)-1))) __PYX_ERR(0, 5556, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

        /* "netCDF4/_netCDF4.pyx":5555
 *                 if not isinstance(data, numpy.ndarray) or data.dtype.kind != 'O':
 *                     # issue 458, allow Ellipsis to be used for scalar var
 *                     if type(elem) == type(Ellipsis) and not\             # <<<<<<<<<<<<<<
 *                        len(self.dimensions): elem = 0
 *                     # pack as integers if desired.
*/
        __pyx_t_1 = (!(__pyx_t_10 != 0));
        __pyx_t_2 = __pyx_t_1;
        __pyx_L34_bool_binop_done:;
        if (__pyx_t_2) {

          /* "netCDF4/_netCDF4.pyx":5556
 *                     # issue 458, allow Ellipsis to be used for scalar var
 *                     if type(elem) == type(Ellipsis) and not\
 *                        len(self.dimensions): elem = 0             # <<<<<<<<<<<<<<
 *                     # pack as integers if desired.
 *                     if self.scale:
*/
          __Pyx_INCREF(__pyx_mstate_global->__pyx_int_0);
          __Pyx_DECREF_SET(__pyx_v_elem, __pyx_mstate_global->__pyx_int_0);

          /* "netCDF4/_netCDF4.pyx":5555
 *                 if not isinstance(data, numpy.ndarray) or data.dtype.kind != 'O':
 *                     # issue 458, allow Ellipsis to be used for scalar var
 *                     if type(elem) == type(Ellipsis) and not\             # <<<<<<<<<<<<<<
 *                        len(self.dimensions): elem = 0
 *                     # pack as integers if desired.
*/
        }

        /* "netCDF4/_netCDF4.pyx":5558
 *                        len(self.dimensions): elem = 0
 *                     # pack as integers if desired.
 *                     if self.scale:             # <<<<<<<<<<<<<<
 *                         data = self._pack(data)
 *                     self._assign_vlen(elem, data)
*/
        __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_self->scale); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 5558, __pyx_L1_error)
        if (__pyx_t_2) {

          /* "netCDF4/_netCDF4.pyx":5559
 *                     # pack as integers if desired.
 *                     if self.scale:
 *                         data = self._pack(data)             # <<<<<<<<<<<<<<
 *                     self._assign_vlen(elem, data)
 *                     return
*/
          __pyx_t_6 = ((PyObject *)__pyx_v_self);
          __Pyx_INCREF(__pyx_t_6);
          __pyx_t_8 = 0;
          {
            PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_v_data};
            __pyx_t_7 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_pack, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
            __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
            if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5559, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_7);
          }
          __Pyx_DECREF_SET(__pyx_v_data, __pyx_t_7);
          __pyx_t_7 = 0;

          /* "netCDF4/_netCDF4.pyx":5558
 *                        len(self.dimensions): elem = 0
 *                     # pack as integers if desired.
 *                     if self.scale:             # <<<<<<<<<<<<<<
 *                         data = self._pack(data)
 *                     self._assign_vlen(elem, data)
*/
        }

        /* "netCDF4/_netCDF4.pyx":5560
 *                     if self.scale:
 *                         data = self._pack(data)
 *                     self._assign_vlen(elem, data)             # <<<<<<<<<<<<<<
 *                     return
 * 
*/
        __pyx_t_6 = ((PyObject *)__pyx_v_self);
        __Pyx_INCREF(__pyx_t_6);
        __pyx_t_8 = 0;
        {
          PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_v_elem, __pyx_v_data};
          __pyx_t_7 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_assign_vlen, __pyx_callargs+__pyx_t_8, (3-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
          if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5560, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
        }
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

        /* "netCDF4/_netCDF4.pyx":5561
 *                         data = self._pack(data)
 *                     self._assign_vlen(elem, data)
 *                     return             # <<<<<<<<<<<<<<
 * 
 *         # A numpy or masked array (or an object supporting the buffer interface) is needed.
*/
        __pyx_r = 0;
        goto __pyx_L0;

        /* "netCDF4/_netCDF4.pyx":5553
 *                 # not an object array, assume it represents a single element
 *                 # of the vlen var.
 *                 if not isinstance(data, numpy.ndarray) or data.dtype.kind != 'O':             # <<<<<<<<<<<<<<
 *                     # issue 458, allow Ellipsis to be used for scalar var
 *                     if type(elem) == type(Ellipsis) and not\
*/
      }
    }
    __pyx_L22:;

    /* "netCDF4/_netCDF4.pyx":5529
 *                 data = data.astype(self._cmptype.dtype_view).view(self._cmptype.dtype)
 * 
 *         if self._isvlen: # if vlen, should be object array (don't try casting)             # <<<<<<<<<<<<<<
 *             if self.dtype == str:
 *                 # for string vars, if data is not an array
*/
  }

  /* "netCDF4/_netCDF4.pyx":5565
 *         # A numpy or masked array (or an object supporting the buffer interface) is needed.
 *         # Convert if necessary.
 *         if not ma.isMA(data) and not (hasattr(data,'data') and isinstance(data.data,memoryview)):             # <<<<<<<<<<<<<<
 *             # if auto scaling is to be done, don't cast to an integer yet.
 *             if self.scale and self.dtype.kind in 'iu' and \
*/
  __pyx_t_6 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_ma); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5565, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_isMA); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5565, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_8 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(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_8 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_v_data};
    __pyx_t_7 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__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(0, 5565, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
  }
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 5565, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_9 = (!__pyx_t_1);
  if (__pyx_t_9) {
  } else {
    __pyx_t_2 = __pyx_t_9;
    goto __pyx_L38_bool_binop_done;
  }
  __pyx_t_1 = __Pyx_HasAttr(__pyx_v_data, __pyx_mstate_global->__pyx_n_u_data); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 5565, __pyx_L1_error)
  if (__pyx_t_1) {
  } else {
    __pyx_t_9 = __pyx_t_1;
    goto __pyx_L40_bool_binop_done;
  }
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_mstate_global->__pyx_n_u_data); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5565, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = PyMemoryView_Check(__pyx_t_7); 
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_9 = __pyx_t_1;
  __pyx_L40_bool_binop_done:;
  __pyx_t_1 = (!__pyx_t_9);
  __pyx_t_2 = __pyx_t_1;
  __pyx_L38_bool_binop_done:;
  if (__pyx_t_2) {

    /* "netCDF4/_netCDF4.pyx":5567
 *         if not ma.isMA(data) and not (hasattr(data,'data') and isinstance(data.data,memoryview)):
 *             # if auto scaling is to be done, don't cast to an integer yet.
 *             if self.scale and self.dtype.kind in 'iu' and \             # <<<<<<<<<<<<<<
 *                hasattr(self, 'scale_factor') or hasattr(self, 'add_offset'):
 *                 data = numpy.array(data,numpy.float64)
*/
    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->scale); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 5567, __pyx_L1_error)
    if (!__pyx_t_1) {
      goto __pyx_L44_next_or;
    } else {
    }
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->dtype, __pyx_mstate_global->__pyx_n_u_kind); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5567, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_1 = (__Pyx_PyUnicode_ContainsTF(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_iu, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 5567, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (!__pyx_t_1) {
      goto __pyx_L44_next_or;
    } else {
    }

    /* "netCDF4/_netCDF4.pyx":5568
 *             # if auto scaling is to be done, don't cast to an integer yet.
 *             if self.scale and self.dtype.kind in 'iu' and \
 *                hasattr(self, 'scale_factor') or hasattr(self, 'add_offset'):             # <<<<<<<<<<<<<<
 *                 data = numpy.array(data,numpy.float64)
 *             else:
*/
    __pyx_t_1 = __Pyx_HasAttr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_scale_factor); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 5568, __pyx_L1_error)
    if (!__pyx_t_1) {
    } else {
      __pyx_t_2 = __pyx_t_1;
      goto __pyx_L43_bool_binop_done;
    }
    __pyx_L44_next_or:;
    __pyx_t_1 = __Pyx_HasAttr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_add_offset); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 5568, __pyx_L1_error)
    __pyx_t_2 = __pyx_t_1;
    __pyx_L43_bool_binop_done:;

    /* "netCDF4/_netCDF4.pyx":5567
 *         if not ma.isMA(data) and not (hasattr(data,'data') and isinstance(data.data,memoryview)):
 *             # if auto scaling is to be done, don't cast to an integer yet.
 *             if self.scale and self.dtype.kind in 'iu' and \             # <<<<<<<<<<<<<<
 *                hasattr(self, 'scale_factor') or hasattr(self, 'add_offset'):
 *                 data = numpy.array(data,numpy.float64)
*/
    if (__pyx_t_2) {

      /* "netCDF4/_netCDF4.pyx":5569
 *             if self.scale and self.dtype.kind in 'iu' and \
 *                hasattr(self, 'scale_factor') or hasattr(self, 'add_offset'):
 *                 data = numpy.array(data,numpy.float64)             # <<<<<<<<<<<<<<
 *             else:
 *                 data = numpy.array(data,self.dtype)
*/
      __pyx_t_4 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5569, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5569, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5569, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_float64); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5569, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_8 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(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_8 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_v_data, __pyx_t_5};
        __pyx_t_7 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_3, __pyx_callargs+__pyx_t_8, (3-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5569, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
      }
      __Pyx_DECREF_SET(__pyx_v_data, __pyx_t_7);
      __pyx_t_7 = 0;

      /* "netCDF4/_netCDF4.pyx":5567
 *         if not ma.isMA(data) and not (hasattr(data,'data') and isinstance(data.data,memoryview)):
 *             # if auto scaling is to be done, don't cast to an integer yet.
 *             if self.scale and self.dtype.kind in 'iu' and \             # <<<<<<<<<<<<<<
 *                hasattr(self, 'scale_factor') or hasattr(self, 'add_offset'):
 *                 data = numpy.array(data,numpy.float64)
*/
      goto __pyx_L42;
    }

    /* "netCDF4/_netCDF4.pyx":5571
 *                 data = numpy.array(data,numpy.float64)
 *             else:
 *                 data = numpy.array(data,self.dtype)             # <<<<<<<<<<<<<<
 * 
 *         # for Enum variable, make sure data is valid.
*/
    /*else*/ {
      __pyx_t_3 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5571, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_array); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5571, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_8 = 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_8 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_v_data, __pyx_v_self->dtype};
        __pyx_t_7 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_8, (3-__pyx_t_8) | (__pyx_t_8*__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_7)) __PYX_ERR(0, 5571, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
      }
      __Pyx_DECREF_SET(__pyx_v_data, __pyx_t_7);
      __pyx_t_7 = 0;
    }
    __pyx_L42:;

    /* "netCDF4/_netCDF4.pyx":5565
 *         # A numpy or masked array (or an object supporting the buffer interface) is needed.
 *         # Convert if necessary.
 *         if not ma.isMA(data) and not (hasattr(data,'data') and isinstance(data.data,memoryview)):             # <<<<<<<<<<<<<<
 *             # if auto scaling is to be done, don't cast to an integer yet.
 *             if self.scale and self.dtype.kind in 'iu' and \
*/
  }

  /* "netCDF4/_netCDF4.pyx":5574
 * 
 *         # for Enum variable, make sure data is valid.
 *         if self._isenum:             # <<<<<<<<<<<<<<
 *             test = numpy.zeros(data.shape,numpy.bool_)
 *             if ma.isMA(data):
*/
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_self->_isenum); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 5574, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "netCDF4/_netCDF4.pyx":5575
 *         # for Enum variable, make sure data is valid.
 *         if self._isenum:
 *             test = numpy.zeros(data.shape,numpy.bool_)             # <<<<<<<<<<<<<<
 *             if ma.isMA(data):
 *                 # fix for new behaviour in numpy.ma in 1.13 (issue #662)
*/
    __pyx_t_4 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5575, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5575, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_mstate_global->__pyx_n_u_shape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5575, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5575, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_bool); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 5575, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_8 = 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_8 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_t_3, __pyx_t_11};
      __pyx_t_7 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_8, (3-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5575, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
    }
    __pyx_v_test = __pyx_t_7;
    __pyx_t_7 = 0;

    /* "netCDF4/_netCDF4.pyx":5576
 *         if self._isenum:
 *             test = numpy.zeros(data.shape,numpy.bool_)
 *             if ma.isMA(data):             # <<<<<<<<<<<<<<
 *                 # fix for new behaviour in numpy.ma in 1.13 (issue #662)
 *                 for val in self.datatype.enum_dict.values():
*/
    __pyx_t_5 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_ma); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 5576, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_isMA); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5576, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __pyx_t_8 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
      assert(__pyx_t_5);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
      __pyx_t_8 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_data};
      __pyx_t_7 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_3, __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_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5576, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
    }
    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 5576, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (__pyx_t_2) {

      /* "netCDF4/_netCDF4.pyx":5578
 *             if ma.isMA(data):
 *                 # fix for new behaviour in numpy.ma in 1.13 (issue #662)
 *                 for val in self.datatype.enum_dict.values():             # <<<<<<<<<<<<<<
 *                     test += data.filled() == val
 *             else:
*/
      __pyx_t_10 = 0;
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_datatype); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5578, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_enum_dict); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5578, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(__pyx_t_5 == Py_None)) {
        PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "values");
        __PYX_ERR(0, 5578, __pyx_L1_error)
      }
      __pyx_t_3 = __Pyx_dict_iterator(__pyx_t_5, 0, __pyx_mstate_global->__pyx_n_u_values, (&__pyx_t_12), (&__pyx_t_13)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5578, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_7);
      __pyx_t_7 = __pyx_t_3;
      __pyx_t_3 = 0;
      while (1) {
        __pyx_t_14 = __Pyx_dict_iter_next(__pyx_t_7, __pyx_t_12, &__pyx_t_10, NULL, &__pyx_t_3, NULL, __pyx_t_13);
        if (unlikely(__pyx_t_14 == 0)) break;
        if (unlikely(__pyx_t_14 == -1)) __PYX_ERR(0, 5578, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_XDECREF_SET(__pyx_v_val, __pyx_t_3);
        __pyx_t_3 = 0;

        /* "netCDF4/_netCDF4.pyx":5579
 *                 # fix for new behaviour in numpy.ma in 1.13 (issue #662)
 *                 for val in self.datatype.enum_dict.values():
 *                     test += data.filled() == val             # <<<<<<<<<<<<<<
 *             else:
 *                 for val in self.datatype.enum_dict.values():
*/
        __pyx_t_5 = __pyx_v_data;
        __Pyx_INCREF(__pyx_t_5);
        __pyx_t_8 = 0;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
          __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_filled, __pyx_callargs+__pyx_t_8, (1-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
          if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5579, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
        }
        __pyx_t_5 = PyObject_RichCompare(__pyx_t_3, __pyx_v_val, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5579, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_v_test, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5579, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF_SET(__pyx_v_test, __pyx_t_3);
        __pyx_t_3 = 0;
      }
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

      /* "netCDF4/_netCDF4.pyx":5576
 *         if self._isenum:
 *             test = numpy.zeros(data.shape,numpy.bool_)
 *             if ma.isMA(data):             # <<<<<<<<<<<<<<
 *                 # fix for new behaviour in numpy.ma in 1.13 (issue #662)
 *                 for val in self.datatype.enum_dict.values():
*/
      goto __pyx_L48;
    }

    /* "netCDF4/_netCDF4.pyx":5581
 *                     test += data.filled() == val
 *             else:
 *                 for val in self.datatype.enum_dict.values():             # <<<<<<<<<<<<<<
 *                     test += data == val
 *             if not numpy.all(test):
*/
    /*else*/ {
      __pyx_t_12 = 0;
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_datatype); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5581, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_enum_dict); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5581, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(__pyx_t_5 == Py_None)) {
        PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "values");
        __PYX_ERR(0, 5581, __pyx_L1_error)
      }
      __pyx_t_3 = __Pyx_dict_iterator(__pyx_t_5, 0, __pyx_mstate_global->__pyx_n_u_values, (&__pyx_t_10), (&__pyx_t_13)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5581, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_7);
      __pyx_t_7 = __pyx_t_3;
      __pyx_t_3 = 0;
      while (1) {
        __pyx_t_14 = __Pyx_dict_iter_next(__pyx_t_7, __pyx_t_10, &__pyx_t_12, NULL, &__pyx_t_3, NULL, __pyx_t_13);
        if (unlikely(__pyx_t_14 == 0)) break;
        if (unlikely(__pyx_t_14 == -1)) __PYX_ERR(0, 5581, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_XDECREF_SET(__pyx_v_val, __pyx_t_3);
        __pyx_t_3 = 0;

        /* "netCDF4/_netCDF4.pyx":5582
 *             else:
 *                 for val in self.datatype.enum_dict.values():
 *                     test += data == val             # <<<<<<<<<<<<<<
 *             if not numpy.all(test):
 *                 msg="trying to assign illegal value to Enum variable"
*/
        __pyx_t_3 = PyObject_RichCompare(__pyx_v_data, __pyx_v_val, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5582, __pyx_L1_error)
        __pyx_t_5 = PyNumber_InPlaceAdd(__pyx_v_test, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5582, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF_SET(__pyx_v_test, __pyx_t_5);
        __pyx_t_5 = 0;
      }
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __pyx_L48:;

    /* "netCDF4/_netCDF4.pyx":5583
 *                 for val in self.datatype.enum_dict.values():
 *                     test += data == val
 *             if not numpy.all(test):             # <<<<<<<<<<<<<<
 *                 msg="trying to assign illegal value to Enum variable"
 *                 raise ValueError(msg)
*/
    __pyx_t_5 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5583, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_all); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 5583, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_8 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_11))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_11);
      assert(__pyx_t_5);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_11);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_11, __pyx__function);
      __pyx_t_8 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_test};
      __pyx_t_7 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_11, __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_11); __pyx_t_11 = 0;
      if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5583, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
    }
    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 5583, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_1 = (!__pyx_t_2);
    if (unlikely(__pyx_t_1)) {

      /* "netCDF4/_netCDF4.pyx":5584
 *                     test += data == val
 *             if not numpy.all(test):
 *                 msg="trying to assign illegal value to Enum variable"             # <<<<<<<<<<<<<<
 *                 raise ValueError(msg)
 * 
*/
      __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u_trying_to_assign_illegal_value_t);
      __pyx_v_msg = __pyx_mstate_global->__pyx_kp_u_trying_to_assign_illegal_value_t;

      /* "netCDF4/_netCDF4.pyx":5585
 *             if not numpy.all(test):
 *                 msg="trying to assign illegal value to Enum variable"
 *                 raise ValueError(msg)             # <<<<<<<<<<<<<<
 * 
 *         start, count, stride, put_ind =\
*/
      __pyx_t_11 = NULL;
      __pyx_t_8 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_v_msg};
        __pyx_t_7 = __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_11); __pyx_t_11 = 0;
        if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5585, __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(0, 5585, __pyx_L1_error)

      /* "netCDF4/_netCDF4.pyx":5583
 *                 for val in self.datatype.enum_dict.values():
 *                     test += data == val
 *             if not numpy.all(test):             # <<<<<<<<<<<<<<
 *                 msg="trying to assign illegal value to Enum variable"
 *                 raise ValueError(msg)
*/
    }

    /* "netCDF4/_netCDF4.pyx":5574
 * 
 *         # for Enum variable, make sure data is valid.
 *         if self._isenum:             # <<<<<<<<<<<<<<
 *             test = numpy.zeros(data.shape,numpy.bool_)
 *             if ma.isMA(data):
*/
  }

  /* "netCDF4/_netCDF4.pyx":5588
 * 
 *         start, count, stride, put_ind =\
 *         _StartCountStride(elem,self.shape,self.dimensions,self._grp,datashape=data.shape,put=True,use_get_vars=self._use_get_vars)             # <<<<<<<<<<<<<<
 *         datashape = _out_array_shape(count)
 * 
*/
  __pyx_t_11 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_StartCountStride); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5588, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_shape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5588, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_dimensions); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5588, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_mstate_global->__pyx_n_u_shape); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5588, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_8 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_5);
    assert(__pyx_t_11);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
    __Pyx_INCREF(__pyx_t_11);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
    __pyx_t_8 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[5 + ((CYTHON_VECTORCALL) ? 3 : 0)] = {__pyx_t_11, __pyx_v_elem, __pyx_t_3, __pyx_t_4, __pyx_v_self->_grp};
    __pyx_t_15 = __Pyx_MakeVectorcallBuilderKwds(3); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 5588, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_15);
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_datashape, __pyx_t_6, __pyx_t_15, __pyx_callargs+5, 0) < (0)) __PYX_ERR(0, 5588, __pyx_L1_error)
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_put, Py_True, __pyx_t_15, __pyx_callargs+5, 1) < (0)) __PYX_ERR(0, 5588, __pyx_L1_error)
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_use_get_vars, __pyx_v_self->_use_get_vars, __pyx_t_15, __pyx_callargs+5, 2) < (0)) __PYX_ERR(0, 5588, __pyx_L1_error)
    __pyx_t_7 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_8, (5-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_15);
    __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5588, __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 != 4)) {
      if (size > 4) __Pyx_RaiseTooManyValuesError(4);
      else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
      __PYX_ERR(0, 5587, __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_15 = PyTuple_GET_ITEM(sequence, 1);
      __Pyx_INCREF(__pyx_t_15);
      __pyx_t_6 = PyTuple_GET_ITEM(sequence, 2);
      __Pyx_INCREF(__pyx_t_6);
      __pyx_t_4 = PyTuple_GET_ITEM(sequence, 3);
      __Pyx_INCREF(__pyx_t_4);
    } else {
      __pyx_t_5 = __Pyx_PyList_GetItemRefFast(sequence, 0, __Pyx_ReferenceSharing_SharedReference);
      if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5587, __pyx_L1_error)
      __Pyx_XGOTREF(__pyx_t_5);
      __pyx_t_15 = __Pyx_PyList_GetItemRefFast(sequence, 1, __Pyx_ReferenceSharing_SharedReference);
      if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 5587, __pyx_L1_error)
      __Pyx_XGOTREF(__pyx_t_15);
      __pyx_t_6 = __Pyx_PyList_GetItemRefFast(sequence, 2, __Pyx_ReferenceSharing_SharedReference);
      if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5587, __pyx_L1_error)
      __Pyx_XGOTREF(__pyx_t_6);
      __pyx_t_4 = __Pyx_PyList_GetItemRefFast(sequence, 3, __Pyx_ReferenceSharing_SharedReference);
      if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5587, __pyx_L1_error)
      __Pyx_XGOTREF(__pyx_t_4);
    }
    #else
    {
      Py_ssize_t i;
      PyObject** temps[4] = {&__pyx_t_5,&__pyx_t_15,&__pyx_t_6,&__pyx_t_4};
      for (i=0; i < 4; i++) {
        PyObject* item = __Pyx_PySequence_ITEM(sequence, i); if (unlikely(!item)) __PYX_ERR(0, 5587, __pyx_L1_error)
        __Pyx_GOTREF(item);
        *(temps[i]) = item;
      }
    }
    #endif
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  } else {
    Py_ssize_t index = -1;
    PyObject** temps[4] = {&__pyx_t_5,&__pyx_t_15,&__pyx_t_6,&__pyx_t_4};
    __pyx_t_3 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5587, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_16 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_3);
    for (index=0; index < 4; index++) {
      PyObject* item = __pyx_t_16(__pyx_t_3); if (unlikely(!item)) goto __pyx_L54_unpacking_failed;
      __Pyx_GOTREF(item);
      *(temps[index]) = item;
    }
    if (__Pyx_IternextUnpackEndCheck(__pyx_t_16(__pyx_t_3), 4) < (0)) __PYX_ERR(0, 5587, __pyx_L1_error)
    __pyx_t_16 = NULL;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L55_unpacking_done;
    __pyx_L54_unpacking_failed:;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_16 = NULL;
    if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
    __PYX_ERR(0, 5587, __pyx_L1_error)
    __pyx_L55_unpacking_done:;
  }

  /* "netCDF4/_netCDF4.pyx":5587
 *                 raise ValueError(msg)
 * 
 *         start, count, stride, put_ind =\             # <<<<<<<<<<<<<<
 *         _StartCountStride(elem,self.shape,self.dimensions,self._grp,datashape=data.shape,put=True,use_get_vars=self._use_get_vars)
 *         datashape = _out_array_shape(count)
*/
  __pyx_v_start = __pyx_t_5;
  __pyx_t_5 = 0;
  __pyx_v_count = __pyx_t_15;
  __pyx_t_15 = 0;
  __pyx_v_stride = __pyx_t_6;
  __pyx_t_6 = 0;
  __pyx_v_put_ind = __pyx_t_4;
  __pyx_t_4 = 0;

  /* "netCDF4/_netCDF4.pyx":5589
 *         start, count, stride, put_ind =\
 *         _StartCountStride(elem,self.shape,self.dimensions,self._grp,datashape=data.shape,put=True,use_get_vars=self._use_get_vars)
 *         datashape = _out_array_shape(count)             # <<<<<<<<<<<<<<
 * 
 *         # if a numpy scalar, create an array of the right size
*/
  __pyx_t_4 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_out_array_shape); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5589, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_8 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(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[2] = {__pyx_t_4, __pyx_v_count};
    __pyx_t_7 = __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_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5589, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
  }
  __pyx_v_datashape = __pyx_t_7;
  __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":5593
 *         # if a numpy scalar, create an array of the right size
 *         # and fill with scalar values.
 *         if data.shape == ():             # <<<<<<<<<<<<<<
 *             data = numpy.tile(data,datashape)
 *         # reshape data array if needed to conform with start,count,stride.
*/
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_mstate_global->__pyx_n_u_shape); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5593, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = PyObject_RichCompare(__pyx_t_7, __pyx_mstate_global->__pyx_empty_tuple, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5593, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 5593, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (__pyx_t_1) {

    /* "netCDF4/_netCDF4.pyx":5594
 *         # and fill with scalar values.
 *         if data.shape == ():
 *             data = numpy.tile(data,datashape)             # <<<<<<<<<<<<<<
 *         # reshape data array if needed to conform with start,count,stride.
 *         if data.ndim != len(datashape) or\
*/
    __pyx_t_7 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5594, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_tile); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 5594, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_15);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_8 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_15))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_15);
      assert(__pyx_t_7);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_15);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_15, __pyx__function);
      __pyx_t_8 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_v_data, __pyx_v_datashape};
      __pyx_t_6 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_15, __pyx_callargs+__pyx_t_8, (3-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
      if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5594, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
    }
    __Pyx_DECREF_SET(__pyx_v_data, __pyx_t_6);
    __pyx_t_6 = 0;

    /* "netCDF4/_netCDF4.pyx":5593
 *         # if a numpy scalar, create an array of the right size
 *         # and fill with scalar values.
 *         if data.shape == ():             # <<<<<<<<<<<<<<
 *             data = numpy.tile(data,datashape)
 *         # reshape data array if needed to conform with start,count,stride.
*/
  }

  /* "netCDF4/_netCDF4.pyx":5596
 *             data = numpy.tile(data,datashape)
 *         # reshape data array if needed to conform with start,count,stride.
 *         if data.ndim != len(datashape) or\             # <<<<<<<<<<<<<<
 *            (data.shape != datashape and data.ndim > 1): # issue #1083
 *             # create a view so shape in caller is not modified (issue 90)
*/
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_mstate_global->__pyx_n_u_ndim); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5596, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_10 = PyObject_Length(__pyx_v_datashape); if (unlikely(__pyx_t_10 == ((Py_ssize_t)-1))) __PYX_ERR(0, 5596, __pyx_L1_error)
  __pyx_t_15 = PyLong_FromSsize_t(__pyx_t_10); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 5596, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_15);
  __pyx_t_7 = PyObject_RichCompare(__pyx_t_6, __pyx_t_15, Py_NE); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5596, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 5596, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (!__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L58_bool_binop_done;
  }

  /* "netCDF4/_netCDF4.pyx":5597
 *         # reshape data array if needed to conform with start,count,stride.
 *         if data.ndim != len(datashape) or\
 *            (data.shape != datashape and data.ndim > 1): # issue #1083             # <<<<<<<<<<<<<<
 *             # create a view so shape in caller is not modified (issue 90)
 *             try: # if extra singleton dims, just reshape
*/
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_mstate_global->__pyx_n_u_shape); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5597, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_15 = PyObject_RichCompare(__pyx_t_7, __pyx_v_datashape, Py_NE); __Pyx_XGOTREF(__pyx_t_15); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 5597, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_15); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 5597, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L58_bool_binop_done;
  }
  __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_mstate_global->__pyx_n_u_ndim); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 5597, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_15);
  __pyx_t_7 = PyObject_RichCompare(__pyx_t_15, __pyx_mstate_global->__pyx_int_1, Py_GT); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5597, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 5597, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_1 = __pyx_t_2;
  __pyx_L58_bool_binop_done:;

  /* "netCDF4/_netCDF4.pyx":5596
 *             data = numpy.tile(data,datashape)
 *         # reshape data array if needed to conform with start,count,stride.
 *         if data.ndim != len(datashape) or\             # <<<<<<<<<<<<<<
 *            (data.shape != datashape and data.ndim > 1): # issue #1083
 *             # create a view so shape in caller is not modified (issue 90)
*/
  if (__pyx_t_1) {

    /* "netCDF4/_netCDF4.pyx":5599
 *            (data.shape != datashape and data.ndim > 1): # issue #1083
 *             # create a view so shape in caller is not modified (issue 90)
 *             try: # if extra singleton dims, just reshape             # <<<<<<<<<<<<<<
 *                 data = data.view()
 *                 data.shape = tuple(datashape)
*/
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
      __Pyx_XGOTREF(__pyx_t_17);
      __Pyx_XGOTREF(__pyx_t_18);
      __Pyx_XGOTREF(__pyx_t_19);
      /*try:*/ {

        /* "netCDF4/_netCDF4.pyx":5600
 *             # create a view so shape in caller is not modified (issue 90)
 *             try: # if extra singleton dims, just reshape
 *                 data = data.view()             # <<<<<<<<<<<<<<
 *                 data.shape = tuple(datashape)
 *             except ValueError: # otherwise broadcast
*/
        __pyx_t_15 = __pyx_v_data;
        __Pyx_INCREF(__pyx_t_15);
        __pyx_t_8 = 0;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_15, NULL};
          __pyx_t_7 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_view, __pyx_callargs+__pyx_t_8, (1-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
          if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5600, __pyx_L61_error)
          __Pyx_GOTREF(__pyx_t_7);
        }
        __Pyx_DECREF_SET(__pyx_v_data, __pyx_t_7);
        __pyx_t_7 = 0;

        /* "netCDF4/_netCDF4.pyx":5601
 *             try: # if extra singleton dims, just reshape
 *                 data = data.view()
 *                 data.shape = tuple(datashape)             # <<<<<<<<<<<<<<
 *             except ValueError: # otherwise broadcast
 *                 data = numpy.broadcast_to(data, datashape)
*/
        __pyx_t_7 = __Pyx_PySequence_Tuple(__pyx_v_datashape); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5601, __pyx_L61_error)
        __Pyx_GOTREF(__pyx_t_7);
        if (__Pyx_PyObject_SetAttrStr(__pyx_v_data, __pyx_mstate_global->__pyx_n_u_shape, __pyx_t_7) < (0)) __PYX_ERR(0, 5601, __pyx_L61_error)
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

        /* "netCDF4/_netCDF4.pyx":5599
 *            (data.shape != datashape and data.ndim > 1): # issue #1083
 *             # create a view so shape in caller is not modified (issue 90)
 *             try: # if extra singleton dims, just reshape             # <<<<<<<<<<<<<<
 *                 data = data.view()
 *                 data.shape = tuple(datashape)
*/
      }
      __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
      __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
      __Pyx_XDECREF(__pyx_t_19); __pyx_t_19 = 0;
      goto __pyx_L66_try_end;
      __pyx_L61_error:;
      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 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_XDECREF(__pyx_t_7); __pyx_t_7 = 0;

      /* "netCDF4/_netCDF4.pyx":5602
 *                 data = data.view()
 *                 data.shape = tuple(datashape)
 *             except ValueError: # otherwise broadcast             # <<<<<<<<<<<<<<
 *                 data = numpy.broadcast_to(data, datashape)
 * 
*/
      __pyx_t_13 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_ValueError))));
      if (__pyx_t_13) {
        __Pyx_AddTraceback("netCDF4._netCDF4.Variable.__setitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_15, &__pyx_t_6) < 0) __PYX_ERR(0, 5602, __pyx_L63_except_error)
        __Pyx_XGOTREF(__pyx_t_7);
        __Pyx_XGOTREF(__pyx_t_15);
        __Pyx_XGOTREF(__pyx_t_6);

        /* "netCDF4/_netCDF4.pyx":5603
 *                 data.shape = tuple(datashape)
 *             except ValueError: # otherwise broadcast
 *                 data = numpy.broadcast_to(data, datashape)             # <<<<<<<<<<<<<<
 * 
 *         # Reshape these arrays so we can iterate over them.
*/
        __pyx_t_5 = NULL;
        __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5603, __pyx_L63_except_error)
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_broadcast_to); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 5603, __pyx_L63_except_error)
        __Pyx_GOTREF(__pyx_t_11);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_t_8 = 1;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_11))) {
          __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_11);
          assert(__pyx_t_5);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_11);
          __Pyx_INCREF(__pyx_t_5);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_11, __pyx__function);
          __pyx_t_8 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_v_data, __pyx_v_datashape};
          __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_11, __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_11); __pyx_t_11 = 0;
          if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5603, __pyx_L63_except_error)
          __Pyx_GOTREF(__pyx_t_4);
        }
        __Pyx_DECREF_SET(__pyx_v_data, __pyx_t_4);
        __pyx_t_4 = 0;
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        goto __pyx_L62_exception_handled;
      }
      goto __pyx_L63_except_error;

      /* "netCDF4/_netCDF4.pyx":5599
 *            (data.shape != datashape and data.ndim > 1): # issue #1083
 *             # create a view so shape in caller is not modified (issue 90)
 *             try: # if extra singleton dims, just reshape             # <<<<<<<<<<<<<<
 *                 data = data.view()
 *                 data.shape = tuple(datashape)
*/
      __pyx_L63_except_error:;
      __Pyx_XGIVEREF(__pyx_t_17);
      __Pyx_XGIVEREF(__pyx_t_18);
      __Pyx_XGIVEREF(__pyx_t_19);
      __Pyx_ExceptionReset(__pyx_t_17, __pyx_t_18, __pyx_t_19);
      goto __pyx_L1_error;
      __pyx_L62_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_17);
      __Pyx_XGIVEREF(__pyx_t_18);
      __Pyx_XGIVEREF(__pyx_t_19);
      __Pyx_ExceptionReset(__pyx_t_17, __pyx_t_18, __pyx_t_19);
      __pyx_L66_try_end:;
    }

    /* "netCDF4/_netCDF4.pyx":5596
 *             data = numpy.tile(data,datashape)
 *         # reshape data array if needed to conform with start,count,stride.
 *         if data.ndim != len(datashape) or\             # <<<<<<<<<<<<<<
 *            (data.shape != datashape and data.ndim > 1): # issue #1083
 *             # create a view so shape in caller is not modified (issue 90)
*/
  }

  /* "netCDF4/_netCDF4.pyx":5606
 * 
 *         # Reshape these arrays so we can iterate over them.
 *         start = start.reshape((-1, self.ndim or 1))             # <<<<<<<<<<<<<<
 *         count = count.reshape((-1, self.ndim or 1))
 *         stride = stride.reshape((-1, self.ndim or 1))
*/
  __pyx_t_15 = __pyx_v_start;
  __Pyx_INCREF(__pyx_t_15);
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->ndim); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 5606, __pyx_L1_error)
  if (!__pyx_t_1) {
  } else {
    __Pyx_INCREF(__pyx_v_self->ndim);
    __pyx_t_7 = __pyx_v_self->ndim;
    goto __pyx_L69_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_PyLong_From_long(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5606, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_7 = __pyx_t_4;
  __pyx_t_4 = 0;
  __pyx_L69_bool_binop_done:;
  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5606, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_mstate_global->__pyx_int_neg_1);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_int_neg_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_mstate_global->__pyx_int_neg_1) != (0)) __PYX_ERR(0, 5606, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_7);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_7) != (0)) __PYX_ERR(0, 5606, __pyx_L1_error);
  __pyx_t_7 = 0;
  __pyx_t_8 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_15, __pyx_t_4};
    __pyx_t_6 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_reshape, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5606, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
  }
  __Pyx_DECREF_SET(__pyx_v_start, __pyx_t_6);
  __pyx_t_6 = 0;

  /* "netCDF4/_netCDF4.pyx":5607
 *         # Reshape these arrays so we can iterate over them.
 *         start = start.reshape((-1, self.ndim or 1))
 *         count = count.reshape((-1, self.ndim or 1))             # <<<<<<<<<<<<<<
 *         stride = stride.reshape((-1, self.ndim or 1))
 *         put_ind = put_ind.reshape((-1, self.ndim or 1))
*/
  __pyx_t_4 = __pyx_v_count;
  __Pyx_INCREF(__pyx_t_4);
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->ndim); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 5607, __pyx_L1_error)
  if (!__pyx_t_1) {
  } else {
    __Pyx_INCREF(__pyx_v_self->ndim);
    __pyx_t_15 = __pyx_v_self->ndim;
    goto __pyx_L71_bool_binop_done;
  }
  __pyx_t_7 = __Pyx_PyLong_From_long(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5607, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_15 = __pyx_t_7;
  __pyx_t_7 = 0;
  __pyx_L71_bool_binop_done:;
  __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5607, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_INCREF(__pyx_mstate_global->__pyx_int_neg_1);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_int_neg_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_mstate_global->__pyx_int_neg_1) != (0)) __PYX_ERR(0, 5607, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_15);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_15) != (0)) __PYX_ERR(0, 5607, __pyx_L1_error);
  __pyx_t_15 = 0;
  __pyx_t_8 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_7};
    __pyx_t_6 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_reshape, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (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_6)) __PYX_ERR(0, 5607, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
  }
  __Pyx_DECREF_SET(__pyx_v_count, __pyx_t_6);
  __pyx_t_6 = 0;

  /* "netCDF4/_netCDF4.pyx":5608
 *         start = start.reshape((-1, self.ndim or 1))
 *         count = count.reshape((-1, self.ndim or 1))
 *         stride = stride.reshape((-1, self.ndim or 1))             # <<<<<<<<<<<<<<
 *         put_ind = put_ind.reshape((-1, self.ndim or 1))
 * 
*/
  __pyx_t_7 = __pyx_v_stride;
  __Pyx_INCREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->ndim); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 5608, __pyx_L1_error)
  if (!__pyx_t_1) {
  } else {
    __Pyx_INCREF(__pyx_v_self->ndim);
    __pyx_t_4 = __pyx_v_self->ndim;
    goto __pyx_L73_bool_binop_done;
  }
  __pyx_t_15 = __Pyx_PyLong_From_long(1); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 5608, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_15);
  __pyx_t_4 = __pyx_t_15;
  __pyx_t_15 = 0;
  __pyx_L73_bool_binop_done:;
  __pyx_t_15 = PyTuple_New(2); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 5608, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_15);
  __Pyx_INCREF(__pyx_mstate_global->__pyx_int_neg_1);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_int_neg_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_mstate_global->__pyx_int_neg_1) != (0)) __PYX_ERR(0, 5608, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_4);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_15, 1, __pyx_t_4) != (0)) __PYX_ERR(0, 5608, __pyx_L1_error);
  __pyx_t_4 = 0;
  __pyx_t_8 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_15};
    __pyx_t_6 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_reshape, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
    if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5608, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
  }
  __Pyx_DECREF_SET(__pyx_v_stride, __pyx_t_6);
  __pyx_t_6 = 0;

  /* "netCDF4/_netCDF4.pyx":5609
 *         count = count.reshape((-1, self.ndim or 1))
 *         stride = stride.reshape((-1, self.ndim or 1))
 *         put_ind = put_ind.reshape((-1, self.ndim or 1))             # <<<<<<<<<<<<<<
 * 
 *         # quantize data if least_significant_digit attribute
*/
  __pyx_t_15 = __pyx_v_put_ind;
  __Pyx_INCREF(__pyx_t_15);
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->ndim); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 5609, __pyx_L1_error)
  if (!__pyx_t_1) {
  } else {
    __Pyx_INCREF(__pyx_v_self->ndim);
    __pyx_t_7 = __pyx_v_self->ndim;
    goto __pyx_L75_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_PyLong_From_long(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5609, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_7 = __pyx_t_4;
  __pyx_t_4 = 0;
  __pyx_L75_bool_binop_done:;
  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5609, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_mstate_global->__pyx_int_neg_1);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_int_neg_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_mstate_global->__pyx_int_neg_1) != (0)) __PYX_ERR(0, 5609, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_7);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_7) != (0)) __PYX_ERR(0, 5609, __pyx_L1_error);
  __pyx_t_7 = 0;
  __pyx_t_8 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_15, __pyx_t_4};
    __pyx_t_6 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_reshape, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5609, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
  }
  __Pyx_DECREF_SET(__pyx_v_put_ind, __pyx_t_6);
  __pyx_t_6 = 0;

  /* "netCDF4/_netCDF4.pyx":5613
 *         # quantize data if least_significant_digit attribute
 *         # exists (improves compression).
 *         if self._has_lsd:             # <<<<<<<<<<<<<<
 *             data = _quantize(data,self.least_significant_digit)
 * 
*/
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->_has_lsd); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 5613, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "netCDF4/_netCDF4.pyx":5614
 *         # exists (improves compression).
 *         if self._has_lsd:
 *             data = _quantize(data,self.least_significant_digit)             # <<<<<<<<<<<<<<
 * 
 *         if self.scale and self._isprimitive:
*/
    __pyx_t_4 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_15, __pyx_mstate_global->__pyx_n_u_quantize); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 5614, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_15);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_least_significant_digit); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5614, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_15))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_15);
      assert(__pyx_t_4);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_15);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_15, __pyx__function);
      __pyx_t_8 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_v_data, __pyx_t_7};
      __pyx_t_6 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_15, __pyx_callargs+__pyx_t_8, (3-__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;
      __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
      if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5614, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
    }
    __Pyx_DECREF_SET(__pyx_v_data, __pyx_t_6);
    __pyx_t_6 = 0;

    /* "netCDF4/_netCDF4.pyx":5613
 *         # quantize data if least_significant_digit attribute
 *         # exists (improves compression).
 *         if self._has_lsd:             # <<<<<<<<<<<<<<
 *             data = _quantize(data,self.least_significant_digit)
 * 
*/
  }

  /* "netCDF4/_netCDF4.pyx":5616
 *             data = _quantize(data,self.least_significant_digit)
 * 
 *         if self.scale and self._isprimitive:             # <<<<<<<<<<<<<<
 *             # pack non-masked values using scale_factor and add_offset
 *             data = self._pack(data)
*/
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_self->scale); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 5616, __pyx_L1_error)
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L79_bool_binop_done;
  }
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_self->_isprimitive); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 5616, __pyx_L1_error)
  __pyx_t_1 = __pyx_t_2;
  __pyx_L79_bool_binop_done:;
  if (__pyx_t_1) {

    /* "netCDF4/_netCDF4.pyx":5618
 *         if self.scale and self._isprimitive:
 *             # pack non-masked values using scale_factor and add_offset
 *             data = self._pack(data)             # <<<<<<<<<<<<<<
 * 
 *         # Fill output array with data chunks.
*/
    __pyx_t_15 = ((PyObject *)__pyx_v_self);
    __Pyx_INCREF(__pyx_t_15);
    __pyx_t_8 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_15, __pyx_v_data};
      __pyx_t_6 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_pack, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
      if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5618, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
    }
    __Pyx_DECREF_SET(__pyx_v_data, __pyx_t_6);
    __pyx_t_6 = 0;

    /* "netCDF4/_netCDF4.pyx":5616
 *             data = _quantize(data,self.least_significant_digit)
 * 
 *         if self.scale and self._isprimitive:             # <<<<<<<<<<<<<<
 *             # pack non-masked values using scale_factor and add_offset
 *             data = self._pack(data)
*/
  }

  /* "netCDF4/_netCDF4.pyx":5621
 * 
 *         # Fill output array with data chunks.
 *         for (a,b,c,i) in zip(start, count, stride, put_ind):             # <<<<<<<<<<<<<<
 *             dataput = data[tuple(i)]
 *             if dataput.size == 0: continue # nothing to write
*/
  __pyx_t_15 = NULL;
  __pyx_t_8 = 1;
  {
    PyObject *__pyx_callargs[5] = {__pyx_t_15, __pyx_v_start, __pyx_v_count, __pyx_v_stride, __pyx_v_put_ind};
    __pyx_t_6 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_zip, __pyx_callargs+__pyx_t_8, (5-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
    if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5621, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
  }
  if (likely(PyList_CheckExact(__pyx_t_6)) || PyTuple_CheckExact(__pyx_t_6)) {
    __pyx_t_15 = __pyx_t_6; __Pyx_INCREF(__pyx_t_15);
    __pyx_t_10 = 0;
    __pyx_t_20 = NULL;
  } else {
    __pyx_t_10 = -1; __pyx_t_15 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 5621, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_15);
    __pyx_t_20 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_15); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 5621, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  for (;;) {
    if (likely(!__pyx_t_20)) {
      if (likely(PyList_CheckExact(__pyx_t_15))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_15);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 5621, __pyx_L1_error)
          #endif
          if (__pyx_t_10 >= __pyx_temp) break;
        }
        __pyx_t_6 = __Pyx_PyList_GetItemRefFast(__pyx_t_15, __pyx_t_10, __Pyx_ReferenceSharing_OwnStrongReference);
        ++__pyx_t_10;
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_15);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 5621, __pyx_L1_error)
          #endif
          if (__pyx_t_10 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_6 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_15, __pyx_t_10));
        #else
        __pyx_t_6 = __Pyx_PySequence_ITEM(__pyx_t_15, __pyx_t_10);
        #endif
        ++__pyx_t_10;
      }
      if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5621, __pyx_L1_error)
    } else {
      __pyx_t_6 = __pyx_t_20(__pyx_t_15);
      if (unlikely(!__pyx_t_6)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 5621, __pyx_L1_error)
          PyErr_Clear();
        }
        break;
      }
    }
    __Pyx_GOTREF(__pyx_t_6);
    if ((likely(PyTuple_CheckExact(__pyx_t_6))) || (PyList_CheckExact(__pyx_t_6))) {
      PyObject* sequence = __pyx_t_6;
      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(0, 5621, __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_4 = PyTuple_GET_ITEM(sequence, 1);
        __Pyx_INCREF(__pyx_t_4);
        __pyx_t_11 = PyTuple_GET_ITEM(sequence, 2);
        __Pyx_INCREF(__pyx_t_11);
        __pyx_t_5 = PyTuple_GET_ITEM(sequence, 3);
        __Pyx_INCREF(__pyx_t_5);
      } else {
        __pyx_t_7 = __Pyx_PyList_GetItemRefFast(sequence, 0, __Pyx_ReferenceSharing_SharedReference);
        if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5621, __pyx_L1_error)
        __Pyx_XGOTREF(__pyx_t_7);
        __pyx_t_4 = __Pyx_PyList_GetItemRefFast(sequence, 1, __Pyx_ReferenceSharing_SharedReference);
        if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5621, __pyx_L1_error)
        __Pyx_XGOTREF(__pyx_t_4);
        __pyx_t_11 = __Pyx_PyList_GetItemRefFast(sequence, 2, __Pyx_ReferenceSharing_SharedReference);
        if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 5621, __pyx_L1_error)
        __Pyx_XGOTREF(__pyx_t_11);
        __pyx_t_5 = __Pyx_PyList_GetItemRefFast(sequence, 3, __Pyx_ReferenceSharing_SharedReference);
        if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5621, __pyx_L1_error)
        __Pyx_XGOTREF(__pyx_t_5);
      }
      #else
      {
        Py_ssize_t i;
        PyObject** temps[4] = {&__pyx_t_7,&__pyx_t_4,&__pyx_t_11,&__pyx_t_5};
        for (i=0; i < 4; i++) {
          PyObject* item = __Pyx_PySequence_ITEM(sequence, i); if (unlikely(!item)) __PYX_ERR(0, 5621, __pyx_L1_error)
          __Pyx_GOTREF(item);
          *(temps[i]) = item;
        }
      }
      #endif
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    } else {
      Py_ssize_t index = -1;
      PyObject** temps[4] = {&__pyx_t_7,&__pyx_t_4,&__pyx_t_11,&__pyx_t_5};
      __pyx_t_3 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5621, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_16 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_3);
      for (index=0; index < 4; index++) {
        PyObject* item = __pyx_t_16(__pyx_t_3); if (unlikely(!item)) goto __pyx_L83_unpacking_failed;
        __Pyx_GOTREF(item);
        *(temps[index]) = item;
      }
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_16(__pyx_t_3), 4) < (0)) __PYX_ERR(0, 5621, __pyx_L1_error)
      __pyx_t_16 = NULL;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      goto __pyx_L84_unpacking_done;
      __pyx_L83_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_16 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(0, 5621, __pyx_L1_error)
      __pyx_L84_unpacking_done:;
    }
    __Pyx_XDECREF_SET(__pyx_v_a, __pyx_t_7);
    __pyx_t_7 = 0;
    __Pyx_XDECREF_SET(__pyx_v_b, __pyx_t_4);
    __pyx_t_4 = 0;
    __Pyx_XDECREF_SET(__pyx_v_c, __pyx_t_11);
    __pyx_t_11 = 0;
    __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "netCDF4/_netCDF4.pyx":5622
 *         # Fill output array with data chunks.
 *         for (a,b,c,i) in zip(start, count, stride, put_ind):
 *             dataput = data[tuple(i)]             # <<<<<<<<<<<<<<
 *             if dataput.size == 0: continue # nothing to write
 *             # convert array scalar to regular array with one element.
*/
    __pyx_t_6 = __Pyx_PySequence_Tuple(__pyx_v_i); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5622, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_v_data, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5622, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_XDECREF_SET(__pyx_v_dataput, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "netCDF4/_netCDF4.pyx":5623
 *         for (a,b,c,i) in zip(start, count, stride, put_ind):
 *             dataput = data[tuple(i)]
 *             if dataput.size == 0: continue # nothing to write             # <<<<<<<<<<<<<<
 *             # convert array scalar to regular array with one element.
 *             if dataput.shape == ():
*/
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_dataput, __pyx_mstate_global->__pyx_n_u_size); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5623, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_1 = (__Pyx_PyLong_BoolEqObjC(__pyx_t_5, __pyx_mstate_global->__pyx_int_0, 0, 0)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 5623, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (__pyx_t_1) {
      goto __pyx_L81_continue;
    }

    /* "netCDF4/_netCDF4.pyx":5625
 *             if dataput.size == 0: continue # nothing to write
 *             # convert array scalar to regular array with one element.
 *             if dataput.shape == ():             # <<<<<<<<<<<<<<
 *                 if self._isvlen:
 *                     dataput=numpy.array(dataput,'O')
*/
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_dataput, __pyx_mstate_global->__pyx_n_u_shape); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5625, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = PyObject_RichCompare(__pyx_t_5, __pyx_mstate_global->__pyx_empty_tuple, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5625, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 5625, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (__pyx_t_1) {

      /* "netCDF4/_netCDF4.pyx":5626
 *             # convert array scalar to regular array with one element.
 *             if dataput.shape == ():
 *                 if self._isvlen:             # <<<<<<<<<<<<<<
 *                     dataput=numpy.array(dataput,'O')
 *                 else:
*/
      __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->_isvlen); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 5626, __pyx_L1_error)
      if (__pyx_t_1) {

        /* "netCDF4/_netCDF4.pyx":5627
 *             if dataput.shape == ():
 *                 if self._isvlen:
 *                     dataput=numpy.array(dataput,'O')             # <<<<<<<<<<<<<<
 *                 else:
 *                     dataput=numpy.array(dataput,dataput.dtype)
*/
        __pyx_t_5 = NULL;
        __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_numpy); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 5627, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_11);
        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_array); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5627, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
        __pyx_t_8 = 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_8 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_v_dataput, __pyx_mstate_global->__pyx_n_u_O};
          __pyx_t_6 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __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_4); __pyx_t_4 = 0;
          if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5627, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
        }
        __Pyx_DECREF_SET(__pyx_v_dataput, __pyx_t_6);
        __pyx_t_6 = 0;

        /* "netCDF4/_netCDF4.pyx":5626
 *             # convert array scalar to regular array with one element.
 *             if dataput.shape == ():
 *                 if self._isvlen:             # <<<<<<<<<<<<<<
 *                     dataput=numpy.array(dataput,'O')
 *                 else:
*/
        goto __pyx_L87;
      }

      /* "netCDF4/_netCDF4.pyx":5629
 *                     dataput=numpy.array(dataput,'O')
 *                 else:
 *                     dataput=numpy.array(dataput,dataput.dtype)             # <<<<<<<<<<<<<<
 *             self._put(dataput,a,b,c)
 * 
*/
      /*else*/ {
        __pyx_t_4 = NULL;
        __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_numpy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5629, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_array); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 5629, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_11);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_dataput, __pyx_mstate_global->__pyx_n_u_dtype); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5629, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_8 = 1;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_11))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_11);
          assert(__pyx_t_4);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_11);
          __Pyx_INCREF(__pyx_t_4);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_11, __pyx__function);
          __pyx_t_8 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_v_dataput, __pyx_t_5};
          __pyx_t_6 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_11, __pyx_callargs+__pyx_t_8, (3-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
          if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5629, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
        }
        __Pyx_DECREF_SET(__pyx_v_dataput, __pyx_t_6);
        __pyx_t_6 = 0;
      }
      __pyx_L87:;

      /* "netCDF4/_netCDF4.pyx":5625
 *             if dataput.size == 0: continue # nothing to write
 *             # convert array scalar to regular array with one element.
 *             if dataput.shape == ():             # <<<<<<<<<<<<<<
 *                 if self._isvlen:
 *                     dataput=numpy.array(dataput,'O')
*/
    }

    /* "netCDF4/_netCDF4.pyx":5630
 *                 else:
 *                     dataput=numpy.array(dataput,dataput.dtype)
 *             self._put(dataput,a,b,c)             # <<<<<<<<<<<<<<
 * 
 * 
*/
    __pyx_t_11 = ((PyObject *)__pyx_v_self);
    __Pyx_INCREF(__pyx_t_11);
    __pyx_t_8 = 0;
    {
      PyObject *__pyx_callargs[5] = {__pyx_t_11, __pyx_v_dataput, __pyx_v_a, __pyx_v_b, __pyx_v_c};
      __pyx_t_6 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_put_2, __pyx_callargs+__pyx_t_8, (5-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
      if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5630, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
    }
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

    /* "netCDF4/_netCDF4.pyx":5621
 * 
 *         # Fill output array with data chunks.
 *         for (a,b,c,i) in zip(start, count, stride, put_ind):             # <<<<<<<<<<<<<<
 *             dataput = data[tuple(i)]
 *             if dataput.size == 0: continue # nothing to write
*/
    __pyx_L81_continue:;
  }
  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;

  /* "netCDF4/_netCDF4.pyx":5494
 *         return is_safe
 * 
 *     def __setitem__(self, elem, data):             # <<<<<<<<<<<<<<
 *         # This special method is used to assign to the netCDF variable
 *         # using "extended slice syntax". The extended slice syntax
*/

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_15);
  __Pyx_AddTraceback("netCDF4._netCDF4.Variable.__setitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_encoding);
  __Pyx_XDECREF(__pyx_v_msg);
  __Pyx_XDECREF(__pyx_v_test);
  __Pyx_XDECREF(__pyx_v_val);
  __Pyx_XDECREF(__pyx_v_start);
  __Pyx_XDECREF(__pyx_v_count);
  __Pyx_XDECREF(__pyx_v_stride);
  __Pyx_XDECREF(__pyx_v_put_ind);
  __Pyx_XDECREF(__pyx_v_datashape);
  __Pyx_XDECREF(__pyx_v_a);
  __Pyx_XDECREF(__pyx_v_b);
  __Pyx_XDECREF(__pyx_v_c);
  __Pyx_XDECREF(__pyx_v_i);
  __Pyx_XDECREF(__pyx_v_dataput);
  __Pyx_XDECREF(__pyx_v_elem);
  __Pyx_XDECREF(__pyx_v_data);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":5633
 * 
 * 
 *     def __len__(self):             # <<<<<<<<<<<<<<
 *         if not self.shape:
 *             raise TypeError('len() of unsized object')
*/

/* Python wrapper */
static Py_ssize_t __pyx_pw_7netCDF4_8_netCDF4_8Variable_63__len__(PyObject *__pyx_v_self); /*proto*/
static Py_ssize_t __pyx_pw_7netCDF4_8_netCDF4_8Variable_63__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_7netCDF4_8_netCDF4_8Variable_62__len__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self));

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

static Py_ssize_t __pyx_pf_7netCDF4_8_netCDF4_8Variable_62__len__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self) {
  Py_ssize_t __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  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);

  /* "netCDF4/_netCDF4.pyx":5634
 * 
 *     def __len__(self):
 *         if not self.shape:             # <<<<<<<<<<<<<<
 *             raise TypeError('len() of unsized object')
 *         else:
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_shape); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5634, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 5634, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = (!__pyx_t_2);
  if (unlikely(__pyx_t_3)) {

    /* "netCDF4/_netCDF4.pyx":5635
 *     def __len__(self):
 *         if not self.shape:
 *             raise TypeError('len() of unsized object')             # <<<<<<<<<<<<<<
 *         else:
 *             return self.shape[0]
*/
    __pyx_t_4 = NULL;
    __pyx_t_5 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_len_of_unsized_object};
      __pyx_t_1 = __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_1)) __PYX_ERR(0, 5635, __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(0, 5635, __pyx_L1_error)

    /* "netCDF4/_netCDF4.pyx":5634
 * 
 *     def __len__(self):
 *         if not self.shape:             # <<<<<<<<<<<<<<
 *             raise TypeError('len() of unsized object')
 *         else:
*/
  }

  /* "netCDF4/_netCDF4.pyx":5637
 *             raise TypeError('len() of unsized object')
 *         else:
 *             return self.shape[0]             # <<<<<<<<<<<<<<
 * 
 * 
*/
  /*else*/ {
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_shape); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5637, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5637, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_6 = __Pyx_PyIndex_AsSsize_t(__pyx_t_4); if (unlikely((__pyx_t_6 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 5637, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_r = __pyx_t_6;
    goto __pyx_L0;
  }

  /* "netCDF4/_netCDF4.pyx":5633
 * 
 * 
 *     def __len__(self):             # <<<<<<<<<<<<<<
 *         if not self.shape:
 *             raise TypeError('len() of unsized object')
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("netCDF4._netCDF4.Variable.__len__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":5640
 * 
 * 
 *     def assignValue(self,val):             # <<<<<<<<<<<<<<
 *         """
 * **`assignValue(self, val)`**
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_65assignValue(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7netCDF4_8_netCDF4_8Variable_64assignValue, "\n**`assignValue(self, val)`**\n\nassign a value to a scalar variable.  Provided for compatibility with\nScientific.IO.NetCDF, can also be done by assigning to an Ellipsis slice ([...]).");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_8Variable_65assignValue = {"assignValue", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_8Variable_65assignValue, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_8Variable_64assignValue};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_65assignValue(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_val = 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("assignValue (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_val,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 5640, __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(0, 5640, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "assignValue", 0) < (0)) __PYX_ERR(0, 5640, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("assignValue", 1, 1, 1, i); __PYX_ERR(0, 5640, __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(0, 5640, __pyx_L3_error)
    }
    __pyx_v_val = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("assignValue", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 5640, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4.Variable.assignValue", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_8Variable_64assignValue(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self), __pyx_v_val);

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_64assignValue(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, PyObject *__pyx_v_val) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  int __pyx_t_3;
  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("assignValue", 0);

  /* "netCDF4/_netCDF4.pyx":5646
 * assign a value to a scalar variable.  Provided for compatibility with
 * Scientific.IO.NetCDF, can also be done by assigning to an Ellipsis slice ([...])."""
 *         if len(self.dimensions):             # <<<<<<<<<<<<<<
 *             raise IndexError('to assign values to a non-scalar variable, use a slice')
 *         self[:]=val
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_dimensions); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5646, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 5646, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = (__pyx_t_2 != 0);
  if (unlikely(__pyx_t_3)) {

    /* "netCDF4/_netCDF4.pyx":5647
 * Scientific.IO.NetCDF, can also be done by assigning to an Ellipsis slice ([...])."""
 *         if len(self.dimensions):
 *             raise IndexError('to assign values to a non-scalar variable, use a slice')             # <<<<<<<<<<<<<<
 *         self[:]=val
 * 
*/
    __pyx_t_4 = NULL;
    __pyx_t_5 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_to_assign_values_to_a_non_scalar};
      __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_IndexError)), __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_1)) __PYX_ERR(0, 5647, __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(0, 5647, __pyx_L1_error)

    /* "netCDF4/_netCDF4.pyx":5646
 * assign a value to a scalar variable.  Provided for compatibility with
 * Scientific.IO.NetCDF, can also be done by assigning to an Ellipsis slice ([...])."""
 *         if len(self.dimensions):             # <<<<<<<<<<<<<<
 *             raise IndexError('to assign values to a non-scalar variable, use a slice')
 *         self[:]=val
*/
  }

  /* "netCDF4/_netCDF4.pyx":5648
 *         if len(self.dimensions):
 *             raise IndexError('to assign values to a non-scalar variable, use a slice')
 *         self[:]=val             # <<<<<<<<<<<<<<
 * 
 *     def getValue(self):
*/
  if (__Pyx_PyObject_SetSlice(((PyObject *)__pyx_v_self), __pyx_v_val, 0, 0, NULL, NULL, &__pyx_mstate_global->__pyx_slice[1], 0, 0, 1) < (0)) __PYX_ERR(0, 5648, __pyx_L1_error)

  /* "netCDF4/_netCDF4.pyx":5640
 * 
 * 
 *     def assignValue(self,val):             # <<<<<<<<<<<<<<
 *         """
 * **`assignValue(self, val)`**
*/

  /* 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_4);
  __Pyx_AddTraceback("netCDF4._netCDF4.Variable.assignValue", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":5650
 *         self[:]=val
 * 
 *     def getValue(self):             # <<<<<<<<<<<<<<
 *         """
 * **`getValue(self)`**
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_67getValue(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7netCDF4_8_netCDF4_8Variable_66getValue, "\n**`getValue(self)`**\n\nget the value of a scalar variable.  Provided for compatibility with\nScientific.IO.NetCDF, can also be done by slicing with an Ellipsis ([...]).");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_8Variable_67getValue = {"getValue", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_8Variable_67getValue, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_8Variable_66getValue};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_67getValue(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getValue (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("getValue", 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("getValue", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_8Variable_66getValue(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_66getValue(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  int __pyx_t_3;
  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("getValue", 0);

  /* "netCDF4/_netCDF4.pyx":5656
 * get the value of a scalar variable.  Provided for compatibility with
 * Scientific.IO.NetCDF, can also be done by slicing with an Ellipsis ([...])."""
 *         if len(self.dimensions):             # <<<<<<<<<<<<<<
 *             raise IndexError('to retrieve values from a non-scalar variable, use slicing')
 *         return self[slice(None)]
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_dimensions); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5656, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 5656, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = (__pyx_t_2 != 0);
  if (unlikely(__pyx_t_3)) {

    /* "netCDF4/_netCDF4.pyx":5657
 * Scientific.IO.NetCDF, can also be done by slicing with an Ellipsis ([...])."""
 *         if len(self.dimensions):
 *             raise IndexError('to retrieve values from a non-scalar variable, use slicing')             # <<<<<<<<<<<<<<
 *         return self[slice(None)]
 * 
*/
    __pyx_t_4 = NULL;
    __pyx_t_5 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_to_retrieve_values_from_a_non_sc};
      __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_IndexError)), __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_1)) __PYX_ERR(0, 5657, __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(0, 5657, __pyx_L1_error)

    /* "netCDF4/_netCDF4.pyx":5656
 * get the value of a scalar variable.  Provided for compatibility with
 * Scientific.IO.NetCDF, can also be done by slicing with an Ellipsis ([...])."""
 *         if len(self.dimensions):             # <<<<<<<<<<<<<<
 *             raise IndexError('to retrieve values from a non-scalar variable, use slicing')
 *         return self[slice(None)]
*/
  }

  /* "netCDF4/_netCDF4.pyx":5658
 *         if len(self.dimensions):
 *             raise IndexError('to retrieve values from a non-scalar variable, use slicing')
 *         return self[slice(None)]             # <<<<<<<<<<<<<<
 * 
 *     def set_auto_chartostring(self,chartostring):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_slice[1]); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5658, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":5650
 *         self[:]=val
 * 
 *     def getValue(self):             # <<<<<<<<<<<<<<
 *         """
 * **`getValue(self)`**
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("netCDF4._netCDF4.Variable.getValue", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":5660
 *         return self[slice(None)]
 * 
 *     def set_auto_chartostring(self,chartostring):             # <<<<<<<<<<<<<<
 *         """
 * **`set_auto_chartostring(self,chartostring)`**
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_69set_auto_chartostring(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7netCDF4_8_netCDF4_8Variable_68set_auto_chartostring, "\n**`set_auto_chartostring(self,chartostring)`**\n\nturn on or off automatic conversion of character variable data to and\nfrom numpy fixed length string arrays when the `_Encoding` variable attribute\nis set.\n\nIf `chartostring` is set to `True`, when data is read from a character variable\n(dtype = `S1`) that has an `_Encoding` attribute, it is converted to a numpy\nfixed length unicode string array (dtype = `UN`, where `N` is the length\nof the the rightmost dimension of the variable).  The value of `_Encoding`\nis the unicode encoding that is used to decode the bytes into strings.\n\nWhen numpy string data is written to a variable it is converted back to\nindividual bytes, with the number of bytes in each string equalling the\nrightmost dimension of the variable.\n\nThe default value of `chartostring` is `True`\n(automatic conversions are performed).\n        ");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_8Variable_69set_auto_chartostring = {"set_auto_chartostring", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_8Variable_69set_auto_chartostring, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_8Variable_68set_auto_chartostring};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_69set_auto_chartostring(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_chartostring = 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_auto_chartostring (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_chartostring,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 5660, __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(0, 5660, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_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_auto_chartostring", 0) < (0)) __PYX_ERR(0, 5660, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("set_auto_chartostring", 1, 1, 1, i); __PYX_ERR(0, 5660, __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(0, 5660, __pyx_L3_error)
    }
    __pyx_v_chartostring = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("set_auto_chartostring", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 5660, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4.Variable.set_auto_chartostring", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_8Variable_68set_auto_chartostring(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self), __pyx_v_chartostring);

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_68set_auto_chartostring(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, PyObject *__pyx_v_chartostring) {
  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("set_auto_chartostring", 0);

  /* "netCDF4/_netCDF4.pyx":5681
 * (automatic conversions are performed).
 *         """
 *         self.chartostring = bool(chartostring)             # <<<<<<<<<<<<<<
 * 
 *     def use_nc_get_vars(self,use_nc_get_vars):
*/
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_chartostring); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 5681, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyBool_FromLong((!(!__pyx_t_1))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5681, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __Pyx_GOTREF(__pyx_v_self->chartostring);
  __Pyx_DECREF(__pyx_v_self->chartostring);
  __pyx_v_self->chartostring = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":5660
 *         return self[slice(None)]
 * 
 *     def set_auto_chartostring(self,chartostring):             # <<<<<<<<<<<<<<
 *         """
 * **`set_auto_chartostring(self,chartostring)`**
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("netCDF4._netCDF4.Variable.set_auto_chartostring", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":5683
 *         self.chartostring = bool(chartostring)
 * 
 *     def use_nc_get_vars(self,use_nc_get_vars):             # <<<<<<<<<<<<<<
 *         """
 * **`use_nc_get_vars(self,_use_get_vars)`**
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_71use_nc_get_vars(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7netCDF4_8_netCDF4_8Variable_70use_nc_get_vars, "\n**`use_nc_get_vars(self,_use_get_vars)`**\n\nenable the use of netcdf library routine `nc_get_vars`\nto retrieve strided variable slices.  By default,\n`nc_get_vars` may not used by default (depending on the\nversion of the netcdf-c library being used) since it may be\nslower than multiple calls to the unstrided read routine `nc_get_vara`.\n        ");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_8Variable_71use_nc_get_vars = {"use_nc_get_vars", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_8Variable_71use_nc_get_vars, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_8Variable_70use_nc_get_vars};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_71use_nc_get_vars(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_use_nc_get_vars = 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("use_nc_get_vars (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_use_nc_get_vars,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 5683, __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(0, 5683, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "use_nc_get_vars", 0) < (0)) __PYX_ERR(0, 5683, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("use_nc_get_vars", 1, 1, 1, i); __PYX_ERR(0, 5683, __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(0, 5683, __pyx_L3_error)
    }
    __pyx_v_use_nc_get_vars = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("use_nc_get_vars", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 5683, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4.Variable.use_nc_get_vars", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_8Variable_70use_nc_get_vars(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self), __pyx_v_use_nc_get_vars);

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_70use_nc_get_vars(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, PyObject *__pyx_v_use_nc_get_vars) {
  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("use_nc_get_vars", 0);

  /* "netCDF4/_netCDF4.pyx":5693
 * slower than multiple calls to the unstrided read routine `nc_get_vara`.
 *         """
 *         self._use_get_vars = bool(use_nc_get_vars)             # <<<<<<<<<<<<<<
 * 
 *     def set_auto_maskandscale(self,maskandscale):
*/
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_use_nc_get_vars); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 5693, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyBool_FromLong((!(!__pyx_t_1))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5693, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __Pyx_GOTREF(__pyx_v_self->_use_get_vars);
  __Pyx_DECREF(__pyx_v_self->_use_get_vars);
  __pyx_v_self->_use_get_vars = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":5683
 *         self.chartostring = bool(chartostring)
 * 
 *     def use_nc_get_vars(self,use_nc_get_vars):             # <<<<<<<<<<<<<<
 *         """
 * **`use_nc_get_vars(self,_use_get_vars)`**
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("netCDF4._netCDF4.Variable.use_nc_get_vars", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":5695
 *         self._use_get_vars = bool(use_nc_get_vars)
 * 
 *     def set_auto_maskandscale(self,maskandscale):             # <<<<<<<<<<<<<<
 *         """
 * **`set_auto_maskandscale(self,maskandscale)`**
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_73set_auto_maskandscale(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7netCDF4_8_netCDF4_8Variable_72set_auto_maskandscale, "\n**`set_auto_maskandscale(self,maskandscale)`**\n\nturn on or off automatic conversion of variable data to and\nfrom masked arrays, automatic packing/unpacking of variable\ndata using `scale_factor` and `add_offset` attributes and\nautomatic conversion of signed integer data to unsigned integer\ndata if the `_Unsigned` attribute exists and is set to \"true\" (or \"True\").\n\nIf `maskandscale` is set to `True`, when data is read from a variable\nit is converted to a masked array if any of the values are exactly\nequal to the either the netCDF _FillValue or the value specified by the\nmissing_value variable attribute. The fill_value of the masked array\nis set to the missing_value attribute (if it exists), otherwise\nthe netCDF _FillValue attribute (which has a default value\nfor each data type). If the variable has no missing_value attribute, the\n_FillValue is used instead. If the variable has valid_min/valid_max and\nmissing_value attributes, data outside the specified range will be masked.\nWhen data is written to a variable, the masked\narray is converted back to a regular numpy array by replacing all the\nmasked values by the missing_value attribute of the variable (if it\nexists).  If the variable has no missing_value attribute, the _FillValue\nis used instead.\n\nIf `maskandscale` is set to `True`, and the variable has a\n`scale_factor` or an `add_offset` attribute, then data read\nfrom that variable is unpacked using::\n\n    data = self.scale_factor*data + self.add_offset\n\nWhen data is written to a variable it is packed using::\n\n    data = (data - self.add_offset)/self.scale_factor\n\nIf either scale_factor is present, but add_offset is missing, add_offset\nis assumed zero.  If add_offset is present, but scale_factor is missing,\nscale_factor is assumed to be one.\nFor more information on how `scale_factor` and `add_offset` can be\nused to provide simple compression, see the\n[PSL metadata conventions](http://www.esrl.noaa.gov/psl/data/gridded/conventi""ons/cdc_netcdf_standard.shtml).\n\nIn addition, if `maskandscale` is set to `True`, and if the variable has an\nattribute `_Unsigned` set to \"true\", and the variable has a signed integer data type,\na view to the data is returned with the corresponding unsigned integer data type.\nThis convention is used by the netcdf-java library to save unsigned integer\ndata in `NETCDF3` or `NETCDF4_CLASSIC` files (since the `NETCDF3`\ndata model does not have unsigned integer data types).\n\nThe default value of `maskandscale` is `True`\n(automatic conversions are performed).\n        ");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_8Variable_73set_auto_maskandscale = {"set_auto_maskandscale", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_8Variable_73set_auto_maskandscale, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_8Variable_72set_auto_maskandscale};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_73set_auto_maskandscale(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_maskandscale = 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_auto_maskandscale (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_maskandscale,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 5695, __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(0, 5695, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_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_auto_maskandscale", 0) < (0)) __PYX_ERR(0, 5695, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("set_auto_maskandscale", 1, 1, 1, i); __PYX_ERR(0, 5695, __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(0, 5695, __pyx_L3_error)
    }
    __pyx_v_maskandscale = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("set_auto_maskandscale", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 5695, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4.Variable.set_auto_maskandscale", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_8Variable_72set_auto_maskandscale(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self), __pyx_v_maskandscale);

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_72set_auto_maskandscale(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, PyObject *__pyx_v_maskandscale) {
  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("set_auto_maskandscale", 0);

  /* "netCDF4/_netCDF4.pyx":5747
 * (automatic conversions are performed).
 *         """
 *         self.scale = self.mask = bool(maskandscale)             # <<<<<<<<<<<<<<
 * 
 *     def set_auto_scale(self,scale):
*/
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_maskandscale); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 5747, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyBool_FromLong((!(!__pyx_t_1))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5747, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __Pyx_GOTREF(__pyx_v_self->scale);
  __Pyx_DECREF(__pyx_v_self->scale);
  __pyx_v_self->scale = __pyx_t_2;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __Pyx_GOTREF(__pyx_v_self->mask);
  __Pyx_DECREF(__pyx_v_self->mask);
  __pyx_v_self->mask = __pyx_t_2;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":5695
 *         self._use_get_vars = bool(use_nc_get_vars)
 * 
 *     def set_auto_maskandscale(self,maskandscale):             # <<<<<<<<<<<<<<
 *         """
 * **`set_auto_maskandscale(self,maskandscale)`**
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("netCDF4._netCDF4.Variable.set_auto_maskandscale", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":5749
 *         self.scale = self.mask = bool(maskandscale)
 * 
 *     def set_auto_scale(self,scale):             # <<<<<<<<<<<<<<
 *         """
 * **`set_auto_scale(self,scale)`**
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_75set_auto_scale(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7netCDF4_8_netCDF4_8Variable_74set_auto_scale, "\n**`set_auto_scale(self,scale)`**\n\nturn on or off automatic packing/unpacking of variable\ndata using `scale_factor` and `add_offset` attributes.\nAlso turns on and off automatic conversion of signed integer data\nto unsigned integer data if the variable has an `_Unsigned`\nattribute set to \"true\" or \"True\".\n\nIf `scale` is set to `True`, and the variable has a\n`scale_factor` or an `add_offset` attribute, then data read\nfrom that variable is unpacked using::\n\n    data = self.scale_factor*data + self.add_offset\n\nWhen data is written to a variable it is packed using::\n\n    data = (data - self.add_offset)/self.scale_factor\n\nIf either scale_factor is present, but add_offset is missing, add_offset\nis assumed zero.  If add_offset is present, but scale_factor is missing,\nscale_factor is assumed to be one.\nFor more information on how `scale_factor` and `add_offset` can be\nused to provide simple compression, see the\n[PSL metadata conventions](http://www.esrl.noaa.gov/psl/data/gridded/conventions/cdc_netcdf_standard.shtml).\n\nIn addition, if `scale` is set to `True`, and if the variable has an\nattribute `_Unsigned` set to \"true\", and the variable has a signed integer data type,\na view to the data is returned with the corresponding unsigned integer datatype.\nThis convention is used by the netcdf-java library to save unsigned integer\ndata in `NETCDF3` or `NETCDF4_CLASSIC` files (since the `NETCDF3`\ndata model does not have unsigned integer data types).\n\nThe default value of `scale` is `True`\n(automatic conversions are performed).\n        ");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_8Variable_75set_auto_scale = {"set_auto_scale", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_8Variable_75set_auto_scale, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_8Variable_74set_auto_scale};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_75set_auto_scale(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_scale = 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_auto_scale (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_scale,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 5749, __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(0, 5749, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_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_auto_scale", 0) < (0)) __PYX_ERR(0, 5749, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("set_auto_scale", 1, 1, 1, i); __PYX_ERR(0, 5749, __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(0, 5749, __pyx_L3_error)
    }
    __pyx_v_scale = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("set_auto_scale", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 5749, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4.Variable.set_auto_scale", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_8Variable_74set_auto_scale(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self), __pyx_v_scale);

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_74set_auto_scale(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, PyObject *__pyx_v_scale) {
  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("set_auto_scale", 0);

  /* "netCDF4/_netCDF4.pyx":5786
 * (automatic conversions are performed).
 *         """
 *         self.scale = bool(scale)             # <<<<<<<<<<<<<<
 * 
 *     def set_auto_mask(self,mask):
*/
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_scale); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 5786, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyBool_FromLong((!(!__pyx_t_1))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5786, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __Pyx_GOTREF(__pyx_v_self->scale);
  __Pyx_DECREF(__pyx_v_self->scale);
  __pyx_v_self->scale = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":5749
 *         self.scale = self.mask = bool(maskandscale)
 * 
 *     def set_auto_scale(self,scale):             # <<<<<<<<<<<<<<
 *         """
 * **`set_auto_scale(self,scale)`**
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("netCDF4._netCDF4.Variable.set_auto_scale", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":5788
 *         self.scale = bool(scale)
 * 
 *     def set_auto_mask(self,mask):             # <<<<<<<<<<<<<<
 *         """
 * **`set_auto_mask(self,mask)`**
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_77set_auto_mask(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7netCDF4_8_netCDF4_8Variable_76set_auto_mask, "\n**`set_auto_mask(self,mask)`**\n\nturn on or off automatic conversion of variable data to and\nfrom masked arrays .\n\nIf `mask` is set to `True`, when data is read from a variable\nit is converted to a masked array if any of the values are exactly\nequal to the either the netCDF _FillValue or the value specified by the\nmissing_value variable attribute. The fill_value of the masked array\nis set to the missing_value attribute (if it exists), otherwise\nthe netCDF _FillValue attribute (which has a default value\nfor each data type). If the variable has no missing_value attribute, the\n_FillValue is used instead. If the variable has valid_min/valid_max and\nmissing_value attributes, data outside the specified range will be masked.\nWhen data is written to a variable, the masked\narray is converted back to a regular numpy array by replacing all the\nmasked values by the missing_value attribute of the variable (if it\nexists).  If the variable has no missing_value attribute, the _FillValue\nis used instead.\n\nThe default value of `mask` is `True`\n(automatic conversions are performed).\n        ");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_8Variable_77set_auto_mask = {"set_auto_mask", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_8Variable_77set_auto_mask, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_8Variable_76set_auto_mask};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_77set_auto_mask(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_mask = 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_auto_mask (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_mask,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 5788, __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(0, 5788, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_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_auto_mask", 0) < (0)) __PYX_ERR(0, 5788, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("set_auto_mask", 1, 1, 1, i); __PYX_ERR(0, 5788, __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(0, 5788, __pyx_L3_error)
    }
    __pyx_v_mask = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("set_auto_mask", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 5788, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4.Variable.set_auto_mask", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_8Variable_76set_auto_mask(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self), __pyx_v_mask);

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_76set_auto_mask(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, PyObject *__pyx_v_mask) {
  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("set_auto_mask", 0);

  /* "netCDF4/_netCDF4.pyx":5813
 * (automatic conversions are performed).
 *         """
 *         self.mask = bool(mask)             # <<<<<<<<<<<<<<
 * 
 *     def set_always_mask(self,always_mask):
*/
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_mask); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 5813, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyBool_FromLong((!(!__pyx_t_1))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5813, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __Pyx_GOTREF(__pyx_v_self->mask);
  __Pyx_DECREF(__pyx_v_self->mask);
  __pyx_v_self->mask = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":5788
 *         self.scale = bool(scale)
 * 
 *     def set_auto_mask(self,mask):             # <<<<<<<<<<<<<<
 *         """
 * **`set_auto_mask(self,mask)`**
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("netCDF4._netCDF4.Variable.set_auto_mask", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":5815
 *         self.mask = bool(mask)
 * 
 *     def set_always_mask(self,always_mask):             # <<<<<<<<<<<<<<
 *         """
 * **`set_always_mask(self,always_mask)`**
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_79set_always_mask(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7netCDF4_8_netCDF4_8Variable_78set_always_mask, "\n**`set_always_mask(self,always_mask)`**\n\nturn on or off conversion of data without missing values to regular\nnumpy arrays.\n\n`always_mask` is a Boolean determining if automatic conversion of\nmasked arrays with no missing values to regular numpy arrays shall be\napplied. Default is True. Set to False to restore the default behaviour\nin versions prior to 1.4.1 (numpy array returned unless missing values are present,\notherwise masked array returned).\n        ");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_8Variable_79set_always_mask = {"set_always_mask", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_8Variable_79set_always_mask, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_8Variable_78set_always_mask};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_79set_always_mask(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_always_mask = 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_always_mask (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_always_mask,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 5815, __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(0, 5815, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_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_always_mask", 0) < (0)) __PYX_ERR(0, 5815, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("set_always_mask", 1, 1, 1, i); __PYX_ERR(0, 5815, __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(0, 5815, __pyx_L3_error)
    }
    __pyx_v_always_mask = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("set_always_mask", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 5815, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4.Variable.set_always_mask", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_8Variable_78set_always_mask(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self), __pyx_v_always_mask);

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_78set_always_mask(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, PyObject *__pyx_v_always_mask) {
  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("set_always_mask", 0);

  /* "netCDF4/_netCDF4.pyx":5828
 * otherwise masked array returned).
 *         """
 *         self.always_mask = bool(always_mask)             # <<<<<<<<<<<<<<
 * 
 *     def set_ncstring_attrs(self,ncstring_attrs):
*/
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_always_mask); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 5828, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyBool_FromLong((!(!__pyx_t_1))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5828, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __Pyx_GOTREF(__pyx_v_self->always_mask);
  __Pyx_DECREF(__pyx_v_self->always_mask);
  __pyx_v_self->always_mask = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":5815
 *         self.mask = bool(mask)
 * 
 *     def set_always_mask(self,always_mask):             # <<<<<<<<<<<<<<
 *         """
 * **`set_always_mask(self,always_mask)`**
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("netCDF4._netCDF4.Variable.set_always_mask", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":5830
 *         self.always_mask = bool(always_mask)
 * 
 *     def set_ncstring_attrs(self,ncstring_attrs):             # <<<<<<<<<<<<<<
 *         """
 * **`set_always_mask(self,ncstring_attrs)`**
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_81set_ncstring_attrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7netCDF4_8_netCDF4_8Variable_80set_ncstring_attrs, "\n**`set_always_mask(self,ncstring_attrs)`**\n\nturn on or off creating NC_STRING string attributes.\n\nIf `ncstring_attrs` is set to `True` then text attributes will be variable-length\nNC_STRINGs.\n\nThe default value of `ncstring_attrs` is `False` (writing ascii text attributes as\nNC_CHAR).\n\n        ");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_8Variable_81set_ncstring_attrs = {"set_ncstring_attrs", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_8Variable_81set_ncstring_attrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_8Variable_80set_ncstring_attrs};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_81set_ncstring_attrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_ncstring_attrs = 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_ncstring_attrs (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_ncstring_attrs_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(0, 5830, __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(0, 5830, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_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_ncstring_attrs", 0) < (0)) __PYX_ERR(0, 5830, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("set_ncstring_attrs", 1, 1, 1, i); __PYX_ERR(0, 5830, __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(0, 5830, __pyx_L3_error)
    }
    __pyx_v_ncstring_attrs = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("set_ncstring_attrs", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 5830, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4.Variable.set_ncstring_attrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_8Variable_80set_ncstring_attrs(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self), __pyx_v_ncstring_attrs);

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_80set_ncstring_attrs(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, PyObject *__pyx_v_ncstring_attrs) {
  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("set_ncstring_attrs", 0);

  /* "netCDF4/_netCDF4.pyx":5843
 * 
 *         """
 *         self._ncstring_attrs__ = bool(ncstring_attrs)             # <<<<<<<<<<<<<<
 * 
 *     def _put(self,ndarray data,start,count,stride):
*/
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_ncstring_attrs); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 5843, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyBool_FromLong((!(!__pyx_t_1))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5843, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __Pyx_GOTREF(__pyx_v_self->_ncstring_attrs__);
  __Pyx_DECREF(__pyx_v_self->_ncstring_attrs__);
  __pyx_v_self->_ncstring_attrs__ = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":5830
 *         self.always_mask = bool(always_mask)
 * 
 *     def set_ncstring_attrs(self,ncstring_attrs):             # <<<<<<<<<<<<<<
 *         """
 * **`set_always_mask(self,ncstring_attrs)`**
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("netCDF4._netCDF4.Variable.set_ncstring_attrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":5845
 *         self._ncstring_attrs__ = bool(ncstring_attrs)
 * 
 *     def _put(self,ndarray data,start,count,stride):             # <<<<<<<<<<<<<<
 *         """Private method to put data into a netCDF variable"""
 *         cdef int ierr, ndims
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_83_put(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7netCDF4_8_netCDF4_8Variable_82_put, "Private method to put data into a netCDF variable");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_8Variable_83_put = {"_put", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_8Variable_83_put, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_8Variable_82_put};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_83_put(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyArrayObject *__pyx_v_data = 0;
  PyObject *__pyx_v_start = 0;
  PyObject *__pyx_v_count = 0;
  PyObject *__pyx_v_stride = 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("_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_data,&__pyx_mstate_global->__pyx_n_u_start,&__pyx_mstate_global->__pyx_n_u_count,&__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(0, 5845, __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(0, 5845, __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(0, 5845, __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(0, 5845, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 5845, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_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(0, 5845, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 4; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("_put", 1, 4, 4, i); __PYX_ERR(0, 5845, __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(0, 5845, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 5845, __pyx_L3_error)
      values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 5845, __pyx_L3_error)
      values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 5845, __pyx_L3_error)
    }
    __pyx_v_data = ((PyArrayObject *)values[0]);
    __pyx_v_start = values[1];
    __pyx_v_count = values[2];
    __pyx_v_stride = values[3];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_put", 1, 4, 4, __pyx_nargs); __PYX_ERR(0, 5845, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4.Variable._put", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_data), __pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_ndarray, 1, "data", 0))) __PYX_ERR(0, 5845, __pyx_L1_error)
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_8Variable_82_put(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self), __pyx_v_data, __pyx_v_start, __pyx_v_count, __pyx_v_stride);

  /* 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_7netCDF4_8_netCDF4_8Variable_82_put(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, PyArrayObject *__pyx_v_data, PyObject *__pyx_v_start, PyObject *__pyx_v_count, PyObject *__pyx_v_stride) {
  int __pyx_v_ierr;
  int __pyx_v_ndims;
  npy_intp __pyx_v_totelem;
  npy_intp __pyx_v_dataelem;
  npy_intp __pyx_v_i;
  size_t *__pyx_v_startp;
  size_t *__pyx_v_countp;
  ptrdiff_t *__pyx_v_stridep;
  char **__pyx_v_strdata;
  void *__pyx_v_elptr;
  char *__pyx_v_databuff;
  PyArrayObject *__pyx_v_dataarr = 0;
  nc_vlen_t *__pyx_v_vldata;
  long __pyx_v_negstride;
  PyObject *__pyx_v_sl = NULL;
  PyObject *__pyx_v_n = NULL;
  PyObject *__pyx_v_encoding = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  size_t __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *(*__pyx_t_7)(PyObject *);
  ptrdiff_t __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_t_11;
  int __pyx_t_12;
  struct __pyx_opt_args_7netCDF4_8_netCDF4__strencode __pyx_t_13;
  npy_intp __pyx_t_14;
  npy_intp __pyx_t_15;
  npy_intp __pyx_t_16;
  char *__pyx_t_17;
  PyObject *__pyx_t_18[4];
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_put", 0);
  __Pyx_INCREF((PyObject *)__pyx_v_data);

  /* "netCDF4/_netCDF4.pyx":5858
 *         cdef nc_vlen_t *vldata
 *         # rank of variable.
 *         ndims = len(self.dimensions)             # <<<<<<<<<<<<<<
 *         # make sure data is contiguous.
 *         # if not, make a local copy.
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_dimensions); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5858, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 5858, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_ndims = __pyx_t_2;

  /* "netCDF4/_netCDF4.pyx":5861
 *         # make sure data is contiguous.
 *         # if not, make a local copy.
 *         if not PyArray_ISCONTIGUOUS(data):             # <<<<<<<<<<<<<<
 *             data = data.copy()
 *         # fill up startp,countp,stridep.
*/
  __pyx_t_3 = (!(PyArray_ISCONTIGUOUS(__pyx_v_data) != 0));
  if (__pyx_t_3) {

    /* "netCDF4/_netCDF4.pyx":5862
 *         # if not, make a local copy.
 *         if not PyArray_ISCONTIGUOUS(data):
 *             data = data.copy()             # <<<<<<<<<<<<<<
 *         # fill up startp,countp,stridep.
 *         totelem = 1
*/
    __pyx_t_4 = ((PyObject *)__pyx_v_data);
    __Pyx_INCREF(__pyx_t_4);
    __pyx_t_5 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
      __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_copy, __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_1)) __PYX_ERR(0, 5862, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_ndarray))))) __PYX_ERR(0, 5862, __pyx_L1_error)
    __Pyx_DECREF_SET(__pyx_v_data, ((PyArrayObject *)__pyx_t_1));
    __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":5861
 *         # make sure data is contiguous.
 *         # if not, make a local copy.
 *         if not PyArray_ISCONTIGUOUS(data):             # <<<<<<<<<<<<<<
 *             data = data.copy()
 *         # fill up startp,countp,stridep.
*/
  }

  /* "netCDF4/_netCDF4.pyx":5864
 *             data = data.copy()
 *         # fill up startp,countp,stridep.
 *         totelem = 1             # <<<<<<<<<<<<<<
 *         negstride = 0
 *         sl = []
*/
  __pyx_v_totelem = 1;

  /* "netCDF4/_netCDF4.pyx":5865
 *         # fill up startp,countp,stridep.
 *         totelem = 1
 *         negstride = 0             # <<<<<<<<<<<<<<
 *         sl = []
 *         startp = <size_t *>malloc(sizeof(size_t) * ndims)
*/
  __pyx_v_negstride = 0;

  /* "netCDF4/_netCDF4.pyx":5866
 *         totelem = 1
 *         negstride = 0
 *         sl = []             # <<<<<<<<<<<<<<
 *         startp = <size_t *>malloc(sizeof(size_t) * ndims)
 *         countp = <size_t *>malloc(sizeof(size_t) * ndims)
*/
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5866, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_sl = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":5867
 *         negstride = 0
 *         sl = []
 *         startp = <size_t *>malloc(sizeof(size_t) * ndims)             # <<<<<<<<<<<<<<
 *         countp = <size_t *>malloc(sizeof(size_t) * ndims)
 *         stridep = <ptrdiff_t *>malloc(sizeof(ptrdiff_t) * ndims)
*/
  __pyx_v_startp = ((size_t *)malloc(((sizeof(size_t)) * __pyx_v_ndims)));

  /* "netCDF4/_netCDF4.pyx":5868
 *         sl = []
 *         startp = <size_t *>malloc(sizeof(size_t) * ndims)
 *         countp = <size_t *>malloc(sizeof(size_t) * ndims)             # <<<<<<<<<<<<<<
 *         stridep = <ptrdiff_t *>malloc(sizeof(ptrdiff_t) * ndims)
 *         for n in range(ndims):
*/
  __pyx_v_countp = ((size_t *)malloc(((sizeof(size_t)) * __pyx_v_ndims)));

  /* "netCDF4/_netCDF4.pyx":5869
 *         startp = <size_t *>malloc(sizeof(size_t) * ndims)
 *         countp = <size_t *>malloc(sizeof(size_t) * ndims)
 *         stridep = <ptrdiff_t *>malloc(sizeof(ptrdiff_t) * ndims)             # <<<<<<<<<<<<<<
 *         for n in range(ndims):
 *             count[n] = abs(count[n]) # make -1 into +1
*/
  __pyx_v_stridep = ((ptrdiff_t *)malloc(((sizeof(ptrdiff_t)) * __pyx_v_ndims)));

  /* "netCDF4/_netCDF4.pyx":5870
 *         countp = <size_t *>malloc(sizeof(size_t) * ndims)
 *         stridep = <ptrdiff_t *>malloc(sizeof(ptrdiff_t) * ndims)
 *         for n in range(ndims):             # <<<<<<<<<<<<<<
 *             count[n] = abs(count[n]) # make -1 into +1
 *             countp[n] = count[n]
*/
  __pyx_t_4 = NULL;
  __pyx_t_6 = __Pyx_PyLong_From_int(__pyx_v_ndims); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5870, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_5 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_6};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)(&PyRange_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;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5870, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_t_6 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5870, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5870, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  for (;;) {
    {
      __pyx_t_1 = __pyx_t_7(__pyx_t_6);
      if (unlikely(!__pyx_t_1)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 5870, __pyx_L1_error)
          PyErr_Clear();
        }
        break;
      }
    }
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_XDECREF_SET(__pyx_v_n, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":5871
 *         stridep = <ptrdiff_t *>malloc(sizeof(ptrdiff_t) * ndims)
 *         for n in range(ndims):
 *             count[n] = abs(count[n]) # make -1 into +1             # <<<<<<<<<<<<<<
 *             countp[n] = count[n]
 *             # for neg strides, reverse order (then flip that axis after data read in)
*/
    __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_v_count, __pyx_v_n); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5871, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_4 = __Pyx_PyNumber_Absolute(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5871, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (unlikely((PyObject_SetItem(__pyx_v_count, __pyx_v_n, __pyx_t_4) < 0))) __PYX_ERR(0, 5871, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "netCDF4/_netCDF4.pyx":5872
 *         for n in range(ndims):
 *             count[n] = abs(count[n]) # make -1 into +1
 *             countp[n] = count[n]             # <<<<<<<<<<<<<<
 *             # for neg strides, reverse order (then flip that axis after data read in)
 *             if stride[n] < 0:
*/
    __pyx_t_4 = __Pyx_PyObject_GetItem(__pyx_v_count, __pyx_v_n); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5872, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyLong_As_size_t(__pyx_t_4); if (unlikely((__pyx_t_5 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 5872, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_2 = __Pyx_PyIndex_AsSsize_t(__pyx_v_n); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 5872, __pyx_L1_error)
    (__pyx_v_countp[__pyx_t_2]) = __pyx_t_5;

    /* "netCDF4/_netCDF4.pyx":5874
 *             countp[n] = count[n]
 *             # for neg strides, reverse order (then flip that axis after data read in)
 *             if stride[n] < 0:             # <<<<<<<<<<<<<<
 *                 negstride = 1
 *                 stridep[n] = -stride[n]
*/
    __pyx_t_4 = __Pyx_PyObject_GetItem(__pyx_v_stride, __pyx_v_n); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5874, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_1 = PyObject_RichCompare(__pyx_t_4, __pyx_mstate_global->__pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5874, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 5874, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (__pyx_t_3) {

      /* "netCDF4/_netCDF4.pyx":5875
 *             # for neg strides, reverse order (then flip that axis after data read in)
 *             if stride[n] < 0:
 *                 negstride = 1             # <<<<<<<<<<<<<<
 *                 stridep[n] = -stride[n]
 *                 startp[n] = start[n]+stride[n]*(count[n]-1)
*/
      __pyx_v_negstride = 1;

      /* "netCDF4/_netCDF4.pyx":5876
 *             if stride[n] < 0:
 *                 negstride = 1
 *                 stridep[n] = -stride[n]             # <<<<<<<<<<<<<<
 *                 startp[n] = start[n]+stride[n]*(count[n]-1)
 *                 stride[n] = -stride[n]
*/
      __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_v_stride, __pyx_v_n); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5876, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_4 = PyNumber_Negative(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5876, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_8 = __Pyx_PyLong_As_ptrdiff_t(__pyx_t_4); if (unlikely((__pyx_t_8 == (ptrdiff_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 5876, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_2 = __Pyx_PyIndex_AsSsize_t(__pyx_v_n); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 5876, __pyx_L1_error)
      (__pyx_v_stridep[__pyx_t_2]) = __pyx_t_8;

      /* "netCDF4/_netCDF4.pyx":5877
 *                 negstride = 1
 *                 stridep[n] = -stride[n]
 *                 startp[n] = start[n]+stride[n]*(count[n]-1)             # <<<<<<<<<<<<<<
 *                 stride[n] = -stride[n]
 *                 sl.append(slice(None, None, -1)) # this slice will reverse the data
*/
      __pyx_t_4 = __Pyx_PyObject_GetItem(__pyx_v_start, __pyx_v_n); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5877, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_v_stride, __pyx_v_n); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5877, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_9 = __Pyx_PyObject_GetItem(__pyx_v_count, __pyx_v_n); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 5877, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_10 = __Pyx_PyLong_SubtractObjC(__pyx_t_9, __pyx_mstate_global->__pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 5877, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_9 = PyNumber_Multiply(__pyx_t_1, __pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 5877, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __pyx_t_10 = PyNumber_Add(__pyx_t_4, __pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 5877, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_5 = __Pyx_PyLong_As_size_t(__pyx_t_10); if (unlikely((__pyx_t_5 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 5877, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __pyx_t_2 = __Pyx_PyIndex_AsSsize_t(__pyx_v_n); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 5877, __pyx_L1_error)
      (__pyx_v_startp[__pyx_t_2]) = __pyx_t_5;

      /* "netCDF4/_netCDF4.pyx":5878
 *                 stridep[n] = -stride[n]
 *                 startp[n] = start[n]+stride[n]*(count[n]-1)
 *                 stride[n] = -stride[n]             # <<<<<<<<<<<<<<
 *                 sl.append(slice(None, None, -1)) # this slice will reverse the data
 *             else:
*/
      __pyx_t_10 = __Pyx_PyObject_GetItem(__pyx_v_stride, __pyx_v_n); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 5878, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __pyx_t_9 = PyNumber_Negative(__pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 5878, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely((PyObject_SetItem(__pyx_v_stride, __pyx_v_n, __pyx_t_9) < 0))) __PYX_ERR(0, 5878, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

      /* "netCDF4/_netCDF4.pyx":5879
 *                 startp[n] = start[n]+stride[n]*(count[n]-1)
 *                 stride[n] = -stride[n]
 *                 sl.append(slice(None, None, -1)) # this slice will reverse the data             # <<<<<<<<<<<<<<
 *             else:
 *                 startp[n] = start[n]
*/
      __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_sl, __pyx_mstate_global->__pyx_slice[3]); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(0, 5879, __pyx_L1_error)

      /* "netCDF4/_netCDF4.pyx":5874
 *             countp[n] = count[n]
 *             # for neg strides, reverse order (then flip that axis after data read in)
 *             if stride[n] < 0:             # <<<<<<<<<<<<<<
 *                 negstride = 1
 *                 stridep[n] = -stride[n]
*/
      goto __pyx_L6;
    }

    /* "netCDF4/_netCDF4.pyx":5881
 *                 sl.append(slice(None, None, -1)) # this slice will reverse the data
 *             else:
 *                 startp[n] = start[n]             # <<<<<<<<<<<<<<
 *                 stridep[n] = stride[n]
 *                 sl.append(slice(None,None, 1))
*/
    /*else*/ {
      __pyx_t_9 = __Pyx_PyObject_GetItem(__pyx_v_start, __pyx_v_n); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 5881, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_5 = __Pyx_PyLong_As_size_t(__pyx_t_9); if (unlikely((__pyx_t_5 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 5881, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_2 = __Pyx_PyIndex_AsSsize_t(__pyx_v_n); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 5881, __pyx_L1_error)
      (__pyx_v_startp[__pyx_t_2]) = __pyx_t_5;

      /* "netCDF4/_netCDF4.pyx":5882
 *             else:
 *                 startp[n] = start[n]
 *                 stridep[n] = stride[n]             # <<<<<<<<<<<<<<
 *                 sl.append(slice(None,None, 1))
 *             totelem = totelem*countp[n]
*/
      __pyx_t_9 = __Pyx_PyObject_GetItem(__pyx_v_stride, __pyx_v_n); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 5882, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_8 = __Pyx_PyLong_As_ptrdiff_t(__pyx_t_9); if (unlikely((__pyx_t_8 == (ptrdiff_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 5882, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_2 = __Pyx_PyIndex_AsSsize_t(__pyx_v_n); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 5882, __pyx_L1_error)
      (__pyx_v_stridep[__pyx_t_2]) = __pyx_t_8;

      /* "netCDF4/_netCDF4.pyx":5883
 *                 startp[n] = start[n]
 *                 stridep[n] = stride[n]
 *                 sl.append(slice(None,None, 1))             # <<<<<<<<<<<<<<
 *             totelem = totelem*countp[n]
 *         # check to see that size of data array is what is expected
*/
      __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_sl, __pyx_mstate_global->__pyx_slice[4]); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(0, 5883, __pyx_L1_error)
    }
    __pyx_L6:;

    /* "netCDF4/_netCDF4.pyx":5884
 *                 stridep[n] = stride[n]
 *                 sl.append(slice(None,None, 1))
 *             totelem = totelem*countp[n]             # <<<<<<<<<<<<<<
 *         # check to see that size of data array is what is expected
 *         # for slice given.
*/
    __pyx_t_2 = __Pyx_PyIndex_AsSsize_t(__pyx_v_n); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 5884, __pyx_L1_error)
    __pyx_v_totelem = (__pyx_v_totelem * (__pyx_v_countp[__pyx_t_2]));

    /* "netCDF4/_netCDF4.pyx":5870
 *         countp = <size_t *>malloc(sizeof(size_t) * ndims)
 *         stridep = <ptrdiff_t *>malloc(sizeof(ptrdiff_t) * ndims)
 *         for n in range(ndims):             # <<<<<<<<<<<<<<
 *             count[n] = abs(count[n]) # make -1 into +1
 *             countp[n] = count[n]
*/
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "netCDF4/_netCDF4.pyx":5887
 *         # check to see that size of data array is what is expected
 *         # for slice given.
 *         dataelem = PyArray_SIZE(data)             # <<<<<<<<<<<<<<
 *         if totelem != dataelem:
 *             raise IndexError('size of data array does not conform to slice')
*/
  __pyx_v_dataelem = PyArray_SIZE(__pyx_v_data);

  /* "netCDF4/_netCDF4.pyx":5888
 *         # for slice given.
 *         dataelem = PyArray_SIZE(data)
 *         if totelem != dataelem:             # <<<<<<<<<<<<<<
 *             raise IndexError('size of data array does not conform to slice')
 *         if negstride:
*/
  __pyx_t_3 = (__pyx_v_totelem != __pyx_v_dataelem);
  if (unlikely(__pyx_t_3)) {

    /* "netCDF4/_netCDF4.pyx":5889
 *         dataelem = PyArray_SIZE(data)
 *         if totelem != dataelem:
 *             raise IndexError('size of data array does not conform to slice')             # <<<<<<<<<<<<<<
 *         if negstride:
 *             # reverse data along axes with negative strides.
*/
    __pyx_t_9 = NULL;
    __pyx_t_5 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_mstate_global->__pyx_kp_u_size_of_data_array_does_not_conf};
      __pyx_t_6 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_IndexError)), __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5889, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
    }
    __Pyx_Raise(__pyx_t_6, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __PYX_ERR(0, 5889, __pyx_L1_error)

    /* "netCDF4/_netCDF4.pyx":5888
 *         # for slice given.
 *         dataelem = PyArray_SIZE(data)
 *         if totelem != dataelem:             # <<<<<<<<<<<<<<
 *             raise IndexError('size of data array does not conform to slice')
 *         if negstride:
*/
  }

  /* "netCDF4/_netCDF4.pyx":5890
 *         if totelem != dataelem:
 *             raise IndexError('size of data array does not conform to slice')
 *         if negstride:             # <<<<<<<<<<<<<<
 *             # reverse data along axes with negative strides.
 *             data = data[tuple(sl)].copy() # make sure a copy is made.
*/
  __pyx_t_3 = (__pyx_v_negstride != 0);
  if (__pyx_t_3) {

    /* "netCDF4/_netCDF4.pyx":5892
 *         if negstride:
 *             # reverse data along axes with negative strides.
 *             data = data[tuple(sl)].copy() # make sure a copy is made.             # <<<<<<<<<<<<<<
 *         if self._isprimitive or self._iscompound or self._isenum:
 *             # primitive, enum or compound data type.
*/
    __pyx_t_10 = PyList_AsTuple(__pyx_v_sl); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 5892, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_t_4 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_data), __pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5892, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __pyx_t_9 = __pyx_t_4;
    __Pyx_INCREF(__pyx_t_9);
    __pyx_t_5 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_9, NULL};
      __pyx_t_6 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_copy, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5892, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
    }
    if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_ndarray))))) __PYX_ERR(0, 5892, __pyx_L1_error)
    __Pyx_DECREF_SET(__pyx_v_data, ((PyArrayObject *)__pyx_t_6));
    __pyx_t_6 = 0;

    /* "netCDF4/_netCDF4.pyx":5890
 *         if totelem != dataelem:
 *             raise IndexError('size of data array does not conform to slice')
 *         if negstride:             # <<<<<<<<<<<<<<
 *             # reverse data along axes with negative strides.
 *             data = data[tuple(sl)].copy() # make sure a copy is made.
*/
  }

  /* "netCDF4/_netCDF4.pyx":5893
 *             # reverse data along axes with negative strides.
 *             data = data[tuple(sl)].copy() # make sure a copy is made.
 *         if self._isprimitive or self._iscompound or self._isenum:             # <<<<<<<<<<<<<<
 *             # primitive, enum or compound data type.
 *             # if data type of array doesn't match variable,
*/
  __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_v_self->_isprimitive); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 5893, __pyx_L1_error)
  if (!__pyx_t_12) {
  } else {
    __pyx_t_3 = __pyx_t_12;
    goto __pyx_L11_bool_binop_done;
  }
  __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_v_self->_iscompound); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 5893, __pyx_L1_error)
  if (!__pyx_t_12) {
  } else {
    __pyx_t_3 = __pyx_t_12;
    goto __pyx_L11_bool_binop_done;
  }
  __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_v_self->_isenum); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 5893, __pyx_L1_error)
  __pyx_t_3 = __pyx_t_12;
  __pyx_L11_bool_binop_done:;
  if (__pyx_t_3) {

    /* "netCDF4/_netCDF4.pyx":5897
 *             # if data type of array doesn't match variable,
 *             # try to cast the data.
 *             if self.dtype != data.dtype:             # <<<<<<<<<<<<<<
 *                 data = data.astype(self.dtype) # cast data, if necessary.
 *             # byte-swap data in numpy array so that is has native
*/
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_data), __pyx_mstate_global->__pyx_n_u_dtype); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5897, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_4 = PyObject_RichCompare(__pyx_v_self->dtype, __pyx_t_6, Py_NE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5897, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 5897, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (__pyx_t_3) {

      /* "netCDF4/_netCDF4.pyx":5898
 *             # try to cast the data.
 *             if self.dtype != data.dtype:
 *                 data = data.astype(self.dtype) # cast data, if necessary.             # <<<<<<<<<<<<<<
 *             # byte-swap data in numpy array so that is has native
 *             # endian byte order (this is what netcdf-c expects -
*/
      __pyx_t_6 = ((PyObject *)__pyx_v_data);
      __Pyx_INCREF(__pyx_t_6);
      __pyx_t_5 = 0;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_v_self->dtype};
        __pyx_t_4 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_astype, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5898, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
      }
      if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_ndarray))))) __PYX_ERR(0, 5898, __pyx_L1_error)
      __Pyx_DECREF_SET(__pyx_v_data, ((PyArrayObject *)__pyx_t_4));
      __pyx_t_4 = 0;

      /* "netCDF4/_netCDF4.pyx":5897
 *             # if data type of array doesn't match variable,
 *             # try to cast the data.
 *             if self.dtype != data.dtype:             # <<<<<<<<<<<<<<
 *                 data = data.astype(self.dtype) # cast data, if necessary.
 *             # byte-swap data in numpy array so that is has native
*/
    }

    /* "netCDF4/_netCDF4.pyx":5902
 *             # endian byte order (this is what netcdf-c expects -
 *             # issue #554, pull request #555)
 *             if not data.dtype.isnative:             # <<<<<<<<<<<<<<
 *                 data = data.byteswap()
 *             # strides all 1 or scalar variable, use put_vara (faster)
*/
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_data), __pyx_mstate_global->__pyx_n_u_dtype); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5902, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_isnative); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5902, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 5902, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_12 = (!__pyx_t_3);
    if (__pyx_t_12) {

      /* "netCDF4/_netCDF4.pyx":5903
 *             # issue #554, pull request #555)
 *             if not data.dtype.isnative:
 *                 data = data.byteswap()             # <<<<<<<<<<<<<<
 *             # strides all 1 or scalar variable, use put_vara (faster)
 *             if self._grp.auto_complex:
*/
      __pyx_t_4 = ((PyObject *)__pyx_v_data);
      __Pyx_INCREF(__pyx_t_4);
      __pyx_t_5 = 0;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
        __pyx_t_6 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_byteswap, __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_6)) __PYX_ERR(0, 5903, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
      }
      if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_ndarray))))) __PYX_ERR(0, 5903, __pyx_L1_error)
      __Pyx_DECREF_SET(__pyx_v_data, ((PyArrayObject *)__pyx_t_6));
      __pyx_t_6 = 0;

      /* "netCDF4/_netCDF4.pyx":5902
 *             # endian byte order (this is what netcdf-c expects -
 *             # issue #554, pull request #555)
 *             if not data.dtype.isnative:             # <<<<<<<<<<<<<<
 *                 data = data.byteswap()
 *             # strides all 1 or scalar variable, use put_vara (faster)
*/
    }

    /* "netCDF4/_netCDF4.pyx":5905
 *                 data = data.byteswap()
 *             # strides all 1 or scalar variable, use put_vara (faster)
 *             if self._grp.auto_complex:             # <<<<<<<<<<<<<<
 *                 with nogil:
 *                     ierr = pfnc_put_vars(self._grpid, self._varid,
*/
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_grp, __pyx_mstate_global->__pyx_n_u_auto_complex); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5905, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 5905, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (__pyx_t_12) {

      /* "netCDF4/_netCDF4.pyx":5906
 *             # strides all 1 or scalar variable, use put_vara (faster)
 *             if self._grp.auto_complex:
 *                 with nogil:             # <<<<<<<<<<<<<<
 *                     ierr = pfnc_put_vars(self._grpid, self._varid,
 *                                          startp, countp, stridep, PyArray_DATA(data))
*/
      {
          PyThreadState * _save;
          _save = PyEval_SaveThread();
          __Pyx_FastGIL_Remember();
          /*try:*/ {

            /* "netCDF4/_netCDF4.pyx":5907
 *             if self._grp.auto_complex:
 *                 with nogil:
 *                     ierr = pfnc_put_vars(self._grpid, self._varid,             # <<<<<<<<<<<<<<
 *                                          startp, countp, stridep, PyArray_DATA(data))
 *             elif sum(stride) == ndims or ndims == 0:
*/
            __pyx_v_ierr = pfnc_put_vars(__pyx_v_self->_grpid, __pyx_v_self->_varid, __pyx_v_startp, __pyx_v_countp, __pyx_v_stridep, PyArray_DATA(__pyx_v_data));
          }

          /* "netCDF4/_netCDF4.pyx":5906
 *             # strides all 1 or scalar variable, use put_vara (faster)
 *             if self._grp.auto_complex:
 *                 with nogil:             # <<<<<<<<<<<<<<
 *                     ierr = pfnc_put_vars(self._grpid, self._varid,
 *                                          startp, countp, stridep, PyArray_DATA(data))
*/
          /*finally:*/ {
            /*normal exit:*/{
              __Pyx_FastGIL_Forget();
              PyEval_RestoreThread(_save);
              goto __pyx_L19;
            }
            __pyx_L19:;
          }
      }

      /* "netCDF4/_netCDF4.pyx":5905
 *                 data = data.byteswap()
 *             # strides all 1 or scalar variable, use put_vara (faster)
 *             if self._grp.auto_complex:             # <<<<<<<<<<<<<<
 *                 with nogil:
 *                     ierr = pfnc_put_vars(self._grpid, self._varid,
*/
      goto __pyx_L16;
    }

    /* "netCDF4/_netCDF4.pyx":5909
 *                     ierr = pfnc_put_vars(self._grpid, self._varid,
 *                                          startp, countp, stridep, PyArray_DATA(data))
 *             elif sum(stride) == ndims or ndims == 0:             # <<<<<<<<<<<<<<
 *                 with nogil:
 *                     ierr = nc_put_vara(self._grpid, self._varid,
*/
    __pyx_t_4 = NULL;
    __pyx_t_5 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_stride};
      __pyx_t_6 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_sum, __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_6)) __PYX_ERR(0, 5909, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
    }
    __pyx_t_4 = __Pyx_PyLong_From_int(__pyx_v_ndims); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5909, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_9 = PyObject_RichCompare(__pyx_t_6, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 5909, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 5909, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    if (!__pyx_t_3) {
    } else {
      __pyx_t_12 = __pyx_t_3;
      goto __pyx_L20_bool_binop_done;
    }
    __pyx_t_3 = (__pyx_v_ndims == 0);
    __pyx_t_12 = __pyx_t_3;
    __pyx_L20_bool_binop_done:;
    if (__pyx_t_12) {

      /* "netCDF4/_netCDF4.pyx":5910
 *                                          startp, countp, stridep, PyArray_DATA(data))
 *             elif sum(stride) == ndims or ndims == 0:
 *                 with nogil:             # <<<<<<<<<<<<<<
 *                     ierr = nc_put_vara(self._grpid, self._varid,
 *                                        startp, countp, PyArray_DATA(data))
*/
      {
          PyThreadState * _save;
          _save = PyEval_SaveThread();
          __Pyx_FastGIL_Remember();
          /*try:*/ {

            /* "netCDF4/_netCDF4.pyx":5911
 *             elif sum(stride) == ndims or ndims == 0:
 *                 with nogil:
 *                     ierr = nc_put_vara(self._grpid, self._varid,             # <<<<<<<<<<<<<<
 *                                        startp, countp, PyArray_DATA(data))
 *             else:
*/
            __pyx_v_ierr = nc_put_vara(__pyx_v_self->_grpid, __pyx_v_self->_varid, __pyx_v_startp, __pyx_v_countp, PyArray_DATA(__pyx_v_data));
          }

          /* "netCDF4/_netCDF4.pyx":5910
 *                                          startp, countp, stridep, PyArray_DATA(data))
 *             elif sum(stride) == ndims or ndims == 0:
 *                 with nogil:             # <<<<<<<<<<<<<<
 *                     ierr = nc_put_vara(self._grpid, self._varid,
 *                                        startp, countp, PyArray_DATA(data))
*/
          /*finally:*/ {
            /*normal exit:*/{
              __Pyx_FastGIL_Forget();
              PyEval_RestoreThread(_save);
              goto __pyx_L24;
            }
            __pyx_L24:;
          }
      }

      /* "netCDF4/_netCDF4.pyx":5909
 *                     ierr = pfnc_put_vars(self._grpid, self._varid,
 *                                          startp, countp, stridep, PyArray_DATA(data))
 *             elif sum(stride) == ndims or ndims == 0:             # <<<<<<<<<<<<<<
 *                 with nogil:
 *                     ierr = nc_put_vara(self._grpid, self._varid,
*/
      goto __pyx_L16;
    }

    /* "netCDF4/_netCDF4.pyx":5914
 *                                        startp, countp, PyArray_DATA(data))
 *             else:
 *                 with nogil:             # <<<<<<<<<<<<<<
 *                     ierr = nc_put_vars(self._grpid, self._varid,
 *                                        startp, countp, stridep, PyArray_DATA(data))
*/
    /*else*/ {
      {
          PyThreadState * _save;
          _save = PyEval_SaveThread();
          __Pyx_FastGIL_Remember();
          /*try:*/ {

            /* "netCDF4/_netCDF4.pyx":5915
 *             else:
 *                 with nogil:
 *                     ierr = nc_put_vars(self._grpid, self._varid,             # <<<<<<<<<<<<<<
 *                                        startp, countp, stridep, PyArray_DATA(data))
 *             _ensure_nc_success(ierr)
*/
            __pyx_v_ierr = nc_put_vars(__pyx_v_self->_grpid, __pyx_v_self->_varid, __pyx_v_startp, __pyx_v_countp, __pyx_v_stridep, PyArray_DATA(__pyx_v_data));
          }

          /* "netCDF4/_netCDF4.pyx":5914
 *                                        startp, countp, PyArray_DATA(data))
 *             else:
 *                 with nogil:             # <<<<<<<<<<<<<<
 *                     ierr = nc_put_vars(self._grpid, self._varid,
 *                                        startp, countp, stridep, PyArray_DATA(data))
*/
          /*finally:*/ {
            /*normal exit:*/{
              __Pyx_FastGIL_Forget();
              PyEval_RestoreThread(_save);
              goto __pyx_L27;
            }
            __pyx_L27:;
          }
      }
    }
    __pyx_L16:;

    /* "netCDF4/_netCDF4.pyx":5917
 *                     ierr = nc_put_vars(self._grpid, self._varid,
 *                                        startp, countp, stridep, PyArray_DATA(data))
 *             _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 *         elif self._isvlen:
 *             if data.dtype.char !='O':
*/
    __pyx_t_4 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5917, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_10 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 5917, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_t_5 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(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_5 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_10};
      __pyx_t_9 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_6, __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_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 5917, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
    }
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

    /* "netCDF4/_netCDF4.pyx":5893
 *             # reverse data along axes with negative strides.
 *             data = data[tuple(sl)].copy() # make sure a copy is made.
 *         if self._isprimitive or self._iscompound or self._isenum:             # <<<<<<<<<<<<<<
 *             # primitive, enum or compound data type.
 *             # if data type of array doesn't match variable,
*/
    goto __pyx_L10;
  }

  /* "netCDF4/_netCDF4.pyx":5918
 *                                        startp, countp, stridep, PyArray_DATA(data))
 *             _ensure_nc_success(ierr)
 *         elif self._isvlen:             # <<<<<<<<<<<<<<
 *             if data.dtype.char !='O':
 *                 raise TypeError('data to put in string variable must be an object array containing Python strings')
*/
  __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_v_self->_isvlen); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 5918, __pyx_L1_error)
  if (__pyx_t_12) {

    /* "netCDF4/_netCDF4.pyx":5919
 *             _ensure_nc_success(ierr)
 *         elif self._isvlen:
 *             if data.dtype.char !='O':             # <<<<<<<<<<<<<<
 *                 raise TypeError('data to put in string variable must be an object array containing Python strings')
 *             # flatten data array.
*/
    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_data), __pyx_mstate_global->__pyx_n_u_dtype); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 5919, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_mstate_global->__pyx_n_u_char); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5919, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __pyx_t_12 = (__Pyx_PyUnicode_Equals(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_O, Py_NE)); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 5919, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(__pyx_t_12)) {

      /* "netCDF4/_netCDF4.pyx":5920
 *         elif self._isvlen:
 *             if data.dtype.char !='O':
 *                 raise TypeError('data to put in string variable must be an object array containing Python strings')             # <<<<<<<<<<<<<<
 *             # flatten data array.
 *             data = data.flatten()
*/
      __pyx_t_9 = NULL;
      __pyx_t_5 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_mstate_global->__pyx_kp_u_data_to_put_in_string_variable_m};
        __pyx_t_6 = __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_9); __pyx_t_9 = 0;
        if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5920, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
      }
      __Pyx_Raise(__pyx_t_6, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __PYX_ERR(0, 5920, __pyx_L1_error)

      /* "netCDF4/_netCDF4.pyx":5919
 *             _ensure_nc_success(ierr)
 *         elif self._isvlen:
 *             if data.dtype.char !='O':             # <<<<<<<<<<<<<<
 *                 raise TypeError('data to put in string variable must be an object array containing Python strings')
 *             # flatten data array.
*/
    }

    /* "netCDF4/_netCDF4.pyx":5922
 *                 raise TypeError('data to put in string variable must be an object array containing Python strings')
 *             # flatten data array.
 *             data = data.flatten()             # <<<<<<<<<<<<<<
 *             if self.dtype == str:
 *                 # convert all elements from strings to bytes
*/
    __pyx_t_9 = ((PyObject *)__pyx_v_data);
    __Pyx_INCREF(__pyx_t_9);
    __pyx_t_5 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_9, NULL};
      __pyx_t_6 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_flatten, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5922, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
    }
    if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_ndarray))))) __PYX_ERR(0, 5922, __pyx_L1_error)
    __Pyx_DECREF_SET(__pyx_v_data, ((PyArrayObject *)__pyx_t_6));
    __pyx_t_6 = 0;

    /* "netCDF4/_netCDF4.pyx":5923
 *             # flatten data array.
 *             data = data.flatten()
 *             if self.dtype == str:             # <<<<<<<<<<<<<<
 *                 # convert all elements from strings to bytes
 *                 # use _Encoding attribute to specify string encoding - if
*/
    __pyx_t_6 = PyObject_RichCompare(__pyx_v_self->dtype, ((PyObject *)(&PyUnicode_Type)), Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5923, __pyx_L1_error)
    __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 5923, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (__pyx_t_12) {

      /* "netCDF4/_netCDF4.pyx":5927
 *                 # use _Encoding attribute to specify string encoding - if
 *                 # not given, use 'utf-8'.
 *                 encoding = getattr(self,'_Encoding','utf-8')             # <<<<<<<<<<<<<<
 *                 for n in range(data.shape[0]):
 *                     data[n] = _strencode(data[n],encoding=encoding)
*/
      __pyx_t_6 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_Encoding, __pyx_mstate_global->__pyx_kp_u_utf_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5927, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_v_encoding = __pyx_t_6;
      __pyx_t_6 = 0;

      /* "netCDF4/_netCDF4.pyx":5928
 *                 # not given, use 'utf-8'.
 *                 encoding = getattr(self,'_Encoding','utf-8')
 *                 for n in range(data.shape[0]):             # <<<<<<<<<<<<<<
 *                     data[n] = _strencode(data[n],encoding=encoding)
 *                 # vlen string (NC_STRING)
*/
      __pyx_t_9 = NULL;
      __pyx_t_10 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_data), __pyx_mstate_global->__pyx_n_u_shape); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 5928, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_10, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5928, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __pyx_t_5 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_t_4};
        __pyx_t_6 = __Pyx_PyObject_FastCall((PyObject*)(&PyRange_Type), __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5928, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
      }
      __pyx_t_4 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5928, __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(0, 5928, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      for (;;) {
        {
          __pyx_t_6 = __pyx_t_7(__pyx_t_4);
          if (unlikely(!__pyx_t_6)) {
            PyObject* exc_type = PyErr_Occurred();
            if (exc_type) {
              if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 5928, __pyx_L1_error)
              PyErr_Clear();
            }
            break;
          }
        }
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_XDECREF_SET(__pyx_v_n, __pyx_t_6);
        __pyx_t_6 = 0;

        /* "netCDF4/_netCDF4.pyx":5929
 *                 encoding = getattr(self,'_Encoding','utf-8')
 *                 for n in range(data.shape[0]):
 *                     data[n] = _strencode(data[n],encoding=encoding)             # <<<<<<<<<<<<<<
 *                 # vlen string (NC_STRING)
 *                 # loop over elements of object array, put data buffer for
*/
        __pyx_t_6 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_data), __pyx_v_n); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5929, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_13.__pyx_n = 1;
        __pyx_t_13.encoding = __pyx_v_encoding;
        __pyx_t_9 = __pyx_f_7netCDF4_8_netCDF4__strencode(__pyx_t_6, &__pyx_t_13); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 5929, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        if (unlikely((PyObject_SetItem(((PyObject *)__pyx_v_data), __pyx_v_n, __pyx_t_9) < 0))) __PYX_ERR(0, 5929, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

        /* "netCDF4/_netCDF4.pyx":5928
 *                 # not given, use 'utf-8'.
 *                 encoding = getattr(self,'_Encoding','utf-8')
 *                 for n in range(data.shape[0]):             # <<<<<<<<<<<<<<
 *                     data[n] = _strencode(data[n],encoding=encoding)
 *                 # vlen string (NC_STRING)
*/
      }
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

      /* "netCDF4/_netCDF4.pyx":5934
 *                 # each element in struct.
 *                 # allocate struct array to hold vlen data.
 *                 strdata = <char **>malloc(sizeof(char *)*totelem)             # <<<<<<<<<<<<<<
 *                 for i in range(totelem):
 *                     strdata[i] = data[i]
*/
      __pyx_v_strdata = ((char **)malloc(((sizeof(char *)) * __pyx_v_totelem)));

      /* "netCDF4/_netCDF4.pyx":5935
 *                 # allocate struct array to hold vlen data.
 *                 strdata = <char **>malloc(sizeof(char *)*totelem)
 *                 for i in range(totelem):             # <<<<<<<<<<<<<<
 *                     strdata[i] = data[i]
 *                 # strides all 1 or scalar variable, use put_vara (faster)
*/
      __pyx_t_14 = __pyx_v_totelem;
      __pyx_t_15 = __pyx_t_14;
      for (__pyx_t_16 = 0; __pyx_t_16 < __pyx_t_15; __pyx_t_16+=1) {
        __pyx_v_i = __pyx_t_16;

        /* "netCDF4/_netCDF4.pyx":5936
 *                 strdata = <char **>malloc(sizeof(char *)*totelem)
 *                 for i in range(totelem):
 *                     strdata[i] = data[i]             # <<<<<<<<<<<<<<
 *                 # strides all 1 or scalar variable, use put_vara (faster)
 *                 if sum(stride) == ndims or ndims == 0:
*/
        __pyx_t_4 = __Pyx_GetItemInt(((PyObject *)__pyx_v_data), __pyx_v_i, npy_intp, 1, __Pyx_PyLong_From_npy_intp, 0, 1, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5936, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_17 = __Pyx_PyObject_AsWritableString(__pyx_t_4); if (unlikely((!__pyx_t_17) && PyErr_Occurred())) __PYX_ERR(0, 5936, __pyx_L1_error)
        (__pyx_v_strdata[__pyx_v_i]) = __pyx_t_17;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      }

      /* "netCDF4/_netCDF4.pyx":5938
 *                     strdata[i] = data[i]
 *                 # strides all 1 or scalar variable, use put_vara (faster)
 *                 if sum(stride) == ndims or ndims == 0:             # <<<<<<<<<<<<<<
 *                     with nogil:
 *                         ierr = nc_put_vara(self._grpid, self._varid,
*/
      __pyx_t_9 = NULL;
      __pyx_t_5 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_v_stride};
        __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_sum, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5938, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
      }
      __pyx_t_9 = __Pyx_PyLong_From_int(__pyx_v_ndims); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 5938, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_6 = PyObject_RichCompare(__pyx_t_4, __pyx_t_9, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5938, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 5938, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (!__pyx_t_3) {
      } else {
        __pyx_t_12 = __pyx_t_3;
        goto __pyx_L36_bool_binop_done;
      }
      __pyx_t_3 = (__pyx_v_ndims == 0);
      __pyx_t_12 = __pyx_t_3;
      __pyx_L36_bool_binop_done:;
      if (likely(__pyx_t_12)) {

        /* "netCDF4/_netCDF4.pyx":5939
 *                 # strides all 1 or scalar variable, use put_vara (faster)
 *                 if sum(stride) == ndims or ndims == 0:
 *                     with nogil:             # <<<<<<<<<<<<<<
 *                         ierr = nc_put_vara(self._grpid, self._varid,
 *                                            startp, countp, strdata)
*/
        {
            PyThreadState * _save;
            _save = PyEval_SaveThread();
            __Pyx_FastGIL_Remember();
            /*try:*/ {

              /* "netCDF4/_netCDF4.pyx":5940
 *                 if sum(stride) == ndims or ndims == 0:
 *                     with nogil:
 *                         ierr = nc_put_vara(self._grpid, self._varid,             # <<<<<<<<<<<<<<
 *                                            startp, countp, strdata)
 *                 else:
*/
              __pyx_v_ierr = nc_put_vara(__pyx_v_self->_grpid, __pyx_v_self->_varid, __pyx_v_startp, __pyx_v_countp, __pyx_v_strdata);
            }

            /* "netCDF4/_netCDF4.pyx":5939
 *                 # strides all 1 or scalar variable, use put_vara (faster)
 *                 if sum(stride) == ndims or ndims == 0:
 *                     with nogil:             # <<<<<<<<<<<<<<
 *                         ierr = nc_put_vara(self._grpid, self._varid,
 *                                            startp, countp, strdata)
*/
            /*finally:*/ {
              /*normal exit:*/{
                __Pyx_FastGIL_Forget();
                PyEval_RestoreThread(_save);
                goto __pyx_L40;
              }
              __pyx_L40:;
            }
        }

        /* "netCDF4/_netCDF4.pyx":5938
 *                     strdata[i] = data[i]
 *                 # strides all 1 or scalar variable, use put_vara (faster)
 *                 if sum(stride) == ndims or ndims == 0:             # <<<<<<<<<<<<<<
 *                     with nogil:
 *                         ierr = nc_put_vara(self._grpid, self._varid,
*/
        goto __pyx_L35;
      }

      /* "netCDF4/_netCDF4.pyx":5943
 *                                            startp, countp, strdata)
 *                 else:
 *                     raise IndexError('strides must all be 1 for string variables')             # <<<<<<<<<<<<<<
 *                     #with nogil:
 *                     #    ierr = nc_put_vars(self._grpid, self._varid,
*/
      /*else*/ {
        __pyx_t_9 = NULL;
        __pyx_t_5 = 1;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_mstate_global->__pyx_kp_u_strides_must_all_be_1_for_string};
          __pyx_t_6 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_IndexError)), __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
          if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5943, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
        }
        __Pyx_Raise(__pyx_t_6, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __PYX_ERR(0, 5943, __pyx_L1_error)
      }
      __pyx_L35:;

      /* "netCDF4/_netCDF4.pyx":5947
 *                     #    ierr = nc_put_vars(self._grpid, self._varid,
 *                     #                       startp, countp, stridep, strdata)
 *                 _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 *                 free(strdata)
 *             else:
*/
      __pyx_t_9 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5947, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_10 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 5947, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __pyx_t_5 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_4))) {
        __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_4);
        assert(__pyx_t_9);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_9);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
        __pyx_t_5 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_t_10};
        __pyx_t_6 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5947, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
      }
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

      /* "netCDF4/_netCDF4.pyx":5948
 *                     #                       startp, countp, stridep, strdata)
 *                 _ensure_nc_success(ierr)
 *                 free(strdata)             # <<<<<<<<<<<<<<
 *             else:
 *                 # regular vlen.
*/
      free(__pyx_v_strdata);

      /* "netCDF4/_netCDF4.pyx":5923
 *             # flatten data array.
 *             data = data.flatten()
 *             if self.dtype == str:             # <<<<<<<<<<<<<<
 *                 # convert all elements from strings to bytes
 *                 # use _Encoding attribute to specify string encoding - if
*/
      goto __pyx_L29;
    }

    /* "netCDF4/_netCDF4.pyx":5953
 *                 # loop over elements of object array, put data buffer for
 *                 # each element in struct.
 *                 databuff = PyArray_BYTES(<ndarray>data)             # <<<<<<<<<<<<<<
 *                 # allocate struct array to hold vlen data.
 *                 vldata = <nc_vlen_t *>malloc(<size_t>totelem*sizeof(nc_vlen_t))
*/
    /*else*/ {
      __pyx_v_databuff = PyArray_BYTES(__pyx_v_data);

      /* "netCDF4/_netCDF4.pyx":5955
 *                 databuff = PyArray_BYTES(<ndarray>data)
 *                 # allocate struct array to hold vlen data.
 *                 vldata = <nc_vlen_t *>malloc(<size_t>totelem*sizeof(nc_vlen_t))             # <<<<<<<<<<<<<<
 *                 for i in range(totelem):
 *                     elptr = (<void**>databuff)[0]
*/
      __pyx_v_vldata = ((nc_vlen_t *)malloc((((size_t)__pyx_v_totelem) * (sizeof(nc_vlen_t)))));

      /* "netCDF4/_netCDF4.pyx":5956
 *                 # allocate struct array to hold vlen data.
 *                 vldata = <nc_vlen_t *>malloc(<size_t>totelem*sizeof(nc_vlen_t))
 *                 for i in range(totelem):             # <<<<<<<<<<<<<<
 *                     elptr = (<void**>databuff)[0]
 *                     dataarr = <ndarray>elptr
*/
      __pyx_t_14 = __pyx_v_totelem;
      __pyx_t_15 = __pyx_t_14;
      for (__pyx_t_16 = 0; __pyx_t_16 < __pyx_t_15; __pyx_t_16+=1) {
        __pyx_v_i = __pyx_t_16;

        /* "netCDF4/_netCDF4.pyx":5957
 *                 vldata = <nc_vlen_t *>malloc(<size_t>totelem*sizeof(nc_vlen_t))
 *                 for i in range(totelem):
 *                     elptr = (<void**>databuff)[0]             # <<<<<<<<<<<<<<
 *                     dataarr = <ndarray>elptr
 *                     if self.dtype != dataarr.dtype.str[1:]:
*/
        __pyx_v_elptr = (((void **)__pyx_v_databuff)[0]);

        /* "netCDF4/_netCDF4.pyx":5958
 *                 for i in range(totelem):
 *                     elptr = (<void**>databuff)[0]
 *                     dataarr = <ndarray>elptr             # <<<<<<<<<<<<<<
 *                     if self.dtype != dataarr.dtype.str[1:]:
 *                         #dataarr = dataarr.astype(self.dtype) # cast data, if necessary.
*/
        __pyx_t_6 = ((PyObject *)__pyx_v_elptr);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_XDECREF_SET(__pyx_v_dataarr, ((PyArrayObject *)__pyx_t_6));
        __pyx_t_6 = 0;

        /* "netCDF4/_netCDF4.pyx":5959
 *                     elptr = (<void**>databuff)[0]
 *                     dataarr = <ndarray>elptr
 *                     if self.dtype != dataarr.dtype.str[1:]:             # <<<<<<<<<<<<<<
 *                         #dataarr = dataarr.astype(self.dtype) # cast data, if necessary.
 *                         # casting doesn't work ?? just raise TypeError
*/
        __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_dataarr), __pyx_mstate_global->__pyx_n_u_dtype); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5959, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_str); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5959, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_6 = __Pyx_PyObject_GetSlice(__pyx_t_4, 1, 0, NULL, NULL, &__pyx_mstate_global->__pyx_slice[0], 1, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5959, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_4 = PyObject_RichCompare(__pyx_v_self->dtype, __pyx_t_6, Py_NE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5959, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 5959, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(__pyx_t_12)) {

          /* "netCDF4/_netCDF4.pyx":5962
 *                         #dataarr = dataarr.astype(self.dtype) # cast data, if necessary.
 *                         # casting doesn't work ?? just raise TypeError
 *                         raise TypeError("wrong data type in object array: should be %s, got %s" % (self.dtype,dataarr.dtype))             # <<<<<<<<<<<<<<
 *                     vldata[i].len = PyArray_SIZE(dataarr)
 *                     vldata[i].p = PyArray_DATA(dataarr)
*/
          __pyx_t_6 = NULL;
          __pyx_t_10 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Str(__pyx_v_self->dtype), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 5962, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_10);
          __pyx_t_9 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_dataarr), __pyx_mstate_global->__pyx_n_u_dtype); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 5962, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_9);
          __pyx_t_1 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Str(__pyx_t_9), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5962, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          __pyx_t_18[0] = __pyx_mstate_global->__pyx_kp_u_wrong_data_type_in_object_array;
          __pyx_t_18[1] = __pyx_t_10;
          __pyx_t_18[2] = __pyx_mstate_global->__pyx_kp_u_got;
          __pyx_t_18[3] = __pyx_t_1;
          __pyx_t_9 = __Pyx_PyUnicode_Join(__pyx_t_18, 4, 43 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_10) + 6 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_1), 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_10) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1));
          if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 5962, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_9);
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __pyx_t_5 = 1;
          {
            PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_9};
            __pyx_t_4 = __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_6); __pyx_t_6 = 0;
            __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
            if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5962, __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(0, 5962, __pyx_L1_error)

          /* "netCDF4/_netCDF4.pyx":5959
 *                     elptr = (<void**>databuff)[0]
 *                     dataarr = <ndarray>elptr
 *                     if self.dtype != dataarr.dtype.str[1:]:             # <<<<<<<<<<<<<<
 *                         #dataarr = dataarr.astype(self.dtype) # cast data, if necessary.
 *                         # casting doesn't work ?? just raise TypeError
*/
        }

        /* "netCDF4/_netCDF4.pyx":5963
 *                         # casting doesn't work ?? just raise TypeError
 *                         raise TypeError("wrong data type in object array: should be %s, got %s" % (self.dtype,dataarr.dtype))
 *                     vldata[i].len = PyArray_SIZE(dataarr)             # <<<<<<<<<<<<<<
 *                     vldata[i].p = PyArray_DATA(dataarr)
 *                     databuff = databuff + PyArray_STRIDES(data)[0]
*/
        (__pyx_v_vldata[__pyx_v_i]).len = PyArray_SIZE(__pyx_v_dataarr);

        /* "netCDF4/_netCDF4.pyx":5964
 *                         raise TypeError("wrong data type in object array: should be %s, got %s" % (self.dtype,dataarr.dtype))
 *                     vldata[i].len = PyArray_SIZE(dataarr)
 *                     vldata[i].p = PyArray_DATA(dataarr)             # <<<<<<<<<<<<<<
 *                     databuff = databuff + PyArray_STRIDES(data)[0]
 *                 # strides all 1 or scalar variable, use put_vara (faster)
*/
        (__pyx_v_vldata[__pyx_v_i]).p = PyArray_DATA(__pyx_v_dataarr);

        /* "netCDF4/_netCDF4.pyx":5965
 *                     vldata[i].len = PyArray_SIZE(dataarr)
 *                     vldata[i].p = PyArray_DATA(dataarr)
 *                     databuff = databuff + PyArray_STRIDES(data)[0]             # <<<<<<<<<<<<<<
 *                 # strides all 1 or scalar variable, use put_vara (faster)
 *                 if sum(stride) == ndims or ndims == 0:
*/
        __pyx_v_databuff = (__pyx_v_databuff + (PyArray_STRIDES(__pyx_v_data)[0]));
      }

      /* "netCDF4/_netCDF4.pyx":5967
 *                     databuff = databuff + PyArray_STRIDES(data)[0]
 *                 # strides all 1 or scalar variable, use put_vara (faster)
 *                 if sum(stride) == ndims or ndims == 0:             # <<<<<<<<<<<<<<
 *                     with nogil:
 *                         ierr = nc_put_vara(self._grpid, self._varid,
*/
      __pyx_t_9 = NULL;
      __pyx_t_5 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_v_stride};
        __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_sum, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5967, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
      }
      __pyx_t_9 = __Pyx_PyLong_From_int(__pyx_v_ndims); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 5967, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_6 = PyObject_RichCompare(__pyx_t_4, __pyx_t_9, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5967, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 5967, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (!__pyx_t_3) {
      } else {
        __pyx_t_12 = __pyx_t_3;
        goto __pyx_L45_bool_binop_done;
      }
      __pyx_t_3 = (__pyx_v_ndims == 0);
      __pyx_t_12 = __pyx_t_3;
      __pyx_L45_bool_binop_done:;
      if (likely(__pyx_t_12)) {

        /* "netCDF4/_netCDF4.pyx":5968
 *                 # strides all 1 or scalar variable, use put_vara (faster)
 *                 if sum(stride) == ndims or ndims == 0:
 *                     with nogil:             # <<<<<<<<<<<<<<
 *                         ierr = nc_put_vara(self._grpid, self._varid,
 *                                            startp, countp, vldata)
*/
        {
            PyThreadState * _save;
            _save = PyEval_SaveThread();
            __Pyx_FastGIL_Remember();
            /*try:*/ {

              /* "netCDF4/_netCDF4.pyx":5969
 *                 if sum(stride) == ndims or ndims == 0:
 *                     with nogil:
 *                         ierr = nc_put_vara(self._grpid, self._varid,             # <<<<<<<<<<<<<<
 *                                            startp, countp, vldata)
 *                 else:
*/
              __pyx_v_ierr = nc_put_vara(__pyx_v_self->_grpid, __pyx_v_self->_varid, __pyx_v_startp, __pyx_v_countp, __pyx_v_vldata);
            }

            /* "netCDF4/_netCDF4.pyx":5968
 *                 # strides all 1 or scalar variable, use put_vara (faster)
 *                 if sum(stride) == ndims or ndims == 0:
 *                     with nogil:             # <<<<<<<<<<<<<<
 *                         ierr = nc_put_vara(self._grpid, self._varid,
 *                                            startp, countp, vldata)
*/
            /*finally:*/ {
              /*normal exit:*/{
                __Pyx_FastGIL_Forget();
                PyEval_RestoreThread(_save);
                goto __pyx_L49;
              }
              __pyx_L49:;
            }
        }

        /* "netCDF4/_netCDF4.pyx":5967
 *                     databuff = databuff + PyArray_STRIDES(data)[0]
 *                 # strides all 1 or scalar variable, use put_vara (faster)
 *                 if sum(stride) == ndims or ndims == 0:             # <<<<<<<<<<<<<<
 *                     with nogil:
 *                         ierr = nc_put_vara(self._grpid, self._varid,
*/
        goto __pyx_L44;
      }

      /* "netCDF4/_netCDF4.pyx":5972
 *                                            startp, countp, vldata)
 *                 else:
 *                     raise IndexError('strides must all be 1 for vlen variables')             # <<<<<<<<<<<<<<
 *                     #with nogil:
 *                     #    ierr = nc_put_vars(self._grpid, self._varid,
*/
      /*else*/ {
        __pyx_t_9 = NULL;
        __pyx_t_5 = 1;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_mstate_global->__pyx_kp_u_strides_must_all_be_1_for_vlen_v};
          __pyx_t_6 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_IndexError)), __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
          if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5972, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
        }
        __Pyx_Raise(__pyx_t_6, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __PYX_ERR(0, 5972, __pyx_L1_error)
      }
      __pyx_L44:;

      /* "netCDF4/_netCDF4.pyx":5976
 *                     #    ierr = nc_put_vars(self._grpid, self._varid,
 *                     #                       startp, countp, stridep, vldata)
 *                 _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 *                 # free the pointer array.
 *                 free(vldata)
*/
      __pyx_t_9 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5976, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_1 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5976, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_5 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_4))) {
        __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_4);
        assert(__pyx_t_9);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_9);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
        __pyx_t_5 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_t_1};
        __pyx_t_6 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5976, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
      }
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

      /* "netCDF4/_netCDF4.pyx":5978
 *                 _ensure_nc_success(ierr)
 *                 # free the pointer array.
 *                 free(vldata)             # <<<<<<<<<<<<<<
 *         free(startp)
 *         free(countp)
*/
      free(__pyx_v_vldata);
    }
    __pyx_L29:;

    /* "netCDF4/_netCDF4.pyx":5918
 *                                        startp, countp, stridep, PyArray_DATA(data))
 *             _ensure_nc_success(ierr)
 *         elif self._isvlen:             # <<<<<<<<<<<<<<
 *             if data.dtype.char !='O':
 *                 raise TypeError('data to put in string variable must be an object array containing Python strings')
*/
  }
  __pyx_L10:;

  /* "netCDF4/_netCDF4.pyx":5979
 *                 # free the pointer array.
 *                 free(vldata)
 *         free(startp)             # <<<<<<<<<<<<<<
 *         free(countp)
 *         free(stridep)
*/
  free(__pyx_v_startp);

  /* "netCDF4/_netCDF4.pyx":5980
 *                 free(vldata)
 *         free(startp)
 *         free(countp)             # <<<<<<<<<<<<<<
 *         free(stridep)
 * 
*/
  free(__pyx_v_countp);

  /* "netCDF4/_netCDF4.pyx":5981
 *         free(startp)
 *         free(countp)
 *         free(stridep)             # <<<<<<<<<<<<<<
 * 
 *     def _get(self,start,count,stride):
*/
  free(__pyx_v_stridep);

  /* "netCDF4/_netCDF4.pyx":5845
 *         self._ncstring_attrs__ = bool(ncstring_attrs)
 * 
 *     def _put(self,ndarray data,start,count,stride):             # <<<<<<<<<<<<<<
 *         """Private method to put data into a netCDF variable"""
 *         cdef int ierr, ndims
*/

  /* 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_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("netCDF4._netCDF4.Variable._put", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_dataarr);
  __Pyx_XDECREF(__pyx_v_sl);
  __Pyx_XDECREF(__pyx_v_n);
  __Pyx_XDECREF(__pyx_v_encoding);
  __Pyx_XDECREF((PyObject *)__pyx_v_data);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":5983
 *         free(stridep)
 * 
 *     def _get(self,start,count,stride):             # <<<<<<<<<<<<<<
 *         """Private method to retrieve data from a netCDF variable"""
 *         cdef int ierr, ndims
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_85_get(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7netCDF4_8_netCDF4_8Variable_84_get, "Private method to retrieve data from a netCDF variable");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_8Variable_85_get = {"_get", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_8Variable_85_get, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_8Variable_84_get};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_85_get(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_start = 0;
  PyObject *__pyx_v_count = 0;
  PyObject *__pyx_v_stride = 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_start,&__pyx_mstate_global->__pyx_n_u_count,&__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(0, 5983, __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(0, 5983, __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(0, 5983, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 5983, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_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(0, 5983, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 3; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("_get", 1, 3, 3, i); __PYX_ERR(0, 5983, __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(0, 5983, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 5983, __pyx_L3_error)
      values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 5983, __pyx_L3_error)
    }
    __pyx_v_start = values[0];
    __pyx_v_count = values[1];
    __pyx_v_stride = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_get", 1, 3, 3, __pyx_nargs); __PYX_ERR(0, 5983, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4.Variable._get", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_8Variable_84_get(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self), __pyx_v_start, __pyx_v_count, __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_7netCDF4_8_netCDF4_8Variable_84_get(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, PyObject *__pyx_v_start, PyObject *__pyx_v_count, PyObject *__pyx_v_stride) {
  int __pyx_v_ierr;
  int __pyx_v_ndims;
  npy_intp __pyx_v_totelem;
  npy_intp __pyx_v_i;
  size_t *__pyx_v_startp;
  size_t *__pyx_v_countp;
  ptrdiff_t *__pyx_v_stridep;
  PyArrayObject *__pyx_v_data = 0;
  PyArrayObject *__pyx_v_dataarr = 0;
  char **__pyx_v_strdata;
  nc_vlen_t *__pyx_v_vldata;
  PyObject *__pyx_v_shapeout = NULL;
  int __pyx_v_squeeze_out;
  PyObject *__pyx_v_lendim = NULL;
  long __pyx_v_negstride;
  PyObject *__pyx_v_sl = NULL;
  int __pyx_v_n;
  PyObject *__pyx_v_encoding = NULL;
  size_t __pyx_v_arrlen;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  PyObject *(*__pyx_t_3)(PyObject *);
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  int __pyx_t_8;
  int __pyx_t_9;
  size_t __pyx_t_10;
  ptrdiff_t __pyx_t_11;
  PyObject *__pyx_t_12 = NULL;
  int __pyx_t_13;
  int __pyx_t_14;
  npy_intp __pyx_t_15;
  npy_intp __pyx_t_16;
  npy_intp __pyx_t_17;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_get", 0);

  /* "netCDF4/_netCDF4.pyx":5997
 *         # and not a slice so the resulting array
 *         # should be 'squeezed' to remove the singleton dimension.
 *         shapeout = ()             # <<<<<<<<<<<<<<
 *         squeeze_out = False
 *         for lendim in count:
*/
  __Pyx_INCREF(__pyx_mstate_global->__pyx_empty_tuple);
  __pyx_v_shapeout = __pyx_mstate_global->__pyx_empty_tuple;

  /* "netCDF4/_netCDF4.pyx":5998
 *         # should be 'squeezed' to remove the singleton dimension.
 *         shapeout = ()
 *         squeeze_out = False             # <<<<<<<<<<<<<<
 *         for lendim in count:
 *             if lendim == -1:
*/
  __pyx_v_squeeze_out = 0;

  /* "netCDF4/_netCDF4.pyx":5999
 *         shapeout = ()
 *         squeeze_out = False
 *         for lendim in count:             # <<<<<<<<<<<<<<
 *             if lendim == -1:
 *                 shapeout = shapeout + (1,)
*/
  if (likely(PyList_CheckExact(__pyx_v_count)) || PyTuple_CheckExact(__pyx_v_count)) {
    __pyx_t_1 = __pyx_v_count; __Pyx_INCREF(__pyx_t_1);
    __pyx_t_2 = 0;
    __pyx_t_3 = NULL;
  } else {
    __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_count); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5999, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5999, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 5999, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) break;
        }
        __pyx_t_4 = __Pyx_PyList_GetItemRefFast(__pyx_t_1, __pyx_t_2, __Pyx_ReferenceSharing_OwnStrongReference);
        ++__pyx_t_2;
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 5999, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2));
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2);
        #endif
        ++__pyx_t_2;
      }
      if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5999, __pyx_L1_error)
    } else {
      __pyx_t_4 = __pyx_t_3(__pyx_t_1);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 5999, __pyx_L1_error)
          PyErr_Clear();
        }
        break;
      }
    }
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_XDECREF_SET(__pyx_v_lendim, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "netCDF4/_netCDF4.pyx":6000
 *         squeeze_out = False
 *         for lendim in count:
 *             if lendim == -1:             # <<<<<<<<<<<<<<
 *                 shapeout = shapeout + (1,)
 *                 squeeze_out = True
*/
    __pyx_t_5 = (__Pyx_PyLong_BoolEqObjC(__pyx_v_lendim, __pyx_mstate_global->__pyx_int_neg_1, -1L, 0)); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 6000, __pyx_L1_error)
    if (__pyx_t_5) {

      /* "netCDF4/_netCDF4.pyx":6001
 *         for lendim in count:
 *             if lendim == -1:
 *                 shapeout = shapeout + (1,)             # <<<<<<<<<<<<<<
 *                 squeeze_out = True
 *             else:
*/
      __pyx_t_4 = PyNumber_Add(__pyx_v_shapeout, __pyx_mstate_global->__pyx_tuple[12]); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6001, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_shapeout, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "netCDF4/_netCDF4.pyx":6002
 *             if lendim == -1:
 *                 shapeout = shapeout + (1,)
 *                 squeeze_out = True             # <<<<<<<<<<<<<<
 *             else:
 *                 shapeout = shapeout + (lendim,)
*/
      __pyx_v_squeeze_out = 1;

      /* "netCDF4/_netCDF4.pyx":6000
 *         squeeze_out = False
 *         for lendim in count:
 *             if lendim == -1:             # <<<<<<<<<<<<<<
 *                 shapeout = shapeout + (1,)
 *                 squeeze_out = True
*/
      goto __pyx_L5;
    }

    /* "netCDF4/_netCDF4.pyx":6004
 *                 squeeze_out = True
 *             else:
 *                 shapeout = shapeout + (lendim,)             # <<<<<<<<<<<<<<
 *         # rank of variable.
 *         ndims = len(self.dimensions)
*/
    /*else*/ {
      __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6004, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_INCREF(__pyx_v_lendim);
      __Pyx_GIVEREF(__pyx_v_lendim);
      if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_lendim) != (0)) __PYX_ERR(0, 6004, __pyx_L1_error);
      __pyx_t_6 = PyNumber_Add(__pyx_v_shapeout, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6004, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF_SET(__pyx_v_shapeout, __pyx_t_6);
      __pyx_t_6 = 0;
    }
    __pyx_L5:;

    /* "netCDF4/_netCDF4.pyx":5999
 *         shapeout = ()
 *         squeeze_out = False
 *         for lendim in count:             # <<<<<<<<<<<<<<
 *             if lendim == -1:
 *                 shapeout = shapeout + (1,)
*/
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":6006
 *                 shapeout = shapeout + (lendim,)
 *         # rank of variable.
 *         ndims = len(self.dimensions)             # <<<<<<<<<<<<<<
 *         # fill up startp,countp,stridep.
 *         negstride = 0
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_dimensions); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6006, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 6006, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_ndims = __pyx_t_2;

  /* "netCDF4/_netCDF4.pyx":6008
 *         ndims = len(self.dimensions)
 *         # fill up startp,countp,stridep.
 *         negstride = 0             # <<<<<<<<<<<<<<
 *         sl = []
 *         startp = <size_t *>malloc(sizeof(size_t) * ndims)
*/
  __pyx_v_negstride = 0;

  /* "netCDF4/_netCDF4.pyx":6009
 *         # fill up startp,countp,stridep.
 *         negstride = 0
 *         sl = []             # <<<<<<<<<<<<<<
 *         startp = <size_t *>malloc(sizeof(size_t) * ndims)
 *         countp = <size_t *>malloc(sizeof(size_t) * ndims)
*/
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6009, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_sl = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":6010
 *         negstride = 0
 *         sl = []
 *         startp = <size_t *>malloc(sizeof(size_t) * ndims)             # <<<<<<<<<<<<<<
 *         countp = <size_t *>malloc(sizeof(size_t) * ndims)
 *         stridep = <ptrdiff_t *>malloc(sizeof(ptrdiff_t) * ndims)
*/
  __pyx_v_startp = ((size_t *)malloc(((sizeof(size_t)) * __pyx_v_ndims)));

  /* "netCDF4/_netCDF4.pyx":6011
 *         sl = []
 *         startp = <size_t *>malloc(sizeof(size_t) * ndims)
 *         countp = <size_t *>malloc(sizeof(size_t) * ndims)             # <<<<<<<<<<<<<<
 *         stridep = <ptrdiff_t *>malloc(sizeof(ptrdiff_t) * ndims)
 *         for n in range(ndims):
*/
  __pyx_v_countp = ((size_t *)malloc(((sizeof(size_t)) * __pyx_v_ndims)));

  /* "netCDF4/_netCDF4.pyx":6012
 *         startp = <size_t *>malloc(sizeof(size_t) * ndims)
 *         countp = <size_t *>malloc(sizeof(size_t) * ndims)
 *         stridep = <ptrdiff_t *>malloc(sizeof(ptrdiff_t) * ndims)             # <<<<<<<<<<<<<<
 *         for n in range(ndims):
 *             count[n] = abs(count[n]) # make -1 into +1
*/
  __pyx_v_stridep = ((ptrdiff_t *)malloc(((sizeof(ptrdiff_t)) * __pyx_v_ndims)));

  /* "netCDF4/_netCDF4.pyx":6013
 *         countp = <size_t *>malloc(sizeof(size_t) * ndims)
 *         stridep = <ptrdiff_t *>malloc(sizeof(ptrdiff_t) * ndims)
 *         for n in range(ndims):             # <<<<<<<<<<<<<<
 *             count[n] = abs(count[n]) # make -1 into +1
 *             countp[n] = count[n]
*/
  __pyx_t_7 = __pyx_v_ndims;
  __pyx_t_8 = __pyx_t_7;
  for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_8; __pyx_t_9+=1) {
    __pyx_v_n = __pyx_t_9;

    /* "netCDF4/_netCDF4.pyx":6014
 *         stridep = <ptrdiff_t *>malloc(sizeof(ptrdiff_t) * ndims)
 *         for n in range(ndims):
 *             count[n] = abs(count[n]) # make -1 into +1             # <<<<<<<<<<<<<<
 *             countp[n] = count[n]
 *             # for neg strides, reverse order (then flip that axis after data read in)
*/
    __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_count, __pyx_v_n, int, 1, __Pyx_PyLong_From_int, 0, 1, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6014, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_6 = __Pyx_PyNumber_Absolute(__pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6014, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (unlikely((__Pyx_SetItemInt(__pyx_v_count, __pyx_v_n, __pyx_t_6, int, 1, __Pyx_PyLong_From_int, 0, 1, 1, 1, __Pyx_ReferenceSharing_FunctionArgument) < 0))) __PYX_ERR(0, 6014, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

    /* "netCDF4/_netCDF4.pyx":6015
 *         for n in range(ndims):
 *             count[n] = abs(count[n]) # make -1 into +1
 *             countp[n] = count[n]             # <<<<<<<<<<<<<<
 *             # for neg strides, reverse order (then flip that axis after data read in)
 *             if stride[n] < 0:
*/
    __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_count, __pyx_v_n, int, 1, __Pyx_PyLong_From_int, 0, 1, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6015, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_10 = __Pyx_PyLong_As_size_t(__pyx_t_6); if (unlikely((__pyx_t_10 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 6015, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    (__pyx_v_countp[__pyx_v_n]) = __pyx_t_10;

    /* "netCDF4/_netCDF4.pyx":6017
 *             countp[n] = count[n]
 *             # for neg strides, reverse order (then flip that axis after data read in)
 *             if stride[n] < 0:             # <<<<<<<<<<<<<<
 *                 negstride = 1
 *                 stridep[n] = -stride[n]
*/
    __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_stride, __pyx_v_n, int, 1, __Pyx_PyLong_From_int, 0, 1, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6017, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_1 = PyObject_RichCompare(__pyx_t_6, __pyx_mstate_global->__pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6017, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 6017, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (__pyx_t_5) {

      /* "netCDF4/_netCDF4.pyx":6018
 *             # for neg strides, reverse order (then flip that axis after data read in)
 *             if stride[n] < 0:
 *                 negstride = 1             # <<<<<<<<<<<<<<
 *                 stridep[n] = -stride[n]
 *                 startp[n] = start[n]+stride[n]*(count[n]-1)
*/
      __pyx_v_negstride = 1;

      /* "netCDF4/_netCDF4.pyx":6019
 *             if stride[n] < 0:
 *                 negstride = 1
 *                 stridep[n] = -stride[n]             # <<<<<<<<<<<<<<
 *                 startp[n] = start[n]+stride[n]*(count[n]-1)
 *                 stride[n] = -stride[n]
*/
      __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_stride, __pyx_v_n, int, 1, __Pyx_PyLong_From_int, 0, 1, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6019, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_6 = PyNumber_Negative(__pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6019, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_11 = __Pyx_PyLong_As_ptrdiff_t(__pyx_t_6); if (unlikely((__pyx_t_11 == (ptrdiff_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 6019, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      (__pyx_v_stridep[__pyx_v_n]) = __pyx_t_11;

      /* "netCDF4/_netCDF4.pyx":6020
 *                 negstride = 1
 *                 stridep[n] = -stride[n]
 *                 startp[n] = start[n]+stride[n]*(count[n]-1)             # <<<<<<<<<<<<<<
 *                 stride[n] = -stride[n]
 *                 sl.append(slice(None, None, -1)) # this slice will reverse the data
*/
      __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_start, __pyx_v_n, int, 1, __Pyx_PyLong_From_int, 0, 1, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6020, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_stride, __pyx_v_n, int, 1, __Pyx_PyLong_From_int, 0, 1, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6020, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_count, __pyx_v_n, int, 1, __Pyx_PyLong_From_int, 0, 1, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6020, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_12 = __Pyx_PyLong_SubtractObjC(__pyx_t_4, __pyx_mstate_global->__pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 6020, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_4 = PyNumber_Multiply(__pyx_t_1, __pyx_t_12); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6020, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __pyx_t_12 = PyNumber_Add(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 6020, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_10 = __Pyx_PyLong_As_size_t(__pyx_t_12); if (unlikely((__pyx_t_10 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 6020, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      (__pyx_v_startp[__pyx_v_n]) = __pyx_t_10;

      /* "netCDF4/_netCDF4.pyx":6021
 *                 stridep[n] = -stride[n]
 *                 startp[n] = start[n]+stride[n]*(count[n]-1)
 *                 stride[n] = -stride[n]             # <<<<<<<<<<<<<<
 *                 sl.append(slice(None, None, -1)) # this slice will reverse the data
 *             else:
*/
      __pyx_t_12 = __Pyx_GetItemInt(__pyx_v_stride, __pyx_v_n, int, 1, __Pyx_PyLong_From_int, 0, 1, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 6021, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __pyx_t_4 = PyNumber_Negative(__pyx_t_12); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6021, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      if (unlikely((__Pyx_SetItemInt(__pyx_v_stride, __pyx_v_n, __pyx_t_4, int, 1, __Pyx_PyLong_From_int, 0, 1, 1, 1, __Pyx_ReferenceSharing_FunctionArgument) < 0))) __PYX_ERR(0, 6021, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

      /* "netCDF4/_netCDF4.pyx":6022
 *                 startp[n] = start[n]+stride[n]*(count[n]-1)
 *                 stride[n] = -stride[n]
 *                 sl.append(slice(None, None, -1)) # this slice will reverse the data             # <<<<<<<<<<<<<<
 *             else:
 *                 startp[n] = start[n]
*/
      __pyx_t_13 = __Pyx_PyList_Append(__pyx_v_sl, __pyx_mstate_global->__pyx_slice[3]); if (unlikely(__pyx_t_13 == ((int)-1))) __PYX_ERR(0, 6022, __pyx_L1_error)

      /* "netCDF4/_netCDF4.pyx":6017
 *             countp[n] = count[n]
 *             # for neg strides, reverse order (then flip that axis after data read in)
 *             if stride[n] < 0:             # <<<<<<<<<<<<<<
 *                 negstride = 1
 *                 stridep[n] = -stride[n]
*/
      goto __pyx_L9;
    }

    /* "netCDF4/_netCDF4.pyx":6024
 *                 sl.append(slice(None, None, -1)) # this slice will reverse the data
 *             else:
 *                 startp[n] = start[n]             # <<<<<<<<<<<<<<
 *                 stridep[n] = stride[n]
 *                 sl.append(slice(None,None, 1))
*/
    /*else*/ {
      __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_start, __pyx_v_n, int, 1, __Pyx_PyLong_From_int, 0, 1, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6024, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_10 = __Pyx_PyLong_As_size_t(__pyx_t_4); if (unlikely((__pyx_t_10 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 6024, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      (__pyx_v_startp[__pyx_v_n]) = __pyx_t_10;

      /* "netCDF4/_netCDF4.pyx":6025
 *             else:
 *                 startp[n] = start[n]
 *                 stridep[n] = stride[n]             # <<<<<<<<<<<<<<
 *                 sl.append(slice(None,None, 1))
 *         if self._isprimitive or self._iscompound or self._isenum:
*/
      __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_stride, __pyx_v_n, int, 1, __Pyx_PyLong_From_int, 0, 1, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6025, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_11 = __Pyx_PyLong_As_ptrdiff_t(__pyx_t_4); if (unlikely((__pyx_t_11 == (ptrdiff_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 6025, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      (__pyx_v_stridep[__pyx_v_n]) = __pyx_t_11;

      /* "netCDF4/_netCDF4.pyx":6026
 *                 startp[n] = start[n]
 *                 stridep[n] = stride[n]
 *                 sl.append(slice(None,None, 1))             # <<<<<<<<<<<<<<
 *         if self._isprimitive or self._iscompound or self._isenum:
 *             data = numpy.empty(shapeout, self.dtype)
*/
      __pyx_t_13 = __Pyx_PyList_Append(__pyx_v_sl, __pyx_mstate_global->__pyx_slice[4]); if (unlikely(__pyx_t_13 == ((int)-1))) __PYX_ERR(0, 6026, __pyx_L1_error)
    }
    __pyx_L9:;
  }

  /* "netCDF4/_netCDF4.pyx":6027
 *                 stridep[n] = stride[n]
 *                 sl.append(slice(None,None, 1))
 *         if self._isprimitive or self._iscompound or self._isenum:             # <<<<<<<<<<<<<<
 *             data = numpy.empty(shapeout, self.dtype)
 *             # strides all 1 or scalar variable, use get_vara (faster)
*/
  __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_v_self->_isprimitive); if (unlikely((__pyx_t_14 < 0))) __PYX_ERR(0, 6027, __pyx_L1_error)
  if (!__pyx_t_14) {
  } else {
    __pyx_t_5 = __pyx_t_14;
    goto __pyx_L11_bool_binop_done;
  }
  __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_v_self->_iscompound); if (unlikely((__pyx_t_14 < 0))) __PYX_ERR(0, 6027, __pyx_L1_error)
  if (!__pyx_t_14) {
  } else {
    __pyx_t_5 = __pyx_t_14;
    goto __pyx_L11_bool_binop_done;
  }
  __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_v_self->_isenum); if (unlikely((__pyx_t_14 < 0))) __PYX_ERR(0, 6027, __pyx_L1_error)
  __pyx_t_5 = __pyx_t_14;
  __pyx_L11_bool_binop_done:;
  if (__pyx_t_5) {

    /* "netCDF4/_netCDF4.pyx":6028
 *                 sl.append(slice(None,None, 1))
 *         if self._isprimitive or self._iscompound or self._isenum:
 *             data = numpy.empty(shapeout, self.dtype)             # <<<<<<<<<<<<<<
 *             # strides all 1 or scalar variable, use get_vara (faster)
 *             # if count contains a zero element, no data is being read
*/
    __pyx_t_12 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6028, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_empty); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6028, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_10 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_1))) {
      __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_1);
      assert(__pyx_t_12);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_12);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_1, __pyx__function);
      __pyx_t_10 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_12, __pyx_v_shapeout, __pyx_v_self->dtype};
      __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_1, __pyx_callargs+__pyx_t_10, (3-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6028, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
    }
    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_ndarray))))) __PYX_ERR(0, 6028, __pyx_L1_error)
    __pyx_v_data = ((PyArrayObject *)__pyx_t_4);
    __pyx_t_4 = 0;

    /* "netCDF4/_netCDF4.pyx":6031
 *             # strides all 1 or scalar variable, use get_vara (faster)
 *             # if count contains a zero element, no data is being read
 *             if 0 not in count:             # <<<<<<<<<<<<<<
 *                 if self._grp.auto_complex:
 *                     with nogil:
*/
    __pyx_t_5 = (__Pyx_PySequence_ContainsTF(__pyx_mstate_global->__pyx_int_0, __pyx_v_count, Py_NE)); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 6031, __pyx_L1_error)
    if (__pyx_t_5) {

      /* "netCDF4/_netCDF4.pyx":6032
 *             # if count contains a zero element, no data is being read
 *             if 0 not in count:
 *                 if self._grp.auto_complex:             # <<<<<<<<<<<<<<
 *                     with nogil:
 *                         ierr = pfnc_get_vars(self._grpid, self._varid,
*/
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_grp, __pyx_mstate_global->__pyx_n_u_auto_complex); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6032, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 6032, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (__pyx_t_5) {

        /* "netCDF4/_netCDF4.pyx":6033
 *             if 0 not in count:
 *                 if self._grp.auto_complex:
 *                     with nogil:             # <<<<<<<<<<<<<<
 *                         ierr = pfnc_get_vars(self._grpid, self._varid,
 *                                              startp, countp, stridep,
*/
        {
            PyThreadState * _save;
            _save = PyEval_SaveThread();
            __Pyx_FastGIL_Remember();
            /*try:*/ {

              /* "netCDF4/_netCDF4.pyx":6034
 *                 if self._grp.auto_complex:
 *                     with nogil:
 *                         ierr = pfnc_get_vars(self._grpid, self._varid,             # <<<<<<<<<<<<<<
 *                                              startp, countp, stridep,
 *                                              PyArray_DATA(data))
*/
              __pyx_v_ierr = pfnc_get_vars(__pyx_v_self->_grpid, __pyx_v_self->_varid, __pyx_v_startp, __pyx_v_countp, __pyx_v_stridep, PyArray_DATA(__pyx_v_data));
            }

            /* "netCDF4/_netCDF4.pyx":6033
 *             if 0 not in count:
 *                 if self._grp.auto_complex:
 *                     with nogil:             # <<<<<<<<<<<<<<
 *                         ierr = pfnc_get_vars(self._grpid, self._varid,
 *                                              startp, countp, stridep,
*/
            /*finally:*/ {
              /*normal exit:*/{
                __Pyx_FastGIL_Forget();
                PyEval_RestoreThread(_save);
                goto __pyx_L18;
              }
              __pyx_L18:;
            }
        }

        /* "netCDF4/_netCDF4.pyx":6032
 *             # if count contains a zero element, no data is being read
 *             if 0 not in count:
 *                 if self._grp.auto_complex:             # <<<<<<<<<<<<<<
 *                     with nogil:
 *                         ierr = pfnc_get_vars(self._grpid, self._varid,
*/
        goto __pyx_L15;
      }

      /* "netCDF4/_netCDF4.pyx":6037
 *                                              startp, countp, stridep,
 *                                              PyArray_DATA(data))
 *                 elif sum(stride) == ndims or ndims == 0:             # <<<<<<<<<<<<<<
 *                     with nogil:
 *                         ierr = nc_get_vara(self._grpid, self._varid,
*/
      __pyx_t_1 = NULL;
      __pyx_t_10 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_v_stride};
        __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_sum, __pyx_callargs+__pyx_t_10, (2-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6037, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
      }
      __pyx_t_1 = __Pyx_PyLong_From_int(__pyx_v_ndims); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6037, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_12 = PyObject_RichCompare(__pyx_t_4, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_12); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 6037, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_12); if (unlikely((__pyx_t_14 < 0))) __PYX_ERR(0, 6037, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      if (!__pyx_t_14) {
      } else {
        __pyx_t_5 = __pyx_t_14;
        goto __pyx_L19_bool_binop_done;
      }
      __pyx_t_14 = (__pyx_v_ndims == 0);
      __pyx_t_5 = __pyx_t_14;
      __pyx_L19_bool_binop_done:;
      if (__pyx_t_5) {

        /* "netCDF4/_netCDF4.pyx":6038
 *                                              PyArray_DATA(data))
 *                 elif sum(stride) == ndims or ndims == 0:
 *                     with nogil:             # <<<<<<<<<<<<<<
 *                         ierr = nc_get_vara(self._grpid, self._varid,
 *                                            startp, countp, PyArray_DATA(data))
*/
        {
            PyThreadState * _save;
            _save = PyEval_SaveThread();
            __Pyx_FastGIL_Remember();
            /*try:*/ {

              /* "netCDF4/_netCDF4.pyx":6039
 *                 elif sum(stride) == ndims or ndims == 0:
 *                     with nogil:
 *                         ierr = nc_get_vara(self._grpid, self._varid,             # <<<<<<<<<<<<<<
 *                                            startp, countp, PyArray_DATA(data))
 *                 else:
*/
              __pyx_v_ierr = nc_get_vara(__pyx_v_self->_grpid, __pyx_v_self->_varid, __pyx_v_startp, __pyx_v_countp, PyArray_DATA(__pyx_v_data));
            }

            /* "netCDF4/_netCDF4.pyx":6038
 *                                              PyArray_DATA(data))
 *                 elif sum(stride) == ndims or ndims == 0:
 *                     with nogil:             # <<<<<<<<<<<<<<
 *                         ierr = nc_get_vara(self._grpid, self._varid,
 *                                            startp, countp, PyArray_DATA(data))
*/
            /*finally:*/ {
              /*normal exit:*/{
                __Pyx_FastGIL_Forget();
                PyEval_RestoreThread(_save);
                goto __pyx_L23;
              }
              __pyx_L23:;
            }
        }

        /* "netCDF4/_netCDF4.pyx":6037
 *                                              startp, countp, stridep,
 *                                              PyArray_DATA(data))
 *                 elif sum(stride) == ndims or ndims == 0:             # <<<<<<<<<<<<<<
 *                     with nogil:
 *                         ierr = nc_get_vara(self._grpid, self._varid,
*/
        goto __pyx_L15;
      }

      /* "netCDF4/_netCDF4.pyx":6042
 *                                            startp, countp, PyArray_DATA(data))
 *                 else:
 *                     with nogil:             # <<<<<<<<<<<<<<
 *                         ierr = nc_get_vars(self._grpid, self._varid,
 *                                            startp, countp, stridep,
*/
      /*else*/ {
        {
            PyThreadState * _save;
            _save = PyEval_SaveThread();
            __Pyx_FastGIL_Remember();
            /*try:*/ {

              /* "netCDF4/_netCDF4.pyx":6043
 *                 else:
 *                     with nogil:
 *                         ierr = nc_get_vars(self._grpid, self._varid,             # <<<<<<<<<<<<<<
 *                                            startp, countp, stridep,
 *                                            PyArray_DATA(data))
*/
              __pyx_v_ierr = nc_get_vars(__pyx_v_self->_grpid, __pyx_v_self->_varid, __pyx_v_startp, __pyx_v_countp, __pyx_v_stridep, PyArray_DATA(__pyx_v_data));
            }

            /* "netCDF4/_netCDF4.pyx":6042
 *                                            startp, countp, PyArray_DATA(data))
 *                 else:
 *                     with nogil:             # <<<<<<<<<<<<<<
 *                         ierr = nc_get_vars(self._grpid, self._varid,
 *                                            startp, countp, stridep,
*/
            /*finally:*/ {
              /*normal exit:*/{
                __Pyx_FastGIL_Forget();
                PyEval_RestoreThread(_save);
                goto __pyx_L26;
              }
              __pyx_L26:;
            }
        }
      }
      __pyx_L15:;

      /* "netCDF4/_netCDF4.pyx":6031
 *             # strides all 1 or scalar variable, use get_vara (faster)
 *             # if count contains a zero element, no data is being read
 *             if 0 not in count:             # <<<<<<<<<<<<<<
 *                 if self._grp.auto_complex:
 *                     with nogil:
*/
      goto __pyx_L14;
    }

    /* "netCDF4/_netCDF4.pyx":6047
 *                                            PyArray_DATA(data))
 *             else:
 *                 ierr = 0             # <<<<<<<<<<<<<<
 *             if ierr == NC_EINVALCOORDS:
 *                 raise IndexError('index exceeds dimension bounds')
*/
    /*else*/ {
      __pyx_v_ierr = 0;
    }
    __pyx_L14:;

    /* "netCDF4/_netCDF4.pyx":6048
 *             else:
 *                 ierr = 0
 *             if ierr == NC_EINVALCOORDS:             # <<<<<<<<<<<<<<
 *                 raise IndexError('index exceeds dimension bounds')
 *             elif ierr != NC_NOERR:
*/
    __pyx_t_5 = (__pyx_v_ierr == NC_EINVALCOORDS);
    if (unlikely(__pyx_t_5)) {

      /* "netCDF4/_netCDF4.pyx":6049
 *                 ierr = 0
 *             if ierr == NC_EINVALCOORDS:
 *                 raise IndexError('index exceeds dimension bounds')             # <<<<<<<<<<<<<<
 *             elif ierr != NC_NOERR:
 *                 _ensure_nc_success(ierr)
*/
      __pyx_t_1 = NULL;
      __pyx_t_10 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_mstate_global->__pyx_kp_u_index_exceeds_dimension_bounds};
        __pyx_t_12 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_IndexError)), __pyx_callargs+__pyx_t_10, (2-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 6049, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_12);
      }
      __Pyx_Raise(__pyx_t_12, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __PYX_ERR(0, 6049, __pyx_L1_error)

      /* "netCDF4/_netCDF4.pyx":6048
 *             else:
 *                 ierr = 0
 *             if ierr == NC_EINVALCOORDS:             # <<<<<<<<<<<<<<
 *                 raise IndexError('index exceeds dimension bounds')
 *             elif ierr != NC_NOERR:
*/
    }

    /* "netCDF4/_netCDF4.pyx":6050
 *             if ierr == NC_EINVALCOORDS:
 *                 raise IndexError('index exceeds dimension bounds')
 *             elif ierr != NC_NOERR:             # <<<<<<<<<<<<<<
 *                 _ensure_nc_success(ierr)
 *         elif self._isvlen:
*/
    __pyx_t_5 = (__pyx_v_ierr != NC_NOERR);
    if (__pyx_t_5) {

      /* "netCDF4/_netCDF4.pyx":6051
 *                 raise IndexError('index exceeds dimension bounds')
 *             elif ierr != NC_NOERR:
 *                 _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 *         elif self._isvlen:
 *             # allocate array of correct primitive type.
*/
      __pyx_t_1 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6051, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_6 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6051, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_10 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_4))) {
        __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_4);
        assert(__pyx_t_1);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_1);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
        __pyx_t_10 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_t_6};
        __pyx_t_12 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_10, (2-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 6051, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_12);
      }
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

      /* "netCDF4/_netCDF4.pyx":6050
 *             if ierr == NC_EINVALCOORDS:
 *                 raise IndexError('index exceeds dimension bounds')
 *             elif ierr != NC_NOERR:             # <<<<<<<<<<<<<<
 *                 _ensure_nc_success(ierr)
 *         elif self._isvlen:
*/
    }

    /* "netCDF4/_netCDF4.pyx":6027
 *                 stridep[n] = stride[n]
 *                 sl.append(slice(None,None, 1))
 *         if self._isprimitive or self._iscompound or self._isenum:             # <<<<<<<<<<<<<<
 *             data = numpy.empty(shapeout, self.dtype)
 *             # strides all 1 or scalar variable, use get_vara (faster)
*/
    goto __pyx_L10;
  }

  /* "netCDF4/_netCDF4.pyx":6052
 *             elif ierr != NC_NOERR:
 *                 _ensure_nc_success(ierr)
 *         elif self._isvlen:             # <<<<<<<<<<<<<<
 *             # allocate array of correct primitive type.
 *             data = numpy.empty(shapeout, 'O')
*/
  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_self->_isvlen); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 6052, __pyx_L1_error)
  if (__pyx_t_5) {

    /* "netCDF4/_netCDF4.pyx":6054
 *         elif self._isvlen:
 *             # allocate array of correct primitive type.
 *             data = numpy.empty(shapeout, 'O')             # <<<<<<<<<<<<<<
 *             # flatten data array.
 *             data = data.flatten()
*/
    __pyx_t_4 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6054, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_empty); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6054, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_10 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_1))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1);
      assert(__pyx_t_4);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_1, __pyx__function);
      __pyx_t_10 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_v_shapeout, __pyx_mstate_global->__pyx_n_u_O};
      __pyx_t_12 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_1, __pyx_callargs+__pyx_t_10, (3-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 6054, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
    }
    if (!(likely(((__pyx_t_12) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_12, __pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_ndarray))))) __PYX_ERR(0, 6054, __pyx_L1_error)
    __pyx_v_data = ((PyArrayObject *)__pyx_t_12);
    __pyx_t_12 = 0;

    /* "netCDF4/_netCDF4.pyx":6056
 *             data = numpy.empty(shapeout, 'O')
 *             # flatten data array.
 *             data = data.flatten()             # <<<<<<<<<<<<<<
 *             totelem = PyArray_SIZE(data)
 *             if self.dtype == str:
*/
    __pyx_t_1 = ((PyObject *)__pyx_v_data);
    __Pyx_INCREF(__pyx_t_1);
    __pyx_t_10 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_1, NULL};
      __pyx_t_12 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_flatten, __pyx_callargs+__pyx_t_10, (1-__pyx_t_10) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 6056, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
    }
    if (!(likely(((__pyx_t_12) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_12, __pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_ndarray))))) __PYX_ERR(0, 6056, __pyx_L1_error)
    __Pyx_DECREF_SET(__pyx_v_data, ((PyArrayObject *)__pyx_t_12));
    __pyx_t_12 = 0;

    /* "netCDF4/_netCDF4.pyx":6057
 *             # flatten data array.
 *             data = data.flatten()
 *             totelem = PyArray_SIZE(data)             # <<<<<<<<<<<<<<
 *             if self.dtype == str:
 *                 # vlen string (NC_STRING)
*/
    __pyx_v_totelem = PyArray_SIZE(__pyx_v_data);

    /* "netCDF4/_netCDF4.pyx":6058
 *             data = data.flatten()
 *             totelem = PyArray_SIZE(data)
 *             if self.dtype == str:             # <<<<<<<<<<<<<<
 *                 # vlen string (NC_STRING)
 *                 # allocate pointer array to hold string data.
*/
    __pyx_t_12 = PyObject_RichCompare(__pyx_v_self->dtype, ((PyObject *)(&PyUnicode_Type)), Py_EQ); __Pyx_XGOTREF(__pyx_t_12); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 6058, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_12); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 6058, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    if (__pyx_t_5) {

      /* "netCDF4/_netCDF4.pyx":6061
 *                 # vlen string (NC_STRING)
 *                 # allocate pointer array to hold string data.
 *                 strdata = <char **>malloc(sizeof(char *) * totelem)             # <<<<<<<<<<<<<<
 *                 # strides all 1 or scalar variable, use get_vara (faster)
 *                 if sum(stride) == ndims or ndims == 0:
*/
      __pyx_v_strdata = ((char **)malloc(((sizeof(char *)) * __pyx_v_totelem)));

      /* "netCDF4/_netCDF4.pyx":6063
 *                 strdata = <char **>malloc(sizeof(char *) * totelem)
 *                 # strides all 1 or scalar variable, use get_vara (faster)
 *                 if sum(stride) == ndims or ndims == 0:             # <<<<<<<<<<<<<<
 *                     with nogil:
 *                         ierr = nc_get_vara(self._grpid, self._varid,
*/
      __pyx_t_1 = NULL;
      __pyx_t_10 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_v_stride};
        __pyx_t_12 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_sum, __pyx_callargs+__pyx_t_10, (2-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 6063, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_12);
      }
      __pyx_t_1 = __Pyx_PyLong_From_int(__pyx_v_ndims); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6063, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_4 = PyObject_RichCompare(__pyx_t_12, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6063, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_14 < 0))) __PYX_ERR(0, 6063, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (!__pyx_t_14) {
      } else {
        __pyx_t_5 = __pyx_t_14;
        goto __pyx_L30_bool_binop_done;
      }
      __pyx_t_14 = (__pyx_v_ndims == 0);
      __pyx_t_5 = __pyx_t_14;
      __pyx_L30_bool_binop_done:;
      if (likely(__pyx_t_5)) {

        /* "netCDF4/_netCDF4.pyx":6064
 *                 # strides all 1 or scalar variable, use get_vara (faster)
 *                 if sum(stride) == ndims or ndims == 0:
 *                     with nogil:             # <<<<<<<<<<<<<<
 *                         ierr = nc_get_vara(self._grpid, self._varid,
 *                                            startp, countp, strdata)
*/
        {
            PyThreadState * _save;
            _save = PyEval_SaveThread();
            __Pyx_FastGIL_Remember();
            /*try:*/ {

              /* "netCDF4/_netCDF4.pyx":6065
 *                 if sum(stride) == ndims or ndims == 0:
 *                     with nogil:
 *                         ierr = nc_get_vara(self._grpid, self._varid,             # <<<<<<<<<<<<<<
 *                                            startp, countp, strdata)
 *                 else:
*/
              __pyx_v_ierr = nc_get_vara(__pyx_v_self->_grpid, __pyx_v_self->_varid, __pyx_v_startp, __pyx_v_countp, __pyx_v_strdata);
            }

            /* "netCDF4/_netCDF4.pyx":6064
 *                 # strides all 1 or scalar variable, use get_vara (faster)
 *                 if sum(stride) == ndims or ndims == 0:
 *                     with nogil:             # <<<<<<<<<<<<<<
 *                         ierr = nc_get_vara(self._grpid, self._varid,
 *                                            startp, countp, strdata)
*/
            /*finally:*/ {
              /*normal exit:*/{
                __Pyx_FastGIL_Forget();
                PyEval_RestoreThread(_save);
                goto __pyx_L34;
              }
              __pyx_L34:;
            }
        }

        /* "netCDF4/_netCDF4.pyx":6063
 *                 strdata = <char **>malloc(sizeof(char *) * totelem)
 *                 # strides all 1 or scalar variable, use get_vara (faster)
 *                 if sum(stride) == ndims or ndims == 0:             # <<<<<<<<<<<<<<
 *                     with nogil:
 *                         ierr = nc_get_vara(self._grpid, self._varid,
*/
        goto __pyx_L29;
      }

      /* "netCDF4/_netCDF4.pyx":6069
 *                 else:
 *                     # FIXME: is this a bug in netCDF4?
 *                     raise IndexError('strides must all be 1 for string variables')             # <<<<<<<<<<<<<<
 *                     #with nogil:
 *                     #    ierr = nc_get_vars(self._grpid, self._varid,
*/
      /*else*/ {
        __pyx_t_1 = NULL;
        __pyx_t_10 = 1;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_mstate_global->__pyx_kp_u_strides_must_all_be_1_for_string};
          __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_IndexError)), __pyx_callargs+__pyx_t_10, (2-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
          if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6069, __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(0, 6069, __pyx_L1_error)
      }
      __pyx_L29:;

      /* "netCDF4/_netCDF4.pyx":6073
 *                     #    ierr = nc_get_vars(self._grpid, self._varid,
 *                     #                       startp, countp, stridep, strdata)
 *                 if ierr == NC_EINVALCOORDS:             # <<<<<<<<<<<<<<
 *                     raise IndexError
 *                 elif ierr != NC_NOERR:
*/
      __pyx_t_5 = (__pyx_v_ierr == NC_EINVALCOORDS);
      if (unlikely(__pyx_t_5)) {

        /* "netCDF4/_netCDF4.pyx":6074
 *                     #                       startp, countp, stridep, strdata)
 *                 if ierr == NC_EINVALCOORDS:
 *                     raise IndexError             # <<<<<<<<<<<<<<
 *                 elif ierr != NC_NOERR:
 *                    _ensure_nc_success(ierr)
*/
        __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_IndexError))), 0, 0, 0);
        __PYX_ERR(0, 6074, __pyx_L1_error)

        /* "netCDF4/_netCDF4.pyx":6073
 *                     #    ierr = nc_get_vars(self._grpid, self._varid,
 *                     #                       startp, countp, stridep, strdata)
 *                 if ierr == NC_EINVALCOORDS:             # <<<<<<<<<<<<<<
 *                     raise IndexError
 *                 elif ierr != NC_NOERR:
*/
      }

      /* "netCDF4/_netCDF4.pyx":6075
 *                 if ierr == NC_EINVALCOORDS:
 *                     raise IndexError
 *                 elif ierr != NC_NOERR:             # <<<<<<<<<<<<<<
 *                    _ensure_nc_success(ierr)
 *                 # loop over elements of object array, fill array with
*/
      __pyx_t_5 = (__pyx_v_ierr != NC_NOERR);
      if (__pyx_t_5) {

        /* "netCDF4/_netCDF4.pyx":6076
 *                     raise IndexError
 *                 elif ierr != NC_NOERR:
 *                    _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 *                 # loop over elements of object array, fill array with
 *                 # contents of strdata.
*/
        __pyx_t_1 = NULL;
        __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 6076, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_12);
        __pyx_t_6 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6076, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_10 = 1;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_12))) {
          __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_12);
          assert(__pyx_t_1);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_12);
          __Pyx_INCREF(__pyx_t_1);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_12, __pyx__function);
          __pyx_t_10 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_t_6};
          __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_12, __pyx_callargs+__pyx_t_10, (2-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
          if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6076, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_4);
        }
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

        /* "netCDF4/_netCDF4.pyx":6075
 *                 if ierr == NC_EINVALCOORDS:
 *                     raise IndexError
 *                 elif ierr != NC_NOERR:             # <<<<<<<<<<<<<<
 *                    _ensure_nc_success(ierr)
 *                 # loop over elements of object array, fill array with
*/
      }

      /* "netCDF4/_netCDF4.pyx":6081
 *                 # use _Encoding attribute to decode string to bytes - if
 *                 # not given, use 'utf-8'.
 *                 encoding = getattr(self,'_Encoding','utf-8')             # <<<<<<<<<<<<<<
 *                 for i in range(totelem):
 *                     if strdata[i]:
*/
      __pyx_t_4 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_Encoding, __pyx_mstate_global->__pyx_kp_u_utf_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6081, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_v_encoding = __pyx_t_4;
      __pyx_t_4 = 0;

      /* "netCDF4/_netCDF4.pyx":6082
 *                 # not given, use 'utf-8'.
 *                 encoding = getattr(self,'_Encoding','utf-8')
 *                 for i in range(totelem):             # <<<<<<<<<<<<<<
 *                     if strdata[i]:
 *                         data[i] = strdata[i].decode(encoding)
*/
      __pyx_t_15 = __pyx_v_totelem;
      __pyx_t_16 = __pyx_t_15;
      for (__pyx_t_17 = 0; __pyx_t_17 < __pyx_t_16; __pyx_t_17+=1) {
        __pyx_v_i = __pyx_t_17;

        /* "netCDF4/_netCDF4.pyx":6083
 *                 encoding = getattr(self,'_Encoding','utf-8')
 *                 for i in range(totelem):
 *                     if strdata[i]:             # <<<<<<<<<<<<<<
 *                         data[i] = strdata[i].decode(encoding)
 *                     else:
*/
        __pyx_t_5 = ((__pyx_v_strdata[__pyx_v_i]) != 0);
        if (__pyx_t_5) {

          /* "netCDF4/_netCDF4.pyx":6084
 *                 for i in range(totelem):
 *                     if strdata[i]:
 *                         data[i] = strdata[i].decode(encoding)             # <<<<<<<<<<<<<<
 *                     else:
 *                         data[i] = "" # issue 915
*/
          __pyx_t_6 = __Pyx_PyBytes_FromString((__pyx_v_strdata[__pyx_v_i])); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6084, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __pyx_t_12 = __pyx_t_6;
          __Pyx_INCREF(__pyx_t_12);
          __pyx_t_10 = 0;
          {
            PyObject *__pyx_callargs[2] = {__pyx_t_12, __pyx_v_encoding};
            __pyx_t_4 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_decode, __pyx_callargs+__pyx_t_10, (2-__pyx_t_10) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
            __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6084, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_4);
          }
          if (unlikely((__Pyx_SetItemInt(((PyObject *)__pyx_v_data), __pyx_v_i, __pyx_t_4, npy_intp, 1, __Pyx_PyLong_From_npy_intp, 0, 1, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference) < 0))) __PYX_ERR(0, 6084, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

          /* "netCDF4/_netCDF4.pyx":6083
 *                 encoding = getattr(self,'_Encoding','utf-8')
 *                 for i in range(totelem):
 *                     if strdata[i]:             # <<<<<<<<<<<<<<
 *                         data[i] = strdata[i].decode(encoding)
 *                     else:
*/
          goto __pyx_L38;
        }

        /* "netCDF4/_netCDF4.pyx":6086
 *                         data[i] = strdata[i].decode(encoding)
 *                     else:
 *                         data[i] = "" # issue 915             # <<<<<<<<<<<<<<
 *                 # reshape the output array
 *                 data = numpy.reshape(data, shapeout)
*/
        /*else*/ {
          if (unlikely((__Pyx_SetItemInt(((PyObject *)__pyx_v_data), __pyx_v_i, __pyx_mstate_global->__pyx_kp_u__4, npy_intp, 1, __Pyx_PyLong_From_npy_intp, 0, 1, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference) < 0))) __PYX_ERR(0, 6086, __pyx_L1_error)
        }
        __pyx_L38:;
      }

      /* "netCDF4/_netCDF4.pyx":6088
 *                         data[i] = "" # issue 915
 *                 # reshape the output array
 *                 data = numpy.reshape(data, shapeout)             # <<<<<<<<<<<<<<
 *                 # free string data internally allocated in netcdf C lib
 *                 with nogil:
*/
      __pyx_t_6 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_mstate_global->__pyx_n_u_numpy); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 6088, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_mstate_global->__pyx_n_u_reshape); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6088, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __pyx_t_10 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_1))) {
        __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1);
        assert(__pyx_t_6);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_1);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_1, __pyx__function);
        __pyx_t_10 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[3] = {__pyx_t_6, ((PyObject *)__pyx_v_data), __pyx_v_shapeout};
        __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_1, __pyx_callargs+__pyx_t_10, (3-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6088, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
      }
      if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_ndarray))))) __PYX_ERR(0, 6088, __pyx_L1_error)
      __Pyx_DECREF_SET(__pyx_v_data, ((PyArrayObject *)__pyx_t_4));
      __pyx_t_4 = 0;

      /* "netCDF4/_netCDF4.pyx":6090
 *                 data = numpy.reshape(data, shapeout)
 *                 # free string data internally allocated in netcdf C lib
 *                 with nogil:             # <<<<<<<<<<<<<<
 *                     ierr = nc_free_string(totelem, strdata)
 *                 # free the pointer array
*/
      {
          PyThreadState * _save;
          _save = PyEval_SaveThread();
          __Pyx_FastGIL_Remember();
          /*try:*/ {

            /* "netCDF4/_netCDF4.pyx":6091
 *                 # free string data internally allocated in netcdf C lib
 *                 with nogil:
 *                     ierr = nc_free_string(totelem, strdata)             # <<<<<<<<<<<<<<
 *                 # free the pointer array
 *                 free(strdata)
*/
            __pyx_v_ierr = nc_free_string(__pyx_v_totelem, __pyx_v_strdata);
          }

          /* "netCDF4/_netCDF4.pyx":6090
 *                 data = numpy.reshape(data, shapeout)
 *                 # free string data internally allocated in netcdf C lib
 *                 with nogil:             # <<<<<<<<<<<<<<
 *                     ierr = nc_free_string(totelem, strdata)
 *                 # free the pointer array
*/
          /*finally:*/ {
            /*normal exit:*/{
              __Pyx_FastGIL_Forget();
              PyEval_RestoreThread(_save);
              goto __pyx_L41;
            }
            __pyx_L41:;
          }
      }

      /* "netCDF4/_netCDF4.pyx":6093
 *                     ierr = nc_free_string(totelem, strdata)
 *                 # free the pointer array
 *                 free(strdata)             # <<<<<<<<<<<<<<
 *             else:
 *                 # regular vlen
*/
      free(__pyx_v_strdata);

      /* "netCDF4/_netCDF4.pyx":6058
 *             data = data.flatten()
 *             totelem = PyArray_SIZE(data)
 *             if self.dtype == str:             # <<<<<<<<<<<<<<
 *                 # vlen string (NC_STRING)
 *                 # allocate pointer array to hold string data.
*/
      goto __pyx_L28;
    }

    /* "netCDF4/_netCDF4.pyx":6097
 *                 # regular vlen
 *                 # allocate struct array to hold vlen data.
 *                 vldata = <nc_vlen_t *>malloc(totelem*sizeof(nc_vlen_t))             # <<<<<<<<<<<<<<
 *                 for i in range(totelem):
 *                     vldata[i].len = 0
*/
    /*else*/ {
      __pyx_v_vldata = ((nc_vlen_t *)malloc((__pyx_v_totelem * (sizeof(nc_vlen_t)))));

      /* "netCDF4/_netCDF4.pyx":6098
 *                 # allocate struct array to hold vlen data.
 *                 vldata = <nc_vlen_t *>malloc(totelem*sizeof(nc_vlen_t))
 *                 for i in range(totelem):             # <<<<<<<<<<<<<<
 *                     vldata[i].len = 0
 *                     vldata[i].p = <void*>0
*/
      __pyx_t_15 = __pyx_v_totelem;
      __pyx_t_16 = __pyx_t_15;
      for (__pyx_t_17 = 0; __pyx_t_17 < __pyx_t_16; __pyx_t_17+=1) {
        __pyx_v_i = __pyx_t_17;

        /* "netCDF4/_netCDF4.pyx":6099
 *                 vldata = <nc_vlen_t *>malloc(totelem*sizeof(nc_vlen_t))
 *                 for i in range(totelem):
 *                     vldata[i].len = 0             # <<<<<<<<<<<<<<
 *                     vldata[i].p = <void*>0
 *                 # strides all 1 or scalar variable, use get_vara (faster)
*/
        (__pyx_v_vldata[__pyx_v_i]).len = 0;

        /* "netCDF4/_netCDF4.pyx":6100
 *                 for i in range(totelem):
 *                     vldata[i].len = 0
 *                     vldata[i].p = <void*>0             # <<<<<<<<<<<<<<
 *                 # strides all 1 or scalar variable, use get_vara (faster)
 *                 if sum(stride) == ndims or ndims == 0:
*/
        (__pyx_v_vldata[__pyx_v_i]).p = ((void *)0);
      }

      /* "netCDF4/_netCDF4.pyx":6102
 *                     vldata[i].p = <void*>0
 *                 # strides all 1 or scalar variable, use get_vara (faster)
 *                 if sum(stride) == ndims or ndims == 0:             # <<<<<<<<<<<<<<
 *                     with nogil:
 *                         ierr = nc_get_vara(self._grpid, self._varid,
*/
      __pyx_t_1 = NULL;
      __pyx_t_10 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_v_stride};
        __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_sum, __pyx_callargs+__pyx_t_10, (2-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6102, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
      }
      __pyx_t_1 = __Pyx_PyLong_From_int(__pyx_v_ndims); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6102, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_6 = PyObject_RichCompare(__pyx_t_4, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6102, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_14 < 0))) __PYX_ERR(0, 6102, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (!__pyx_t_14) {
      } else {
        __pyx_t_5 = __pyx_t_14;
        goto __pyx_L45_bool_binop_done;
      }
      __pyx_t_14 = (__pyx_v_ndims == 0);
      __pyx_t_5 = __pyx_t_14;
      __pyx_L45_bool_binop_done:;
      if (likely(__pyx_t_5)) {

        /* "netCDF4/_netCDF4.pyx":6103
 *                 # strides all 1 or scalar variable, use get_vara (faster)
 *                 if sum(stride) == ndims or ndims == 0:
 *                     with nogil:             # <<<<<<<<<<<<<<
 *                         ierr = nc_get_vara(self._grpid, self._varid,
 *                                            startp, countp, vldata)
*/
        {
            PyThreadState * _save;
            _save = PyEval_SaveThread();
            __Pyx_FastGIL_Remember();
            /*try:*/ {

              /* "netCDF4/_netCDF4.pyx":6104
 *                 if sum(stride) == ndims or ndims == 0:
 *                     with nogil:
 *                         ierr = nc_get_vara(self._grpid, self._varid,             # <<<<<<<<<<<<<<
 *                                            startp, countp, vldata)
 *                 else:
*/
              __pyx_v_ierr = nc_get_vara(__pyx_v_self->_grpid, __pyx_v_self->_varid, __pyx_v_startp, __pyx_v_countp, __pyx_v_vldata);
            }

            /* "netCDF4/_netCDF4.pyx":6103
 *                 # strides all 1 or scalar variable, use get_vara (faster)
 *                 if sum(stride) == ndims or ndims == 0:
 *                     with nogil:             # <<<<<<<<<<<<<<
 *                         ierr = nc_get_vara(self._grpid, self._varid,
 *                                            startp, countp, vldata)
*/
            /*finally:*/ {
              /*normal exit:*/{
                __Pyx_FastGIL_Forget();
                PyEval_RestoreThread(_save);
                goto __pyx_L49;
              }
              __pyx_L49:;
            }
        }

        /* "netCDF4/_netCDF4.pyx":6102
 *                     vldata[i].p = <void*>0
 *                 # strides all 1 or scalar variable, use get_vara (faster)
 *                 if sum(stride) == ndims or ndims == 0:             # <<<<<<<<<<<<<<
 *                     with nogil:
 *                         ierr = nc_get_vara(self._grpid, self._varid,
*/
        goto __pyx_L44;
      }

      /* "netCDF4/_netCDF4.pyx":6107
 *                                            startp, countp, vldata)
 *                 else:
 *                     raise IndexError('strides must all be 1 for vlen variables')             # <<<<<<<<<<<<<<
 *                     #with nogil:
 *                     #    ierr = nc_get_vars(self._grpid, self._varid,
*/
      /*else*/ {
        __pyx_t_1 = NULL;
        __pyx_t_10 = 1;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_mstate_global->__pyx_kp_u_strides_must_all_be_1_for_vlen_v};
          __pyx_t_6 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_IndexError)), __pyx_callargs+__pyx_t_10, (2-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
          if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6107, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
        }
        __Pyx_Raise(__pyx_t_6, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __PYX_ERR(0, 6107, __pyx_L1_error)
      }
      __pyx_L44:;

      /* "netCDF4/_netCDF4.pyx":6111
 *                     #    ierr = nc_get_vars(self._grpid, self._varid,
 *                     #                       startp, countp, stridep, vldata)
 *                 if ierr == NC_EINVALCOORDS:             # <<<<<<<<<<<<<<
 *                     raise IndexError
 *                 elif ierr != NC_NOERR:
*/
      __pyx_t_5 = (__pyx_v_ierr == NC_EINVALCOORDS);
      if (unlikely(__pyx_t_5)) {

        /* "netCDF4/_netCDF4.pyx":6112
 *                     #                       startp, countp, stridep, vldata)
 *                 if ierr == NC_EINVALCOORDS:
 *                     raise IndexError             # <<<<<<<<<<<<<<
 *                 elif ierr != NC_NOERR:
 *                     _ensure_nc_success(ierr)
*/
        __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_IndexError))), 0, 0, 0);
        __PYX_ERR(0, 6112, __pyx_L1_error)

        /* "netCDF4/_netCDF4.pyx":6111
 *                     #    ierr = nc_get_vars(self._grpid, self._varid,
 *                     #                       startp, countp, stridep, vldata)
 *                 if ierr == NC_EINVALCOORDS:             # <<<<<<<<<<<<<<
 *                     raise IndexError
 *                 elif ierr != NC_NOERR:
*/
      }

      /* "netCDF4/_netCDF4.pyx":6113
 *                 if ierr == NC_EINVALCOORDS:
 *                     raise IndexError
 *                 elif ierr != NC_NOERR:             # <<<<<<<<<<<<<<
 *                     _ensure_nc_success(ierr)
 *                 # loop over elements of object array, fill array with
*/
      __pyx_t_5 = (__pyx_v_ierr != NC_NOERR);
      if (__pyx_t_5) {

        /* "netCDF4/_netCDF4.pyx":6114
 *                     raise IndexError
 *                 elif ierr != NC_NOERR:
 *                     _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 *                 # loop over elements of object array, fill array with
 *                 # contents of vlarray struct, put array in object array.
*/
        __pyx_t_1 = NULL;
        __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6114, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_12 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 6114, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_12);
        __pyx_t_10 = 1;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_4))) {
          __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_4);
          assert(__pyx_t_1);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
          __Pyx_INCREF(__pyx_t_1);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
          __pyx_t_10 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_t_12};
          __pyx_t_6 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_10, (2-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6114, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
        }
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

        /* "netCDF4/_netCDF4.pyx":6113
 *                 if ierr == NC_EINVALCOORDS:
 *                     raise IndexError
 *                 elif ierr != NC_NOERR:             # <<<<<<<<<<<<<<
 *                     _ensure_nc_success(ierr)
 *                 # loop over elements of object array, fill array with
*/
      }

      /* "netCDF4/_netCDF4.pyx":6117
 *                 # loop over elements of object array, fill array with
 *                 # contents of vlarray struct, put array in object array.
 *                 for i in range(totelem):             # <<<<<<<<<<<<<<
 *                     arrlen  = vldata[i].len
 *                     dataarr = numpy.empty(arrlen, self.dtype)
*/
      __pyx_t_15 = __pyx_v_totelem;
      __pyx_t_16 = __pyx_t_15;
      for (__pyx_t_17 = 0; __pyx_t_17 < __pyx_t_16; __pyx_t_17+=1) {
        __pyx_v_i = __pyx_t_17;

        /* "netCDF4/_netCDF4.pyx":6118
 *                 # contents of vlarray struct, put array in object array.
 *                 for i in range(totelem):
 *                     arrlen  = vldata[i].len             # <<<<<<<<<<<<<<
 *                     dataarr = numpy.empty(arrlen, self.dtype)
 *                     #dataarr.data = <char *>vldata[i].p
*/
        __pyx_t_10 = (__pyx_v_vldata[__pyx_v_i]).len;
        __pyx_v_arrlen = __pyx_t_10;

        /* "netCDF4/_netCDF4.pyx":6119
 *                 for i in range(totelem):
 *                     arrlen  = vldata[i].len
 *                     dataarr = numpy.empty(arrlen, self.dtype)             # <<<<<<<<<<<<<<
 *                     #dataarr.data = <char *>vldata[i].p
 *                     memcpy(PyArray_DATA(dataarr), vldata[i].p, dataarr.nbytes)
*/
        __pyx_t_4 = NULL;
        __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_mstate_global->__pyx_n_u_numpy); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 6119, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_12);
        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_mstate_global->__pyx_n_u_empty); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6119, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
        __pyx_t_12 = __Pyx_PyLong_FromSize_t(__pyx_v_arrlen); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 6119, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_12);
        __pyx_t_10 = 1;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_1))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1);
          assert(__pyx_t_4);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_1);
          __Pyx_INCREF(__pyx_t_4);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_1, __pyx__function);
          __pyx_t_10 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_t_12, __pyx_v_self->dtype};
          __pyx_t_6 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_1, __pyx_callargs+__pyx_t_10, (3-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6119, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
        }
        if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_ndarray))))) __PYX_ERR(0, 6119, __pyx_L1_error)
        __Pyx_XDECREF_SET(__pyx_v_dataarr, ((PyArrayObject *)__pyx_t_6));
        __pyx_t_6 = 0;

        /* "netCDF4/_netCDF4.pyx":6121
 *                     dataarr = numpy.empty(arrlen, self.dtype)
 *                     #dataarr.data = <char *>vldata[i].p
 *                     memcpy(PyArray_DATA(dataarr), vldata[i].p, dataarr.nbytes)             # <<<<<<<<<<<<<<
 *                     data[i] = dataarr
 *                 # reshape the output array
*/
        __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_dataarr), __pyx_mstate_global->__pyx_n_u_nbytes); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6121, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_10 = __Pyx_PyLong_As_size_t(__pyx_t_6); if (unlikely((__pyx_t_10 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 6121, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        (void)(memcpy(PyArray_DATA(__pyx_v_dataarr), (__pyx_v_vldata[__pyx_v_i]).p, __pyx_t_10));

        /* "netCDF4/_netCDF4.pyx":6122
 *                     #dataarr.data = <char *>vldata[i].p
 *                     memcpy(PyArray_DATA(dataarr), vldata[i].p, dataarr.nbytes)
 *                     data[i] = dataarr             # <<<<<<<<<<<<<<
 *                 # reshape the output array
 *                 data = numpy.reshape(data, shapeout)
*/
        if (unlikely((__Pyx_SetItemInt(((PyObject *)__pyx_v_data), __pyx_v_i, ((PyObject *)__pyx_v_dataarr), npy_intp, 1, __Pyx_PyLong_From_npy_intp, 0, 1, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference) < 0))) __PYX_ERR(0, 6122, __pyx_L1_error)
      }

      /* "netCDF4/_netCDF4.pyx":6124
 *                     data[i] = dataarr
 *                 # reshape the output array
 *                 data = numpy.reshape(data, shapeout)             # <<<<<<<<<<<<<<
 *                 # free vlen data internally allocated in netcdf C lib
 *                 with nogil:
*/
      __pyx_t_1 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_mstate_global->__pyx_n_u_numpy); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 6124, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_mstate_global->__pyx_n_u_reshape); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6124, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __pyx_t_10 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_4))) {
        __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_4);
        assert(__pyx_t_1);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_1);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
        __pyx_t_10 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[3] = {__pyx_t_1, ((PyObject *)__pyx_v_data), __pyx_v_shapeout};
        __pyx_t_6 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_10, (3-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6124, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
      }
      if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_ndarray))))) __PYX_ERR(0, 6124, __pyx_L1_error)
      __Pyx_DECREF_SET(__pyx_v_data, ((PyArrayObject *)__pyx_t_6));
      __pyx_t_6 = 0;

      /* "netCDF4/_netCDF4.pyx":6126
 *                 data = numpy.reshape(data, shapeout)
 *                 # free vlen data internally allocated in netcdf C lib
 *                 with nogil:             # <<<<<<<<<<<<<<
 *                     ierr = nc_free_vlens(totelem, vldata)
 *                 # free the pointer array
*/
      {
          PyThreadState * _save;
          _save = PyEval_SaveThread();
          __Pyx_FastGIL_Remember();
          /*try:*/ {

            /* "netCDF4/_netCDF4.pyx":6127
 *                 # free vlen data internally allocated in netcdf C lib
 *                 with nogil:
 *                     ierr = nc_free_vlens(totelem, vldata)             # <<<<<<<<<<<<<<
 *                 # free the pointer array
 *                 free(vldata)
*/
            __pyx_v_ierr = nc_free_vlens(__pyx_v_totelem, __pyx_v_vldata);
          }

          /* "netCDF4/_netCDF4.pyx":6126
 *                 data = numpy.reshape(data, shapeout)
 *                 # free vlen data internally allocated in netcdf C lib
 *                 with nogil:             # <<<<<<<<<<<<<<
 *                     ierr = nc_free_vlens(totelem, vldata)
 *                 # free the pointer array
*/
          /*finally:*/ {
            /*normal exit:*/{
              __Pyx_FastGIL_Forget();
              PyEval_RestoreThread(_save);
              goto __pyx_L55;
            }
            __pyx_L55:;
          }
      }

      /* "netCDF4/_netCDF4.pyx":6129
 *                     ierr = nc_free_vlens(totelem, vldata)
 *                 # free the pointer array
 *                 free(vldata)             # <<<<<<<<<<<<<<
 *         free(startp)
 *         free(countp)
*/
      free(__pyx_v_vldata);
    }
    __pyx_L28:;

    /* "netCDF4/_netCDF4.pyx":6052
 *             elif ierr != NC_NOERR:
 *                 _ensure_nc_success(ierr)
 *         elif self._isvlen:             # <<<<<<<<<<<<<<
 *             # allocate array of correct primitive type.
 *             data = numpy.empty(shapeout, 'O')
*/
  }
  __pyx_L10:;

  /* "netCDF4/_netCDF4.pyx":6130
 *                 # free the pointer array
 *                 free(vldata)
 *         free(startp)             # <<<<<<<<<<<<<<
 *         free(countp)
 *         free(stridep)
*/
  free(__pyx_v_startp);

  /* "netCDF4/_netCDF4.pyx":6131
 *                 free(vldata)
 *         free(startp)
 *         free(countp)             # <<<<<<<<<<<<<<
 *         free(stridep)
 *         if negstride:
*/
  free(__pyx_v_countp);

  /* "netCDF4/_netCDF4.pyx":6132
 *         free(startp)
 *         free(countp)
 *         free(stridep)             # <<<<<<<<<<<<<<
 *         if negstride:
 *             # reverse data along axes with negative strides.
*/
  free(__pyx_v_stridep);

  /* "netCDF4/_netCDF4.pyx":6133
 *         free(countp)
 *         free(stridep)
 *         if negstride:             # <<<<<<<<<<<<<<
 *             # reverse data along axes with negative strides.
 *             data = data[tuple(sl)].copy() # make a copy so data is contiguous.
*/
  __pyx_t_5 = (__pyx_v_negstride != 0);
  if (__pyx_t_5) {

    /* "netCDF4/_netCDF4.pyx":6135
 *         if negstride:
 *             # reverse data along axes with negative strides.
 *             data = data[tuple(sl)].copy() # make a copy so data is contiguous.             # <<<<<<<<<<<<<<
 *         # netcdf-c always returns data in native byte order,
 *         # regardless of variable endian-ness. Here we swap the
*/
    if (unlikely(!__pyx_v_data)) { __Pyx_RaiseUnboundLocalError("data"); __PYX_ERR(0, 6135, __pyx_L1_error) }
    __pyx_t_1 = PyList_AsTuple(__pyx_v_sl); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6135, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_12 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_data), __pyx_t_1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 6135, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_4 = __pyx_t_12;
    __Pyx_INCREF(__pyx_t_4);
    __pyx_t_10 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
      __pyx_t_6 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_copy, __pyx_callargs+__pyx_t_10, (1-__pyx_t_10) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6135, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
    }
    if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_ndarray))))) __PYX_ERR(0, 6135, __pyx_L1_error)
    __Pyx_XDECREF_SET(__pyx_v_data, ((PyArrayObject *)__pyx_t_6));
    __pyx_t_6 = 0;

    /* "netCDF4/_netCDF4.pyx":6133
 *         free(countp)
 *         free(stridep)
 *         if negstride:             # <<<<<<<<<<<<<<
 *             # reverse data along axes with negative strides.
 *             data = data[tuple(sl)].copy() # make a copy so data is contiguous.
*/
  }

  /* "netCDF4/_netCDF4.pyx":6141
 *         # dtype of the returned numpy array matches the variable dtype.
 *         # (pull request #555, issue #554).
 *         if not data.dtype.isnative:             # <<<<<<<<<<<<<<
 *             data.byteswap(True) # in-place byteswap
 *         if not self.dimensions:
*/
  if (unlikely(!__pyx_v_data)) { __Pyx_RaiseUnboundLocalError("data"); __PYX_ERR(0, 6141, __pyx_L1_error) }
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_data), __pyx_mstate_global->__pyx_n_u_dtype); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6141, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_isnative); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 6141, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_12); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 6141, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  __pyx_t_14 = (!__pyx_t_5);
  if (__pyx_t_14) {

    /* "netCDF4/_netCDF4.pyx":6142
 *         # (pull request #555, issue #554).
 *         if not data.dtype.isnative:
 *             data.byteswap(True) # in-place byteswap             # <<<<<<<<<<<<<<
 *         if not self.dimensions:
 *             return data[0] # a scalar
*/
    if (unlikely(!__pyx_v_data)) { __Pyx_RaiseUnboundLocalError("data"); __PYX_ERR(0, 6142, __pyx_L1_error) }
    __pyx_t_6 = ((PyObject *)__pyx_v_data);
    __Pyx_INCREF(__pyx_t_6);
    __pyx_t_10 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_6, Py_True};
      __pyx_t_12 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_byteswap, __pyx_callargs+__pyx_t_10, (2-__pyx_t_10) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 6142, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
    }
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

    /* "netCDF4/_netCDF4.pyx":6141
 *         # dtype of the returned numpy array matches the variable dtype.
 *         # (pull request #555, issue #554).
 *         if not data.dtype.isnative:             # <<<<<<<<<<<<<<
 *             data.byteswap(True) # in-place byteswap
 *         if not self.dimensions:
*/
  }

  /* "netCDF4/_netCDF4.pyx":6143
 *         if not data.dtype.isnative:
 *             data.byteswap(True) # in-place byteswap
 *         if not self.dimensions:             # <<<<<<<<<<<<<<
 *             return data[0] # a scalar
 *         elif squeeze_out:
*/
  __pyx_t_12 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_dimensions); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 6143, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_12); if (unlikely((__pyx_t_14 < 0))) __PYX_ERR(0, 6143, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  __pyx_t_5 = (!__pyx_t_14);
  if (__pyx_t_5) {

    /* "netCDF4/_netCDF4.pyx":6144
 *             data.byteswap(True) # in-place byteswap
 *         if not self.dimensions:
 *             return data[0] # a scalar             # <<<<<<<<<<<<<<
 *         elif squeeze_out:
 *             return numpy.squeeze(data)
*/
    __Pyx_XDECREF(__pyx_r);
    if (unlikely(!__pyx_v_data)) { __Pyx_RaiseUnboundLocalError("data"); __PYX_ERR(0, 6144, __pyx_L1_error) }
    __pyx_t_12 = __Pyx_GetItemInt(((PyObject *)__pyx_v_data), 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 6144, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_r = __pyx_t_12;
    __pyx_t_12 = 0;
    goto __pyx_L0;

    /* "netCDF4/_netCDF4.pyx":6143
 *         if not data.dtype.isnative:
 *             data.byteswap(True) # in-place byteswap
 *         if not self.dimensions:             # <<<<<<<<<<<<<<
 *             return data[0] # a scalar
 *         elif squeeze_out:
*/
  }

  /* "netCDF4/_netCDF4.pyx":6145
 *         if not self.dimensions:
 *             return data[0] # a scalar
 *         elif squeeze_out:             # <<<<<<<<<<<<<<
 *             return numpy.squeeze(data)
 *         else:
*/
  if (__pyx_v_squeeze_out) {

    /* "netCDF4/_netCDF4.pyx":6146
 *             return data[0] # a scalar
 *         elif squeeze_out:
 *             return numpy.squeeze(data)             # <<<<<<<<<<<<<<
 *         else:
 *             return data
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6146, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_squeeze); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6146, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_v_data)) { __Pyx_RaiseUnboundLocalError("data"); __PYX_ERR(0, 6146, __pyx_L1_error) }
    __pyx_t_10 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_1))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1);
      assert(__pyx_t_6);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_1, __pyx__function);
      __pyx_t_10 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_6, ((PyObject *)__pyx_v_data)};
      __pyx_t_12 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_1, __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_1); __pyx_t_1 = 0;
      if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 6146, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
    }
    __pyx_r = __pyx_t_12;
    __pyx_t_12 = 0;
    goto __pyx_L0;

    /* "netCDF4/_netCDF4.pyx":6145
 *         if not self.dimensions:
 *             return data[0] # a scalar
 *         elif squeeze_out:             # <<<<<<<<<<<<<<
 *             return numpy.squeeze(data)
 *         else:
*/
  }

  /* "netCDF4/_netCDF4.pyx":6148
 *             return numpy.squeeze(data)
 *         else:
 *             return data             # <<<<<<<<<<<<<<
 * 
 *     def set_collective(self, value):
*/
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    if (unlikely(!__pyx_v_data)) { __Pyx_RaiseUnboundLocalError("data"); __PYX_ERR(0, 6148, __pyx_L1_error) }
    __Pyx_INCREF((PyObject *)__pyx_v_data);
    __pyx_r = ((PyObject *)__pyx_v_data);
    goto __pyx_L0;
  }

  /* "netCDF4/_netCDF4.pyx":5983
 *         free(stridep)
 * 
 *     def _get(self,start,count,stride):             # <<<<<<<<<<<<<<
 *         """Private method to retrieve data from a netCDF variable"""
 *         cdef int ierr, ndims
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_AddTraceback("netCDF4._netCDF4.Variable._get", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_data);
  __Pyx_XDECREF((PyObject *)__pyx_v_dataarr);
  __Pyx_XDECREF(__pyx_v_shapeout);
  __Pyx_XDECREF(__pyx_v_lendim);
  __Pyx_XDECREF(__pyx_v_sl);
  __Pyx_XDECREF(__pyx_v_encoding);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":6150
 *             return data
 * 
 *     def set_collective(self, value):             # <<<<<<<<<<<<<<
 *         """**`set_collective(self,True_or_False)`**
 * 
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_87set_collective(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7netCDF4_8_netCDF4_8Variable_86set_collective, "**`set_collective(self,True_or_False)`**\n\n        turn on or off collective parallel IO access. Ignored if file is not\n        open for parallel access.\n        ");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_8Variable_87set_collective = {"set_collective", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_8Variable_87set_collective, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_8Variable_86set_collective};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_87set_collective(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  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[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set_collective (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 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,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 6150, __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(0, 6150, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_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_collective", 0) < (0)) __PYX_ERR(0, 6150, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("set_collective", 1, 1, 1, i); __PYX_ERR(0, 6150, __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(0, 6150, __pyx_L3_error)
    }
    __pyx_v_value = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("set_collective", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 6150, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4.Variable.set_collective", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_8Variable_86set_collective(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self), __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_7netCDF4_8_netCDF4_8Variable_86set_collective(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_v_mode;
  int __pyx_v_ierr;
  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;
  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("set_collective", 0);

  /* "netCDF4/_netCDF4.pyx":6156
 *         open for parallel access.
 *         """
 *         if not __has_parallel_support__:             # <<<<<<<<<<<<<<
 *             return
 * 
*/
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_has_parallel_support); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6156, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 6156, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = (!__pyx_t_2);
  if (__pyx_t_3) {

    /* "netCDF4/_netCDF4.pyx":6157
 *         """
 *         if not __has_parallel_support__:
 *             return             # <<<<<<<<<<<<<<
 * 
 *         mode = NC_COLLECTIVE if value else NC_INDEPENDENT
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "netCDF4/_netCDF4.pyx":6156
 *         open for parallel access.
 *         """
 *         if not __has_parallel_support__:             # <<<<<<<<<<<<<<
 *             return
 * 
*/
  }

  /* "netCDF4/_netCDF4.pyx":6159
 *             return
 * 
 *         mode = NC_COLLECTIVE if value else NC_INDEPENDENT             # <<<<<<<<<<<<<<
 *         with nogil:
 *             ierr = nc_var_par_access(self._grpid, self._varid,
*/
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_value); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 6159, __pyx_L1_error)
  if (__pyx_t_3) {
    __pyx_t_4 = NC_COLLECTIVE;
  } else {
    __pyx_t_4 = NC_INDEPENDENT;
  }
  __pyx_v_mode = __pyx_t_4;

  /* "netCDF4/_netCDF4.pyx":6160
 * 
 *         mode = NC_COLLECTIVE if value else NC_INDEPENDENT
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_var_par_access(self._grpid, self._varid,
 *                    mode)
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "netCDF4/_netCDF4.pyx":6161
 *         mode = NC_COLLECTIVE if value else NC_INDEPENDENT
 *         with nogil:
 *             ierr = nc_var_par_access(self._grpid, self._varid,             # <<<<<<<<<<<<<<
 *                    mode)
 *         _ensure_nc_success(ierr)
*/
        __pyx_v_ierr = nc_var_par_access(__pyx_v_self->_grpid, __pyx_v_self->_varid, __pyx_v_mode);
      }

      /* "netCDF4/_netCDF4.pyx":6160
 * 
 *         mode = NC_COLLECTIVE if value else NC_INDEPENDENT
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_var_par_access(self._grpid, self._varid,
 *                    mode)
*/
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L6;
        }
        __pyx_L6:;
      }
  }

  /* "netCDF4/_netCDF4.pyx":6163
 *             ierr = nc_var_par_access(self._grpid, self._varid,
 *                    mode)
 *         _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_t_5 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6163, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6163, __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_1 = __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_1)) __PYX_ERR(0, 6163, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":6150
 *             return data
 * 
 *     def set_collective(self, value):             # <<<<<<<<<<<<<<
 *         """**`set_collective(self,True_or_False)`**
 * 
*/

  /* 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_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("netCDF4._netCDF4.Variable.set_collective", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":6166
 * 
 * 
 *     def get_dims(self):             # <<<<<<<<<<<<<<
 *         """
 * **`get_dims(self)`**
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_89get_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_7netCDF4_8_netCDF4_8Variable_88get_dims, "\n**`get_dims(self)`**\n\nreturn a tuple of `Dimension` instances associated with this\n`Variable`.\n        ");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_8Variable_89get_dims = {"get_dims", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_8Variable_89get_dims, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_8Variable_88get_dims};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_89get_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_7netCDF4_8_netCDF4_8Variable_88get_dims(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_7netCDF4_8_netCDF4_8Variable_8get_dims_2generator6(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "netCDF4/_netCDF4.pyx":6173
 * `Variable`.
 *         """
 *         return tuple(_find_dim(self._grp, dim) for dim in self.dimensions)             # <<<<<<<<<<<<<<
 * 
 *     def __reduce__(self):
*/

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_8get_dims_genexpr(PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_10_genexpr *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("genexpr", 0);
  __pyx_cur_scope = (struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_10_genexpr *)__pyx_tp_new_7netCDF4_8_netCDF4___pyx_scope_struct_10_genexpr(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_10_genexpr, __pyx_mstate_global->__pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_10_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(0, 6173, __pyx_L1_error)
  } else {
    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_outer_scope = (struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_9_get_dims *) __pyx_self;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_outer_scope);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_outer_scope);
  __pyx_cur_scope->__pyx_genexpr_arg_0 = __pyx_genexpr_arg_0;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_genexpr_arg_0);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_genexpr_arg_0);
  {
    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_7netCDF4_8_netCDF4_8Variable_8get_dims_2generator6, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[6]), (PyObject *) __pyx_cur_scope, __pyx_mstate_global->__pyx_n_u_genexpr, __pyx_mstate_global->__pyx_n_u_get_dims_locals_genexpr, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4); if (unlikely(!gen)) __PYX_ERR(0, 6173, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("netCDF4._netCDF4.Variable.get_dims.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_7netCDF4_8_netCDF4_8Variable_8get_dims_2generator6(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_10_genexpr *__pyx_cur_scope = ((struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_10_genexpr *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  PyObject *(*__pyx_t_3)(PyObject *);
  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_RefNannyDeclarations
  __Pyx_RefNannySetupContext("genexpr", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    case 1: goto __pyx_L6_resume_from_yield;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(__pyx_sent_value != Py_None)) {
    if (unlikely(__pyx_sent_value)) PyErr_SetString(PyExc_TypeError, "can't send non-None value to a just-started generator");
    __PYX_ERR(0, 6173, __pyx_L1_error)
  }
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(0, 6173, __pyx_L1_error) }
  if (likely(PyList_CheckExact(__pyx_cur_scope->__pyx_genexpr_arg_0)) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_genexpr_arg_0)) {
    __pyx_t_1 = __pyx_cur_scope->__pyx_genexpr_arg_0; __Pyx_INCREF(__pyx_t_1);
    __pyx_t_2 = 0;
    __pyx_t_3 = NULL;
  } else {
    __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_cur_scope->__pyx_genexpr_arg_0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6173, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6173, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 6173, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) break;
        }
        __pyx_t_4 = __Pyx_PyList_GetItemRefFast(__pyx_t_1, __pyx_t_2, __Pyx_ReferenceSharing_OwnStrongReference);
        ++__pyx_t_2;
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 6173, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2));
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2);
        #endif
        ++__pyx_t_2;
      }
      if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6173, __pyx_L1_error)
    } else {
      __pyx_t_4 = __pyx_t_3(__pyx_t_1);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 6173, __pyx_L1_error)
          PyErr_Clear();
        }
        break;
      }
    }
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_dim);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_dim, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_5 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_find_dim); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6173, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 6173, __pyx_L1_error) }
    __pyx_t_7 = 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_7 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_cur_scope->__pyx_outer_scope->__pyx_v_self->_grp, __pyx_cur_scope->__pyx_v_dim};
      __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_6, __pyx_callargs+__pyx_t_7, (3-__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_4)) __PYX_ERR(0, 6173, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
    }
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    __Pyx_XGIVEREF(__pyx_t_1);
    __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
    __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
    __pyx_cur_scope->__pyx_t_2 = __pyx_t_3;
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
    /* return from generator, yielding value */
    __pyx_generator->resume_label = 1;
    return __pyx_r;
    __pyx_L6_resume_from_yield:;
    __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
    __pyx_cur_scope->__pyx_t_0 = 0;
    __Pyx_XGOTREF(__pyx_t_1);
    __pyx_t_2 = __pyx_cur_scope->__pyx_t_1;
    __pyx_t_3 = __pyx_cur_scope->__pyx_t_2;
    if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 6173, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);

  /* 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_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  if (__Pyx_PyErr_Occurred()) {
    __Pyx_Generator_Replace_StopIteration(0);
    __Pyx_AddTraceback("genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  }
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  #if !CYTHON_USE_EXC_INFO_STACK
  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
  #endif
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":6166
 * 
 * 
 *     def get_dims(self):             # <<<<<<<<<<<<<<
 *         """
 * **`get_dims(self)`**
*/

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_88get_dims(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self) {
  struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_9_get_dims *__pyx_cur_scope;
  PyObject *__pyx_gb_7netCDF4_8_netCDF4_8Variable_8get_dims_2generator6 = 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("get_dims", 0);
  __pyx_cur_scope = (struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_9_get_dims *)__pyx_tp_new_7netCDF4_8_netCDF4___pyx_scope_struct_9_get_dims(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_9_get_dims, __pyx_mstate_global->__pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_9_get_dims *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(0, 6166, __pyx_L1_error)
  } else {
    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);

  /* "netCDF4/_netCDF4.pyx":6173
 * `Variable`.
 *         """
 *         return tuple(_find_dim(self._grp, dim) for dim in self.dimensions)             # <<<<<<<<<<<<<<
 * 
 *     def __reduce__(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_mstate_global->__pyx_n_u_dimensions); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6173, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_pf_7netCDF4_8_netCDF4_8Variable_8get_dims_genexpr(((PyObject*)__pyx_cur_scope), __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6173, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PySequence_Tuple(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6173, __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;

  /* "netCDF4/_netCDF4.pyx":6166
 * 
 * 
 *     def get_dims(self):             # <<<<<<<<<<<<<<
 *         """
 * **`get_dims(self)`**
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("netCDF4._netCDF4.Variable.get_dims", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_gb_7netCDF4_8_netCDF4_8Variable_8get_dims_2generator6);
  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":6175
 *         return tuple(_find_dim(self._grp, dim) for dim in self.dimensions)
 * 
 *     def __reduce__(self):             # <<<<<<<<<<<<<<
 *         # raise error is user tries to pickle a Variable object.
 *         raise NotImplementedError('Variable is not picklable')
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_91__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*/
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_8Variable_91__reduce__ = {"__reduce__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_8Variable_91__reduce__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_91__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_7netCDF4_8_netCDF4_8Variable_90__reduce__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_90__reduce__(CYTHON_UNUSED struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__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("__reduce__", 0);

  /* "netCDF4/_netCDF4.pyx":6177
 *     def __reduce__(self):
 *         # raise error is user tries to pickle a Variable object.
 *         raise NotImplementedError('Variable is not picklable')             # <<<<<<<<<<<<<<
 * 
 * # Compound datatype support.
*/
  __pyx_t_2 = NULL;
  __pyx_t_3 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_Variable_is_not_picklable};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_NotImplementedError)), __pyx_callargs+__pyx_t_3, (2-__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(0, 6177, __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(0, 6177, __pyx_L1_error)

  /* "netCDF4/_netCDF4.pyx":6175
 *         return tuple(_find_dim(self._grp, dim) for dim in self.dimensions)
 * 
 *     def __reduce__(self):             # <<<<<<<<<<<<<<
 *         # raise error is user tries to pickle a Variable object.
 *         raise NotImplementedError('Variable is not picklable')
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("netCDF4._netCDF4.Variable.__reduce__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":3908
 * **`size`**: The number of stored elements.
 *     """
 *     cdef public int _varid, _grpid, _nunlimdim             # <<<<<<<<<<<<<<
 *     cdef public _name, ndim, dtype, mask, scale, always_mask, chartostring,  _isprimitive, \
 *     _iscompound, _isvlen, _isenum, _grp, _cmptype, _vltype, _enumtype,\
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_6_varid_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_6_varid_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_7netCDF4_8_netCDF4_8Variable_6_varid___get__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_6_varid___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__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_PyLong_From_int(__pyx_v_self->_varid); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3908, __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("netCDF4._netCDF4.Variable._varid.__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_7netCDF4_8_netCDF4_8Variable_6_varid_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_6_varid_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_7netCDF4_8_netCDF4_8Variable_6_varid_2__set__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_6_varid_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__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_PyLong_As_int(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3908, __pyx_L1_error)
  __pyx_v_self->_varid = __pyx_t_1;

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("netCDF4._netCDF4.Variable._varid.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_6_grpid_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_6_grpid_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_7netCDF4_8_netCDF4_8Variable_6_grpid___get__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_6_grpid___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__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_PyLong_From_int(__pyx_v_self->_grpid); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3908, __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("netCDF4._netCDF4.Variable._grpid.__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_7netCDF4_8_netCDF4_8Variable_6_grpid_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_6_grpid_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_7netCDF4_8_netCDF4_8Variable_6_grpid_2__set__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_6_grpid_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__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_PyLong_As_int(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3908, __pyx_L1_error)
  __pyx_v_self->_grpid = __pyx_t_1;

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("netCDF4._netCDF4.Variable._grpid.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_10_nunlimdim_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_10_nunlimdim_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_7netCDF4_8_netCDF4_8Variable_10_nunlimdim___get__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_10_nunlimdim___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__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_PyLong_From_int(__pyx_v_self->_nunlimdim); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3908, __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("netCDF4._netCDF4.Variable._nunlimdim.__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_7netCDF4_8_netCDF4_8Variable_10_nunlimdim_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_10_nunlimdim_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_7netCDF4_8_netCDF4_8Variable_10_nunlimdim_2__set__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_10_nunlimdim_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__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_PyLong_As_int(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3908, __pyx_L1_error)
  __pyx_v_self->_nunlimdim = __pyx_t_1;

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("netCDF4._netCDF4.Variable._nunlimdim.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":3909
 *     """
 *     cdef public int _varid, _grpid, _nunlimdim
 *     cdef public _name, ndim, dtype, mask, scale, always_mask, chartostring,  _isprimitive, \             # <<<<<<<<<<<<<<
 *     _iscompound, _isvlen, _isenum, _grp, _cmptype, _vltype, _enumtype,\
 *     __orthogonal_indexing__, _has_lsd, _use_get_vars, _ncstring_attrs__, auto_complex
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_5_name_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_5_name_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_7netCDF4_8_netCDF4_8Variable_5_name___get__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_5_name___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_name);
  __pyx_r = __pyx_v_self->_name;
  goto __pyx_L0;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_5_name_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_5_name_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_7netCDF4_8_netCDF4_8Variable_5_name_2__set__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_5_name_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__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->_name);
  __Pyx_DECREF(__pyx_v_self->_name);
  __pyx_v_self->_name = __pyx_v_value;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_5_name_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_5_name_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_7netCDF4_8_netCDF4_8Variable_5_name_4__del__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self));

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

static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_5_name_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__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->_name);
  __Pyx_DECREF(__pyx_v_self->_name);
  __pyx_v_self->_name = Py_None;

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

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_4ndim_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_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_7netCDF4_8_netCDF4_8Variable_4ndim___get__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_4ndim___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->ndim);
  __pyx_r = __pyx_v_self->ndim;
  goto __pyx_L0;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_4ndim_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_4ndim_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_7netCDF4_8_netCDF4_8Variable_4ndim_2__set__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_4ndim_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__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->ndim);
  __Pyx_DECREF(__pyx_v_self->ndim);
  __pyx_v_self->ndim = __pyx_v_value;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_4ndim_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_4ndim_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_7netCDF4_8_netCDF4_8Variable_4ndim_4__del__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self));

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

static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_4ndim_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__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->ndim);
  __Pyx_DECREF(__pyx_v_self->ndim);
  __pyx_v_self->ndim = Py_None;

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

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_5dtype_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_5dtype_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_7netCDF4_8_netCDF4_8Variable_5dtype___get__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_5dtype___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->dtype);
  __pyx_r = __pyx_v_self->dtype;
  goto __pyx_L0;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_5dtype_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_5dtype_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_7netCDF4_8_netCDF4_8Variable_5dtype_2__set__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_5dtype_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__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->dtype);
  __Pyx_DECREF(__pyx_v_self->dtype);
  __pyx_v_self->dtype = __pyx_v_value;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_5dtype_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_5dtype_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_7netCDF4_8_netCDF4_8Variable_5dtype_4__del__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self));

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

static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_5dtype_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__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->dtype);
  __Pyx_DECREF(__pyx_v_self->dtype);
  __pyx_v_self->dtype = Py_None;

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

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_4mask_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_4mask_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_7netCDF4_8_netCDF4_8Variable_4mask___get__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_4mask___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->mask);
  __pyx_r = __pyx_v_self->mask;
  goto __pyx_L0;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_4mask_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_4mask_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_7netCDF4_8_netCDF4_8Variable_4mask_2__set__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_4mask_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__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->mask);
  __Pyx_DECREF(__pyx_v_self->mask);
  __pyx_v_self->mask = __pyx_v_value;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_4mask_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_4mask_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_7netCDF4_8_netCDF4_8Variable_4mask_4__del__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self));

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

static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_4mask_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__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->mask);
  __Pyx_DECREF(__pyx_v_self->mask);
  __pyx_v_self->mask = Py_None;

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

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_5scale_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_5scale_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_7netCDF4_8_netCDF4_8Variable_5scale___get__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_5scale___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->scale);
  __pyx_r = __pyx_v_self->scale;
  goto __pyx_L0;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_5scale_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_5scale_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_7netCDF4_8_netCDF4_8Variable_5scale_2__set__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_5scale_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__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->scale);
  __Pyx_DECREF(__pyx_v_self->scale);
  __pyx_v_self->scale = __pyx_v_value;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_5scale_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_5scale_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_7netCDF4_8_netCDF4_8Variable_5scale_4__del__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self));

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

static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_5scale_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__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->scale);
  __Pyx_DECREF(__pyx_v_self->scale);
  __pyx_v_self->scale = Py_None;

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

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_11always_mask_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_11always_mask_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_7netCDF4_8_netCDF4_8Variable_11always_mask___get__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_11always_mask___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->always_mask);
  __pyx_r = __pyx_v_self->always_mask;
  goto __pyx_L0;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_11always_mask_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_11always_mask_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_7netCDF4_8_netCDF4_8Variable_11always_mask_2__set__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_11always_mask_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__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->always_mask);
  __Pyx_DECREF(__pyx_v_self->always_mask);
  __pyx_v_self->always_mask = __pyx_v_value;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_11always_mask_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_11always_mask_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_7netCDF4_8_netCDF4_8Variable_11always_mask_4__del__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self));

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

static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_11always_mask_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__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->always_mask);
  __Pyx_DECREF(__pyx_v_self->always_mask);
  __pyx_v_self->always_mask = Py_None;

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

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_12chartostring_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_12chartostring_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_7netCDF4_8_netCDF4_8Variable_12chartostring___get__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_12chartostring___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->chartostring);
  __pyx_r = __pyx_v_self->chartostring;
  goto __pyx_L0;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_12chartostring_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_12chartostring_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_7netCDF4_8_netCDF4_8Variable_12chartostring_2__set__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_12chartostring_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__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->chartostring);
  __Pyx_DECREF(__pyx_v_self->chartostring);
  __pyx_v_self->chartostring = __pyx_v_value;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_12chartostring_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_12chartostring_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_7netCDF4_8_netCDF4_8Variable_12chartostring_4__del__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self));

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

static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_12chartostring_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__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->chartostring);
  __Pyx_DECREF(__pyx_v_self->chartostring);
  __pyx_v_self->chartostring = Py_None;

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

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_12_isprimitive_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_12_isprimitive_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_7netCDF4_8_netCDF4_8Variable_12_isprimitive___get__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_12_isprimitive___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_isprimitive);
  __pyx_r = __pyx_v_self->_isprimitive;
  goto __pyx_L0;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_12_isprimitive_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_12_isprimitive_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_7netCDF4_8_netCDF4_8Variable_12_isprimitive_2__set__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_12_isprimitive_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__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->_isprimitive);
  __Pyx_DECREF(__pyx_v_self->_isprimitive);
  __pyx_v_self->_isprimitive = __pyx_v_value;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_12_isprimitive_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_12_isprimitive_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_7netCDF4_8_netCDF4_8Variable_12_isprimitive_4__del__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self));

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

static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_12_isprimitive_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__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->_isprimitive);
  __Pyx_DECREF(__pyx_v_self->_isprimitive);
  __pyx_v_self->_isprimitive = Py_None;

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

/* "netCDF4/_netCDF4.pyx":3910
 *     cdef public int _varid, _grpid, _nunlimdim
 *     cdef public _name, ndim, dtype, mask, scale, always_mask, chartostring,  _isprimitive, \
 *     _iscompound, _isvlen, _isenum, _grp, _cmptype, _vltype, _enumtype,\             # <<<<<<<<<<<<<<
 *     __orthogonal_indexing__, _has_lsd, _use_get_vars, _ncstring_attrs__, auto_complex
 * 
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_11_iscompound_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_11_iscompound_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_7netCDF4_8_netCDF4_8Variable_11_iscompound___get__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_11_iscompound___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_iscompound);
  __pyx_r = __pyx_v_self->_iscompound;
  goto __pyx_L0;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_11_iscompound_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_11_iscompound_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_7netCDF4_8_netCDF4_8Variable_11_iscompound_2__set__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_11_iscompound_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__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->_iscompound);
  __Pyx_DECREF(__pyx_v_self->_iscompound);
  __pyx_v_self->_iscompound = __pyx_v_value;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_11_iscompound_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_11_iscompound_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_7netCDF4_8_netCDF4_8Variable_11_iscompound_4__del__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self));

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

static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_11_iscompound_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__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->_iscompound);
  __Pyx_DECREF(__pyx_v_self->_iscompound);
  __pyx_v_self->_iscompound = Py_None;

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

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_7_isvlen_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_7_isvlen_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_7netCDF4_8_netCDF4_8Variable_7_isvlen___get__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_7_isvlen___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_isvlen);
  __pyx_r = __pyx_v_self->_isvlen;
  goto __pyx_L0;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_7_isvlen_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_7_isvlen_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_7netCDF4_8_netCDF4_8Variable_7_isvlen_2__set__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_7_isvlen_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__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->_isvlen);
  __Pyx_DECREF(__pyx_v_self->_isvlen);
  __pyx_v_self->_isvlen = __pyx_v_value;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_7_isvlen_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_7_isvlen_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_7netCDF4_8_netCDF4_8Variable_7_isvlen_4__del__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self));

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

static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_7_isvlen_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__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->_isvlen);
  __Pyx_DECREF(__pyx_v_self->_isvlen);
  __pyx_v_self->_isvlen = Py_None;

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

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_7_isenum_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_7_isenum_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_7netCDF4_8_netCDF4_8Variable_7_isenum___get__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_7_isenum___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_isenum);
  __pyx_r = __pyx_v_self->_isenum;
  goto __pyx_L0;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_7_isenum_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_7_isenum_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_7netCDF4_8_netCDF4_8Variable_7_isenum_2__set__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_7_isenum_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__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->_isenum);
  __Pyx_DECREF(__pyx_v_self->_isenum);
  __pyx_v_self->_isenum = __pyx_v_value;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_7_isenum_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_7_isenum_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_7netCDF4_8_netCDF4_8Variable_7_isenum_4__del__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self));

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

static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_7_isenum_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__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->_isenum);
  __Pyx_DECREF(__pyx_v_self->_isenum);
  __pyx_v_self->_isenum = Py_None;

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

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_4_grp_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_4_grp_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_7netCDF4_8_netCDF4_8Variable_4_grp___get__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_4_grp___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_grp);
  __pyx_r = __pyx_v_self->_grp;
  goto __pyx_L0;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_4_grp_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_4_grp_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_7netCDF4_8_netCDF4_8Variable_4_grp_2__set__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_4_grp_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__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->_grp);
  __Pyx_DECREF(__pyx_v_self->_grp);
  __pyx_v_self->_grp = __pyx_v_value;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_4_grp_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_4_grp_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_7netCDF4_8_netCDF4_8Variable_4_grp_4__del__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self));

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

static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_4_grp_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__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->_grp);
  __Pyx_DECREF(__pyx_v_self->_grp);
  __pyx_v_self->_grp = Py_None;

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

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_8_cmptype_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_8_cmptype_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_7netCDF4_8_netCDF4_8Variable_8_cmptype___get__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_8_cmptype___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_cmptype);
  __pyx_r = __pyx_v_self->_cmptype;
  goto __pyx_L0;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_8_cmptype_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_8_cmptype_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_7netCDF4_8_netCDF4_8Variable_8_cmptype_2__set__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_8_cmptype_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__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->_cmptype);
  __Pyx_DECREF(__pyx_v_self->_cmptype);
  __pyx_v_self->_cmptype = __pyx_v_value;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_8_cmptype_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_8_cmptype_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_7netCDF4_8_netCDF4_8Variable_8_cmptype_4__del__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self));

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

static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_8_cmptype_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__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->_cmptype);
  __Pyx_DECREF(__pyx_v_self->_cmptype);
  __pyx_v_self->_cmptype = Py_None;

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

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_7_vltype_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_7_vltype_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_7netCDF4_8_netCDF4_8Variable_7_vltype___get__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_7_vltype___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_vltype);
  __pyx_r = __pyx_v_self->_vltype;
  goto __pyx_L0;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_7_vltype_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_7_vltype_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_7netCDF4_8_netCDF4_8Variable_7_vltype_2__set__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_7_vltype_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__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->_vltype);
  __Pyx_DECREF(__pyx_v_self->_vltype);
  __pyx_v_self->_vltype = __pyx_v_value;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_7_vltype_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_7_vltype_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_7netCDF4_8_netCDF4_8Variable_7_vltype_4__del__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self));

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

static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_7_vltype_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__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->_vltype);
  __Pyx_DECREF(__pyx_v_self->_vltype);
  __pyx_v_self->_vltype = Py_None;

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

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_9_enumtype_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_9_enumtype_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_7netCDF4_8_netCDF4_8Variable_9_enumtype___get__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_9_enumtype___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_enumtype);
  __pyx_r = __pyx_v_self->_enumtype;
  goto __pyx_L0;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_9_enumtype_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_9_enumtype_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_7netCDF4_8_netCDF4_8Variable_9_enumtype_2__set__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_9_enumtype_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__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->_enumtype);
  __Pyx_DECREF(__pyx_v_self->_enumtype);
  __pyx_v_self->_enumtype = __pyx_v_value;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_9_enumtype_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_9_enumtype_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_7netCDF4_8_netCDF4_8Variable_9_enumtype_4__del__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self));

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

static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_9_enumtype_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__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->_enumtype);
  __Pyx_DECREF(__pyx_v_self->_enumtype);
  __pyx_v_self->_enumtype = Py_None;

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

/* "netCDF4/_netCDF4.pyx":3911
 *     cdef public _name, ndim, dtype, mask, scale, always_mask, chartostring,  _isprimitive, \
 *     _iscompound, _isvlen, _isenum, _grp, _cmptype, _vltype, _enumtype,\
 *     __orthogonal_indexing__, _has_lsd, _use_get_vars, _ncstring_attrs__, auto_complex             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self, grp, name, datatype, dimensions=(),
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_23__orthogonal_indexing___1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_23__orthogonal_indexing___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_7netCDF4_8_netCDF4_8Variable_23__orthogonal_indexing_____get__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_23__orthogonal_indexing_____get__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->__pyx___orthogonal_indexing__);
  __pyx_r = __pyx_v_self->__pyx___orthogonal_indexing__;
  goto __pyx_L0;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_23__orthogonal_indexing___3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_23__orthogonal_indexing___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_7netCDF4_8_netCDF4_8Variable_23__orthogonal_indexing___2__set__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_23__orthogonal_indexing___2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__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->__pyx___orthogonal_indexing__);
  __Pyx_DECREF(__pyx_v_self->__pyx___orthogonal_indexing__);
  __pyx_v_self->__pyx___orthogonal_indexing__ = __pyx_v_value;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_23__orthogonal_indexing___5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_23__orthogonal_indexing___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_7netCDF4_8_netCDF4_8Variable_23__orthogonal_indexing___4__del__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self));

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

static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_23__orthogonal_indexing___4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__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->__pyx___orthogonal_indexing__);
  __Pyx_DECREF(__pyx_v_self->__pyx___orthogonal_indexing__);
  __pyx_v_self->__pyx___orthogonal_indexing__ = Py_None;

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

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_8_has_lsd_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_8_has_lsd_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_7netCDF4_8_netCDF4_8Variable_8_has_lsd___get__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_8_has_lsd___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_has_lsd);
  __pyx_r = __pyx_v_self->_has_lsd;
  goto __pyx_L0;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_8_has_lsd_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_8_has_lsd_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_7netCDF4_8_netCDF4_8Variable_8_has_lsd_2__set__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_8_has_lsd_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__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->_has_lsd);
  __Pyx_DECREF(__pyx_v_self->_has_lsd);
  __pyx_v_self->_has_lsd = __pyx_v_value;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_8_has_lsd_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_8_has_lsd_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_7netCDF4_8_netCDF4_8Variable_8_has_lsd_4__del__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self));

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

static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_8_has_lsd_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__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->_has_lsd);
  __Pyx_DECREF(__pyx_v_self->_has_lsd);
  __pyx_v_self->_has_lsd = Py_None;

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

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_13_use_get_vars_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_13_use_get_vars_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_7netCDF4_8_netCDF4_8Variable_13_use_get_vars___get__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_13_use_get_vars___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_use_get_vars);
  __pyx_r = __pyx_v_self->_use_get_vars;
  goto __pyx_L0;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_13_use_get_vars_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_13_use_get_vars_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_7netCDF4_8_netCDF4_8Variable_13_use_get_vars_2__set__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_13_use_get_vars_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__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->_use_get_vars);
  __Pyx_DECREF(__pyx_v_self->_use_get_vars);
  __pyx_v_self->_use_get_vars = __pyx_v_value;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_13_use_get_vars_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_13_use_get_vars_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_7netCDF4_8_netCDF4_8Variable_13_use_get_vars_4__del__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self));

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

static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_13_use_get_vars_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__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->_use_get_vars);
  __Pyx_DECREF(__pyx_v_self->_use_get_vars);
  __pyx_v_self->_use_get_vars = Py_None;

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

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_17_ncstring_attrs___1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_17_ncstring_attrs___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_7netCDF4_8_netCDF4_8Variable_17_ncstring_attrs_____get__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_17_ncstring_attrs_____get__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_ncstring_attrs__);
  __pyx_r = __pyx_v_self->_ncstring_attrs__;
  goto __pyx_L0;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_17_ncstring_attrs___3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_17_ncstring_attrs___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_7netCDF4_8_netCDF4_8Variable_17_ncstring_attrs___2__set__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_17_ncstring_attrs___2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__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->_ncstring_attrs__);
  __Pyx_DECREF(__pyx_v_self->_ncstring_attrs__);
  __pyx_v_self->_ncstring_attrs__ = __pyx_v_value;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_17_ncstring_attrs___5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_17_ncstring_attrs___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_7netCDF4_8_netCDF4_8Variable_17_ncstring_attrs___4__del__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self));

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

static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_17_ncstring_attrs___4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__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->_ncstring_attrs__);
  __Pyx_DECREF(__pyx_v_self->_ncstring_attrs__);
  __pyx_v_self->_ncstring_attrs__ = Py_None;

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

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_12auto_complex_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_12auto_complex_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_7netCDF4_8_netCDF4_8Variable_12auto_complex___get__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_12auto_complex___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->auto_complex);
  __pyx_r = __pyx_v_self->auto_complex;
  goto __pyx_L0;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_12auto_complex_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_12auto_complex_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_7netCDF4_8_netCDF4_8Variable_12auto_complex_2__set__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_12auto_complex_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__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->auto_complex);
  __Pyx_DECREF(__pyx_v_self->auto_complex);
  __pyx_v_self->auto_complex = __pyx_v_value;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_12auto_complex_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_12auto_complex_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_7netCDF4_8_netCDF4_8Variable_12auto_complex_4__del__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self));

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

static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_12auto_complex_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Variable *__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->auto_complex);
  __Pyx_DECREF(__pyx_v_self->auto_complex);
  __pyx_v_self->auto_complex = Py_None;

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

/* "netCDF4/_netCDF4.pyx":6194
 *     cdef public nc_type _nc_type
 *     cdef public dtype, dtype_view, name
 *     def __init__(self, grp, object dt, object dtype_name, **kwargs):             # <<<<<<<<<<<<<<
 *         """
 *         ***`__init__(group, datatype, datatype_name)`***
*/

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_12CompoundType_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
PyDoc_STRVAR(__pyx_doc_7netCDF4_8_netCDF4_12CompoundType___init__, "\n        ***`__init__(group, datatype, datatype_name)`***\n\n        CompoundType constructor.\n\n        **`grp`**: `Group` instance to associate with the compound datatype.\n\n        **`dt`**: A numpy dtype object describing a structured (a.k.a record)\n        array.  Can be composed of homogeneous numeric or character data types, or\n        other structured array data types.\n\n        **`dtype_name`**: a Python string containing a description of the\n        compound data type.\n\n        ***Note 1***: When creating nested compound data types,\n        the inner compound data types must already be associated with CompoundType\n        instances (so create CompoundType instances for the innermost structures\n        first).\n\n        ***Note 2***: `CompoundType` instances should be created using the\n        `Dataset.createCompoundType` method of a `Dataset` or\n        `Group` instance, not using this class directly.\n        ");
#if CYTHON_UPDATE_DESCRIPTOR_DOC
struct wrapperbase __pyx_wrapperbase_7netCDF4_8_netCDF4_12CompoundType___init__;
#endif
static int __pyx_pw_7netCDF4_8_netCDF4_12CompoundType_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_grp = 0;
  PyObject *__pyx_v_dt = 0;
  PyObject *__pyx_v_dtype_name = 0;
  PyObject *__pyx_v_kwargs = 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("__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);
  __pyx_v_kwargs = PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return -1;
  __Pyx_GOTREF(__pyx_v_kwargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_grp,&__pyx_mstate_global->__pyx_n_u_dt,&__pyx_mstate_global->__pyx_n_u_dtype_name,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 6194, __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(0, 6194, __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(0, 6194, __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(0, 6194, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        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_kwargs, values, kwd_pos_args, __pyx_kwds_len, "__init__", 1) < (0)) __PYX_ERR(0, 6194, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 3; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, i); __PYX_ERR(0, 6194, __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(0, 6194, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 6194, __pyx_L3_error)
      values[2] = __Pyx_ArgRef_VARARGS(__pyx_args, 2);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 6194, __pyx_L3_error)
    }
    __pyx_v_grp = values[0];
    __pyx_v_dt = values[1];
    __pyx_v_dtype_name = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, __pyx_nargs); __PYX_ERR(0, 6194, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (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_kwargs); __pyx_v_kwargs = 0;
  __Pyx_AddTraceback("netCDF4._netCDF4.CompoundType.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_12CompoundType___init__(((struct __pyx_obj_7netCDF4_8_netCDF4_CompoundType *)__pyx_v_self), __pyx_v_grp, __pyx_v_dt, __pyx_v_dtype_name, __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_DECREF(__pyx_v_kwargs);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7netCDF4_8_netCDF4_12CompoundType___init__(struct __pyx_obj_7netCDF4_8_netCDF4_CompoundType *__pyx_v_self, PyObject *__pyx_v_grp, PyObject *__pyx_v_dt, PyObject *__pyx_v_dtype_name, PyObject *__pyx_v_kwargs) {
  nc_type __pyx_v_xtype;
  PyObject *__pyx_v_dtview = NULL;
  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;
  int __pyx_t_7;
  nc_type __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);
  __Pyx_INCREF(__pyx_v_dt);

  /* "netCDF4/_netCDF4.pyx":6234
 *         # variable attribute is set, data will be converted
 *         # to and from the string array representation with views.
 *         dt = _set_alignment(numpy.dtype(dt))             # <<<<<<<<<<<<<<
 *         # create a view datatype for converting char arrays to/from strings
 *         dtview = _set_viewdtype(numpy.dtype(dt))
*/
  __pyx_t_2 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_set_alignment); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6234, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_dt};
    __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_5numpy_dtype, __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(0, 6234, __pyx_L1_error)
    __Pyx_GOTREF((PyObject *)__pyx_t_4);
  }
  __pyx_t_6 = 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_6 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, ((PyObject *)__pyx_t_4)};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_3, __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((PyObject *)__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6234, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF_SET(__pyx_v_dt, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":6236
 *         dt = _set_alignment(numpy.dtype(dt))
 *         # create a view datatype for converting char arrays to/from strings
 *         dtview = _set_viewdtype(numpy.dtype(dt))             # <<<<<<<<<<<<<<
 *         if 'typeid' in kwargs:
 *             xtype = kwargs['typeid']
*/
  __pyx_t_3 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_set_viewdtype); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6236, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_dt};
    __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_5numpy_dtype, __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_2)) __PYX_ERR(0, 6236, __pyx_L1_error)
    __Pyx_GOTREF((PyObject *)__pyx_t_2);
  }
  __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, ((PyObject *)__pyx_t_2)};
    __pyx_t_1 = __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((PyObject *)__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6236, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_v_dtview = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":6237
 *         # create a view datatype for converting char arrays to/from strings
 *         dtview = _set_viewdtype(numpy.dtype(dt))
 *         if 'typeid' in kwargs:             # <<<<<<<<<<<<<<
 *             xtype = kwargs['typeid']
 *         else:
*/
  __pyx_t_7 = (__Pyx_PyDict_ContainsTF(__pyx_mstate_global->__pyx_n_u_typeid, __pyx_v_kwargs, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 6237, __pyx_L1_error)
  if (__pyx_t_7) {

    /* "netCDF4/_netCDF4.pyx":6238
 *         dtview = _set_viewdtype(numpy.dtype(dt))
 *         if 'typeid' in kwargs:
 *             xtype = kwargs['typeid']             # <<<<<<<<<<<<<<
 *         else:
 *             xtype = _def_compound(grp, dt, dtype_name)
*/
    __pyx_t_1 = __Pyx_PyDict_GetItem(__pyx_v_kwargs, __pyx_mstate_global->__pyx_n_u_typeid); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6238, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_8 = __Pyx_PyLong_As_nc_type(__pyx_t_1); if (unlikely((__pyx_t_8 == ((nc_type)-1)) && PyErr_Occurred())) __PYX_ERR(0, 6238, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_v_xtype = __pyx_t_8;

    /* "netCDF4/_netCDF4.pyx":6237
 *         # create a view datatype for converting char arrays to/from strings
 *         dtview = _set_viewdtype(numpy.dtype(dt))
 *         if 'typeid' in kwargs:             # <<<<<<<<<<<<<<
 *             xtype = kwargs['typeid']
 *         else:
*/
    goto __pyx_L3;
  }

  /* "netCDF4/_netCDF4.pyx":6240
 *             xtype = kwargs['typeid']
 *         else:
 *             xtype = _def_compound(grp, dt, dtype_name)             # <<<<<<<<<<<<<<
 *         self._nc_type = xtype
 *         self.dtype = dt
*/
  /*else*/ {
    __pyx_t_1 = __pyx_f_7netCDF4_8_netCDF4__def_compound(__pyx_v_grp, __pyx_v_dt, __pyx_v_dtype_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6240, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_8 = __Pyx_PyLong_As_nc_type(__pyx_t_1); if (unlikely((__pyx_t_8 == ((nc_type)-1)) && PyErr_Occurred())) __PYX_ERR(0, 6240, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_v_xtype = __pyx_t_8;
  }
  __pyx_L3:;

  /* "netCDF4/_netCDF4.pyx":6241
 *         else:
 *             xtype = _def_compound(grp, dt, dtype_name)
 *         self._nc_type = xtype             # <<<<<<<<<<<<<<
 *         self.dtype = dt
 *         self.dtype_view = dtview
*/
  __pyx_v_self->_nc_type = __pyx_v_xtype;

  /* "netCDF4/_netCDF4.pyx":6242
 *             xtype = _def_compound(grp, dt, dtype_name)
 *         self._nc_type = xtype
 *         self.dtype = dt             # <<<<<<<<<<<<<<
 *         self.dtype_view = dtview
 *         self.name = dtype_name
*/
  __Pyx_INCREF(__pyx_v_dt);
  __Pyx_GIVEREF(__pyx_v_dt);
  __Pyx_GOTREF(__pyx_v_self->dtype);
  __Pyx_DECREF(__pyx_v_self->dtype);
  __pyx_v_self->dtype = __pyx_v_dt;

  /* "netCDF4/_netCDF4.pyx":6243
 *         self._nc_type = xtype
 *         self.dtype = dt
 *         self.dtype_view = dtview             # <<<<<<<<<<<<<<
 *         self.name = dtype_name
 * 
*/
  __Pyx_INCREF(__pyx_v_dtview);
  __Pyx_GIVEREF(__pyx_v_dtview);
  __Pyx_GOTREF(__pyx_v_self->dtype_view);
  __Pyx_DECREF(__pyx_v_self->dtype_view);
  __pyx_v_self->dtype_view = __pyx_v_dtview;

  /* "netCDF4/_netCDF4.pyx":6244
 *         self.dtype = dt
 *         self.dtype_view = dtview
 *         self.name = dtype_name             # <<<<<<<<<<<<<<
 * 
 *     def __repr__(self):
*/
  __Pyx_INCREF(__pyx_v_dtype_name);
  __Pyx_GIVEREF(__pyx_v_dtype_name);
  __Pyx_GOTREF(__pyx_v_self->name);
  __Pyx_DECREF(__pyx_v_self->name);
  __pyx_v_self->name = __pyx_v_dtype_name;

  /* "netCDF4/_netCDF4.pyx":6194
 *     cdef public nc_type _nc_type
 *     cdef public dtype, dtype_view, name
 *     def __init__(self, grp, object dt, object dtype_name, **kwargs):             # <<<<<<<<<<<<<<
 *         """
 *         ***`__init__(group, datatype, datatype_name)`***
*/

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("netCDF4._netCDF4.CompoundType.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_dtview);
  __Pyx_XDECREF(__pyx_v_dt);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":6246
 *         self.name = dtype_name
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return self.__str__()
 * 
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_12CompoundType_3__repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_12CompoundType_3__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_7netCDF4_8_netCDF4_12CompoundType_2__repr__(((struct __pyx_obj_7netCDF4_8_netCDF4_CompoundType *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_12CompoundType_2__repr__(struct __pyx_obj_7netCDF4_8_netCDF4_CompoundType *__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("__repr__", 0);

  /* "netCDF4/_netCDF4.pyx":6247
 * 
 *     def __repr__(self):
 *         return self.__str__()             # <<<<<<<<<<<<<<
 * 
 *     def __str__(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_str_2, __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(0, 6247, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":6246
 *         self.name = dtype_name
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return self.__str__()
 * 
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("netCDF4._netCDF4.CompoundType.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":6249
 *         return self.__str__()
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         typ = repr(type(self)).replace("._netCDF4", "")
 *         return "%s: name = '%s', numpy dtype = %s" %\
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_12CompoundType_5__str__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_12CompoundType_5__str__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__str__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_12CompoundType_4__str__(((struct __pyx_obj_7netCDF4_8_netCDF4_CompoundType *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_12CompoundType_4__str__(struct __pyx_obj_7netCDF4_8_netCDF4_CompoundType *__pyx_v_self) {
  PyObject *__pyx_v_typ = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3[5];
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__str__", 0);

  /* "netCDF4/_netCDF4.pyx":6250
 * 
 *     def __str__(self):
 *         typ = repr(type(self)).replace("._netCDF4", "")             # <<<<<<<<<<<<<<
 *         return "%s: name = '%s', numpy dtype = %s" %\
 *             (typ, self.name, self.dtype)
*/
  __pyx_t_1 = PyObject_Repr(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6250, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (unlikely(__pyx_t_1 == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "replace");
    __PYX_ERR(0, 6250, __pyx_L1_error)
  }
  __pyx_t_2 = PyUnicode_Replace(((PyObject*)__pyx_t_1), __pyx_mstate_global->__pyx_kp_u_netCDF4, __pyx_mstate_global->__pyx_kp_u__4, -1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6250, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_typ = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":6251
 *     def __str__(self):
 *         typ = repr(type(self)).replace("._netCDF4", "")
 *         return "%s: name = '%s', numpy dtype = %s" %\             # <<<<<<<<<<<<<<
 *             (typ, self.name, self.dtype)
 * 
*/
  __Pyx_XDECREF(__pyx_r);

  /* "netCDF4/_netCDF4.pyx":6252
 *         typ = repr(type(self)).replace("._netCDF4", "")
 *         return "%s: name = '%s', numpy dtype = %s" %\
 *             (typ, self.name, self.dtype)             # <<<<<<<<<<<<<<
 * 
 *     def __reduce__(self):
*/
  __pyx_t_2 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Str(__pyx_v_self->name), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6252, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Str(__pyx_v_self->dtype), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6252, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3[0] = __pyx_v_typ;
  __pyx_t_3[1] = __pyx_mstate_global->__pyx_kp_u_name_2;
  __pyx_t_3[2] = __pyx_t_2;
  __pyx_t_3[3] = __pyx_mstate_global->__pyx_kp_u_numpy_dtype;
  __pyx_t_3[4] = __pyx_t_1;

  /* "netCDF4/_netCDF4.pyx":6251
 *     def __str__(self):
 *         typ = repr(type(self)).replace("._netCDF4", "")
 *         return "%s: name = '%s', numpy dtype = %s" %\             # <<<<<<<<<<<<<<
 *             (typ, self.name, self.dtype)
 * 
*/
  __pyx_t_4 = __Pyx_PyUnicode_Join(__pyx_t_3, 5, __Pyx_PyUnicode_GET_LENGTH(__pyx_v_typ) + 10 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_2) + 17 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_1), 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_v_typ) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1));
  if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6251, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":6249
 *         return self.__str__()
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         typ = repr(type(self)).replace("._netCDF4", "")
 *         return "%s: name = '%s', numpy dtype = %s" %\
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("netCDF4._netCDF4.CompoundType.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_typ);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":6254
 *             (typ, self.name, self.dtype)
 * 
 *     def __reduce__(self):             # <<<<<<<<<<<<<<
 *         # raise error is user tries to pickle a CompoundType object.
 *         raise NotImplementedError('CompoundType is not picklable')
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_12CompoundType_7__reduce__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_12CompoundType_7__reduce__ = {"__reduce__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_12CompoundType_7__reduce__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_12CompoundType_7__reduce__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (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_7netCDF4_8_netCDF4_12CompoundType_6__reduce__(((struct __pyx_obj_7netCDF4_8_netCDF4_CompoundType *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_12CompoundType_6__reduce__(CYTHON_UNUSED struct __pyx_obj_7netCDF4_8_netCDF4_CompoundType *__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("__reduce__", 0);

  /* "netCDF4/_netCDF4.pyx":6256
 *     def __reduce__(self):
 *         # raise error is user tries to pickle a CompoundType object.
 *         raise NotImplementedError('CompoundType is not picklable')             # <<<<<<<<<<<<<<
 * 
 * def _set_alignment(dt):
*/
  __pyx_t_2 = NULL;
  __pyx_t_3 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_CompoundType_is_not_picklable};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_NotImplementedError)), __pyx_callargs+__pyx_t_3, (2-__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(0, 6256, __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(0, 6256, __pyx_L1_error)

  /* "netCDF4/_netCDF4.pyx":6254
 *             (typ, self.name, self.dtype)
 * 
 *     def __reduce__(self):             # <<<<<<<<<<<<<<
 *         # raise error is user tries to pickle a CompoundType object.
 *         raise NotImplementedError('CompoundType is not picklable')
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("netCDF4._netCDF4.CompoundType.__reduce__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":6192
 * the user.
 *     """
 *     cdef public nc_type _nc_type             # <<<<<<<<<<<<<<
 *     cdef public dtype, dtype_view, name
 *     def __init__(self, grp, object dt, object dtype_name, **kwargs):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_12CompoundType_8_nc_type_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_12CompoundType_8_nc_type_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_7netCDF4_8_netCDF4_12CompoundType_8_nc_type___get__(((struct __pyx_obj_7netCDF4_8_netCDF4_CompoundType *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_12CompoundType_8_nc_type___get__(struct __pyx_obj_7netCDF4_8_netCDF4_CompoundType *__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_PyLong_From_nc_type(__pyx_v_self->_nc_type); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6192, __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("netCDF4._netCDF4.CompoundType._nc_type.__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_7netCDF4_8_netCDF4_12CompoundType_8_nc_type_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_12CompoundType_8_nc_type_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_7netCDF4_8_netCDF4_12CompoundType_8_nc_type_2__set__(((struct __pyx_obj_7netCDF4_8_netCDF4_CompoundType *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_7netCDF4_8_netCDF4_12CompoundType_8_nc_type_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_CompoundType *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  nc_type __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __pyx_t_1 = __Pyx_PyLong_As_nc_type(__pyx_v_value); if (unlikely((__pyx_t_1 == ((nc_type)-1)) && PyErr_Occurred())) __PYX_ERR(0, 6192, __pyx_L1_error)
  __pyx_v_self->_nc_type = __pyx_t_1;

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("netCDF4._netCDF4.CompoundType._nc_type.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":6193
 *     """
 *     cdef public nc_type _nc_type
 *     cdef public dtype, dtype_view, name             # <<<<<<<<<<<<<<
 *     def __init__(self, grp, object dt, object dtype_name, **kwargs):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_12CompoundType_5dtype_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_12CompoundType_5dtype_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_7netCDF4_8_netCDF4_12CompoundType_5dtype___get__(((struct __pyx_obj_7netCDF4_8_netCDF4_CompoundType *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_12CompoundType_5dtype___get__(struct __pyx_obj_7netCDF4_8_netCDF4_CompoundType *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->dtype);
  __pyx_r = __pyx_v_self->dtype;
  goto __pyx_L0;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_12CompoundType_5dtype_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_12CompoundType_5dtype_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_7netCDF4_8_netCDF4_12CompoundType_5dtype_2__set__(((struct __pyx_obj_7netCDF4_8_netCDF4_CompoundType *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_7netCDF4_8_netCDF4_12CompoundType_5dtype_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_CompoundType *__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->dtype);
  __Pyx_DECREF(__pyx_v_self->dtype);
  __pyx_v_self->dtype = __pyx_v_value;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_12CompoundType_5dtype_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_12CompoundType_5dtype_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_7netCDF4_8_netCDF4_12CompoundType_5dtype_4__del__(((struct __pyx_obj_7netCDF4_8_netCDF4_CompoundType *)__pyx_v_self));

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

static int __pyx_pf_7netCDF4_8_netCDF4_12CompoundType_5dtype_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_CompoundType *__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->dtype);
  __Pyx_DECREF(__pyx_v_self->dtype);
  __pyx_v_self->dtype = Py_None;

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

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_12CompoundType_10dtype_view_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_12CompoundType_10dtype_view_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_7netCDF4_8_netCDF4_12CompoundType_10dtype_view___get__(((struct __pyx_obj_7netCDF4_8_netCDF4_CompoundType *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_12CompoundType_10dtype_view___get__(struct __pyx_obj_7netCDF4_8_netCDF4_CompoundType *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->dtype_view);
  __pyx_r = __pyx_v_self->dtype_view;
  goto __pyx_L0;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_12CompoundType_10dtype_view_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_12CompoundType_10dtype_view_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_7netCDF4_8_netCDF4_12CompoundType_10dtype_view_2__set__(((struct __pyx_obj_7netCDF4_8_netCDF4_CompoundType *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_7netCDF4_8_netCDF4_12CompoundType_10dtype_view_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_CompoundType *__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->dtype_view);
  __Pyx_DECREF(__pyx_v_self->dtype_view);
  __pyx_v_self->dtype_view = __pyx_v_value;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_12CompoundType_10dtype_view_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_12CompoundType_10dtype_view_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_7netCDF4_8_netCDF4_12CompoundType_10dtype_view_4__del__(((struct __pyx_obj_7netCDF4_8_netCDF4_CompoundType *)__pyx_v_self));

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

static int __pyx_pf_7netCDF4_8_netCDF4_12CompoundType_10dtype_view_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_CompoundType *__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->dtype_view);
  __Pyx_DECREF(__pyx_v_self->dtype_view);
  __pyx_v_self->dtype_view = Py_None;

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

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_12CompoundType_4name_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_12CompoundType_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_7netCDF4_8_netCDF4_12CompoundType_4name___get__(((struct __pyx_obj_7netCDF4_8_netCDF4_CompoundType *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_12CompoundType_4name___get__(struct __pyx_obj_7netCDF4_8_netCDF4_CompoundType *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->name);
  __pyx_r = __pyx_v_self->name;
  goto __pyx_L0;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_12CompoundType_4name_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_12CompoundType_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_7netCDF4_8_netCDF4_12CompoundType_4name_2__set__(((struct __pyx_obj_7netCDF4_8_netCDF4_CompoundType *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_7netCDF4_8_netCDF4_12CompoundType_4name_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_CompoundType *__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->name);
  __Pyx_DECREF(__pyx_v_self->name);
  __pyx_v_self->name = __pyx_v_value;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_12CompoundType_4name_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_12CompoundType_4name_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_7netCDF4_8_netCDF4_12CompoundType_4name_4__del__(((struct __pyx_obj_7netCDF4_8_netCDF4_CompoundType *)__pyx_v_self));

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

static int __pyx_pf_7netCDF4_8_netCDF4_12CompoundType_4name_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_CompoundType *__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->name);
  __Pyx_DECREF(__pyx_v_self->name);
  __pyx_v_self->name = Py_None;

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

/* "netCDF4/_netCDF4.pyx":6258
 *         raise NotImplementedError('CompoundType is not picklable')
 * 
 * def _set_alignment(dt):             # <<<<<<<<<<<<<<
 *     # recursively set alignment flag in nested structured data type
 *     names = dt.names; formats = []
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_23_set_alignment(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_7netCDF4_8_netCDF4_23_set_alignment = {"_set_alignment", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_23_set_alignment, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_23_set_alignment(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_dt = 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_alignment (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_dt,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 6258, __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(0, 6258, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_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_alignment", 0) < (0)) __PYX_ERR(0, 6258, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("_set_alignment", 1, 1, 1, i); __PYX_ERR(0, 6258, __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(0, 6258, __pyx_L3_error)
    }
    __pyx_v_dt = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_set_alignment", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 6258, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4._set_alignment", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_22_set_alignment(__pyx_self, __pyx_v_dt);

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_22_set_alignment(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_dt) {
  PyObject *__pyx_v_names = NULL;
  PyObject *__pyx_v_formats = NULL;
  PyObject *__pyx_v_name = NULL;
  PyObject *__pyx_v_fmt = NULL;
  PyObject *__pyx_v_dtx = NULL;
  PyObject *__pyx_v_dtype_dict = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  PyObject *(*__pyx_t_3)(PyObject *);
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  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_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_set_alignment", 0);

  /* "netCDF4/_netCDF4.pyx":6260
 * def _set_alignment(dt):
 *     # recursively set alignment flag in nested structured data type
 *     names = dt.names; formats = []             # <<<<<<<<<<<<<<
 *     for name in names:
 *         fmt = dt.fields[name][0]
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_dt, __pyx_mstate_global->__pyx_n_u_names); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6260, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_names = __pyx_t_1;
  __pyx_t_1 = 0;
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6260, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_formats = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":6261
 *     # recursively set alignment flag in nested structured data type
 *     names = dt.names; formats = []
 *     for name in names:             # <<<<<<<<<<<<<<
 *         fmt = dt.fields[name][0]
 *         if fmt.kind == 'V':
*/
  if (likely(PyList_CheckExact(__pyx_v_names)) || PyTuple_CheckExact(__pyx_v_names)) {
    __pyx_t_1 = __pyx_v_names; __Pyx_INCREF(__pyx_t_1);
    __pyx_t_2 = 0;
    __pyx_t_3 = NULL;
  } else {
    __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_names); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6261, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6261, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 6261, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) break;
        }
        __pyx_t_4 = __Pyx_PyList_GetItemRefFast(__pyx_t_1, __pyx_t_2, __Pyx_ReferenceSharing_OwnStrongReference);
        ++__pyx_t_2;
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 6261, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2));
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2);
        #endif
        ++__pyx_t_2;
      }
      if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6261, __pyx_L1_error)
    } else {
      __pyx_t_4 = __pyx_t_3(__pyx_t_1);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 6261, __pyx_L1_error)
          PyErr_Clear();
        }
        break;
      }
    }
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "netCDF4/_netCDF4.pyx":6262
 *     names = dt.names; formats = []
 *     for name in names:
 *         fmt = dt.fields[name][0]             # <<<<<<<<<<<<<<
 *         if fmt.kind == 'V':
 *             if fmt.shape == ():
*/
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_dt, __pyx_mstate_global->__pyx_n_u_fields); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6262, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_t_4, __pyx_v_name); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6262, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_5, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6262, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF_SET(__pyx_v_fmt, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "netCDF4/_netCDF4.pyx":6263
 *     for name in names:
 *         fmt = dt.fields[name][0]
 *         if fmt.kind == 'V':             # <<<<<<<<<<<<<<
 *             if fmt.shape == ():
 *                 dtx = _set_alignment(dt.fields[name][0])
*/
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_fmt, __pyx_mstate_global->__pyx_n_u_kind); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6263, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = (__Pyx_PyUnicode_Equals(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_V, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 6263, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (__pyx_t_6) {

      /* "netCDF4/_netCDF4.pyx":6264
 *         fmt = dt.fields[name][0]
 *         if fmt.kind == 'V':
 *             if fmt.shape == ():             # <<<<<<<<<<<<<<
 *                 dtx = _set_alignment(dt.fields[name][0])
 *             else:
*/
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_fmt, __pyx_mstate_global->__pyx_n_u_shape); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6264, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = PyObject_RichCompare(__pyx_t_4, __pyx_mstate_global->__pyx_empty_tuple, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6264, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 6264, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (__pyx_t_6) {

        /* "netCDF4/_netCDF4.pyx":6265
 *         if fmt.kind == 'V':
 *             if fmt.shape == ():
 *                 dtx = _set_alignment(dt.fields[name][0])             # <<<<<<<<<<<<<<
 *             else:
 *                 if fmt.subdtype[0].kind == 'V': # structured dtype
*/
        __pyx_t_4 = NULL;
        __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_set_alignment); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6265, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_dt, __pyx_mstate_global->__pyx_n_u_fields); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6265, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __pyx_t_9 = __Pyx_PyObject_GetItem(__pyx_t_8, __pyx_v_name); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 6265, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_t_8 = __Pyx_GetItemInt(__pyx_t_9, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6265, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __pyx_t_10 = 1;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_7))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_7);
          assert(__pyx_t_4);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7);
          __Pyx_INCREF(__pyx_t_4);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_7, __pyx__function);
          __pyx_t_10 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_8};
          __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __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_8); __pyx_t_8 = 0;
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6265, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
        }
        __Pyx_XDECREF_SET(__pyx_v_dtx, __pyx_t_5);
        __pyx_t_5 = 0;

        /* "netCDF4/_netCDF4.pyx":6264
 *         fmt = dt.fields[name][0]
 *         if fmt.kind == 'V':
 *             if fmt.shape == ():             # <<<<<<<<<<<<<<
 *                 dtx = _set_alignment(dt.fields[name][0])
 *             else:
*/
        goto __pyx_L6;
      }

      /* "netCDF4/_netCDF4.pyx":6267
 *                 dtx = _set_alignment(dt.fields[name][0])
 *             else:
 *                 if fmt.subdtype[0].kind == 'V': # structured dtype             # <<<<<<<<<<<<<<
 *                     raise TypeError('nested structured dtype arrays not supported')
 *                 else:
*/
      /*else*/ {
        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_fmt, __pyx_mstate_global->__pyx_n_u_subdtype); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6267, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_7 = __Pyx_GetItemInt(__pyx_t_5, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6267, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_kind); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6267, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_6 = (__Pyx_PyUnicode_Equals(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_V, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 6267, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (unlikely(__pyx_t_6)) {

          /* "netCDF4/_netCDF4.pyx":6268
 *             else:
 *                 if fmt.subdtype[0].kind == 'V': # structured dtype
 *                     raise TypeError('nested structured dtype arrays not supported')             # <<<<<<<<<<<<<<
 *                 else:
 *                     dtx = dt.fields[name][0]
*/
          __pyx_t_7 = NULL;
          __pyx_t_10 = 1;
          {
            PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_mstate_global->__pyx_kp_u_nested_structured_dtype_arrays_n};
            __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_10, (2-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
            __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
            if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6268, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
          }
          __Pyx_Raise(__pyx_t_5, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __PYX_ERR(0, 6268, __pyx_L1_error)

          /* "netCDF4/_netCDF4.pyx":6267
 *                 dtx = _set_alignment(dt.fields[name][0])
 *             else:
 *                 if fmt.subdtype[0].kind == 'V': # structured dtype             # <<<<<<<<<<<<<<
 *                     raise TypeError('nested structured dtype arrays not supported')
 *                 else:
*/
        }

        /* "netCDF4/_netCDF4.pyx":6270
 *                     raise TypeError('nested structured dtype arrays not supported')
 *                 else:
 *                     dtx = dt.fields[name][0]             # <<<<<<<<<<<<<<
 *         else:
 *             # convert character string elements to char arrays
*/
        /*else*/ {
          __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_dt, __pyx_mstate_global->__pyx_n_u_fields); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6270, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_5, __pyx_v_name); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6270, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_7, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6270, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          __Pyx_XDECREF_SET(__pyx_v_dtx, __pyx_t_5);
          __pyx_t_5 = 0;
        }
      }
      __pyx_L6:;

      /* "netCDF4/_netCDF4.pyx":6263
 *     for name in names:
 *         fmt = dt.fields[name][0]
 *         if fmt.kind == 'V':             # <<<<<<<<<<<<<<
 *             if fmt.shape == ():
 *                 dtx = _set_alignment(dt.fields[name][0])
*/
      goto __pyx_L5;
    }

    /* "netCDF4/_netCDF4.pyx":6273
 *         else:
 *             # convert character string elements to char arrays
 *             if fmt.kind == 'S' and fmt.itemsize != 1:             # <<<<<<<<<<<<<<
 *                 dtx = numpy.dtype('(%s,)S1' % fmt.itemsize)
 *             else:
*/
    /*else*/ {
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_fmt, __pyx_mstate_global->__pyx_n_u_kind); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6273, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_11 = (__Pyx_PyUnicode_Equals(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_S, Py_EQ)); if (unlikely((__pyx_t_11 < 0))) __PYX_ERR(0, 6273, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (__pyx_t_11) {
      } else {
        __pyx_t_6 = __pyx_t_11;
        goto __pyx_L9_bool_binop_done;
      }
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_fmt, __pyx_mstate_global->__pyx_n_u_itemsize); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6273, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_11 = (__Pyx_PyLong_BoolNeObjC(__pyx_t_5, __pyx_mstate_global->__pyx_int_1, 1, 0)); if (unlikely((__pyx_t_11 < 0))) __PYX_ERR(0, 6273, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_6 = __pyx_t_11;
      __pyx_L9_bool_binop_done:;
      if (__pyx_t_6) {

        /* "netCDF4/_netCDF4.pyx":6274
 *             # convert character string elements to char arrays
 *             if fmt.kind == 'S' and fmt.itemsize != 1:
 *                 dtx = numpy.dtype('(%s,)S1' % fmt.itemsize)             # <<<<<<<<<<<<<<
 *             else:
 *                 # primitive data type
*/
        __pyx_t_7 = NULL;
        __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_fmt, __pyx_mstate_global->__pyx_n_u_itemsize); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6274, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __pyx_t_4 = __Pyx_PyUnicode_FormatSafe(__pyx_mstate_global->__pyx_kp_u_s_S1, __pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6274, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_t_10 = 1;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_4};
          __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_5numpy_dtype, __pyx_callargs+__pyx_t_10, (2-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6274, __pyx_L1_error)
          __Pyx_GOTREF((PyObject *)__pyx_t_5);
        }
        __Pyx_XDECREF_SET(__pyx_v_dtx, ((PyObject *)__pyx_t_5));
        __pyx_t_5 = 0;

        /* "netCDF4/_netCDF4.pyx":6273
 *         else:
 *             # convert character string elements to char arrays
 *             if fmt.kind == 'S' and fmt.itemsize != 1:             # <<<<<<<<<<<<<<
 *                 dtx = numpy.dtype('(%s,)S1' % fmt.itemsize)
 *             else:
*/
        goto __pyx_L8;
      }

      /* "netCDF4/_netCDF4.pyx":6277
 *             else:
 *                 # primitive data type
 *                 dtx = dt.fields[name][0]             # <<<<<<<<<<<<<<
 *         formats.append(dtx)
 *     # leave out offsets, they will be re-computed to preserve alignment.
*/
      /*else*/ {
        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_dt, __pyx_mstate_global->__pyx_n_u_fields); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6277, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_4 = __Pyx_PyObject_GetItem(__pyx_t_5, __pyx_v_name); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6277, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_4, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6277, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_XDECREF_SET(__pyx_v_dtx, __pyx_t_5);
        __pyx_t_5 = 0;
      }
      __pyx_L8:;
    }
    __pyx_L5:;

    /* "netCDF4/_netCDF4.pyx":6278
 *                 # primitive data type
 *                 dtx = dt.fields[name][0]
 *         formats.append(dtx)             # <<<<<<<<<<<<<<
 *     # leave out offsets, they will be re-computed to preserve alignment.
 *     dtype_dict = {'names':names,'formats':formats}
*/
    __pyx_t_12 = __Pyx_PyList_Append(__pyx_v_formats, __pyx_v_dtx); if (unlikely(__pyx_t_12 == ((int)-1))) __PYX_ERR(0, 6278, __pyx_L1_error)

    /* "netCDF4/_netCDF4.pyx":6261
 *     # recursively set alignment flag in nested structured data type
 *     names = dt.names; formats = []
 *     for name in names:             # <<<<<<<<<<<<<<
 *         fmt = dt.fields[name][0]
 *         if fmt.kind == 'V':
*/
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":6280
 *         formats.append(dtx)
 *     # leave out offsets, they will be re-computed to preserve alignment.
 *     dtype_dict = {'names':names,'formats':formats}             # <<<<<<<<<<<<<<
 *     return numpy.dtype(dtype_dict, align=True)
 * 
*/
  __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6280, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_names, __pyx_v_names) < (0)) __PYX_ERR(0, 6280, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_formats, __pyx_v_formats) < (0)) __PYX_ERR(0, 6280, __pyx_L1_error)
  __pyx_v_dtype_dict = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":6281
 *     # leave out offsets, they will be re-computed to preserve alignment.
 *     dtype_dict = {'names':names,'formats':formats}
 *     return numpy.dtype(dtype_dict, align=True)             # <<<<<<<<<<<<<<
 * 
 * def _set_viewdtype(dt):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_5 = NULL;
  __pyx_t_10 = 1;
  {
    PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_5, __pyx_v_dtype_dict};
    __pyx_t_4 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6281, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_align, Py_True, __pyx_t_4, __pyx_callargs+2, 0) < (0)) __PYX_ERR(0, 6281, __pyx_L1_error)
    __pyx_t_1 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_ptype_5numpy_dtype, __pyx_callargs+__pyx_t_10, (2-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6281, __pyx_L1_error)
    __Pyx_GOTREF((PyObject *)__pyx_t_1);
  }
  __pyx_r = ((PyObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":6258
 *         raise NotImplementedError('CompoundType is not picklable')
 * 
 * def _set_alignment(dt):             # <<<<<<<<<<<<<<
 *     # recursively set alignment flag in nested structured data type
 *     names = dt.names; formats = []
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("netCDF4._netCDF4._set_alignment", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_names);
  __Pyx_XDECREF(__pyx_v_formats);
  __Pyx_XDECREF(__pyx_v_name);
  __Pyx_XDECREF(__pyx_v_fmt);
  __Pyx_XDECREF(__pyx_v_dtx);
  __Pyx_XDECREF(__pyx_v_dtype_dict);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":6283
 *     return numpy.dtype(dtype_dict, align=True)
 * 
 * def _set_viewdtype(dt):             # <<<<<<<<<<<<<<
 *     # recursively change character array dtypes to string dtypes
 *     names = dt.names; formats = []
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_25_set_viewdtype(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_7netCDF4_8_netCDF4_25_set_viewdtype = {"_set_viewdtype", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_25_set_viewdtype, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_25_set_viewdtype(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_dt = 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_viewdtype (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_dt,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 6283, __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(0, 6283, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_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_viewdtype", 0) < (0)) __PYX_ERR(0, 6283, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("_set_viewdtype", 1, 1, 1, i); __PYX_ERR(0, 6283, __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(0, 6283, __pyx_L3_error)
    }
    __pyx_v_dt = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_set_viewdtype", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 6283, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4._set_viewdtype", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_24_set_viewdtype(__pyx_self, __pyx_v_dt);

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_24_set_viewdtype(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_dt) {
  PyObject *__pyx_v_names = NULL;
  PyObject *__pyx_v_formats = NULL;
  PyObject *__pyx_v_name = NULL;
  PyObject *__pyx_v_fmt = NULL;
  PyObject *__pyx_v_dtx = NULL;
  PyObject *__pyx_v_lenchar = NULL;
  PyObject *__pyx_v_dtype_dict = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  PyObject *(*__pyx_t_3)(PyObject *);
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  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;
  int __pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_set_viewdtype", 0);

  /* "netCDF4/_netCDF4.pyx":6285
 * def _set_viewdtype(dt):
 *     # recursively change character array dtypes to string dtypes
 *     names = dt.names; formats = []             # <<<<<<<<<<<<<<
 *     for name in names:
 *         fmt = dt.fields[name][0]
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_dt, __pyx_mstate_global->__pyx_n_u_names); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6285, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_names = __pyx_t_1;
  __pyx_t_1 = 0;
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6285, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_formats = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":6286
 *     # recursively change character array dtypes to string dtypes
 *     names = dt.names; formats = []
 *     for name in names:             # <<<<<<<<<<<<<<
 *         fmt = dt.fields[name][0]
 *         if fmt.kind == 'V':
*/
  if (likely(PyList_CheckExact(__pyx_v_names)) || PyTuple_CheckExact(__pyx_v_names)) {
    __pyx_t_1 = __pyx_v_names; __Pyx_INCREF(__pyx_t_1);
    __pyx_t_2 = 0;
    __pyx_t_3 = NULL;
  } else {
    __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_names); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6286, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6286, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 6286, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) break;
        }
        __pyx_t_4 = __Pyx_PyList_GetItemRefFast(__pyx_t_1, __pyx_t_2, __Pyx_ReferenceSharing_OwnStrongReference);
        ++__pyx_t_2;
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 6286, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2));
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2);
        #endif
        ++__pyx_t_2;
      }
      if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6286, __pyx_L1_error)
    } else {
      __pyx_t_4 = __pyx_t_3(__pyx_t_1);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 6286, __pyx_L1_error)
          PyErr_Clear();
        }
        break;
      }
    }
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "netCDF4/_netCDF4.pyx":6287
 *     names = dt.names; formats = []
 *     for name in names:
 *         fmt = dt.fields[name][0]             # <<<<<<<<<<<<<<
 *         if fmt.kind == 'V':
 *             if fmt.shape == ():
*/
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_dt, __pyx_mstate_global->__pyx_n_u_fields); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6287, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_t_4, __pyx_v_name); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6287, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_5, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6287, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF_SET(__pyx_v_fmt, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "netCDF4/_netCDF4.pyx":6288
 *     for name in names:
 *         fmt = dt.fields[name][0]
 *         if fmt.kind == 'V':             # <<<<<<<<<<<<<<
 *             if fmt.shape == ():
 *                 dtx = _set_viewdtype(dt.fields[name][0])
*/
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_fmt, __pyx_mstate_global->__pyx_n_u_kind); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6288, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = (__Pyx_PyUnicode_Equals(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_V, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 6288, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (__pyx_t_6) {

      /* "netCDF4/_netCDF4.pyx":6289
 *         fmt = dt.fields[name][0]
 *         if fmt.kind == 'V':
 *             if fmt.shape == ():             # <<<<<<<<<<<<<<
 *                 dtx = _set_viewdtype(dt.fields[name][0])
 *             else:
*/
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_fmt, __pyx_mstate_global->__pyx_n_u_shape); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6289, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = PyObject_RichCompare(__pyx_t_4, __pyx_mstate_global->__pyx_empty_tuple, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6289, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 6289, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (__pyx_t_6) {

        /* "netCDF4/_netCDF4.pyx":6290
 *         if fmt.kind == 'V':
 *             if fmt.shape == ():
 *                 dtx = _set_viewdtype(dt.fields[name][0])             # <<<<<<<<<<<<<<
 *             else:
 *                 if fmt.subdtype[0].kind == 'V': # structured dtype
*/
        __pyx_t_4 = NULL;
        __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_set_viewdtype); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6290, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_dt, __pyx_mstate_global->__pyx_n_u_fields); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6290, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __pyx_t_9 = __Pyx_PyObject_GetItem(__pyx_t_8, __pyx_v_name); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 6290, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_t_8 = __Pyx_GetItemInt(__pyx_t_9, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6290, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __pyx_t_10 = 1;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_7))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_7);
          assert(__pyx_t_4);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7);
          __Pyx_INCREF(__pyx_t_4);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_7, __pyx__function);
          __pyx_t_10 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_8};
          __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __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_8); __pyx_t_8 = 0;
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6290, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
        }
        __Pyx_XDECREF_SET(__pyx_v_dtx, __pyx_t_5);
        __pyx_t_5 = 0;

        /* "netCDF4/_netCDF4.pyx":6289
 *         fmt = dt.fields[name][0]
 *         if fmt.kind == 'V':
 *             if fmt.shape == ():             # <<<<<<<<<<<<<<
 *                 dtx = _set_viewdtype(dt.fields[name][0])
 *             else:
*/
        goto __pyx_L6;
      }

      /* "netCDF4/_netCDF4.pyx":6292
 *                 dtx = _set_viewdtype(dt.fields[name][0])
 *             else:
 *                 if fmt.subdtype[0].kind == 'V': # structured dtype             # <<<<<<<<<<<<<<
 *                     raise TypeError('nested structured dtype arrays not supported')
 *                 elif fmt.subdtype[0].kind == 'S' and len(dt.fields[name][0].shape) == 1:
*/
      /*else*/ {
        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_fmt, __pyx_mstate_global->__pyx_n_u_subdtype); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6292, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_7 = __Pyx_GetItemInt(__pyx_t_5, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6292, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_kind); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6292, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_6 = (__Pyx_PyUnicode_Equals(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_V, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 6292, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (unlikely(__pyx_t_6)) {

          /* "netCDF4/_netCDF4.pyx":6293
 *             else:
 *                 if fmt.subdtype[0].kind == 'V': # structured dtype
 *                     raise TypeError('nested structured dtype arrays not supported')             # <<<<<<<<<<<<<<
 *                 elif fmt.subdtype[0].kind == 'S' and len(dt.fields[name][0].shape) == 1:
 *                     lenchar = dt.fields[name][0].shape[0]
*/
          __pyx_t_7 = NULL;
          __pyx_t_10 = 1;
          {
            PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_mstate_global->__pyx_kp_u_nested_structured_dtype_arrays_n};
            __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_10, (2-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
            __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
            if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6293, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
          }
          __Pyx_Raise(__pyx_t_5, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __PYX_ERR(0, 6293, __pyx_L1_error)

          /* "netCDF4/_netCDF4.pyx":6292
 *                 dtx = _set_viewdtype(dt.fields[name][0])
 *             else:
 *                 if fmt.subdtype[0].kind == 'V': # structured dtype             # <<<<<<<<<<<<<<
 *                     raise TypeError('nested structured dtype arrays not supported')
 *                 elif fmt.subdtype[0].kind == 'S' and len(dt.fields[name][0].shape) == 1:
*/
        }

        /* "netCDF4/_netCDF4.pyx":6294
 *                 if fmt.subdtype[0].kind == 'V': # structured dtype
 *                     raise TypeError('nested structured dtype arrays not supported')
 *                 elif fmt.subdtype[0].kind == 'S' and len(dt.fields[name][0].shape) == 1:             # <<<<<<<<<<<<<<
 *                     lenchar = dt.fields[name][0].shape[0]
 *                     dtx = numpy.dtype('S%s' % lenchar)
*/
        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_fmt, __pyx_mstate_global->__pyx_n_u_subdtype); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6294, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_7 = __Pyx_GetItemInt(__pyx_t_5, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6294, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_kind); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6294, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_11 = (__Pyx_PyUnicode_Equals(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_S, Py_EQ)); if (unlikely((__pyx_t_11 < 0))) __PYX_ERR(0, 6294, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (__pyx_t_11) {
        } else {
          __pyx_t_6 = __pyx_t_11;
          goto __pyx_L8_bool_binop_done;
        }
        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_dt, __pyx_mstate_global->__pyx_n_u_fields); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6294, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_5, __pyx_v_name); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6294, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_7, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6294, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_shape); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6294, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_t_12 = PyObject_Length(__pyx_t_7); if (unlikely(__pyx_t_12 == ((Py_ssize_t)-1))) __PYX_ERR(0, 6294, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_11 = (__pyx_t_12 == 1);
        __pyx_t_6 = __pyx_t_11;
        __pyx_L8_bool_binop_done:;
        if (__pyx_t_6) {

          /* "netCDF4/_netCDF4.pyx":6295
 *                     raise TypeError('nested structured dtype arrays not supported')
 *                 elif fmt.subdtype[0].kind == 'S' and len(dt.fields[name][0].shape) == 1:
 *                     lenchar = dt.fields[name][0].shape[0]             # <<<<<<<<<<<<<<
 *                     dtx = numpy.dtype('S%s' % lenchar)
 *                 else:
*/
          __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_dt, __pyx_mstate_global->__pyx_n_u_fields); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6295, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_v_name); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6295, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          __pyx_t_7 = __Pyx_GetItemInt(__pyx_t_5, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6295, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_shape); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6295, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          __pyx_t_7 = __Pyx_GetItemInt(__pyx_t_5, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6295, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_XDECREF_SET(__pyx_v_lenchar, __pyx_t_7);
          __pyx_t_7 = 0;

          /* "netCDF4/_netCDF4.pyx":6296
 *                 elif fmt.subdtype[0].kind == 'S' and len(dt.fields[name][0].shape) == 1:
 *                     lenchar = dt.fields[name][0].shape[0]
 *                     dtx = numpy.dtype('S%s' % lenchar)             # <<<<<<<<<<<<<<
 *                 else:
 *                     dtx = dt.fields[name][0]
*/
          __pyx_t_5 = NULL;
          __pyx_t_8 = __Pyx_PyUnicode_FormatSafe(__pyx_mstate_global->__pyx_kp_u_S_s, __pyx_v_lenchar); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6296, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __pyx_t_10 = 1;
          {
            PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_8};
            __pyx_t_7 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_5numpy_dtype, __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_8); __pyx_t_8 = 0;
            if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6296, __pyx_L1_error)
            __Pyx_GOTREF((PyObject *)__pyx_t_7);
          }
          __Pyx_XDECREF_SET(__pyx_v_dtx, ((PyObject *)__pyx_t_7));
          __pyx_t_7 = 0;

          /* "netCDF4/_netCDF4.pyx":6294
 *                 if fmt.subdtype[0].kind == 'V': # structured dtype
 *                     raise TypeError('nested structured dtype arrays not supported')
 *                 elif fmt.subdtype[0].kind == 'S' and len(dt.fields[name][0].shape) == 1:             # <<<<<<<<<<<<<<
 *                     lenchar = dt.fields[name][0].shape[0]
 *                     dtx = numpy.dtype('S%s' % lenchar)
*/
          goto __pyx_L7;
        }

        /* "netCDF4/_netCDF4.pyx":6298
 *                     dtx = numpy.dtype('S%s' % lenchar)
 *                 else:
 *                     dtx = dt.fields[name][0]             # <<<<<<<<<<<<<<
 *         else:
 *             # primitive data type
*/
        /*else*/ {
          __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_dt, __pyx_mstate_global->__pyx_n_u_fields); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6298, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __pyx_t_8 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_v_name); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6298, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          __pyx_t_7 = __Pyx_GetItemInt(__pyx_t_8, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6298, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __Pyx_XDECREF_SET(__pyx_v_dtx, __pyx_t_7);
          __pyx_t_7 = 0;
        }
        __pyx_L7:;
      }
      __pyx_L6:;

      /* "netCDF4/_netCDF4.pyx":6288
 *     for name in names:
 *         fmt = dt.fields[name][0]
 *         if fmt.kind == 'V':             # <<<<<<<<<<<<<<
 *             if fmt.shape == ():
 *                 dtx = _set_viewdtype(dt.fields[name][0])
*/
      goto __pyx_L5;
    }

    /* "netCDF4/_netCDF4.pyx":6301
 *         else:
 *             # primitive data type
 *             dtx = dt.fields[name][0]             # <<<<<<<<<<<<<<
 *         formats.append(dtx)
 *     dtype_dict = {'names':names,'formats':formats}
*/
    /*else*/ {
      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_dt, __pyx_mstate_global->__pyx_n_u_fields); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6301, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_8 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_v_name); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6301, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_7 = __Pyx_GetItemInt(__pyx_t_8, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6301, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF_SET(__pyx_v_dtx, __pyx_t_7);
      __pyx_t_7 = 0;
    }
    __pyx_L5:;

    /* "netCDF4/_netCDF4.pyx":6302
 *             # primitive data type
 *             dtx = dt.fields[name][0]
 *         formats.append(dtx)             # <<<<<<<<<<<<<<
 *     dtype_dict = {'names':names,'formats':formats}
 *     return numpy.dtype(dtype_dict, align=True)
*/
    __pyx_t_13 = __Pyx_PyList_Append(__pyx_v_formats, __pyx_v_dtx); if (unlikely(__pyx_t_13 == ((int)-1))) __PYX_ERR(0, 6302, __pyx_L1_error)

    /* "netCDF4/_netCDF4.pyx":6286
 *     # recursively change character array dtypes to string dtypes
 *     names = dt.names; formats = []
 *     for name in names:             # <<<<<<<<<<<<<<
 *         fmt = dt.fields[name][0]
 *         if fmt.kind == 'V':
*/
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":6303
 *             dtx = dt.fields[name][0]
 *         formats.append(dtx)
 *     dtype_dict = {'names':names,'formats':formats}             # <<<<<<<<<<<<<<
 *     return numpy.dtype(dtype_dict, align=True)
 * 
*/
  __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6303, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_names, __pyx_v_names) < (0)) __PYX_ERR(0, 6303, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_formats, __pyx_v_formats) < (0)) __PYX_ERR(0, 6303, __pyx_L1_error)
  __pyx_v_dtype_dict = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":6304
 *         formats.append(dtx)
 *     dtype_dict = {'names':names,'formats':formats}
 *     return numpy.dtype(dtype_dict, align=True)             # <<<<<<<<<<<<<<
 * 
 * cdef _def_compound(grp, object dt, object dtype_name):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_7 = NULL;
  __pyx_t_10 = 1;
  {
    PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_7, __pyx_v_dtype_dict};
    __pyx_t_8 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6304, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_align, Py_True, __pyx_t_8, __pyx_callargs+2, 0) < (0)) __PYX_ERR(0, 6304, __pyx_L1_error)
    __pyx_t_1 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_ptype_5numpy_dtype, __pyx_callargs+__pyx_t_10, (2-__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;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6304, __pyx_L1_error)
    __Pyx_GOTREF((PyObject *)__pyx_t_1);
  }
  __pyx_r = ((PyObject *)__pyx_t_1);
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":6283
 *     return numpy.dtype(dtype_dict, align=True)
 * 
 * def _set_viewdtype(dt):             # <<<<<<<<<<<<<<
 *     # recursively change character array dtypes to string dtypes
 *     names = dt.names; formats = []
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("netCDF4._netCDF4._set_viewdtype", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_names);
  __Pyx_XDECREF(__pyx_v_formats);
  __Pyx_XDECREF(__pyx_v_name);
  __Pyx_XDECREF(__pyx_v_fmt);
  __Pyx_XDECREF(__pyx_v_dtx);
  __Pyx_XDECREF(__pyx_v_lenchar);
  __Pyx_XDECREF(__pyx_v_dtype_dict);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":6306
 *     return numpy.dtype(dtype_dict, align=True)
 * 
 * cdef _def_compound(grp, object dt, object dtype_name):             # <<<<<<<<<<<<<<
 *     # private function used to construct a netcdf compound data type
 *     # from a numpy dtype object by CompoundType.__init__.
*/

static PyObject *__pyx_f_7netCDF4_8_netCDF4__def_compound(PyObject *__pyx_v_grp, PyObject *__pyx_v_dt, PyObject *__pyx_v_dtype_name) {
  nc_type __pyx_v_xtype;
  nc_type __pyx_v_xtype_tmp;
  int __pyx_v_ierr;
  int __pyx_v_ndims;
  int __pyx_v_grpid;
  size_t __pyx_v_offset;
  size_t __pyx_v_size;
  char *__pyx_v_namstring;
  char *__pyx_v_nested_namstring;
  int *__pyx_v_dim_sizes;
  PyObject *__pyx_v_bytestr = NULL;
  PyObject *__pyx_v_names = NULL;
  PyObject *__pyx_v_formats = NULL;
  PyObject *__pyx_v_offsets = NULL;
  PyObject *__pyx_v_name = NULL;
  PyObject *__pyx_v_format = NULL;
  int __pyx_v_n;
  PyObject *__pyx_9genexpr13__pyx_v_v = NULL;
  PyObject *__pyx_9genexpr14__pyx_v_v = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  char *__pyx_t_2;
  size_t __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;
  int __pyx_t_11;
  PyObject *(*__pyx_t_12)(PyObject *);
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  PyObject *(*__pyx_t_15)(PyObject *);
  int __pyx_t_16;
  PyObject *__pyx_t_17 = NULL;
  PyObject *__pyx_t_18 = NULL;
  PyObject *__pyx_t_19 = NULL;
  nc_type __pyx_t_20;
  int __pyx_t_21;
  int __pyx_t_22;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_def_compound", 0);

  /* "netCDF4/_netCDF4.pyx":6315
 *     cdef char *nested_namstring
 *     cdef int *dim_sizes
 *     bytestr = _strencode(dtype_name)             # <<<<<<<<<<<<<<
 *     namstring = bytestr
 *     size = dt.itemsize
*/
  __pyx_t_1 = __pyx_f_7netCDF4_8_netCDF4__strencode(__pyx_v_dtype_name, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6315, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_bytestr = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":6316
 *     cdef int *dim_sizes
 *     bytestr = _strencode(dtype_name)
 *     namstring = bytestr             # <<<<<<<<<<<<<<
 *     size = dt.itemsize
 *     grpid = grp._grpid
*/
  __pyx_t_2 = __Pyx_PyObject_AsWritableString(__pyx_v_bytestr); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 6316, __pyx_L1_error)
  __pyx_v_namstring = __pyx_t_2;

  /* "netCDF4/_netCDF4.pyx":6317
 *     bytestr = _strencode(dtype_name)
 *     namstring = bytestr
 *     size = dt.itemsize             # <<<<<<<<<<<<<<
 *     grpid = grp._grpid
 *     with nogil:
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_dt, __pyx_mstate_global->__pyx_n_u_itemsize); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6317, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyLong_As_size_t(__pyx_t_1); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 6317, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_size = __pyx_t_3;

  /* "netCDF4/_netCDF4.pyx":6318
 *     namstring = bytestr
 *     size = dt.itemsize
 *     grpid = grp._grpid             # <<<<<<<<<<<<<<
 *     with nogil:
 *         ierr = nc_def_compound(grpid, size, namstring, &xtype)
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_mstate_global->__pyx_n_u_grpid); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6318, __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(0, 6318, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_grpid = __pyx_t_4;

  /* "netCDF4/_netCDF4.pyx":6319
 *     size = dt.itemsize
 *     grpid = grp._grpid
 *     with nogil:             # <<<<<<<<<<<<<<
 *         ierr = nc_def_compound(grpid, size, namstring, &xtype)
 *     _ensure_nc_success(ierr)
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "netCDF4/_netCDF4.pyx":6320
 *     grpid = grp._grpid
 *     with nogil:
 *         ierr = nc_def_compound(grpid, size, namstring, &xtype)             # <<<<<<<<<<<<<<
 *     _ensure_nc_success(ierr)
 *     names = list(dt.fields.keys())
*/
        __pyx_v_ierr = nc_def_compound(__pyx_v_grpid, __pyx_v_size, __pyx_v_namstring, (&__pyx_v_xtype));
      }

      /* "netCDF4/_netCDF4.pyx":6319
 *     size = dt.itemsize
 *     grpid = grp._grpid
 *     with nogil:             # <<<<<<<<<<<<<<
 *         ierr = nc_def_compound(grpid, size, namstring, &xtype)
 *     _ensure_nc_success(ierr)
*/
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "netCDF4/_netCDF4.pyx":6321
 *     with nogil:
 *         ierr = nc_def_compound(grpid, size, namstring, &xtype)
 *     _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 *     names = list(dt.fields.keys())
 *     formats = [v[0] for v in dt.fields.values()]
*/
  __pyx_t_5 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6321, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6321, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_3 = 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_3 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_7};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_6, __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (__pyx_t_3*__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_1)) __PYX_ERR(0, 6321, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":6322
 *         ierr = nc_def_compound(grpid, size, namstring, &xtype)
 *     _ensure_nc_success(ierr)
 *     names = list(dt.fields.keys())             # <<<<<<<<<<<<<<
 *     formats = [v[0] for v in dt.fields.values()]
 *     offsets = [v[1] for v in dt.fields.values()]
*/
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_dt, __pyx_mstate_global->__pyx_n_u_fields); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6322, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = __pyx_t_7;
  __Pyx_INCREF(__pyx_t_6);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_6, 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_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6322, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_t_7 = __Pyx_PySequence_ListKeepNew(__pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6322, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_names = __pyx_t_7;
  __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":6323
 *     _ensure_nc_success(ierr)
 *     names = list(dt.fields.keys())
 *     formats = [v[0] for v in dt.fields.values()]             # <<<<<<<<<<<<<<
 *     offsets = [v[1] for v in dt.fields.values()]
 *     # make sure entries in lists sorted by offset.
*/
  { /* enter inner scope */
    __pyx_t_7 = PyList_New(0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6323, __pyx_L8_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = 0;
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_dt, __pyx_mstate_global->__pyx_n_u_fields); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6323, __pyx_L8_error)
    __Pyx_GOTREF(__pyx_t_6);
    if (unlikely(__pyx_t_6 == Py_None)) {
      PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "values");
      __PYX_ERR(0, 6323, __pyx_L8_error)
    }
    __pyx_t_5 = __Pyx_dict_iterator(__pyx_t_6, 0, __pyx_mstate_global->__pyx_n_u_values, (&__pyx_t_9), (&__pyx_t_4)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6323, __pyx_L8_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_XDECREF(__pyx_t_1);
    __pyx_t_1 = __pyx_t_5;
    __pyx_t_5 = 0;
    while (1) {
      __pyx_t_10 = __Pyx_dict_iter_next(__pyx_t_1, __pyx_t_9, &__pyx_t_8, NULL, &__pyx_t_5, NULL, __pyx_t_4);
      if (unlikely(__pyx_t_10 == 0)) break;
      if (unlikely(__pyx_t_10 == -1)) __PYX_ERR(0, 6323, __pyx_L8_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_XDECREF_SET(__pyx_9genexpr13__pyx_v_v, __pyx_t_5);
      __pyx_t_5 = 0;
      __pyx_t_5 = __Pyx_GetItemInt(__pyx_9genexpr13__pyx_v_v, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_SharedReference); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6323, __pyx_L8_error)
      __Pyx_GOTREF(__pyx_t_5);
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_7, (PyObject*)__pyx_t_5))) __PYX_ERR(0, 6323, __pyx_L8_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_9genexpr13__pyx_v_v); __pyx_9genexpr13__pyx_v_v = 0;
    goto __pyx_L11_exit_scope;
    __pyx_L8_error:;
    __Pyx_XDECREF(__pyx_9genexpr13__pyx_v_v); __pyx_9genexpr13__pyx_v_v = 0;
    goto __pyx_L1_error;
    __pyx_L11_exit_scope:;
  } /* exit inner scope */
  __pyx_v_formats = __pyx_t_7;
  __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":6324
 *     names = list(dt.fields.keys())
 *     formats = [v[0] for v in dt.fields.values()]
 *     offsets = [v[1] for v in dt.fields.values()]             # <<<<<<<<<<<<<<
 *     # make sure entries in lists sorted by offset.
 *     # (don't know why this is necessary, but it is for version 4.0.1)
*/
  { /* enter inner scope */
    __pyx_t_7 = PyList_New(0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6324, __pyx_L14_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_9 = 0;
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_dt, __pyx_mstate_global->__pyx_n_u_fields); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6324, __pyx_L14_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (unlikely(__pyx_t_5 == Py_None)) {
      PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "values");
      __PYX_ERR(0, 6324, __pyx_L14_error)
    }
    __pyx_t_6 = __Pyx_dict_iterator(__pyx_t_5, 0, __pyx_mstate_global->__pyx_n_u_values, (&__pyx_t_8), (&__pyx_t_4)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6324, __pyx_L14_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_1);
    __pyx_t_1 = __pyx_t_6;
    __pyx_t_6 = 0;
    while (1) {
      __pyx_t_10 = __Pyx_dict_iter_next(__pyx_t_1, __pyx_t_8, &__pyx_t_9, NULL, &__pyx_t_6, NULL, __pyx_t_4);
      if (unlikely(__pyx_t_10 == 0)) break;
      if (unlikely(__pyx_t_10 == -1)) __PYX_ERR(0, 6324, __pyx_L14_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_XDECREF_SET(__pyx_9genexpr14__pyx_v_v, __pyx_t_6);
      __pyx_t_6 = 0;
      __pyx_t_6 = __Pyx_GetItemInt(__pyx_9genexpr14__pyx_v_v, 1, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_SharedReference); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6324, __pyx_L14_error)
      __Pyx_GOTREF(__pyx_t_6);
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_7, (PyObject*)__pyx_t_6))) __PYX_ERR(0, 6324, __pyx_L14_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_9genexpr14__pyx_v_v); __pyx_9genexpr14__pyx_v_v = 0;
    goto __pyx_L17_exit_scope;
    __pyx_L14_error:;
    __Pyx_XDECREF(__pyx_9genexpr14__pyx_v_v); __pyx_9genexpr14__pyx_v_v = 0;
    goto __pyx_L1_error;
    __pyx_L17_exit_scope:;
  } /* exit inner scope */
  __pyx_v_offsets = ((PyObject*)__pyx_t_7);
  __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":6327
 *     # make sure entries in lists sorted by offset.
 *     # (don't know why this is necessary, but it is for version 4.0.1)
 *     names = _sortbylist(names, offsets)             # <<<<<<<<<<<<<<
 *     formats = _sortbylist(formats, offsets)
 *     offsets.sort()
*/
  __pyx_t_1 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_sortbylist); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6327, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_3 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6);
    assert(__pyx_t_1);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_6);
    __Pyx_INCREF(__pyx_t_1);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_6, __pyx__function);
    __pyx_t_3 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_1, __pyx_v_names, __pyx_v_offsets};
    __pyx_t_7 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_6, __pyx_callargs+__pyx_t_3, (3-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6327, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
  }
  __Pyx_DECREF_SET(__pyx_v_names, __pyx_t_7);
  __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":6328
 *     # (don't know why this is necessary, but it is for version 4.0.1)
 *     names = _sortbylist(names, offsets)
 *     formats = _sortbylist(formats, offsets)             # <<<<<<<<<<<<<<
 *     offsets.sort()
 *     for name, format, offset in zip(names, formats, offsets):
*/
  __pyx_t_6 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_sortbylist); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6328, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1);
    assert(__pyx_t_6);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_1);
    __Pyx_INCREF(__pyx_t_6);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_1, __pyx__function);
    __pyx_t_3 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_v_formats, __pyx_v_offsets};
    __pyx_t_7 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_1, __pyx_callargs+__pyx_t_3, (3-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6328, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
  }
  __Pyx_DECREF_SET(__pyx_v_formats, __pyx_t_7);
  __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":6329
 *     names = _sortbylist(names, offsets)
 *     formats = _sortbylist(formats, offsets)
 *     offsets.sort()             # <<<<<<<<<<<<<<
 *     for name, format, offset in zip(names, formats, offsets):
 *         bytestr = _strencode(name)
*/
  __pyx_t_11 = PyList_Sort(__pyx_v_offsets); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(0, 6329, __pyx_L1_error)

  /* "netCDF4/_netCDF4.pyx":6330
 *     formats = _sortbylist(formats, offsets)
 *     offsets.sort()
 *     for name, format, offset in zip(names, formats, offsets):             # <<<<<<<<<<<<<<
 *         bytestr = _strencode(name)
 *         namstring = bytestr
*/
  __pyx_t_1 = NULL;
  __pyx_t_3 = 1;
  {
    PyObject *__pyx_callargs[4] = {__pyx_t_1, __pyx_v_names, __pyx_v_formats, __pyx_v_offsets};
    __pyx_t_7 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_zip, __pyx_callargs+__pyx_t_3, (4-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6330, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
  }
  if (likely(PyList_CheckExact(__pyx_t_7)) || PyTuple_CheckExact(__pyx_t_7)) {
    __pyx_t_1 = __pyx_t_7; __Pyx_INCREF(__pyx_t_1);
    __pyx_t_8 = 0;
    __pyx_t_12 = NULL;
  } else {
    __pyx_t_8 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6330, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_12 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 6330, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  for (;;) {
    if (likely(!__pyx_t_12)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 6330, __pyx_L1_error)
          #endif
          if (__pyx_t_8 >= __pyx_temp) break;
        }
        __pyx_t_7 = __Pyx_PyList_GetItemRefFast(__pyx_t_1, __pyx_t_8, __Pyx_ReferenceSharing_OwnStrongReference);
        ++__pyx_t_8;
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 6330, __pyx_L1_error)
          #endif
          if (__pyx_t_8 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_7 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_8));
        #else
        __pyx_t_7 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_8);
        #endif
        ++__pyx_t_8;
      }
      if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6330, __pyx_L1_error)
    } else {
      __pyx_t_7 = __pyx_t_12(__pyx_t_1);
      if (unlikely(!__pyx_t_7)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 6330, __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 != 3)) {
        if (size > 3) __Pyx_RaiseTooManyValuesError(3);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(0, 6330, __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_5 = PyTuple_GET_ITEM(sequence, 1);
        __Pyx_INCREF(__pyx_t_5);
        __pyx_t_13 = PyTuple_GET_ITEM(sequence, 2);
        __Pyx_INCREF(__pyx_t_13);
      } else {
        __pyx_t_6 = __Pyx_PyList_GetItemRefFast(sequence, 0, __Pyx_ReferenceSharing_SharedReference);
        if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6330, __pyx_L1_error)
        __Pyx_XGOTREF(__pyx_t_6);
        __pyx_t_5 = __Pyx_PyList_GetItemRefFast(sequence, 1, __Pyx_ReferenceSharing_SharedReference);
        if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6330, __pyx_L1_error)
        __Pyx_XGOTREF(__pyx_t_5);
        __pyx_t_13 = __Pyx_PyList_GetItemRefFast(sequence, 2, __Pyx_ReferenceSharing_SharedReference);
        if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 6330, __pyx_L1_error)
        __Pyx_XGOTREF(__pyx_t_13);
      }
      #else
      __pyx_t_6 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6330, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_5 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6330, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_13 = __Pyx_PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 6330, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_13);
      #endif
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_14 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 6330, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_14);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_15 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_14);
      index = 0; __pyx_t_6 = __pyx_t_15(__pyx_t_14); if (unlikely(!__pyx_t_6)) goto __pyx_L20_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_6);
      index = 1; __pyx_t_5 = __pyx_t_15(__pyx_t_14); if (unlikely(!__pyx_t_5)) goto __pyx_L20_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_5);
      index = 2; __pyx_t_13 = __pyx_t_15(__pyx_t_14); if (unlikely(!__pyx_t_13)) goto __pyx_L20_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_13);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_15(__pyx_t_14), 3) < (0)) __PYX_ERR(0, 6330, __pyx_L1_error)
      __pyx_t_15 = NULL;
      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
      goto __pyx_L21_unpacking_done;
      __pyx_L20_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
      __pyx_t_15 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(0, 6330, __pyx_L1_error)
      __pyx_L21_unpacking_done:;
    }
    __pyx_t_3 = __Pyx_PyLong_As_size_t(__pyx_t_13); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 6330, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
    __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_6);
    __pyx_t_6 = 0;
    __Pyx_XDECREF_SET(__pyx_v_format, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_v_offset = __pyx_t_3;

    /* "netCDF4/_netCDF4.pyx":6331
 *     offsets.sort()
 *     for name, format, offset in zip(names, formats, offsets):
 *         bytestr = _strencode(name)             # <<<<<<<<<<<<<<
 *         namstring = bytestr
 *         if format.kind != 'V': # scalar primitive type
*/
    __pyx_t_7 = __pyx_f_7netCDF4_8_netCDF4__strencode(__pyx_v_name, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6331, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF_SET(__pyx_v_bytestr, __pyx_t_7);
    __pyx_t_7 = 0;

    /* "netCDF4/_netCDF4.pyx":6332
 *     for name, format, offset in zip(names, formats, offsets):
 *         bytestr = _strencode(name)
 *         namstring = bytestr             # <<<<<<<<<<<<<<
 *         if format.kind != 'V': # scalar primitive type
 *             try:
*/
    __pyx_t_2 = __Pyx_PyObject_AsWritableString(__pyx_v_bytestr); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 6332, __pyx_L1_error)
    __pyx_v_namstring = __pyx_t_2;

    /* "netCDF4/_netCDF4.pyx":6333
 *         bytestr = _strencode(name)
 *         namstring = bytestr
 *         if format.kind != 'V': # scalar primitive type             # <<<<<<<<<<<<<<
 *             try:
 *                 xtype_tmp = _nptonctype[format.str[1:]]
*/
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_format, __pyx_mstate_global->__pyx_n_u_kind); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6333, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_16 = (__Pyx_PyUnicode_Equals(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_V, Py_NE)); if (unlikely((__pyx_t_16 < 0))) __PYX_ERR(0, 6333, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (__pyx_t_16) {

      /* "netCDF4/_netCDF4.pyx":6334
 *         namstring = bytestr
 *         if format.kind != 'V': # scalar primitive type
 *             try:             # <<<<<<<<<<<<<<
 *                 xtype_tmp = _nptonctype[format.str[1:]]
 *             except KeyError:
*/
      {
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        __Pyx_ExceptionSave(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
        __Pyx_XGOTREF(__pyx_t_17);
        __Pyx_XGOTREF(__pyx_t_18);
        __Pyx_XGOTREF(__pyx_t_19);
        /*try:*/ {

          /* "netCDF4/_netCDF4.pyx":6335
 *         if format.kind != 'V': # scalar primitive type
 *             try:
 *                 xtype_tmp = _nptonctype[format.str[1:]]             # <<<<<<<<<<<<<<
 *             except KeyError:
 *                 raise ValueError('Unsupported compound type element')
*/
          __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_nptonctype); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6335, __pyx_L23_error)
          __Pyx_GOTREF(__pyx_t_7);
          __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_format, __pyx_mstate_global->__pyx_n_u_str); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 6335, __pyx_L23_error)
          __Pyx_GOTREF(__pyx_t_13);
          __pyx_t_5 = __Pyx_PyObject_GetSlice(__pyx_t_13, 1, 0, NULL, NULL, &__pyx_mstate_global->__pyx_slice[0], 1, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6335, __pyx_L23_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
          __pyx_t_13 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_t_5); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 6335, __pyx_L23_error)
          __Pyx_GOTREF(__pyx_t_13);
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __pyx_t_20 = __Pyx_PyLong_As_nc_type(__pyx_t_13); if (unlikely((__pyx_t_20 == ((nc_type)-1)) && PyErr_Occurred())) __PYX_ERR(0, 6335, __pyx_L23_error)
          __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
          __pyx_v_xtype_tmp = __pyx_t_20;

          /* "netCDF4/_netCDF4.pyx":6334
 *         namstring = bytestr
 *         if format.kind != 'V': # scalar primitive type
 *             try:             # <<<<<<<<<<<<<<
 *                 xtype_tmp = _nptonctype[format.str[1:]]
 *             except KeyError:
*/
        }
        __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
        __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
        __Pyx_XDECREF(__pyx_t_19); __pyx_t_19 = 0;
        goto __pyx_L30_try_end;
        __pyx_L23_error:;
        __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
        __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 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;

        /* "netCDF4/_netCDF4.pyx":6336
 *             try:
 *                 xtype_tmp = _nptonctype[format.str[1:]]
 *             except KeyError:             # <<<<<<<<<<<<<<
 *                 raise ValueError('Unsupported compound type element')
 *             with nogil:
*/
        __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_KeyError))));
        if (__pyx_t_4) {
          __Pyx_AddTraceback("netCDF4._netCDF4._def_compound", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_13, &__pyx_t_5, &__pyx_t_7) < 0) __PYX_ERR(0, 6336, __pyx_L25_except_error)
          __Pyx_XGOTREF(__pyx_t_13);
          __Pyx_XGOTREF(__pyx_t_5);
          __Pyx_XGOTREF(__pyx_t_7);

          /* "netCDF4/_netCDF4.pyx":6337
 *                 xtype_tmp = _nptonctype[format.str[1:]]
 *             except KeyError:
 *                 raise ValueError('Unsupported compound type element')             # <<<<<<<<<<<<<<
 *             with nogil:
 *                 ierr = nc_insert_compound(grpid, xtype, namstring,
*/
          __pyx_t_14 = NULL;
          __pyx_t_3 = 1;
          {
            PyObject *__pyx_callargs[2] = {__pyx_t_14, __pyx_mstate_global->__pyx_kp_u_Unsupported_compound_type_elemen};
            __pyx_t_6 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
            __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
            if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6337, __pyx_L25_except_error)
            __Pyx_GOTREF(__pyx_t_6);
          }
          __Pyx_Raise(__pyx_t_6, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __PYX_ERR(0, 6337, __pyx_L25_except_error)
        }
        goto __pyx_L25_except_error;

        /* "netCDF4/_netCDF4.pyx":6334
 *         namstring = bytestr
 *         if format.kind != 'V': # scalar primitive type
 *             try:             # <<<<<<<<<<<<<<
 *                 xtype_tmp = _nptonctype[format.str[1:]]
 *             except KeyError:
*/
        __pyx_L25_except_error:;
        __Pyx_XGIVEREF(__pyx_t_17);
        __Pyx_XGIVEREF(__pyx_t_18);
        __Pyx_XGIVEREF(__pyx_t_19);
        __Pyx_ExceptionReset(__pyx_t_17, __pyx_t_18, __pyx_t_19);
        goto __pyx_L1_error;
        __pyx_L30_try_end:;
      }

      /* "netCDF4/_netCDF4.pyx":6338
 *             except KeyError:
 *                 raise ValueError('Unsupported compound type element')
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 ierr = nc_insert_compound(grpid, xtype, namstring,
 *                                           offset, xtype_tmp)
*/
      {
          PyThreadState * _save;
          _save = PyEval_SaveThread();
          __Pyx_FastGIL_Remember();
          /*try:*/ {

            /* "netCDF4/_netCDF4.pyx":6339
 *                 raise ValueError('Unsupported compound type element')
 *             with nogil:
 *                 ierr = nc_insert_compound(grpid, xtype, namstring,             # <<<<<<<<<<<<<<
 *                                           offset, xtype_tmp)
 *             _ensure_nc_success(ierr)
*/
            __pyx_v_ierr = nc_insert_compound(__pyx_v_grpid, __pyx_v_xtype, __pyx_v_namstring, __pyx_v_offset, __pyx_v_xtype_tmp);
          }

          /* "netCDF4/_netCDF4.pyx":6338
 *             except KeyError:
 *                 raise ValueError('Unsupported compound type element')
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 ierr = nc_insert_compound(grpid, xtype, namstring,
 *                                           offset, xtype_tmp)
*/
          /*finally:*/ {
            /*normal exit:*/{
              __Pyx_FastGIL_Forget();
              PyEval_RestoreThread(_save);
              goto __pyx_L37;
            }
            __pyx_L37:;
          }
      }

      /* "netCDF4/_netCDF4.pyx":6341
 *                 ierr = nc_insert_compound(grpid, xtype, namstring,
 *                                           offset, xtype_tmp)
 *             _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 *         else:
 *             if format.shape ==  (): # nested scalar compound type
*/
      __pyx_t_5 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 6341, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_13);
      __pyx_t_6 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6341, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_3 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_13))) {
        __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_13);
        assert(__pyx_t_5);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_13);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_13, __pyx__function);
        __pyx_t_3 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_6};
        __pyx_t_7 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_13, __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
        if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6341, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
      }
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

      /* "netCDF4/_netCDF4.pyx":6333
 *         bytestr = _strencode(name)
 *         namstring = bytestr
 *         if format.kind != 'V': # scalar primitive type             # <<<<<<<<<<<<<<
 *             try:
 *                 xtype_tmp = _nptonctype[format.str[1:]]
*/
      goto __pyx_L22;
    }

    /* "netCDF4/_netCDF4.pyx":6343
 *             _ensure_nc_success(ierr)
 *         else:
 *             if format.shape ==  (): # nested scalar compound type             # <<<<<<<<<<<<<<
 *                 # find this compound type in this group or it's parents.
 *                 xtype_tmp = _find_cmptype(grp, format)
*/
    /*else*/ {
      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_format, __pyx_mstate_global->__pyx_n_u_shape); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6343, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_13 = PyObject_RichCompare(__pyx_t_7, __pyx_mstate_global->__pyx_empty_tuple, Py_EQ); __Pyx_XGOTREF(__pyx_t_13); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 6343, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_13); if (unlikely((__pyx_t_16 < 0))) __PYX_ERR(0, 6343, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
      if (__pyx_t_16) {

        /* "netCDF4/_netCDF4.pyx":6345
 *             if format.shape ==  (): # nested scalar compound type
 *                 # find this compound type in this group or it's parents.
 *                 xtype_tmp = _find_cmptype(grp, format)             # <<<<<<<<<<<<<<
 *                 bytestr = _strencode(name)
 *                 nested_namstring = bytestr
*/
        __pyx_t_13 = __pyx_f_7netCDF4_8_netCDF4__find_cmptype(__pyx_v_grp, __pyx_v_format); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 6345, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_13);
        __pyx_t_20 = __Pyx_PyLong_As_nc_type(__pyx_t_13); if (unlikely((__pyx_t_20 == ((nc_type)-1)) && PyErr_Occurred())) __PYX_ERR(0, 6345, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
        __pyx_v_xtype_tmp = __pyx_t_20;

        /* "netCDF4/_netCDF4.pyx":6346
 *                 # find this compound type in this group or it's parents.
 *                 xtype_tmp = _find_cmptype(grp, format)
 *                 bytestr = _strencode(name)             # <<<<<<<<<<<<<<
 *                 nested_namstring = bytestr
 *                 with nogil:
*/
        __pyx_t_13 = __pyx_f_7netCDF4_8_netCDF4__strencode(__pyx_v_name, NULL); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 6346, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_13);
        __Pyx_DECREF_SET(__pyx_v_bytestr, __pyx_t_13);
        __pyx_t_13 = 0;

        /* "netCDF4/_netCDF4.pyx":6347
 *                 xtype_tmp = _find_cmptype(grp, format)
 *                 bytestr = _strencode(name)
 *                 nested_namstring = bytestr             # <<<<<<<<<<<<<<
 *                 with nogil:
 *                     ierr = nc_insert_compound(grpid, xtype,\
*/
        __pyx_t_2 = __Pyx_PyObject_AsWritableString(__pyx_v_bytestr); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 6347, __pyx_L1_error)
        __pyx_v_nested_namstring = __pyx_t_2;

        /* "netCDF4/_netCDF4.pyx":6348
 *                 bytestr = _strencode(name)
 *                 nested_namstring = bytestr
 *                 with nogil:             # <<<<<<<<<<<<<<
 *                     ierr = nc_insert_compound(grpid, xtype,\
 *                                               nested_namstring,\
*/
        {
            PyThreadState * _save;
            _save = PyEval_SaveThread();
            __Pyx_FastGIL_Remember();
            /*try:*/ {

              /* "netCDF4/_netCDF4.pyx":6349
 *                 nested_namstring = bytestr
 *                 with nogil:
 *                     ierr = nc_insert_compound(grpid, xtype,\             # <<<<<<<<<<<<<<
 *                                               nested_namstring,\
 *                                               offset, xtype_tmp)
*/
              __pyx_v_ierr = nc_insert_compound(__pyx_v_grpid, __pyx_v_xtype, __pyx_v_nested_namstring, __pyx_v_offset, __pyx_v_xtype_tmp);
            }

            /* "netCDF4/_netCDF4.pyx":6348
 *                 bytestr = _strencode(name)
 *                 nested_namstring = bytestr
 *                 with nogil:             # <<<<<<<<<<<<<<
 *                     ierr = nc_insert_compound(grpid, xtype,\
 *                                               nested_namstring,\
*/
            /*finally:*/ {
              /*normal exit:*/{
                __Pyx_FastGIL_Forget();
                PyEval_RestoreThread(_save);
                goto __pyx_L43;
              }
              __pyx_L43:;
            }
        }

        /* "netCDF4/_netCDF4.pyx":6352
 *                                               nested_namstring,\
 *                                               offset, xtype_tmp)
 *                 _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 *             else: # nested array compound element
 *                 ndims = len(format.shape)
*/
        __pyx_t_7 = NULL;
        __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6352, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_5 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6352, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_3 = 1;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_6))) {
          __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
          assert(__pyx_t_7);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_6);
          __Pyx_INCREF(__pyx_t_7);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_6, __pyx__function);
          __pyx_t_3 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_5};
          __pyx_t_13 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_6, __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 6352, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_13);
        }
        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;

        /* "netCDF4/_netCDF4.pyx":6343
 *             _ensure_nc_success(ierr)
 *         else:
 *             if format.shape ==  (): # nested scalar compound type             # <<<<<<<<<<<<<<
 *                 # find this compound type in this group or it's parents.
 *                 xtype_tmp = _find_cmptype(grp, format)
*/
        goto __pyx_L38;
      }

      /* "netCDF4/_netCDF4.pyx":6354
 *                 _ensure_nc_success(ierr)
 *             else: # nested array compound element
 *                 ndims = len(format.shape)             # <<<<<<<<<<<<<<
 *                 dim_sizes = <int *>malloc(sizeof(int) * ndims)
 *                 for n in range(ndims):
*/
      /*else*/ {
        __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_format, __pyx_mstate_global->__pyx_n_u_shape); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 6354, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_13);
        __pyx_t_9 = PyObject_Length(__pyx_t_13); if (unlikely(__pyx_t_9 == ((Py_ssize_t)-1))) __PYX_ERR(0, 6354, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
        __pyx_v_ndims = __pyx_t_9;

        /* "netCDF4/_netCDF4.pyx":6355
 *             else: # nested array compound element
 *                 ndims = len(format.shape)
 *                 dim_sizes = <int *>malloc(sizeof(int) * ndims)             # <<<<<<<<<<<<<<
 *                 for n in range(ndims):
 *                     dim_sizes[n] = format.shape[n]
*/
        __pyx_v_dim_sizes = ((int *)malloc(((sizeof(int)) * __pyx_v_ndims)));

        /* "netCDF4/_netCDF4.pyx":6356
 *                 ndims = len(format.shape)
 *                 dim_sizes = <int *>malloc(sizeof(int) * ndims)
 *                 for n in range(ndims):             # <<<<<<<<<<<<<<
 *                     dim_sizes[n] = format.shape[n]
 *                 if format.subdtype[0].kind != 'V': # primitive type.
*/
        __pyx_t_4 = __pyx_v_ndims;
        __pyx_t_10 = __pyx_t_4;
        for (__pyx_t_21 = 0; __pyx_t_21 < __pyx_t_10; __pyx_t_21+=1) {
          __pyx_v_n = __pyx_t_21;

          /* "netCDF4/_netCDF4.pyx":6357
 *                 dim_sizes = <int *>malloc(sizeof(int) * ndims)
 *                 for n in range(ndims):
 *                     dim_sizes[n] = format.shape[n]             # <<<<<<<<<<<<<<
 *                 if format.subdtype[0].kind != 'V': # primitive type.
 *                     try:
*/
          __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_format, __pyx_mstate_global->__pyx_n_u_shape); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 6357, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_13);
          __pyx_t_6 = __Pyx_GetItemInt(__pyx_t_13, __pyx_v_n, int, 1, __Pyx_PyLong_From_int, 0, 1, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6357, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
          __pyx_t_22 = __Pyx_PyLong_As_int(__pyx_t_6); if (unlikely((__pyx_t_22 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 6357, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          (__pyx_v_dim_sizes[__pyx_v_n]) = __pyx_t_22;
        }

        /* "netCDF4/_netCDF4.pyx":6358
 *                 for n in range(ndims):
 *                     dim_sizes[n] = format.shape[n]
 *                 if format.subdtype[0].kind != 'V': # primitive type.             # <<<<<<<<<<<<<<
 *                     try:
 *                         xtype_tmp = _nptonctype[format.subdtype[0].str[1:]]
*/
        __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_format, __pyx_mstate_global->__pyx_n_u_subdtype); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6358, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_13 = __Pyx_GetItemInt(__pyx_t_6, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 6358, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_13);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_kind); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6358, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
        __pyx_t_16 = (__Pyx_PyUnicode_Equals(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_V, Py_NE)); if (unlikely((__pyx_t_16 < 0))) __PYX_ERR(0, 6358, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        if (likely(__pyx_t_16)) {

          /* "netCDF4/_netCDF4.pyx":6359
 *                     dim_sizes[n] = format.shape[n]
 *                 if format.subdtype[0].kind != 'V': # primitive type.
 *                     try:             # <<<<<<<<<<<<<<
 *                         xtype_tmp = _nptonctype[format.subdtype[0].str[1:]]
 *                     except KeyError:
*/
          {
            __Pyx_PyThreadState_declare
            __Pyx_PyThreadState_assign
            __Pyx_ExceptionSave(&__pyx_t_19, &__pyx_t_18, &__pyx_t_17);
            __Pyx_XGOTREF(__pyx_t_19);
            __Pyx_XGOTREF(__pyx_t_18);
            __Pyx_XGOTREF(__pyx_t_17);
            /*try:*/ {

              /* "netCDF4/_netCDF4.pyx":6360
 *                 if format.subdtype[0].kind != 'V': # primitive type.
 *                     try:
 *                         xtype_tmp = _nptonctype[format.subdtype[0].str[1:]]             # <<<<<<<<<<<<<<
 *                     except KeyError:
 *                         raise ValueError('Unsupported compound type element')
*/
              __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_nptonctype); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6360, __pyx_L47_error)
              __Pyx_GOTREF(__pyx_t_6);
              __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_format, __pyx_mstate_global->__pyx_n_u_subdtype); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 6360, __pyx_L47_error)
              __Pyx_GOTREF(__pyx_t_13);
              __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_13, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6360, __pyx_L47_error)
              __Pyx_GOTREF(__pyx_t_5);
              __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
              __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_str); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 6360, __pyx_L47_error)
              __Pyx_GOTREF(__pyx_t_13);
              __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
              __pyx_t_5 = __Pyx_PyObject_GetSlice(__pyx_t_13, 1, 0, NULL, NULL, &__pyx_mstate_global->__pyx_slice[0], 1, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6360, __pyx_L47_error)
              __Pyx_GOTREF(__pyx_t_5);
              __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
              __pyx_t_13 = __Pyx_PyObject_GetItem(__pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 6360, __pyx_L47_error)
              __Pyx_GOTREF(__pyx_t_13);
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
              __pyx_t_20 = __Pyx_PyLong_As_nc_type(__pyx_t_13); if (unlikely((__pyx_t_20 == ((nc_type)-1)) && PyErr_Occurred())) __PYX_ERR(0, 6360, __pyx_L47_error)
              __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
              __pyx_v_xtype_tmp = __pyx_t_20;

              /* "netCDF4/_netCDF4.pyx":6359
 *                     dim_sizes[n] = format.shape[n]
 *                 if format.subdtype[0].kind != 'V': # primitive type.
 *                     try:             # <<<<<<<<<<<<<<
 *                         xtype_tmp = _nptonctype[format.subdtype[0].str[1:]]
 *                     except KeyError:
*/
            }
            __Pyx_XDECREF(__pyx_t_19); __pyx_t_19 = 0;
            __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
            __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
            goto __pyx_L54_try_end;
            __pyx_L47_error:;
            __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
            __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 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;

            /* "netCDF4/_netCDF4.pyx":6361
 *                     try:
 *                         xtype_tmp = _nptonctype[format.subdtype[0].str[1:]]
 *                     except KeyError:             # <<<<<<<<<<<<<<
 *                         raise ValueError('Unsupported compound type element')
 *                     with nogil:
*/
            __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_KeyError))));
            if (__pyx_t_4) {
              __Pyx_AddTraceback("netCDF4._netCDF4._def_compound", __pyx_clineno, __pyx_lineno, __pyx_filename);
              if (__Pyx_GetException(&__pyx_t_13, &__pyx_t_5, &__pyx_t_6) < 0) __PYX_ERR(0, 6361, __pyx_L49_except_error)
              __Pyx_XGOTREF(__pyx_t_13);
              __Pyx_XGOTREF(__pyx_t_5);
              __Pyx_XGOTREF(__pyx_t_6);

              /* "netCDF4/_netCDF4.pyx":6362
 *                         xtype_tmp = _nptonctype[format.subdtype[0].str[1:]]
 *                     except KeyError:
 *                         raise ValueError('Unsupported compound type element')             # <<<<<<<<<<<<<<
 *                     with nogil:
 *                         ierr = nc_insert_array_compound(grpid,xtype,namstring,
*/
              __pyx_t_14 = NULL;
              __pyx_t_3 = 1;
              {
                PyObject *__pyx_callargs[2] = {__pyx_t_14, __pyx_mstate_global->__pyx_kp_u_Unsupported_compound_type_elemen};
                __pyx_t_7 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
                __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
                if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6362, __pyx_L49_except_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(0, 6362, __pyx_L49_except_error)
            }
            goto __pyx_L49_except_error;

            /* "netCDF4/_netCDF4.pyx":6359
 *                     dim_sizes[n] = format.shape[n]
 *                 if format.subdtype[0].kind != 'V': # primitive type.
 *                     try:             # <<<<<<<<<<<<<<
 *                         xtype_tmp = _nptonctype[format.subdtype[0].str[1:]]
 *                     except KeyError:
*/
            __pyx_L49_except_error:;
            __Pyx_XGIVEREF(__pyx_t_19);
            __Pyx_XGIVEREF(__pyx_t_18);
            __Pyx_XGIVEREF(__pyx_t_17);
            __Pyx_ExceptionReset(__pyx_t_19, __pyx_t_18, __pyx_t_17);
            goto __pyx_L1_error;
            __pyx_L54_try_end:;
          }

          /* "netCDF4/_netCDF4.pyx":6363
 *                     except KeyError:
 *                         raise ValueError('Unsupported compound type element')
 *                     with nogil:             # <<<<<<<<<<<<<<
 *                         ierr = nc_insert_array_compound(grpid,xtype,namstring,
 *                            offset,xtype_tmp,ndims,dim_sizes)
*/
          {
              PyThreadState * _save;
              _save = PyEval_SaveThread();
              __Pyx_FastGIL_Remember();
              /*try:*/ {

                /* "netCDF4/_netCDF4.pyx":6364
 *                         raise ValueError('Unsupported compound type element')
 *                     with nogil:
 *                         ierr = nc_insert_array_compound(grpid,xtype,namstring,             # <<<<<<<<<<<<<<
 *                            offset,xtype_tmp,ndims,dim_sizes)
 *                     _ensure_nc_success(ierr)
*/
                __pyx_v_ierr = nc_insert_array_compound(__pyx_v_grpid, __pyx_v_xtype, __pyx_v_namstring, __pyx_v_offset, __pyx_v_xtype_tmp, __pyx_v_ndims, __pyx_v_dim_sizes);
              }

              /* "netCDF4/_netCDF4.pyx":6363
 *                     except KeyError:
 *                         raise ValueError('Unsupported compound type element')
 *                     with nogil:             # <<<<<<<<<<<<<<
 *                         ierr = nc_insert_array_compound(grpid,xtype,namstring,
 *                            offset,xtype_tmp,ndims,dim_sizes)
*/
              /*finally:*/ {
                /*normal exit:*/{
                  __Pyx_FastGIL_Forget();
                  PyEval_RestoreThread(_save);
                  goto __pyx_L61;
                }
                __pyx_L61:;
              }
          }

          /* "netCDF4/_netCDF4.pyx":6366
 *                         ierr = nc_insert_array_compound(grpid,xtype,namstring,
 *                            offset,xtype_tmp,ndims,dim_sizes)
 *                     _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 *                 else: # nested array compound type.
 *                     raise TypeError('nested structured dtype arrays not supported')
*/
          __pyx_t_5 = NULL;
          __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 6366, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_13);
          __pyx_t_7 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6366, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __pyx_t_3 = 1;
          #if CYTHON_UNPACK_METHODS
          if (unlikely(PyMethod_Check(__pyx_t_13))) {
            __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_13);
            assert(__pyx_t_5);
            PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_13);
            __Pyx_INCREF(__pyx_t_5);
            __Pyx_INCREF(__pyx__function);
            __Pyx_DECREF_SET(__pyx_t_13, __pyx__function);
            __pyx_t_3 = 0;
          }
          #endif
          {
            PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_7};
            __pyx_t_6 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_13, __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (__pyx_t_3*__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_13); __pyx_t_13 = 0;
            if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6366, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_6);
          }
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

          /* "netCDF4/_netCDF4.pyx":6358
 *                 for n in range(ndims):
 *                     dim_sizes[n] = format.shape[n]
 *                 if format.subdtype[0].kind != 'V': # primitive type.             # <<<<<<<<<<<<<<
 *                     try:
 *                         xtype_tmp = _nptonctype[format.subdtype[0].str[1:]]
*/
          goto __pyx_L46;
        }

        /* "netCDF4/_netCDF4.pyx":6368
 *                     _ensure_nc_success(ierr)
 *                 else: # nested array compound type.
 *                     raise TypeError('nested structured dtype arrays not supported')             # <<<<<<<<<<<<<<
 *                     # this code is untested and probably does not work, disable
 *                     # for now...
*/
        /*else*/ {
          __pyx_t_13 = NULL;
          __pyx_t_3 = 1;
          {
            PyObject *__pyx_callargs[2] = {__pyx_t_13, __pyx_mstate_global->__pyx_kp_u_nested_structured_dtype_arrays_n};
            __pyx_t_6 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
            __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
            if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6368, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_6);
          }
          __Pyx_Raise(__pyx_t_6, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __PYX_ERR(0, 6368, __pyx_L1_error)
        }
        __pyx_L46:;

        /* "netCDF4/_netCDF4.pyx":6381
 *                 #                                       ndims,dim_sizes)
 *                 #   _ensure_nc_success(ierr)
 *                 free(dim_sizes)             # <<<<<<<<<<<<<<
 *     return xtype
 * 
*/
        free(__pyx_v_dim_sizes);
      }
      __pyx_L38:;
    }
    __pyx_L22:;

    /* "netCDF4/_netCDF4.pyx":6330
 *     formats = _sortbylist(formats, offsets)
 *     offsets.sort()
 *     for name, format, offset in zip(names, formats, offsets):             # <<<<<<<<<<<<<<
 *         bytestr = _strencode(name)
 *         namstring = bytestr
*/
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":6382
 *                 #   _ensure_nc_success(ierr)
 *                 free(dim_sizes)
 *     return xtype             # <<<<<<<<<<<<<<
 * 
 * cdef _find_cmptype(grp, dtype):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_nc_type(__pyx_v_xtype); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6382, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":6306
 *     return numpy.dtype(dtype_dict, align=True)
 * 
 * cdef _def_compound(grp, object dt, object dtype_name):             # <<<<<<<<<<<<<<
 *     # private function used to construct a netcdf compound data type
 *     # from a numpy dtype object by CompoundType.__init__.
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_AddTraceback("netCDF4._netCDF4._def_compound", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_bytestr);
  __Pyx_XDECREF(__pyx_v_names);
  __Pyx_XDECREF(__pyx_v_formats);
  __Pyx_XDECREF(__pyx_v_offsets);
  __Pyx_XDECREF(__pyx_v_name);
  __Pyx_XDECREF(__pyx_v_format);
  __Pyx_XDECREF(__pyx_9genexpr13__pyx_v_v);
  __Pyx_XDECREF(__pyx_9genexpr14__pyx_v_v);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":6384
 *     return xtype
 * 
 * cdef _find_cmptype(grp, dtype):             # <<<<<<<<<<<<<<
 *     # look for data type in this group and it's parents.
 *     # return datatype id when found, if not found, raise exception.
*/

static PyObject *__pyx_f_7netCDF4_8_netCDF4__find_cmptype(PyObject *__pyx_v_grp, PyObject *__pyx_v_dtype) {
  nc_type __pyx_v_xtype;
  int __pyx_v_match;
  CYTHON_UNUSED PyObject *__pyx_v_cmpname = NULL;
  PyObject *__pyx_v_cmpdt = NULL;
  PyObject *__pyx_v_names1 = NULL;
  PyObject *__pyx_v_names2 = NULL;
  PyObject *__pyx_v_formats1 = NULL;
  PyObject *__pyx_v_formats2 = NULL;
  PyObject *__pyx_v_formats2v = NULL;
  PyObject *__pyx_v_parent_grp = NULL;
  PyObject *__pyx_9genexpr15__pyx_v_v = NULL;
  PyObject *__pyx_9genexpr16__pyx_v_v = NULL;
  PyObject *__pyx_9genexpr17__pyx_v_v = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  nc_type __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  size_t __pyx_t_10;
  PyObject *__pyx_t_11 = NULL;
  Py_ssize_t __pyx_t_12;
  Py_ssize_t __pyx_t_13;
  int __pyx_t_14;
  int __pyx_t_15;
  int __pyx_t_16;
  PyObject *__pyx_t_17 = NULL;
  PyObject *__pyx_t_18 = NULL;
  PyObject *__pyx_t_19 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_find_cmptype", 0);

  /* "netCDF4/_netCDF4.pyx":6388
 *     # return datatype id when found, if not found, raise exception.
 *     cdef nc_type xtype
 *     match = False             # <<<<<<<<<<<<<<
 *     for cmpname, cmpdt in grp.cmptypes.items():
 *         xtype = cmpdt._nc_type
*/
  __pyx_v_match = 0;

  /* "netCDF4/_netCDF4.pyx":6389
 *     cdef nc_type xtype
 *     match = False
 *     for cmpname, cmpdt in grp.cmptypes.items():             # <<<<<<<<<<<<<<
 *         xtype = cmpdt._nc_type
 *         names1 = dtype.fields.keys()
*/
  __pyx_t_2 = 0;
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_mstate_global->__pyx_n_u_cmptypes); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6389, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (unlikely(__pyx_t_5 == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "items");
    __PYX_ERR(0, 6389, __pyx_L1_error)
  }
  __pyx_t_6 = __Pyx_dict_iterator(__pyx_t_5, 0, __pyx_mstate_global->__pyx_n_u_items, (&__pyx_t_3), (&__pyx_t_4)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6389, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_XDECREF(__pyx_t_1);
  __pyx_t_1 = __pyx_t_6;
  __pyx_t_6 = 0;
  while (1) {
    __pyx_t_7 = __Pyx_dict_iter_next(__pyx_t_1, __pyx_t_3, &__pyx_t_2, &__pyx_t_6, &__pyx_t_5, NULL, __pyx_t_4);
    if (unlikely(__pyx_t_7 == 0)) break;
    if (unlikely(__pyx_t_7 == -1)) __PYX_ERR(0, 6389, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_XDECREF_SET(__pyx_v_cmpname, __pyx_t_6);
    __pyx_t_6 = 0;
    __Pyx_XDECREF_SET(__pyx_v_cmpdt, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "netCDF4/_netCDF4.pyx":6390
 *     match = False
 *     for cmpname, cmpdt in grp.cmptypes.items():
 *         xtype = cmpdt._nc_type             # <<<<<<<<<<<<<<
 *         names1 = dtype.fields.keys()
 *         names2 = cmpdt.dtype.fields.keys()
*/
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_cmpdt, __pyx_mstate_global->__pyx_n_u_nc_type); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6390, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_8 = __Pyx_PyLong_As_nc_type(__pyx_t_5); if (unlikely((__pyx_t_8 == ((nc_type)-1)) && PyErr_Occurred())) __PYX_ERR(0, 6390, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_v_xtype = __pyx_t_8;

    /* "netCDF4/_netCDF4.pyx":6391
 *     for cmpname, cmpdt in grp.cmptypes.items():
 *         xtype = cmpdt._nc_type
 *         names1 = dtype.fields.keys()             # <<<<<<<<<<<<<<
 *         names2 = cmpdt.dtype.fields.keys()
 *         formats1 = [v[0] for v in dtype.fields.values()]
*/
    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_dtype, __pyx_mstate_global->__pyx_n_u_fields); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 6391, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_6 = __pyx_t_9;
    __Pyx_INCREF(__pyx_t_6);
    __pyx_t_10 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL};
      __pyx_t_5 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_keys, __pyx_callargs+__pyx_t_10, (1-__pyx_t_10) | (1*__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_5)) __PYX_ERR(0, 6391, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
    }
    __Pyx_XDECREF_SET(__pyx_v_names1, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "netCDF4/_netCDF4.pyx":6392
 *         xtype = cmpdt._nc_type
 *         names1 = dtype.fields.keys()
 *         names2 = cmpdt.dtype.fields.keys()             # <<<<<<<<<<<<<<
 *         formats1 = [v[0] for v in dtype.fields.values()]
 *         formats2 = [v[0] for v in cmpdt.dtype.fields.values()]
*/
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_cmpdt, __pyx_mstate_global->__pyx_n_u_dtype); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6392, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_fields); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 6392, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_9 = __pyx_t_11;
    __Pyx_INCREF(__pyx_t_9);
    __pyx_t_10 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_9, NULL};
      __pyx_t_5 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_keys, __pyx_callargs+__pyx_t_10, (1-__pyx_t_10) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6392, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
    }
    __Pyx_XDECREF_SET(__pyx_v_names2, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "netCDF4/_netCDF4.pyx":6393
 *         names1 = dtype.fields.keys()
 *         names2 = cmpdt.dtype.fields.keys()
 *         formats1 = [v[0] for v in dtype.fields.values()]             # <<<<<<<<<<<<<<
 *         formats2 = [v[0] for v in cmpdt.dtype.fields.values()]
 *         formats2v = [v[0] for v in cmpdt.dtype_view.fields.values()]
*/
    { /* enter inner scope */
      __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6393, __pyx_L7_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_12 = 0;
      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_dtype, __pyx_mstate_global->__pyx_n_u_fields); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 6393, __pyx_L7_error)
      __Pyx_GOTREF(__pyx_t_9);
      if (unlikely(__pyx_t_9 == Py_None)) {
        PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "values");
        __PYX_ERR(0, 6393, __pyx_L7_error)
      }
      __pyx_t_6 = __Pyx_dict_iterator(__pyx_t_9, 0, __pyx_mstate_global->__pyx_n_u_values, (&__pyx_t_13), (&__pyx_t_7)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6393, __pyx_L7_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_XDECREF(__pyx_t_11);
      __pyx_t_11 = __pyx_t_6;
      __pyx_t_6 = 0;
      while (1) {
        __pyx_t_14 = __Pyx_dict_iter_next(__pyx_t_11, __pyx_t_13, &__pyx_t_12, NULL, &__pyx_t_6, NULL, __pyx_t_7);
        if (unlikely(__pyx_t_14 == 0)) break;
        if (unlikely(__pyx_t_14 == -1)) __PYX_ERR(0, 6393, __pyx_L7_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_XDECREF_SET(__pyx_9genexpr15__pyx_v_v, __pyx_t_6);
        __pyx_t_6 = 0;
        __pyx_t_6 = __Pyx_GetItemInt(__pyx_9genexpr15__pyx_v_v, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_SharedReference); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6393, __pyx_L7_error)
        __Pyx_GOTREF(__pyx_t_6);
        if (unlikely(__Pyx_ListComp_Append(__pyx_t_5, (PyObject*)__pyx_t_6))) __PYX_ERR(0, 6393, __pyx_L7_error)
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      }
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_XDECREF(__pyx_9genexpr15__pyx_v_v); __pyx_9genexpr15__pyx_v_v = 0;
      goto __pyx_L10_exit_scope;
      __pyx_L7_error:;
      __Pyx_XDECREF(__pyx_9genexpr15__pyx_v_v); __pyx_9genexpr15__pyx_v_v = 0;
      goto __pyx_L1_error;
      __pyx_L10_exit_scope:;
    } /* exit inner scope */
    __Pyx_XDECREF_SET(__pyx_v_formats1, ((PyObject*)__pyx_t_5));
    __pyx_t_5 = 0;

    /* "netCDF4/_netCDF4.pyx":6394
 *         names2 = cmpdt.dtype.fields.keys()
 *         formats1 = [v[0] for v in dtype.fields.values()]
 *         formats2 = [v[0] for v in cmpdt.dtype.fields.values()]             # <<<<<<<<<<<<<<
 *         formats2v = [v[0] for v in cmpdt.dtype_view.fields.values()]
 *         # match names, formats, but not offsets (they may be changed
*/
    { /* enter inner scope */
      __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6394, __pyx_L13_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_13 = 0;
      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_cmpdt, __pyx_mstate_global->__pyx_n_u_dtype); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6394, __pyx_L13_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_fields); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 6394, __pyx_L13_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(__pyx_t_9 == Py_None)) {
        PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "values");
        __PYX_ERR(0, 6394, __pyx_L13_error)
      }
      __pyx_t_6 = __Pyx_dict_iterator(__pyx_t_9, 0, __pyx_mstate_global->__pyx_n_u_values, (&__pyx_t_12), (&__pyx_t_7)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6394, __pyx_L13_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_XDECREF(__pyx_t_11);
      __pyx_t_11 = __pyx_t_6;
      __pyx_t_6 = 0;
      while (1) {
        __pyx_t_14 = __Pyx_dict_iter_next(__pyx_t_11, __pyx_t_12, &__pyx_t_13, NULL, &__pyx_t_6, NULL, __pyx_t_7);
        if (unlikely(__pyx_t_14 == 0)) break;
        if (unlikely(__pyx_t_14 == -1)) __PYX_ERR(0, 6394, __pyx_L13_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_XDECREF_SET(__pyx_9genexpr16__pyx_v_v, __pyx_t_6);
        __pyx_t_6 = 0;
        __pyx_t_6 = __Pyx_GetItemInt(__pyx_9genexpr16__pyx_v_v, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_SharedReference); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6394, __pyx_L13_error)
        __Pyx_GOTREF(__pyx_t_6);
        if (unlikely(__Pyx_ListComp_Append(__pyx_t_5, (PyObject*)__pyx_t_6))) __PYX_ERR(0, 6394, __pyx_L13_error)
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      }
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_XDECREF(__pyx_9genexpr16__pyx_v_v); __pyx_9genexpr16__pyx_v_v = 0;
      goto __pyx_L16_exit_scope;
      __pyx_L13_error:;
      __Pyx_XDECREF(__pyx_9genexpr16__pyx_v_v); __pyx_9genexpr16__pyx_v_v = 0;
      goto __pyx_L1_error;
      __pyx_L16_exit_scope:;
    } /* exit inner scope */
    __Pyx_XDECREF_SET(__pyx_v_formats2, ((PyObject*)__pyx_t_5));
    __pyx_t_5 = 0;

    /* "netCDF4/_netCDF4.pyx":6395
 *         formats1 = [v[0] for v in dtype.fields.values()]
 *         formats2 = [v[0] for v in cmpdt.dtype.fields.values()]
 *         formats2v = [v[0] for v in cmpdt.dtype_view.fields.values()]             # <<<<<<<<<<<<<<
 *         # match names, formats, but not offsets (they may be changed
 *         # by netcdf lib).
*/
    { /* enter inner scope */
      __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6395, __pyx_L19_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_12 = 0;
      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_cmpdt, __pyx_mstate_global->__pyx_n_u_dtype_view); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6395, __pyx_L19_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_fields); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 6395, __pyx_L19_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(__pyx_t_9 == Py_None)) {
        PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "values");
        __PYX_ERR(0, 6395, __pyx_L19_error)
      }
      __pyx_t_6 = __Pyx_dict_iterator(__pyx_t_9, 0, __pyx_mstate_global->__pyx_n_u_values, (&__pyx_t_13), (&__pyx_t_7)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6395, __pyx_L19_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_XDECREF(__pyx_t_11);
      __pyx_t_11 = __pyx_t_6;
      __pyx_t_6 = 0;
      while (1) {
        __pyx_t_14 = __Pyx_dict_iter_next(__pyx_t_11, __pyx_t_13, &__pyx_t_12, NULL, &__pyx_t_6, NULL, __pyx_t_7);
        if (unlikely(__pyx_t_14 == 0)) break;
        if (unlikely(__pyx_t_14 == -1)) __PYX_ERR(0, 6395, __pyx_L19_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_XDECREF_SET(__pyx_9genexpr17__pyx_v_v, __pyx_t_6);
        __pyx_t_6 = 0;
        __pyx_t_6 = __Pyx_GetItemInt(__pyx_9genexpr17__pyx_v_v, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_SharedReference); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6395, __pyx_L19_error)
        __Pyx_GOTREF(__pyx_t_6);
        if (unlikely(__Pyx_ListComp_Append(__pyx_t_5, (PyObject*)__pyx_t_6))) __PYX_ERR(0, 6395, __pyx_L19_error)
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      }
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_XDECREF(__pyx_9genexpr17__pyx_v_v); __pyx_9genexpr17__pyx_v_v = 0;
      goto __pyx_L22_exit_scope;
      __pyx_L19_error:;
      __Pyx_XDECREF(__pyx_9genexpr17__pyx_v_v); __pyx_9genexpr17__pyx_v_v = 0;
      goto __pyx_L1_error;
      __pyx_L22_exit_scope:;
    } /* exit inner scope */
    __Pyx_XDECREF_SET(__pyx_v_formats2v, ((PyObject*)__pyx_t_5));
    __pyx_t_5 = 0;

    /* "netCDF4/_netCDF4.pyx":6398
 *         # match names, formats, but not offsets (they may be changed
 *         # by netcdf lib).
 *         if names1==names2 and formats1==formats2 or (formats1 == formats2v):             # <<<<<<<<<<<<<<
 *             match = True
 *             break
*/
    __pyx_t_5 = PyObject_RichCompare(__pyx_v_names1, __pyx_v_names2, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6398, __pyx_L1_error)
    __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely((__pyx_t_16 < 0))) __PYX_ERR(0, 6398, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (!__pyx_t_16) {
      goto __pyx_L25_next_or;
    } else {
    }
    __pyx_t_5 = PyObject_RichCompare(__pyx_v_formats1, __pyx_v_formats2, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6398, __pyx_L1_error)
    __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely((__pyx_t_16 < 0))) __PYX_ERR(0, 6398, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (!__pyx_t_16) {
    } else {
      __pyx_t_15 = __pyx_t_16;
      goto __pyx_L24_bool_binop_done;
    }
    __pyx_L25_next_or:;
    __pyx_t_5 = PyObject_RichCompare(__pyx_v_formats1, __pyx_v_formats2v, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6398, __pyx_L1_error)
    __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely((__pyx_t_16 < 0))) __PYX_ERR(0, 6398, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_15 = __pyx_t_16;
    __pyx_L24_bool_binop_done:;
    if (__pyx_t_15) {

      /* "netCDF4/_netCDF4.pyx":6399
 *         # by netcdf lib).
 *         if names1==names2 and formats1==formats2 or (formats1 == formats2v):
 *             match = True             # <<<<<<<<<<<<<<
 *             break
 *     if not match:
*/
      __pyx_v_match = 1;

      /* "netCDF4/_netCDF4.pyx":6400
 *         if names1==names2 and formats1==formats2 or (formats1 == formats2v):
 *             match = True
 *             break             # <<<<<<<<<<<<<<
 *     if not match:
 *         try:
*/
      goto __pyx_L4_break;

      /* "netCDF4/_netCDF4.pyx":6398
 *         # match names, formats, but not offsets (they may be changed
 *         # by netcdf lib).
 *         if names1==names2 and formats1==formats2 or (formats1 == formats2v):             # <<<<<<<<<<<<<<
 *             match = True
 *             break
*/
    }
  }
  __pyx_L4_break:;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":6401
 *             match = True
 *             break
 *     if not match:             # <<<<<<<<<<<<<<
 *         try:
 *             parent_grp = grp.parent
*/
  __pyx_t_15 = (!__pyx_v_match);
  if (__pyx_t_15) {

    /* "netCDF4/_netCDF4.pyx":6402
 *             break
 *     if not match:
 *         try:             # <<<<<<<<<<<<<<
 *             parent_grp = grp.parent
 *         except AttributeError:
*/
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
      __Pyx_XGOTREF(__pyx_t_17);
      __Pyx_XGOTREF(__pyx_t_18);
      __Pyx_XGOTREF(__pyx_t_19);
      /*try:*/ {

        /* "netCDF4/_netCDF4.pyx":6403
 *     if not match:
 *         try:
 *             parent_grp = grp.parent             # <<<<<<<<<<<<<<
 *         except AttributeError:
 *             raise ValueError("cannot find compound type in this group or parent groups")
*/
        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_mstate_global->__pyx_n_u_parent); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6403, __pyx_L28_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_v_parent_grp = __pyx_t_1;
        __pyx_t_1 = 0;

        /* "netCDF4/_netCDF4.pyx":6402
 *             break
 *     if not match:
 *         try:             # <<<<<<<<<<<<<<
 *             parent_grp = grp.parent
 *         except AttributeError:
*/
      }
      __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
      __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
      __Pyx_XDECREF(__pyx_t_19); __pyx_t_19 = 0;
      goto __pyx_L33_try_end;
      __pyx_L28_error:;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;

      /* "netCDF4/_netCDF4.pyx":6404
 *         try:
 *             parent_grp = grp.parent
 *         except AttributeError:             # <<<<<<<<<<<<<<
 *             raise ValueError("cannot find compound type in this group or parent groups")
 *         if parent_grp is None:
*/
      __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_AttributeError))));
      if (__pyx_t_4) {
        __Pyx_AddTraceback("netCDF4._netCDF4._find_cmptype", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_5, &__pyx_t_11) < 0) __PYX_ERR(0, 6404, __pyx_L30_except_error)
        __Pyx_XGOTREF(__pyx_t_1);
        __Pyx_XGOTREF(__pyx_t_5);
        __Pyx_XGOTREF(__pyx_t_11);

        /* "netCDF4/_netCDF4.pyx":6405
 *             parent_grp = grp.parent
 *         except AttributeError:
 *             raise ValueError("cannot find compound type in this group or parent groups")             # <<<<<<<<<<<<<<
 *         if parent_grp is None:
 *             raise ValueError("cannot find compound type in this group or parent groups")
*/
        __pyx_t_9 = NULL;
        __pyx_t_10 = 1;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_mstate_global->__pyx_kp_u_cannot_find_compound_type_in_thi};
          __pyx_t_6 = __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_9); __pyx_t_9 = 0;
          if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6405, __pyx_L30_except_error)
          __Pyx_GOTREF(__pyx_t_6);
        }
        __Pyx_Raise(__pyx_t_6, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __PYX_ERR(0, 6405, __pyx_L30_except_error)
      }
      goto __pyx_L30_except_error;

      /* "netCDF4/_netCDF4.pyx":6402
 *             break
 *     if not match:
 *         try:             # <<<<<<<<<<<<<<
 *             parent_grp = grp.parent
 *         except AttributeError:
*/
      __pyx_L30_except_error:;
      __Pyx_XGIVEREF(__pyx_t_17);
      __Pyx_XGIVEREF(__pyx_t_18);
      __Pyx_XGIVEREF(__pyx_t_19);
      __Pyx_ExceptionReset(__pyx_t_17, __pyx_t_18, __pyx_t_19);
      goto __pyx_L1_error;
      __pyx_L33_try_end:;
    }

    /* "netCDF4/_netCDF4.pyx":6406
 *         except AttributeError:
 *             raise ValueError("cannot find compound type in this group or parent groups")
 *         if parent_grp is None:             # <<<<<<<<<<<<<<
 *             raise ValueError("cannot find compound type in this group or parent groups")
 *         else:
*/
    __pyx_t_15 = (__pyx_v_parent_grp == Py_None);
    if (unlikely(__pyx_t_15)) {

      /* "netCDF4/_netCDF4.pyx":6407
 *             raise ValueError("cannot find compound type in this group or parent groups")
 *         if parent_grp is None:
 *             raise ValueError("cannot find compound type in this group or parent groups")             # <<<<<<<<<<<<<<
 *         else:
 *             xtype = _find_cmptype(parent_grp,dtype)
*/
      __pyx_t_5 = NULL;
      __pyx_t_10 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_cannot_find_compound_type_in_thi};
        __pyx_t_11 = __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;
        if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 6407, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_11);
      }
      __Pyx_Raise(__pyx_t_11, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __PYX_ERR(0, 6407, __pyx_L1_error)

      /* "netCDF4/_netCDF4.pyx":6406
 *         except AttributeError:
 *             raise ValueError("cannot find compound type in this group or parent groups")
 *         if parent_grp is None:             # <<<<<<<<<<<<<<
 *             raise ValueError("cannot find compound type in this group or parent groups")
 *         else:
*/
    }

    /* "netCDF4/_netCDF4.pyx":6409
 *             raise ValueError("cannot find compound type in this group or parent groups")
 *         else:
 *             xtype = _find_cmptype(parent_grp,dtype)             # <<<<<<<<<<<<<<
 *     return xtype
 * 
*/
    /*else*/ {
      __pyx_t_11 = __pyx_f_7netCDF4_8_netCDF4__find_cmptype(__pyx_v_parent_grp, __pyx_v_dtype); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 6409, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_11);
      __pyx_t_8 = __Pyx_PyLong_As_nc_type(__pyx_t_11); if (unlikely((__pyx_t_8 == ((nc_type)-1)) && PyErr_Occurred())) __PYX_ERR(0, 6409, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __pyx_v_xtype = __pyx_t_8;
    }

    /* "netCDF4/_netCDF4.pyx":6401
 *             match = True
 *             break
 *     if not match:             # <<<<<<<<<<<<<<
 *         try:
 *             parent_grp = grp.parent
*/
  }

  /* "netCDF4/_netCDF4.pyx":6410
 *         else:
 *             xtype = _find_cmptype(parent_grp,dtype)
 *     return xtype             # <<<<<<<<<<<<<<
 * 
 * cdef _read_compound(group, nc_type xtype, endian=None):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_11 = __Pyx_PyLong_From_nc_type(__pyx_v_xtype); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 6410, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_r = __pyx_t_11;
  __pyx_t_11 = 0;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":6384
 *     return xtype
 * 
 * cdef _find_cmptype(grp, dtype):             # <<<<<<<<<<<<<<
 *     # look for data type in this group and it's parents.
 *     # return datatype id when found, if not found, raise exception.
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("netCDF4._netCDF4._find_cmptype", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_cmpname);
  __Pyx_XDECREF(__pyx_v_cmpdt);
  __Pyx_XDECREF(__pyx_v_names1);
  __Pyx_XDECREF(__pyx_v_names2);
  __Pyx_XDECREF(__pyx_v_formats1);
  __Pyx_XDECREF(__pyx_v_formats2);
  __Pyx_XDECREF(__pyx_v_formats2v);
  __Pyx_XDECREF(__pyx_v_parent_grp);
  __Pyx_XDECREF(__pyx_9genexpr15__pyx_v_v);
  __Pyx_XDECREF(__pyx_9genexpr16__pyx_v_v);
  __Pyx_XDECREF(__pyx_9genexpr17__pyx_v_v);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":6412
 *     return xtype
 * 
 * cdef _read_compound(group, nc_type xtype, endian=None):             # <<<<<<<<<<<<<<
 *     # read a compound data type id from an existing file,
 *     # construct a corresponding numpy dtype instance,
*/

static PyObject *__pyx_f_7netCDF4_8_netCDF4__read_compound(PyObject *__pyx_v_group, nc_type __pyx_v_xtype, struct __pyx_opt_args_7netCDF4_8_netCDF4__read_compound *__pyx_optional_args) {
  PyObject *__pyx_v_endian = ((PyObject *)Py_None);
  int __pyx_v_ierr;
  int __pyx_v_nf;
  int __pyx_v_numdims;
  int __pyx_v_ndim;
  int __pyx_v_classp;
  int __pyx_v__grpid;
  size_t __pyx_v_nfields;
  size_t __pyx_v_offset;
  nc_type __pyx_v_field_typeid;
  int *__pyx_v_dim_sizes;
  char __pyx_v_field_namstring[(NC_MAX_NAME + 1)];
  char __pyx_v_cmp_namstring[(NC_MAX_NAME + 1)];
  PyObject *__pyx_v_name = NULL;
  PyObject *__pyx_v_names = NULL;
  PyObject *__pyx_v_formats = NULL;
  PyObject *__pyx_v_offsets = NULL;
  PyObject *__pyx_v_field_name = NULL;
  PyObject *__pyx_v_field_shape = NULL;
  PyObject *__pyx_v_field_type = NULL;
  PyObject *__pyx_v_format = NULL;
  PyObject *__pyx_v_dtype_dict = NULL;
  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;
  size_t __pyx_t_6;
  Py_ssize_t __pyx_t_7;
  size_t __pyx_t_8;
  size_t __pyx_t_9;
  int __pyx_t_10;
  int __pyx_t_11;
  int __pyx_t_12;
  int __pyx_t_13;
  int __pyx_t_14;
  PyObject *__pyx_t_15 = NULL;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17 = NULL;
  struct __pyx_opt_args_7netCDF4_8_netCDF4__read_compound __pyx_t_18;
  PyObject *__pyx_t_19 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_read_compound", 0);
  if (__pyx_optional_args) {
    if (__pyx_optional_args->__pyx_n > 0) {
      __pyx_v_endian = __pyx_optional_args->endian;
    }
  }

  /* "netCDF4/_netCDF4.pyx":6425
 *     cdef char cmp_namstring[NC_MAX_NAME+1]
 *     # get name and number of fields.
 *     _grpid = group._grpid             # <<<<<<<<<<<<<<
 *     with nogil:
 *         ierr = nc_inq_compound(_grpid, xtype, cmp_namstring, NULL, &nfields)
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_group, __pyx_mstate_global->__pyx_n_u_grpid); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6425, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyLong_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 6425, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v__grpid = __pyx_t_2;

  /* "netCDF4/_netCDF4.pyx":6426
 *     # get name and number of fields.
 *     _grpid = group._grpid
 *     with nogil:             # <<<<<<<<<<<<<<
 *         ierr = nc_inq_compound(_grpid, xtype, cmp_namstring, NULL, &nfields)
 *     _ensure_nc_success(ierr)
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "netCDF4/_netCDF4.pyx":6427
 *     _grpid = group._grpid
 *     with nogil:
 *         ierr = nc_inq_compound(_grpid, xtype, cmp_namstring, NULL, &nfields)             # <<<<<<<<<<<<<<
 *     _ensure_nc_success(ierr)
 *     name = cmp_namstring.decode('utf-8')
*/
        __pyx_v_ierr = nc_inq_compound(__pyx_v__grpid, __pyx_v_xtype, __pyx_v_cmp_namstring, NULL, (&__pyx_v_nfields));
      }

      /* "netCDF4/_netCDF4.pyx":6426
 *     # get name and number of fields.
 *     _grpid = group._grpid
 *     with nogil:             # <<<<<<<<<<<<<<
 *         ierr = nc_inq_compound(_grpid, xtype, cmp_namstring, NULL, &nfields)
 *     _ensure_nc_success(ierr)
*/
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "netCDF4/_netCDF4.pyx":6428
 *     with nogil:
 *         ierr = nc_inq_compound(_grpid, xtype, cmp_namstring, NULL, &nfields)
 *     _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 *     name = cmp_namstring.decode('utf-8')
 *     # loop over fields.
*/
  __pyx_t_3 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6428, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6428, __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_1 = __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_1)) __PYX_ERR(0, 6428, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":6429
 *         ierr = nc_inq_compound(_grpid, xtype, cmp_namstring, NULL, &nfields)
 *     _ensure_nc_success(ierr)
 *     name = cmp_namstring.decode('utf-8')             # <<<<<<<<<<<<<<
 *     # loop over fields.
 *     names = []
*/
  __pyx_t_7 = __Pyx_ssize_strlen(__pyx_v_cmp_namstring); if (unlikely(__pyx_t_7 == ((Py_ssize_t)-1))) __PYX_ERR(0, 6429, __pyx_L1_error)
  __pyx_t_1 = __Pyx_decode_c_string(__pyx_v_cmp_namstring, 0, __pyx_t_7, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6429, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_name = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":6431
 *     name = cmp_namstring.decode('utf-8')
 *     # loop over fields.
 *     names = []             # <<<<<<<<<<<<<<
 *     formats = []
 *     offsets = []
*/
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6431, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_names = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":6432
 *     # loop over fields.
 *     names = []
 *     formats = []             # <<<<<<<<<<<<<<
 *     offsets = []
 *     for nf in range(nfields):
*/
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6432, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_formats = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":6433
 *     names = []
 *     formats = []
 *     offsets = []             # <<<<<<<<<<<<<<
 *     for nf in range(nfields):
 *         with nogil:
*/
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6433, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_offsets = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":6434
 *     formats = []
 *     offsets = []
 *     for nf in range(nfields):             # <<<<<<<<<<<<<<
 *         with nogil:
 *             ierr = nc_inq_compound_field(_grpid,
*/
  __pyx_t_6 = __pyx_v_nfields;
  __pyx_t_8 = __pyx_t_6;
  for (__pyx_t_2 = 0; __pyx_t_2 < __pyx_t_8; __pyx_t_2+=1) {
    __pyx_v_nf = __pyx_t_2;

    /* "netCDF4/_netCDF4.pyx":6435
 *     offsets = []
 *     for nf in range(nfields):
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_inq_compound_field(_grpid,
 *                                          xtype,
*/
    {
        PyThreadState * _save;
        _save = PyEval_SaveThread();
        __Pyx_FastGIL_Remember();
        /*try:*/ {

          /* "netCDF4/_netCDF4.pyx":6436
 *     for nf in range(nfields):
 *         with nogil:
 *             ierr = nc_inq_compound_field(_grpid,             # <<<<<<<<<<<<<<
 *                                          xtype,
 *                                          nf,
*/
          __pyx_v_ierr = nc_inq_compound_field(__pyx_v__grpid, __pyx_v_xtype, __pyx_v_nf, __pyx_v_field_namstring, (&__pyx_v_offset), (&__pyx_v_field_typeid), (&__pyx_v_numdims), NULL);
        }

        /* "netCDF4/_netCDF4.pyx":6435
 *     offsets = []
 *     for nf in range(nfields):
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_inq_compound_field(_grpid,
 *                                          xtype,
*/
        /*finally:*/ {
          /*normal exit:*/{
            __Pyx_FastGIL_Forget();
            PyEval_RestoreThread(_save);
            goto __pyx_L12;
          }
          __pyx_L12:;
        }
    }

    /* "netCDF4/_netCDF4.pyx":6444
 *                                          &numdims,
 *                                          NULL)
 *         _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 *         dim_sizes = <int *>malloc(sizeof(int) * numdims)
 *         with nogil:
*/
    __pyx_t_4 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6444, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_3 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6444, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_9 = 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_9 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_3};
      __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __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_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6444, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":6445
 *                                          NULL)
 *         _ensure_nc_success(ierr)
 *         dim_sizes = <int *>malloc(sizeof(int) * numdims)             # <<<<<<<<<<<<<<
 *         with nogil:
 *             ierr = nc_inq_compound_field(_grpid,
*/
    __pyx_v_dim_sizes = ((int *)malloc(((sizeof(int)) * __pyx_v_numdims)));

    /* "netCDF4/_netCDF4.pyx":6446
 *         _ensure_nc_success(ierr)
 *         dim_sizes = <int *>malloc(sizeof(int) * numdims)
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_inq_compound_field(_grpid,
 *                                          xtype,
*/
    {
        PyThreadState * _save;
        _save = PyEval_SaveThread();
        __Pyx_FastGIL_Remember();
        /*try:*/ {

          /* "netCDF4/_netCDF4.pyx":6447
 *         dim_sizes = <int *>malloc(sizeof(int) * numdims)
 *         with nogil:
 *             ierr = nc_inq_compound_field(_grpid,             # <<<<<<<<<<<<<<
 *                                          xtype,
 *                                          nf,
*/
          __pyx_v_ierr = nc_inq_compound_field(__pyx_v__grpid, __pyx_v_xtype, __pyx_v_nf, __pyx_v_field_namstring, (&__pyx_v_offset), (&__pyx_v_field_typeid), (&__pyx_v_numdims), __pyx_v_dim_sizes);
        }

        /* "netCDF4/_netCDF4.pyx":6446
 *         _ensure_nc_success(ierr)
 *         dim_sizes = <int *>malloc(sizeof(int) * numdims)
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_inq_compound_field(_grpid,
 *                                          xtype,
*/
        /*finally:*/ {
          /*normal exit:*/{
            __Pyx_FastGIL_Forget();
            PyEval_RestoreThread(_save);
            goto __pyx_L17;
          }
          __pyx_L17:;
        }
    }

    /* "netCDF4/_netCDF4.pyx":6455
 *                                          &numdims,
 *                                          dim_sizes)
 *         _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 *         field_name = field_namstring.decode('utf-8')
 *         names.append(field_name)
*/
    __pyx_t_5 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6455, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6455, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_9 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
      assert(__pyx_t_5);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
      __pyx_t_9 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_4};
      __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_3, __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (__pyx_t_9*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 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(0, 6455, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":6456
 *                                          dim_sizes)
 *         _ensure_nc_success(ierr)
 *         field_name = field_namstring.decode('utf-8')             # <<<<<<<<<<<<<<
 *         names.append(field_name)
 *         offsets.append(offset)
*/
    __pyx_t_7 = __Pyx_ssize_strlen(__pyx_v_field_namstring); if (unlikely(__pyx_t_7 == ((Py_ssize_t)-1))) __PYX_ERR(0, 6456, __pyx_L1_error)
    __pyx_t_1 = __Pyx_decode_c_string(__pyx_v_field_namstring, 0, __pyx_t_7, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6456, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_XDECREF_SET(__pyx_v_field_name, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":6457
 *         _ensure_nc_success(ierr)
 *         field_name = field_namstring.decode('utf-8')
 *         names.append(field_name)             # <<<<<<<<<<<<<<
 *         offsets.append(offset)
 *         # if numdims=0, not an array.
*/
    __pyx_t_10 = __Pyx_PyObject_Append(__pyx_v_names, __pyx_v_field_name); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 6457, __pyx_L1_error)

    /* "netCDF4/_netCDF4.pyx":6458
 *         field_name = field_namstring.decode('utf-8')
 *         names.append(field_name)
 *         offsets.append(offset)             # <<<<<<<<<<<<<<
 *         # if numdims=0, not an array.
 *         field_shape = ()
*/
    __pyx_t_1 = __Pyx_PyLong_FromSize_t(__pyx_v_offset); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6458, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_offsets, __pyx_t_1); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 6458, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":6460
 *         offsets.append(offset)
 *         # if numdims=0, not an array.
 *         field_shape = ()             # <<<<<<<<<<<<<<
 *         if numdims != 0:
 *             for ndim in range(numdims):
*/
    __Pyx_INCREF(__pyx_mstate_global->__pyx_empty_tuple);
    __Pyx_XDECREF_SET(__pyx_v_field_shape, __pyx_mstate_global->__pyx_empty_tuple);

    /* "netCDF4/_netCDF4.pyx":6461
 *         # if numdims=0, not an array.
 *         field_shape = ()
 *         if numdims != 0:             # <<<<<<<<<<<<<<
 *             for ndim in range(numdims):
 *                 field_shape = field_shape + (dim_sizes[ndim],)
*/
    __pyx_t_11 = (__pyx_v_numdims != 0);
    if (__pyx_t_11) {

      /* "netCDF4/_netCDF4.pyx":6462
 *         field_shape = ()
 *         if numdims != 0:
 *             for ndim in range(numdims):             # <<<<<<<<<<<<<<
 *                 field_shape = field_shape + (dim_sizes[ndim],)
 *         free(dim_sizes)
*/
      __pyx_t_12 = __pyx_v_numdims;
      __pyx_t_13 = __pyx_t_12;
      for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
        __pyx_v_ndim = __pyx_t_14;

        /* "netCDF4/_netCDF4.pyx":6463
 *         if numdims != 0:
 *             for ndim in range(numdims):
 *                 field_shape = field_shape + (dim_sizes[ndim],)             # <<<<<<<<<<<<<<
 *         free(dim_sizes)
 *         # check to see if this field is a nested compound type.
*/
        __pyx_t_1 = __Pyx_PyLong_From_int((__pyx_v_dim_sizes[__pyx_v_ndim])); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6463, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6463, __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(0, 6463, __pyx_L1_error);
        __pyx_t_1 = 0;
        __pyx_t_1 = PyNumber_Add(__pyx_v_field_shape, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6463, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF_SET(__pyx_v_field_shape, __pyx_t_1);
        __pyx_t_1 = 0;
      }

      /* "netCDF4/_netCDF4.pyx":6461
 *         # if numdims=0, not an array.
 *         field_shape = ()
 *         if numdims != 0:             # <<<<<<<<<<<<<<
 *             for ndim in range(numdims):
 *                 field_shape = field_shape + (dim_sizes[ndim],)
*/
    }

    /* "netCDF4/_netCDF4.pyx":6464
 *             for ndim in range(numdims):
 *                 field_shape = field_shape + (dim_sizes[ndim],)
 *         free(dim_sizes)             # <<<<<<<<<<<<<<
 *         # check to see if this field is a nested compound type.
 *         try:
*/
    free(__pyx_v_dim_sizes);

    /* "netCDF4/_netCDF4.pyx":6466
 *         free(dim_sizes)
 *         # check to see if this field is a nested compound type.
 *         try:             # <<<<<<<<<<<<<<
 *             field_type =  _nctonptype[field_typeid]
 *             if endian is not None:
*/
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17);
      __Pyx_XGOTREF(__pyx_t_15);
      __Pyx_XGOTREF(__pyx_t_16);
      __Pyx_XGOTREF(__pyx_t_17);
      /*try:*/ {

        /* "netCDF4/_netCDF4.pyx":6467
 *         # check to see if this field is a nested compound type.
 *         try:
 *             field_type =  _nctonptype[field_typeid]             # <<<<<<<<<<<<<<
 *             if endian is not None:
 *                 format = endian + format
*/
        __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_nctonptype); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6467, __pyx_L21_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_1, __pyx_v_field_typeid, nc_type, 1, __Pyx_PyLong_From_nc_type, 0, 1, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6467, __pyx_L21_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_XDECREF_SET(__pyx_v_field_type, __pyx_t_3);
        __pyx_t_3 = 0;

        /* "netCDF4/_netCDF4.pyx":6468
 *         try:
 *             field_type =  _nctonptype[field_typeid]
 *             if endian is not None:             # <<<<<<<<<<<<<<
 *                 format = endian + format
 *         except KeyError:
*/
        __pyx_t_11 = (__pyx_v_endian != Py_None);
        if (__pyx_t_11) {

          /* "netCDF4/_netCDF4.pyx":6469
 *             field_type =  _nctonptype[field_typeid]
 *             if endian is not None:
 *                 format = endian + format             # <<<<<<<<<<<<<<
 *         except KeyError:
 *             with nogil:
*/
          if (unlikely(!__pyx_v_format)) { __Pyx_RaiseUnboundLocalError("format"); __PYX_ERR(0, 6469, __pyx_L21_error) }
          __pyx_t_3 = PyNumber_Add(__pyx_v_endian, __pyx_v_format); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6469, __pyx_L21_error)
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_XDECREF_SET(__pyx_v_format, __pyx_t_3);
          __pyx_t_3 = 0;

          /* "netCDF4/_netCDF4.pyx":6468
 *         try:
 *             field_type =  _nctonptype[field_typeid]
 *             if endian is not None:             # <<<<<<<<<<<<<<
 *                 format = endian + format
 *         except KeyError:
*/
        }

        /* "netCDF4/_netCDF4.pyx":6466
 *         free(dim_sizes)
 *         # check to see if this field is a nested compound type.
 *         try:             # <<<<<<<<<<<<<<
 *             field_type =  _nctonptype[field_typeid]
 *             if endian is not None:
*/
      }
      __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
      __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
      __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
      goto __pyx_L28_try_end;
      __pyx_L21_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;

      /* "netCDF4/_netCDF4.pyx":6470
 *             if endian is not None:
 *                 format = endian + format
 *         except KeyError:             # <<<<<<<<<<<<<<
 *             with nogil:
 *                 ierr = nc_inq_user_type(_grpid,
*/
      __pyx_t_12 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_KeyError))));
      if (__pyx_t_12) {
        __Pyx_AddTraceback("netCDF4._netCDF4._read_compound", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_1, &__pyx_t_4) < 0) __PYX_ERR(0, 6470, __pyx_L23_except_error)
        __Pyx_XGOTREF(__pyx_t_3);
        __Pyx_XGOTREF(__pyx_t_1);
        __Pyx_XGOTREF(__pyx_t_4);

        /* "netCDF4/_netCDF4.pyx":6471
 *                 format = endian + format
 *         except KeyError:
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 ierr = nc_inq_user_type(_grpid,
 *                        field_typeid,NULL,NULL,NULL,NULL,&classp)
*/
        {
            PyThreadState * _save;
            _save = PyEval_SaveThread();
            __Pyx_FastGIL_Remember();
            /*try:*/ {

              /* "netCDF4/_netCDF4.pyx":6472
 *         except KeyError:
 *             with nogil:
 *                 ierr = nc_inq_user_type(_grpid,             # <<<<<<<<<<<<<<
 *                        field_typeid,NULL,NULL,NULL,NULL,&classp)
 *             if classp == NC_COMPOUND: # a compound type
*/
              __pyx_v_ierr = nc_inq_user_type(__pyx_v__grpid, __pyx_v_field_typeid, NULL, NULL, NULL, NULL, (&__pyx_v_classp));
            }

            /* "netCDF4/_netCDF4.pyx":6471
 *                 format = endian + format
 *         except KeyError:
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 ierr = nc_inq_user_type(_grpid,
 *                        field_typeid,NULL,NULL,NULL,NULL,&classp)
*/
            /*finally:*/ {
              /*normal exit:*/{
                __Pyx_FastGIL_Forget();
                PyEval_RestoreThread(_save);
                goto __pyx_L36;
              }
              __pyx_L36:;
            }
        }

        /* "netCDF4/_netCDF4.pyx":6474
 *                 ierr = nc_inq_user_type(_grpid,
 *                        field_typeid,NULL,NULL,NULL,NULL,&classp)
 *             if classp == NC_COMPOUND: # a compound type             # <<<<<<<<<<<<<<
 *                 # recursively call this function?
 *                 field_type = _read_compound(group, field_typeid, endian=endian)
*/
        __pyx_t_11 = (__pyx_v_classp == NC_COMPOUND);
        if (likely(__pyx_t_11)) {

          /* "netCDF4/_netCDF4.pyx":6476
 *             if classp == NC_COMPOUND: # a compound type
 *                 # recursively call this function?
 *                 field_type = _read_compound(group, field_typeid, endian=endian)             # <<<<<<<<<<<<<<
 *             else:
 *                 raise KeyError('compound field of an unsupported data type')
*/
          __pyx_t_18.__pyx_n = 1;
          __pyx_t_18.endian = __pyx_v_endian;
          __pyx_t_5 = __pyx_f_7netCDF4_8_netCDF4__read_compound(__pyx_v_group, __pyx_v_field_typeid, &__pyx_t_18); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6476, __pyx_L23_except_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_XDECREF_SET(__pyx_v_field_type, __pyx_t_5);
          __pyx_t_5 = 0;

          /* "netCDF4/_netCDF4.pyx":6474
 *                 ierr = nc_inq_user_type(_grpid,
 *                        field_typeid,NULL,NULL,NULL,NULL,&classp)
 *             if classp == NC_COMPOUND: # a compound type             # <<<<<<<<<<<<<<
 *                 # recursively call this function?
 *                 field_type = _read_compound(group, field_typeid, endian=endian)
*/
          goto __pyx_L37;
        }

        /* "netCDF4/_netCDF4.pyx":6478
 *                 field_type = _read_compound(group, field_typeid, endian=endian)
 *             else:
 *                 raise KeyError('compound field of an unsupported data type')             # <<<<<<<<<<<<<<
 *         if field_shape != ():
 *             formats.append((field_type,field_shape))
*/
        /*else*/ {
          __pyx_t_19 = NULL;
          __pyx_t_9 = 1;
          {
            PyObject *__pyx_callargs[2] = {__pyx_t_19, __pyx_mstate_global->__pyx_kp_u_compound_field_of_an_unsupported};
            __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_KeyError)), __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (__pyx_t_9*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
            __Pyx_XDECREF(__pyx_t_19); __pyx_t_19 = 0;
            if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6478, __pyx_L23_except_error)
            __Pyx_GOTREF(__pyx_t_5);
          }
          __Pyx_Raise(__pyx_t_5, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __PYX_ERR(0, 6478, __pyx_L23_except_error)
        }
        __pyx_L37:;
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        goto __pyx_L22_exception_handled;
      }
      goto __pyx_L23_except_error;

      /* "netCDF4/_netCDF4.pyx":6466
 *         free(dim_sizes)
 *         # check to see if this field is a nested compound type.
 *         try:             # <<<<<<<<<<<<<<
 *             field_type =  _nctonptype[field_typeid]
 *             if endian is not None:
*/
      __pyx_L23_except_error:;
      __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);
      goto __pyx_L1_error;
      __pyx_L22_exception_handled:;
      __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_L28_try_end:;
    }

    /* "netCDF4/_netCDF4.pyx":6479
 *             else:
 *                 raise KeyError('compound field of an unsupported data type')
 *         if field_shape != ():             # <<<<<<<<<<<<<<
 *             formats.append((field_type,field_shape))
 *         else:
*/
    __pyx_t_4 = PyObject_RichCompare(__pyx_v_field_shape, __pyx_mstate_global->__pyx_empty_tuple, Py_NE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6479, __pyx_L1_error)
    __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_11 < 0))) __PYX_ERR(0, 6479, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (__pyx_t_11) {

      /* "netCDF4/_netCDF4.pyx":6480
 *                 raise KeyError('compound field of an unsupported data type')
 *         if field_shape != ():
 *             formats.append((field_type,field_shape))             # <<<<<<<<<<<<<<
 *         else:
 *             formats.append(field_type)
*/
      __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6480, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_INCREF(__pyx_v_field_type);
      __Pyx_GIVEREF(__pyx_v_field_type);
      if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_field_type) != (0)) __PYX_ERR(0, 6480, __pyx_L1_error);
      __Pyx_INCREF(__pyx_v_field_shape);
      __Pyx_GIVEREF(__pyx_v_field_shape);
      if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_field_shape) != (0)) __PYX_ERR(0, 6480, __pyx_L1_error);
      __pyx_t_10 = __Pyx_PyObject_Append(__pyx_v_formats, __pyx_t_4); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 6480, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

      /* "netCDF4/_netCDF4.pyx":6479
 *             else:
 *                 raise KeyError('compound field of an unsupported data type')
 *         if field_shape != ():             # <<<<<<<<<<<<<<
 *             formats.append((field_type,field_shape))
 *         else:
*/
      goto __pyx_L38;
    }

    /* "netCDF4/_netCDF4.pyx":6482
 *             formats.append((field_type,field_shape))
 *         else:
 *             formats.append(field_type)             # <<<<<<<<<<<<<<
 *     # make sure entries in lists sorted by offset.
 *     names = _sortbylist(names, offsets)
*/
    /*else*/ {
      __pyx_t_10 = __Pyx_PyObject_Append(__pyx_v_formats, __pyx_v_field_type); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 6482, __pyx_L1_error)
    }
    __pyx_L38:;
  }

  /* "netCDF4/_netCDF4.pyx":6484
 *             formats.append(field_type)
 *     # make sure entries in lists sorted by offset.
 *     names = _sortbylist(names, offsets)             # <<<<<<<<<<<<<<
 *     formats = _sortbylist(formats, offsets)
 *     offsets.sort()
*/
  __pyx_t_1 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_sortbylist); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6484, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_6 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(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_6 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_1, __pyx_v_names, __pyx_v_offsets};
    __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_3, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__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_4)) __PYX_ERR(0, 6484, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
  }
  __Pyx_DECREF_SET(__pyx_v_names, __pyx_t_4);
  __pyx_t_4 = 0;

  /* "netCDF4/_netCDF4.pyx":6485
 *     # make sure entries in lists sorted by offset.
 *     names = _sortbylist(names, offsets)
 *     formats = _sortbylist(formats, offsets)             # <<<<<<<<<<<<<<
 *     offsets.sort()
 *     # create a dict that can be converted into a numpy dtype.
*/
  __pyx_t_3 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_sortbylist); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6485, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
    assert(__pyx_t_3);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_1);
    __Pyx_INCREF(__pyx_t_3);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_1, __pyx__function);
    __pyx_t_6 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_v_formats, __pyx_v_offsets};
    __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_1, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6485, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
  }
  __Pyx_DECREF_SET(__pyx_v_formats, __pyx_t_4);
  __pyx_t_4 = 0;

  /* "netCDF4/_netCDF4.pyx":6486
 *     names = _sortbylist(names, offsets)
 *     formats = _sortbylist(formats, offsets)
 *     offsets.sort()             # <<<<<<<<<<<<<<
 *     # create a dict that can be converted into a numpy dtype.
 *     dtype_dict = {'names':names,'formats':formats,'offsets':offsets}
*/
  __pyx_t_10 = PyList_Sort(__pyx_v_offsets); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 6486, __pyx_L1_error)

  /* "netCDF4/_netCDF4.pyx":6488
 *     offsets.sort()
 *     # create a dict that can be converted into a numpy dtype.
 *     dtype_dict = {'names':names,'formats':formats,'offsets':offsets}             # <<<<<<<<<<<<<<
 *     return CompoundType(group, dtype_dict, name, typeid=xtype)
 * 
*/
  __pyx_t_4 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6488, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  if (PyDict_SetItem(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_names, __pyx_v_names) < (0)) __PYX_ERR(0, 6488, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_formats, __pyx_v_formats) < (0)) __PYX_ERR(0, 6488, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_offsets, __pyx_v_offsets) < (0)) __PYX_ERR(0, 6488, __pyx_L1_error)
  __pyx_v_dtype_dict = ((PyObject*)__pyx_t_4);
  __pyx_t_4 = 0;

  /* "netCDF4/_netCDF4.pyx":6489
 *     # create a dict that can be converted into a numpy dtype.
 *     dtype_dict = {'names':names,'formats':formats,'offsets':offsets}
 *     return CompoundType(group, dtype_dict, name, typeid=xtype)             # <<<<<<<<<<<<<<
 * 
 * # VLEN datatype support.
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = NULL;
  __pyx_t_3 = __Pyx_PyLong_From_nc_type(__pyx_v_xtype); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6489, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_6 = 1;
  {
    PyObject *__pyx_callargs[4 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_1, __pyx_v_group, __pyx_v_dtype_dict, __pyx_v_name};
    __pyx_t_5 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6489, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_typeid, __pyx_t_3, __pyx_t_5, __pyx_callargs+4, 0) < (0)) __PYX_ERR(0, 6489, __pyx_L1_error)
    __pyx_t_4 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_CompoundType, __pyx_callargs+__pyx_t_6, (4-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_5);
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6489, __pyx_L1_error)
    __Pyx_GOTREF((PyObject *)__pyx_t_4);
  }
  __pyx_r = ((PyObject *)__pyx_t_4);
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":6412
 *     return xtype
 * 
 * cdef _read_compound(group, nc_type xtype, endian=None):             # <<<<<<<<<<<<<<
 *     # read a compound data type id from an existing file,
 *     # construct a corresponding numpy dtype instance,
*/

  /* 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_19);
  __Pyx_AddTraceback("netCDF4._netCDF4._read_compound", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_name);
  __Pyx_XDECREF(__pyx_v_names);
  __Pyx_XDECREF(__pyx_v_formats);
  __Pyx_XDECREF(__pyx_v_offsets);
  __Pyx_XDECREF(__pyx_v_field_name);
  __Pyx_XDECREF(__pyx_v_field_shape);
  __Pyx_XDECREF(__pyx_v_field_type);
  __Pyx_XDECREF(__pyx_v_format);
  __Pyx_XDECREF(__pyx_v_dtype_dict);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":6505
 *     cdef public nc_type _nc_type
 *     cdef public dtype, name
 *     def __init__(self, grp, object dt, object dtype_name, **kwargs):             # <<<<<<<<<<<<<<
 *         """
 *         **`__init__(group, datatype, datatype_name)`**
*/

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_6VLType_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
PyDoc_STRVAR(__pyx_doc_7netCDF4_8_netCDF4_6VLType___init__, "\n        **`__init__(group, datatype, datatype_name)`**\n\n        VLType constructor.\n\n        **`group`**: `Group` instance to associate with the VLEN datatype.\n\n        **`datatype`**: An numpy dtype object describing the component type for the\n        variable length array.\n\n        **`datatype_name`**: a Python string containing a description of the\n        VLEN data type.\n\n        ***`Note`***: `VLType` instances should be created using the\n        `Dataset.createVLType` method of a `Dataset` or\n        `Group` instance, not using this class directly.\n        ");
#if CYTHON_UPDATE_DESCRIPTOR_DOC
struct wrapperbase __pyx_wrapperbase_7netCDF4_8_netCDF4_6VLType___init__;
#endif
static int __pyx_pw_7netCDF4_8_netCDF4_6VLType_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_grp = 0;
  PyObject *__pyx_v_dt = 0;
  PyObject *__pyx_v_dtype_name = 0;
  PyObject *__pyx_v_kwargs = 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("__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);
  __pyx_v_kwargs = PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return -1;
  __Pyx_GOTREF(__pyx_v_kwargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_grp,&__pyx_mstate_global->__pyx_n_u_dt,&__pyx_mstate_global->__pyx_n_u_dtype_name,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 6505, __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(0, 6505, __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(0, 6505, __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(0, 6505, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        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_kwargs, values, kwd_pos_args, __pyx_kwds_len, "__init__", 1) < (0)) __PYX_ERR(0, 6505, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 3; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, i); __PYX_ERR(0, 6505, __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(0, 6505, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 6505, __pyx_L3_error)
      values[2] = __Pyx_ArgRef_VARARGS(__pyx_args, 2);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 6505, __pyx_L3_error)
    }
    __pyx_v_grp = values[0];
    __pyx_v_dt = values[1];
    __pyx_v_dtype_name = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, __pyx_nargs); __PYX_ERR(0, 6505, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (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_kwargs); __pyx_v_kwargs = 0;
  __Pyx_AddTraceback("netCDF4._netCDF4.VLType.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_6VLType___init__(((struct __pyx_obj_7netCDF4_8_netCDF4_VLType *)__pyx_v_self), __pyx_v_grp, __pyx_v_dt, __pyx_v_dtype_name, __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_DECREF(__pyx_v_kwargs);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7netCDF4_8_netCDF4_6VLType___init__(struct __pyx_obj_7netCDF4_8_netCDF4_VLType *__pyx_v_self, PyObject *__pyx_v_grp, PyObject *__pyx_v_dt, PyObject *__pyx_v_dtype_name, PyObject *__pyx_v_kwargs) {
  nc_type __pyx_v_xtype;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  nc_type __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_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);
  __Pyx_INCREF(__pyx_v_dt);

  /* "netCDF4/_netCDF4.pyx":6524
 *         """
 *         cdef nc_type xtype
 *         if 'typeid' in kwargs:             # <<<<<<<<<<<<<<
 *             xtype = kwargs['typeid']
 *         else:
*/
  __pyx_t_1 = (__Pyx_PyDict_ContainsTF(__pyx_mstate_global->__pyx_n_u_typeid, __pyx_v_kwargs, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 6524, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "netCDF4/_netCDF4.pyx":6525
 *         cdef nc_type xtype
 *         if 'typeid' in kwargs:
 *             xtype = kwargs['typeid']             # <<<<<<<<<<<<<<
 *         else:
 *             xtype, dt = _def_vlen(grp, dt, dtype_name)
*/
    __pyx_t_2 = __Pyx_PyDict_GetItem(__pyx_v_kwargs, __pyx_mstate_global->__pyx_n_u_typeid); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6525, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyLong_As_nc_type(__pyx_t_2); if (unlikely((__pyx_t_3 == ((nc_type)-1)) && PyErr_Occurred())) __PYX_ERR(0, 6525, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_v_xtype = __pyx_t_3;

    /* "netCDF4/_netCDF4.pyx":6524
 *         """
 *         cdef nc_type xtype
 *         if 'typeid' in kwargs:             # <<<<<<<<<<<<<<
 *             xtype = kwargs['typeid']
 *         else:
*/
    goto __pyx_L3;
  }

  /* "netCDF4/_netCDF4.pyx":6527
 *             xtype = kwargs['typeid']
 *         else:
 *             xtype, dt = _def_vlen(grp, dt, dtype_name)             # <<<<<<<<<<<<<<
 *         self._nc_type = xtype
 *         self.dtype = dt
*/
  /*else*/ {
    __pyx_t_2 = __pyx_f_7netCDF4_8_netCDF4__def_vlen(__pyx_v_grp, __pyx_v_dt, __pyx_v_dtype_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6527, __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(0, 6527, __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(0, 6527, __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(0, 6527, __pyx_L1_error)
        __Pyx_XGOTREF(__pyx_t_5);
      }
      #else
      __pyx_t_4 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6527, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6527, __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_6 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6527, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __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_L4_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_L4_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_5);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 2) < (0)) __PYX_ERR(0, 6527, __pyx_L1_error)
      __pyx_t_7 = NULL;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L5_unpacking_done;
      __pyx_L4_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_7 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(0, 6527, __pyx_L1_error)
      __pyx_L5_unpacking_done:;
    }
    __pyx_t_3 = __Pyx_PyLong_As_nc_type(__pyx_t_4); if (unlikely((__pyx_t_3 == ((nc_type)-1)) && PyErr_Occurred())) __PYX_ERR(0, 6527, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_xtype = __pyx_t_3;
    __Pyx_DECREF_SET(__pyx_v_dt, __pyx_t_5);
    __pyx_t_5 = 0;
  }
  __pyx_L3:;

  /* "netCDF4/_netCDF4.pyx":6528
 *         else:
 *             xtype, dt = _def_vlen(grp, dt, dtype_name)
 *         self._nc_type = xtype             # <<<<<<<<<<<<<<
 *         self.dtype = dt
 *         if dt == str:
*/
  __pyx_v_self->_nc_type = __pyx_v_xtype;

  /* "netCDF4/_netCDF4.pyx":6529
 *             xtype, dt = _def_vlen(grp, dt, dtype_name)
 *         self._nc_type = xtype
 *         self.dtype = dt             # <<<<<<<<<<<<<<
 *         if dt == str:
 *             self.name = None
*/
  __Pyx_INCREF(__pyx_v_dt);
  __Pyx_GIVEREF(__pyx_v_dt);
  __Pyx_GOTREF(__pyx_v_self->dtype);
  __Pyx_DECREF(__pyx_v_self->dtype);
  __pyx_v_self->dtype = __pyx_v_dt;

  /* "netCDF4/_netCDF4.pyx":6530
 *         self._nc_type = xtype
 *         self.dtype = dt
 *         if dt == str:             # <<<<<<<<<<<<<<
 *             self.name = None
 *         else:
*/
  __pyx_t_2 = PyObject_RichCompare(__pyx_v_dt, ((PyObject *)(&PyUnicode_Type)), Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6530, __pyx_L1_error)
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 6530, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__pyx_t_1) {

    /* "netCDF4/_netCDF4.pyx":6531
 *         self.dtype = dt
 *         if dt == str:
 *             self.name = None             # <<<<<<<<<<<<<<
 *         else:
 *             self.name = dtype_name
*/
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    __Pyx_GOTREF(__pyx_v_self->name);
    __Pyx_DECREF(__pyx_v_self->name);
    __pyx_v_self->name = Py_None;

    /* "netCDF4/_netCDF4.pyx":6530
 *         self._nc_type = xtype
 *         self.dtype = dt
 *         if dt == str:             # <<<<<<<<<<<<<<
 *             self.name = None
 *         else:
*/
    goto __pyx_L6;
  }

  /* "netCDF4/_netCDF4.pyx":6533
 *             self.name = None
 *         else:
 *             self.name = dtype_name             # <<<<<<<<<<<<<<
 * 
 *     def __repr__(self):
*/
  /*else*/ {
    __Pyx_INCREF(__pyx_v_dtype_name);
    __Pyx_GIVEREF(__pyx_v_dtype_name);
    __Pyx_GOTREF(__pyx_v_self->name);
    __Pyx_DECREF(__pyx_v_self->name);
    __pyx_v_self->name = __pyx_v_dtype_name;
  }
  __pyx_L6:;

  /* "netCDF4/_netCDF4.pyx":6505
 *     cdef public nc_type _nc_type
 *     cdef public dtype, name
 *     def __init__(self, grp, object dt, object dtype_name, **kwargs):             # <<<<<<<<<<<<<<
 *         """
 *         **`__init__(group, datatype, datatype_name)`**
*/

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __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("netCDF4._netCDF4.VLType.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_dt);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":6535
 *             self.name = dtype_name
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return self.__str__()
 * 
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_6VLType_3__repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_6VLType_3__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_7netCDF4_8_netCDF4_6VLType_2__repr__(((struct __pyx_obj_7netCDF4_8_netCDF4_VLType *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6VLType_2__repr__(struct __pyx_obj_7netCDF4_8_netCDF4_VLType *__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("__repr__", 0);

  /* "netCDF4/_netCDF4.pyx":6536
 * 
 *     def __repr__(self):
 *         return self.__str__()             # <<<<<<<<<<<<<<
 * 
 *     def __str__(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_str_2, __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(0, 6536, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":6535
 *             self.name = dtype_name
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return self.__str__()
 * 
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("netCDF4._netCDF4.VLType.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":6538
 *         return self.__str__()
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         typ = repr(type(self)).replace("._netCDF4", "")
 *         if self.dtype == str:
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_6VLType_5__str__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_6VLType_5__str__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__str__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_6VLType_4__str__(((struct __pyx_obj_7netCDF4_8_netCDF4_VLType *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6VLType_4__str__(struct __pyx_obj_7netCDF4_8_netCDF4_VLType *__pyx_v_self) {
  PyObject *__pyx_v_typ = NULL;
  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[5];
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__str__", 0);

  /* "netCDF4/_netCDF4.pyx":6539
 * 
 *     def __str__(self):
 *         typ = repr(type(self)).replace("._netCDF4", "")             # <<<<<<<<<<<<<<
 *         if self.dtype == str:
 *             return '%r: string type' % (typ,)
*/
  __pyx_t_1 = PyObject_Repr(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6539, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (unlikely(__pyx_t_1 == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "replace");
    __PYX_ERR(0, 6539, __pyx_L1_error)
  }
  __pyx_t_2 = PyUnicode_Replace(((PyObject*)__pyx_t_1), __pyx_mstate_global->__pyx_kp_u_netCDF4, __pyx_mstate_global->__pyx_kp_u__4, -1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6539, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_typ = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":6540
 *     def __str__(self):
 *         typ = repr(type(self)).replace("._netCDF4", "")
 *         if self.dtype == str:             # <<<<<<<<<<<<<<
 *             return '%r: string type' % (typ,)
 *         else:
*/
  __pyx_t_2 = PyObject_RichCompare(__pyx_v_self->dtype, ((PyObject *)(&PyUnicode_Type)), Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6540, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 6540, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__pyx_t_3) {

    /* "netCDF4/_netCDF4.pyx":6541
 *         typ = repr(type(self)).replace("._netCDF4", "")
 *         if self.dtype == str:
 *             return '%r: string type' % (typ,)             # <<<<<<<<<<<<<<
 *         else:
 *             return "%r: name = '%s', numpy dtype = %s" %\
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_typ), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6541, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlace(__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_string_type); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6541, __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;

    /* "netCDF4/_netCDF4.pyx":6540
 *     def __str__(self):
 *         typ = repr(type(self)).replace("._netCDF4", "")
 *         if self.dtype == str:             # <<<<<<<<<<<<<<
 *             return '%r: string type' % (typ,)
 *         else:
*/
  }

  /* "netCDF4/_netCDF4.pyx":6543
 *             return '%r: string type' % (typ,)
 *         else:
 *             return "%r: name = '%s', numpy dtype = %s" %\             # <<<<<<<<<<<<<<
 *                 (typ, self.name, self.dtype)
 * 
*/
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);

    /* "netCDF4/_netCDF4.pyx":6544
 *         else:
 *             return "%r: name = '%s', numpy dtype = %s" %\
 *                 (typ, self.name, self.dtype)             # <<<<<<<<<<<<<<
 * 
 *     def __reduce__(self):
*/
    __pyx_t_1 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_typ), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6544, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Str(__pyx_v_self->name), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6544, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Str(__pyx_v_self->dtype), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6544, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5[0] = __pyx_t_1;
    __pyx_t_5[1] = __pyx_mstate_global->__pyx_kp_u_name_2;
    __pyx_t_5[2] = __pyx_t_2;
    __pyx_t_5[3] = __pyx_mstate_global->__pyx_kp_u_numpy_dtype;
    __pyx_t_5[4] = __pyx_t_4;

    /* "netCDF4/_netCDF4.pyx":6543
 *             return '%r: string type' % (typ,)
 *         else:
 *             return "%r: name = '%s', numpy dtype = %s" %\             # <<<<<<<<<<<<<<
 *                 (typ, self.name, self.dtype)
 * 
*/
    __pyx_t_6 = __Pyx_PyUnicode_Join(__pyx_t_5, 5, __Pyx_PyUnicode_GET_LENGTH(__pyx_t_1) + 10 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_2) + 17 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4), 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4));
    if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6543, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;
  }

  /* "netCDF4/_netCDF4.pyx":6538
 *         return self.__str__()
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         typ = repr(type(self)).replace("._netCDF4", "")
 *         if self.dtype == str:
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("netCDF4._netCDF4.VLType.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_typ);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":6546
 *                 (typ, self.name, self.dtype)
 * 
 *     def __reduce__(self):             # <<<<<<<<<<<<<<
 *         # raise error is user tries to pickle a VLType object.
 *         raise NotImplementedError('VLType is not picklable')
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_6VLType_7__reduce__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_6VLType_7__reduce__ = {"__reduce__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_6VLType_7__reduce__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_6VLType_7__reduce__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (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_7netCDF4_8_netCDF4_6VLType_6__reduce__(((struct __pyx_obj_7netCDF4_8_netCDF4_VLType *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6VLType_6__reduce__(CYTHON_UNUSED struct __pyx_obj_7netCDF4_8_netCDF4_VLType *__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("__reduce__", 0);

  /* "netCDF4/_netCDF4.pyx":6548
 *     def __reduce__(self):
 *         # raise error is user tries to pickle a VLType object.
 *         raise NotImplementedError('VLType is not picklable')             # <<<<<<<<<<<<<<
 * 
 * cdef _def_vlen(grp, object dt, object dtype_name):
*/
  __pyx_t_2 = NULL;
  __pyx_t_3 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_VLType_is_not_picklable};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_NotImplementedError)), __pyx_callargs+__pyx_t_3, (2-__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(0, 6548, __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(0, 6548, __pyx_L1_error)

  /* "netCDF4/_netCDF4.pyx":6546
 *                 (typ, self.name, self.dtype)
 * 
 *     def __reduce__(self):             # <<<<<<<<<<<<<<
 *         # raise error is user tries to pickle a VLType object.
 *         raise NotImplementedError('VLType is not picklable')
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("netCDF4._netCDF4.VLType.__reduce__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":6503
 * the user.
 *     """
 *     cdef public nc_type _nc_type             # <<<<<<<<<<<<<<
 *     cdef public dtype, name
 *     def __init__(self, grp, object dt, object dtype_name, **kwargs):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_6VLType_8_nc_type_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_6VLType_8_nc_type_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_7netCDF4_8_netCDF4_6VLType_8_nc_type___get__(((struct __pyx_obj_7netCDF4_8_netCDF4_VLType *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6VLType_8_nc_type___get__(struct __pyx_obj_7netCDF4_8_netCDF4_VLType *__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_PyLong_From_nc_type(__pyx_v_self->_nc_type); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6503, __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("netCDF4._netCDF4.VLType._nc_type.__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_7netCDF4_8_netCDF4_6VLType_8_nc_type_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_6VLType_8_nc_type_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_7netCDF4_8_netCDF4_6VLType_8_nc_type_2__set__(((struct __pyx_obj_7netCDF4_8_netCDF4_VLType *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_7netCDF4_8_netCDF4_6VLType_8_nc_type_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_VLType *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  nc_type __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __pyx_t_1 = __Pyx_PyLong_As_nc_type(__pyx_v_value); if (unlikely((__pyx_t_1 == ((nc_type)-1)) && PyErr_Occurred())) __PYX_ERR(0, 6503, __pyx_L1_error)
  __pyx_v_self->_nc_type = __pyx_t_1;

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("netCDF4._netCDF4.VLType._nc_type.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":6504
 *     """
 *     cdef public nc_type _nc_type
 *     cdef public dtype, name             # <<<<<<<<<<<<<<
 *     def __init__(self, grp, object dt, object dtype_name, **kwargs):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_6VLType_5dtype_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_6VLType_5dtype_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_7netCDF4_8_netCDF4_6VLType_5dtype___get__(((struct __pyx_obj_7netCDF4_8_netCDF4_VLType *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6VLType_5dtype___get__(struct __pyx_obj_7netCDF4_8_netCDF4_VLType *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->dtype);
  __pyx_r = __pyx_v_self->dtype;
  goto __pyx_L0;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_6VLType_5dtype_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_6VLType_5dtype_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_7netCDF4_8_netCDF4_6VLType_5dtype_2__set__(((struct __pyx_obj_7netCDF4_8_netCDF4_VLType *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_7netCDF4_8_netCDF4_6VLType_5dtype_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_VLType *__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->dtype);
  __Pyx_DECREF(__pyx_v_self->dtype);
  __pyx_v_self->dtype = __pyx_v_value;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_6VLType_5dtype_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_6VLType_5dtype_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_7netCDF4_8_netCDF4_6VLType_5dtype_4__del__(((struct __pyx_obj_7netCDF4_8_netCDF4_VLType *)__pyx_v_self));

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

static int __pyx_pf_7netCDF4_8_netCDF4_6VLType_5dtype_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_VLType *__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->dtype);
  __Pyx_DECREF(__pyx_v_self->dtype);
  __pyx_v_self->dtype = Py_None;

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

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_6VLType_4name_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_6VLType_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_7netCDF4_8_netCDF4_6VLType_4name___get__(((struct __pyx_obj_7netCDF4_8_netCDF4_VLType *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6VLType_4name___get__(struct __pyx_obj_7netCDF4_8_netCDF4_VLType *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->name);
  __pyx_r = __pyx_v_self->name;
  goto __pyx_L0;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_6VLType_4name_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_6VLType_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_7netCDF4_8_netCDF4_6VLType_4name_2__set__(((struct __pyx_obj_7netCDF4_8_netCDF4_VLType *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_7netCDF4_8_netCDF4_6VLType_4name_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_VLType *__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->name);
  __Pyx_DECREF(__pyx_v_self->name);
  __pyx_v_self->name = __pyx_v_value;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_6VLType_4name_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_6VLType_4name_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_7netCDF4_8_netCDF4_6VLType_4name_4__del__(((struct __pyx_obj_7netCDF4_8_netCDF4_VLType *)__pyx_v_self));

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

static int __pyx_pf_7netCDF4_8_netCDF4_6VLType_4name_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_VLType *__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->name);
  __Pyx_DECREF(__pyx_v_self->name);
  __pyx_v_self->name = Py_None;

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

/* "netCDF4/_netCDF4.pyx":6550
 *         raise NotImplementedError('VLType is not picklable')
 * 
 * cdef _def_vlen(grp, object dt, object dtype_name):             # <<<<<<<<<<<<<<
 *     # private function used to construct a netcdf VLEN data type
 *     # from a numpy dtype object or python str object by VLType.__init__.
*/

static PyObject *__pyx_f_7netCDF4_8_netCDF4__def_vlen(PyObject *__pyx_v_grp, PyObject *__pyx_v_dt, PyObject *__pyx_v_dtype_name) {
  nc_type __pyx_v_xtype;
  nc_type __pyx_v_xtype_tmp;
  int __pyx_v_ierr;
  int __pyx_v_grpid;
  char *__pyx_v_namstring;
  PyObject *__pyx_v_bytestr = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  char *__pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  size_t __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  nc_type __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_def_vlen", 0);
  __Pyx_INCREF(__pyx_v_dt);

  /* "netCDF4/_netCDF4.pyx":6558
 *     cdef char *namstring
 *     cdef char *nested_namstring
 *     grpid = grp._grpid             # <<<<<<<<<<<<<<
 *     if dt == str: # python string, use NC_STRING
 *         xtype = NC_STRING
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_mstate_global->__pyx_n_u_grpid); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6558, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyLong_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 6558, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_grpid = __pyx_t_2;

  /* "netCDF4/_netCDF4.pyx":6559
 *     cdef char *nested_namstring
 *     grpid = grp._grpid
 *     if dt == str: # python string, use NC_STRING             # <<<<<<<<<<<<<<
 *         xtype = NC_STRING
 *         # dtype_name ignored
*/
  __pyx_t_1 = PyObject_RichCompare(__pyx_v_dt, ((PyObject *)(&PyUnicode_Type)), Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6559, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 6559, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_3) {

    /* "netCDF4/_netCDF4.pyx":6560
 *     grpid = grp._grpid
 *     if dt == str: # python string, use NC_STRING
 *         xtype = NC_STRING             # <<<<<<<<<<<<<<
 *         # dtype_name ignored
 *     else: # numpy datatype
*/
    __pyx_v_xtype = NC_STRING;

    /* "netCDF4/_netCDF4.pyx":6559
 *     cdef char *nested_namstring
 *     grpid = grp._grpid
 *     if dt == str: # python string, use NC_STRING             # <<<<<<<<<<<<<<
 *         xtype = NC_STRING
 *         # dtype_name ignored
*/
    goto __pyx_L3;
  }

  /* "netCDF4/_netCDF4.pyx":6563
 *         # dtype_name ignored
 *     else: # numpy datatype
 *         bytestr = _strencode(dtype_name)             # <<<<<<<<<<<<<<
 *         namstring = bytestr
 *         dt = numpy.dtype(dt) # convert to numpy datatype.
*/
  /*else*/ {
    __pyx_t_1 = __pyx_f_7netCDF4_8_netCDF4__strencode(__pyx_v_dtype_name, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6563, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_v_bytestr = __pyx_t_1;
    __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":6564
 *     else: # numpy datatype
 *         bytestr = _strencode(dtype_name)
 *         namstring = bytestr             # <<<<<<<<<<<<<<
 *         dt = numpy.dtype(dt) # convert to numpy datatype.
 *         if dt.str[1:] in _supportedtypes:
*/
    __pyx_t_4 = __Pyx_PyObject_AsWritableString(__pyx_v_bytestr); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 6564, __pyx_L1_error)
    __pyx_v_namstring = __pyx_t_4;

    /* "netCDF4/_netCDF4.pyx":6565
 *         bytestr = _strencode(dtype_name)
 *         namstring = bytestr
 *         dt = numpy.dtype(dt) # convert to numpy datatype.             # <<<<<<<<<<<<<<
 *         if dt.str[1:] in _supportedtypes:
 *             # find netCDF primitive data type corresponding to
*/
    __pyx_t_5 = NULL;
    __pyx_t_6 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_dt};
      __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_5numpy_dtype, __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_1)) __PYX_ERR(0, 6565, __pyx_L1_error)
      __Pyx_GOTREF((PyObject *)__pyx_t_1);
    }
    __Pyx_DECREF_SET(__pyx_v_dt, ((PyObject *)__pyx_t_1));
    __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":6566
 *         namstring = bytestr
 *         dt = numpy.dtype(dt) # convert to numpy datatype.
 *         if dt.str[1:] in _supportedtypes:             # <<<<<<<<<<<<<<
 *             # find netCDF primitive data type corresponding to
 *             # specified numpy data type.
*/
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_dt, __pyx_mstate_global->__pyx_n_u_str); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6566, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_5 = __Pyx_PyObject_GetSlice(__pyx_t_1, 1, 0, NULL, NULL, &__pyx_mstate_global->__pyx_slice[0], 1, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6566, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_supportedtypes); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6566, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = (__Pyx_PySequence_ContainsTF(__pyx_t_5, __pyx_t_1, Py_EQ)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 6566, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (likely(__pyx_t_3)) {

      /* "netCDF4/_netCDF4.pyx":6569
 *             # find netCDF primitive data type corresponding to
 *             # specified numpy data type.
 *             xtype_tmp = _nptonctype[dt.str[1:]]             # <<<<<<<<<<<<<<
 *             with nogil:
 *                 ierr = nc_def_vlen(grpid, namstring, xtype_tmp, &xtype);
*/
      __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_nptonctype); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6569, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_dt, __pyx_mstate_global->__pyx_n_u_str); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6569, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_7 = __Pyx_PyObject_GetSlice(__pyx_t_5, 1, 0, NULL, NULL, &__pyx_mstate_global->__pyx_slice[0], 1, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6569, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6569, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_8 = __Pyx_PyLong_As_nc_type(__pyx_t_5); if (unlikely((__pyx_t_8 == ((nc_type)-1)) && PyErr_Occurred())) __PYX_ERR(0, 6569, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_v_xtype_tmp = __pyx_t_8;

      /* "netCDF4/_netCDF4.pyx":6570
 *             # specified numpy data type.
 *             xtype_tmp = _nptonctype[dt.str[1:]]
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 ierr = nc_def_vlen(grpid, namstring, xtype_tmp, &xtype);
 *             _ensure_nc_success(ierr)
*/
      {
          PyThreadState * _save;
          _save = PyEval_SaveThread();
          __Pyx_FastGIL_Remember();
          /*try:*/ {

            /* "netCDF4/_netCDF4.pyx":6571
 *             xtype_tmp = _nptonctype[dt.str[1:]]
 *             with nogil:
 *                 ierr = nc_def_vlen(grpid, namstring, xtype_tmp, &xtype);             # <<<<<<<<<<<<<<
 *             _ensure_nc_success(ierr)
 *         else:
*/
            __pyx_v_ierr = nc_def_vlen(__pyx_v_grpid, __pyx_v_namstring, __pyx_v_xtype_tmp, (&__pyx_v_xtype));
          }

          /* "netCDF4/_netCDF4.pyx":6570
 *             # specified numpy data type.
 *             xtype_tmp = _nptonctype[dt.str[1:]]
 *             with nogil:             # <<<<<<<<<<<<<<
 *                 ierr = nc_def_vlen(grpid, namstring, xtype_tmp, &xtype);
 *             _ensure_nc_success(ierr)
*/
          /*finally:*/ {
            /*normal exit:*/{
              __Pyx_FastGIL_Forget();
              PyEval_RestoreThread(_save);
              goto __pyx_L7;
            }
            __pyx_L7:;
          }
      }

      /* "netCDF4/_netCDF4.pyx":6572
 *             with nogil:
 *                 ierr = nc_def_vlen(grpid, namstring, xtype_tmp, &xtype);
 *             _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 *         else:
 *             raise KeyError("unsupported datatype specified for VLEN")
*/
      __pyx_t_7 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6572, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_9 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 6572, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_6 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_1))) {
        __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1);
        assert(__pyx_t_7);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_1);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_1, __pyx__function);
        __pyx_t_6 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_9};
        __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_1, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6572, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
      }
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "netCDF4/_netCDF4.pyx":6566
 *         namstring = bytestr
 *         dt = numpy.dtype(dt) # convert to numpy datatype.
 *         if dt.str[1:] in _supportedtypes:             # <<<<<<<<<<<<<<
 *             # find netCDF primitive data type corresponding to
 *             # specified numpy data type.
*/
      goto __pyx_L4;
    }

    /* "netCDF4/_netCDF4.pyx":6574
 *             _ensure_nc_success(ierr)
 *         else:
 *             raise KeyError("unsupported datatype specified for VLEN")             # <<<<<<<<<<<<<<
 *     return xtype, dt
 * 
*/
    /*else*/ {
      __pyx_t_1 = NULL;
      __pyx_t_6 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_mstate_global->__pyx_kp_u_unsupported_datatype_specified_f};
        __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_KeyError)), __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6574, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
      }
      __Pyx_Raise(__pyx_t_5, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __PYX_ERR(0, 6574, __pyx_L1_error)
    }
    __pyx_L4:;
  }
  __pyx_L3:;

  /* "netCDF4/_netCDF4.pyx":6575
 *         else:
 *             raise KeyError("unsupported datatype specified for VLEN")
 *     return xtype, dt             # <<<<<<<<<<<<<<
 * 
 * cdef _read_vlen(group, nc_type xtype, endian=None):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_5 = __Pyx_PyLong_From_nc_type(__pyx_v_xtype); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6575, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6575, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_5);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_5) != (0)) __PYX_ERR(0, 6575, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_dt);
  __Pyx_GIVEREF(__pyx_v_dt);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_dt) != (0)) __PYX_ERR(0, 6575, __pyx_L1_error);
  __pyx_t_5 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":6550
 *         raise NotImplementedError('VLType is not picklable')
 * 
 * cdef _def_vlen(grp, object dt, object dtype_name):             # <<<<<<<<<<<<<<
 *     # private function used to construct a netcdf VLEN data type
 *     # from a numpy dtype object or python str object by VLType.__init__.
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("netCDF4._netCDF4._def_vlen", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_bytestr);
  __Pyx_XDECREF(__pyx_v_dt);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":6577
 *     return xtype, dt
 * 
 * cdef _read_vlen(group, nc_type xtype, endian=None):             # <<<<<<<<<<<<<<
 *     # read a VLEN data type id from an existing file,
 *     # construct a corresponding numpy dtype instance,
*/

static PyObject *__pyx_f_7netCDF4_8_netCDF4__read_vlen(PyObject *__pyx_v_group, nc_type __pyx_v_xtype, struct __pyx_opt_args_7netCDF4_8_netCDF4__read_vlen *__pyx_optional_args) {
  PyObject *__pyx_v_endian = ((PyObject *)Py_None);
  int __pyx_v_ierr;
  int __pyx_v_grpid;
  size_t __pyx_v_vlsize;
  nc_type __pyx_v_base_xtype;
  char __pyx_v_vl_namstring[(NC_MAX_NAME + 1)];
  PyObject *__pyx_v_dt = NULL;
  PyObject *__pyx_v_name = NULL;
  PyObject *__pyx_v_datatype = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  size_t __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 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_read_vlen", 0);
  if (__pyx_optional_args) {
    if (__pyx_optional_args->__pyx_n > 0) {
      __pyx_v_endian = __pyx_optional_args->endian;
    }
  }

  /* "netCDF4/_netCDF4.pyx":6586
 *     cdef nc_type base_xtype
 *     cdef char vl_namstring[NC_MAX_NAME+1]
 *     grpid = group._grpid             # <<<<<<<<<<<<<<
 *     if xtype == NC_STRING:
 *         dt = str
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_group, __pyx_mstate_global->__pyx_n_u_grpid); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6586, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyLong_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 6586, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_grpid = __pyx_t_2;

  /* "netCDF4/_netCDF4.pyx":6587
 *     cdef char vl_namstring[NC_MAX_NAME+1]
 *     grpid = group._grpid
 *     if xtype == NC_STRING:             # <<<<<<<<<<<<<<
 *         dt = str
 *         name = None
*/
  __pyx_t_3 = (__pyx_v_xtype == NC_STRING);
  if (__pyx_t_3) {

    /* "netCDF4/_netCDF4.pyx":6588
 *     grpid = group._grpid
 *     if xtype == NC_STRING:
 *         dt = str             # <<<<<<<<<<<<<<
 *         name = None
 *     else:
*/
    __Pyx_INCREF((PyObject *)(&PyUnicode_Type));
    __pyx_v_dt = ((PyObject *)(&PyUnicode_Type));

    /* "netCDF4/_netCDF4.pyx":6589
 *     if xtype == NC_STRING:
 *         dt = str
 *         name = None             # <<<<<<<<<<<<<<
 *     else:
 *         with nogil:
*/
    __Pyx_INCREF(Py_None);
    __pyx_v_name = Py_None;

    /* "netCDF4/_netCDF4.pyx":6587
 *     cdef char vl_namstring[NC_MAX_NAME+1]
 *     grpid = group._grpid
 *     if xtype == NC_STRING:             # <<<<<<<<<<<<<<
 *         dt = str
 *         name = None
*/
    goto __pyx_L3;
  }

  /* "netCDF4/_netCDF4.pyx":6591
 *         name = None
 *     else:
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_inq_vlen(grpid, xtype, vl_namstring, &vlsize, &base_xtype)
 *         _ensure_nc_success(ierr)
*/
  /*else*/ {
    {
        PyThreadState * _save;
        _save = PyEval_SaveThread();
        __Pyx_FastGIL_Remember();
        /*try:*/ {

          /* "netCDF4/_netCDF4.pyx":6592
 *     else:
 *         with nogil:
 *             ierr = nc_inq_vlen(grpid, xtype, vl_namstring, &vlsize, &base_xtype)             # <<<<<<<<<<<<<<
 *         _ensure_nc_success(ierr)
 *         name = vl_namstring.decode('utf-8')
*/
          __pyx_v_ierr = nc_inq_vlen(__pyx_v_grpid, __pyx_v_xtype, __pyx_v_vl_namstring, (&__pyx_v_vlsize), (&__pyx_v_base_xtype));
        }

        /* "netCDF4/_netCDF4.pyx":6591
 *         name = None
 *     else:
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_inq_vlen(grpid, xtype, vl_namstring, &vlsize, &base_xtype)
 *         _ensure_nc_success(ierr)
*/
        /*finally:*/ {
          /*normal exit:*/{
            __Pyx_FastGIL_Forget();
            PyEval_RestoreThread(_save);
            goto __pyx_L6;
          }
          __pyx_L6:;
        }
    }

    /* "netCDF4/_netCDF4.pyx":6593
 *         with nogil:
 *             ierr = nc_inq_vlen(grpid, xtype, vl_namstring, &vlsize, &base_xtype)
 *         _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 *         name = vl_namstring.decode('utf-8')
 *         try:
*/
    __pyx_t_4 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6593, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6593, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = 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_7 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_6};
      __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __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;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6593, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":6594
 *             ierr = nc_inq_vlen(grpid, xtype, vl_namstring, &vlsize, &base_xtype)
 *         _ensure_nc_success(ierr)
 *         name = vl_namstring.decode('utf-8')             # <<<<<<<<<<<<<<
 *         try:
 *             datatype = _nctonptype[base_xtype]
*/
    __pyx_t_8 = __Pyx_ssize_strlen(__pyx_v_vl_namstring); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(0, 6594, __pyx_L1_error)
    __pyx_t_1 = __Pyx_decode_c_string(__pyx_v_vl_namstring, 0, __pyx_t_8, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6594, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_v_name = __pyx_t_1;
    __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":6595
 *         _ensure_nc_success(ierr)
 *         name = vl_namstring.decode('utf-8')
 *         try:             # <<<<<<<<<<<<<<
 *             datatype = _nctonptype[base_xtype]
 *             if endian is not None: datatype = endian + datatype
*/
    {
      __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:*/ {

        /* "netCDF4/_netCDF4.pyx":6596
 *         name = vl_namstring.decode('utf-8')
 *         try:
 *             datatype = _nctonptype[base_xtype]             # <<<<<<<<<<<<<<
 *             if endian is not None: datatype = endian + datatype
 *             dt = numpy.dtype(datatype) # see if it is a primitive type
*/
        __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_nctonptype); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6596, __pyx_L7_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_1, __pyx_v_base_xtype, nc_type, 1, __Pyx_PyLong_From_nc_type, 0, 1, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6596, __pyx_L7_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_v_datatype = __pyx_t_5;
        __pyx_t_5 = 0;

        /* "netCDF4/_netCDF4.pyx":6597
 *         try:
 *             datatype = _nctonptype[base_xtype]
 *             if endian is not None: datatype = endian + datatype             # <<<<<<<<<<<<<<
 *             dt = numpy.dtype(datatype) # see if it is a primitive type
 *         except KeyError:
*/
        __pyx_t_3 = (__pyx_v_endian != Py_None);
        if (__pyx_t_3) {
          __pyx_t_5 = PyNumber_Add(__pyx_v_endian, __pyx_v_datatype); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6597, __pyx_L7_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_DECREF_SET(__pyx_v_datatype, __pyx_t_5);
          __pyx_t_5 = 0;
        }

        /* "netCDF4/_netCDF4.pyx":6598
 *             datatype = _nctonptype[base_xtype]
 *             if endian is not None: datatype = endian + datatype
 *             dt = numpy.dtype(datatype) # see if it is a primitive type             # <<<<<<<<<<<<<<
 *         except KeyError:
 *             raise KeyError("unsupported component type for VLEN")
*/
        __pyx_t_1 = NULL;
        __pyx_t_7 = 1;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_v_datatype};
          __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_5numpy_dtype, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
          if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6598, __pyx_L7_error)
          __Pyx_GOTREF((PyObject *)__pyx_t_5);
        }
        __pyx_v_dt = ((PyObject *)__pyx_t_5);
        __pyx_t_5 = 0;

        /* "netCDF4/_netCDF4.pyx":6595
 *         _ensure_nc_success(ierr)
 *         name = vl_namstring.decode('utf-8')
 *         try:             # <<<<<<<<<<<<<<
 *             datatype = _nctonptype[base_xtype]
 *             if endian is not None: datatype = endian + datatype
*/
      }
      __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_L12_try_end;
      __pyx_L7_error:;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 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;

      /* "netCDF4/_netCDF4.pyx":6599
 *             if endian is not None: datatype = endian + datatype
 *             dt = numpy.dtype(datatype) # see if it is a primitive type
 *         except KeyError:             # <<<<<<<<<<<<<<
 *             raise KeyError("unsupported component type for VLEN")
 *     return VLType(group, dt, name, typeid=xtype)
*/
      __pyx_t_2 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_KeyError))));
      if (__pyx_t_2) {
        __Pyx_AddTraceback("netCDF4._netCDF4._read_vlen", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_1, &__pyx_t_6) < 0) __PYX_ERR(0, 6599, __pyx_L9_except_error)
        __Pyx_XGOTREF(__pyx_t_5);
        __Pyx_XGOTREF(__pyx_t_1);
        __Pyx_XGOTREF(__pyx_t_6);

        /* "netCDF4/_netCDF4.pyx":6600
 *             dt = numpy.dtype(datatype) # see if it is a primitive type
 *         except KeyError:
 *             raise KeyError("unsupported component type for VLEN")             # <<<<<<<<<<<<<<
 *     return VLType(group, dt, name, typeid=xtype)
 * 
*/
        __pyx_t_12 = NULL;
        __pyx_t_7 = 1;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_12, __pyx_mstate_global->__pyx_kp_u_unsupported_component_type_for_V};
          __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_KeyError)), __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
          if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6600, __pyx_L9_except_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(0, 6600, __pyx_L9_except_error)
      }
      goto __pyx_L9_except_error;

      /* "netCDF4/_netCDF4.pyx":6595
 *         _ensure_nc_success(ierr)
 *         name = vl_namstring.decode('utf-8')
 *         try:             # <<<<<<<<<<<<<<
 *             datatype = _nctonptype[base_xtype]
 *             if endian is not None: datatype = endian + datatype
*/
      __pyx_L9_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_L12_try_end:;
    }
  }
  __pyx_L3:;

  /* "netCDF4/_netCDF4.pyx":6601
 *         except KeyError:
 *             raise KeyError("unsupported component type for VLEN")
 *     return VLType(group, dt, name, typeid=xtype)             # <<<<<<<<<<<<<<
 * 
 * # Enum datatype support.
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = NULL;
  __pyx_t_5 = __Pyx_PyLong_From_nc_type(__pyx_v_xtype); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6601, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = 1;
  {
    PyObject *__pyx_callargs[4 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_1, __pyx_v_group, __pyx_v_dt, __pyx_v_name};
    __pyx_t_4 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6601, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_typeid, __pyx_t_5, __pyx_t_4, __pyx_callargs+4, 0) < (0)) __PYX_ERR(0, 6601, __pyx_L1_error)
    __pyx_t_6 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_VLType, __pyx_callargs+__pyx_t_7, (4-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_4);
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6601, __pyx_L1_error)
    __Pyx_GOTREF((PyObject *)__pyx_t_6);
  }
  __pyx_r = ((PyObject *)__pyx_t_6);
  __pyx_t_6 = 0;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":6577
 *     return xtype, dt
 * 
 * cdef _read_vlen(group, nc_type xtype, endian=None):             # <<<<<<<<<<<<<<
 *     # read a VLEN data type id from an existing file,
 *     # construct a corresponding numpy dtype instance,
*/

  /* 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_XDECREF(__pyx_t_12);
  __Pyx_AddTraceback("netCDF4._netCDF4._read_vlen", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_dt);
  __Pyx_XDECREF(__pyx_v_name);
  __Pyx_XDECREF(__pyx_v_datatype);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":6617
 *     cdef public nc_type _nc_type
 *     cdef public dtype, name, enum_dict
 *     def __init__(self, grp, object dt, object dtype_name, object enum_dict, **kwargs):             # <<<<<<<<<<<<<<
 *         """
 *         **`__init__(group, datatype, datatype_name, enum_dict)`**
*/

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_8EnumType_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
PyDoc_STRVAR(__pyx_doc_7netCDF4_8_netCDF4_8EnumType___init__, "\n        **`__init__(group, datatype, datatype_name, enum_dict)`**\n\n        EnumType constructor.\n\n        **`group`**: `Group` instance to associate with the VLEN datatype.\n\n        **`datatype`**: An numpy integer dtype object describing the base type\n        for the Enum.\n\n        **`datatype_name`**: a Python string containing a description of the\n        Enum data type.\n\n        **`enum_dict`**: a Python dictionary containing the Enum field/value\n        pairs.\n\n        ***`Note`***: `EnumType` instances should be created using the\n        `Dataset.createEnumType` method of a `Dataset` or\n        `Group` instance, not using this class directly.\n        ");
#if CYTHON_UPDATE_DESCRIPTOR_DOC
struct wrapperbase __pyx_wrapperbase_7netCDF4_8_netCDF4_8EnumType___init__;
#endif
static int __pyx_pw_7netCDF4_8_netCDF4_8EnumType_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_grp = 0;
  PyObject *__pyx_v_dt = 0;
  PyObject *__pyx_v_dtype_name = 0;
  PyObject *__pyx_v_enum_dict = 0;
  PyObject *__pyx_v_kwargs = 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);
  __pyx_v_kwargs = PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return -1;
  __Pyx_GOTREF(__pyx_v_kwargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_grp,&__pyx_mstate_global->__pyx_n_u_dt,&__pyx_mstate_global->__pyx_n_u_dtype_name,&__pyx_mstate_global->__pyx_n_u_enum_dict,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 6617, __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(0, 6617, __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(0, 6617, __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(0, 6617, __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(0, 6617, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        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_kwargs, values, kwd_pos_args, __pyx_kwds_len, "__init__", 1) < (0)) __PYX_ERR(0, 6617, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 4; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, i); __PYX_ERR(0, 6617, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 4)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 6617, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 6617, __pyx_L3_error)
      values[2] = __Pyx_ArgRef_VARARGS(__pyx_args, 2);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 6617, __pyx_L3_error)
      values[3] = __Pyx_ArgRef_VARARGS(__pyx_args, 3);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 6617, __pyx_L3_error)
    }
    __pyx_v_grp = values[0];
    __pyx_v_dt = values[1];
    __pyx_v_dtype_name = values[2];
    __pyx_v_enum_dict = values[3];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, __pyx_nargs); __PYX_ERR(0, 6617, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (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_kwargs); __pyx_v_kwargs = 0;
  __Pyx_AddTraceback("netCDF4._netCDF4.EnumType.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_8EnumType___init__(((struct __pyx_obj_7netCDF4_8_netCDF4_EnumType *)__pyx_v_self), __pyx_v_grp, __pyx_v_dt, __pyx_v_dtype_name, __pyx_v_enum_dict, __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_DECREF(__pyx_v_kwargs);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7netCDF4_8_netCDF4_8EnumType___init__(struct __pyx_obj_7netCDF4_8_netCDF4_EnumType *__pyx_v_self, PyObject *__pyx_v_grp, PyObject *__pyx_v_dt, PyObject *__pyx_v_dtype_name, PyObject *__pyx_v_enum_dict, PyObject *__pyx_v_kwargs) {
  nc_type __pyx_v_xtype;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  nc_type __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_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);
  __Pyx_INCREF(__pyx_v_dt);

  /* "netCDF4/_netCDF4.pyx":6639
 *         """
 *         cdef nc_type xtype
 *         if 'typeid' in kwargs:             # <<<<<<<<<<<<<<
 *             xtype = kwargs['typeid']
 *         else:
*/
  __pyx_t_1 = (__Pyx_PyDict_ContainsTF(__pyx_mstate_global->__pyx_n_u_typeid, __pyx_v_kwargs, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 6639, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "netCDF4/_netCDF4.pyx":6640
 *         cdef nc_type xtype
 *         if 'typeid' in kwargs:
 *             xtype = kwargs['typeid']             # <<<<<<<<<<<<<<
 *         else:
 *             xtype, dt = _def_enum(grp, dt, dtype_name, enum_dict)
*/
    __pyx_t_2 = __Pyx_PyDict_GetItem(__pyx_v_kwargs, __pyx_mstate_global->__pyx_n_u_typeid); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6640, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyLong_As_nc_type(__pyx_t_2); if (unlikely((__pyx_t_3 == ((nc_type)-1)) && PyErr_Occurred())) __PYX_ERR(0, 6640, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_v_xtype = __pyx_t_3;

    /* "netCDF4/_netCDF4.pyx":6639
 *         """
 *         cdef nc_type xtype
 *         if 'typeid' in kwargs:             # <<<<<<<<<<<<<<
 *             xtype = kwargs['typeid']
 *         else:
*/
    goto __pyx_L3;
  }

  /* "netCDF4/_netCDF4.pyx":6642
 *             xtype = kwargs['typeid']
 *         else:
 *             xtype, dt = _def_enum(grp, dt, dtype_name, enum_dict)             # <<<<<<<<<<<<<<
 *         self._nc_type = xtype
 *         self.dtype = dt
*/
  /*else*/ {
    __pyx_t_2 = __pyx_f_7netCDF4_8_netCDF4__def_enum(__pyx_v_grp, __pyx_v_dt, __pyx_v_dtype_name, __pyx_v_enum_dict); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6642, __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(0, 6642, __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(0, 6642, __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(0, 6642, __pyx_L1_error)
        __Pyx_XGOTREF(__pyx_t_5);
      }
      #else
      __pyx_t_4 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6642, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6642, __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_6 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6642, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __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_L4_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_L4_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_5);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 2) < (0)) __PYX_ERR(0, 6642, __pyx_L1_error)
      __pyx_t_7 = NULL;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L5_unpacking_done;
      __pyx_L4_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_7 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(0, 6642, __pyx_L1_error)
      __pyx_L5_unpacking_done:;
    }
    __pyx_t_3 = __Pyx_PyLong_As_nc_type(__pyx_t_4); if (unlikely((__pyx_t_3 == ((nc_type)-1)) && PyErr_Occurred())) __PYX_ERR(0, 6642, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_xtype = __pyx_t_3;
    __Pyx_DECREF_SET(__pyx_v_dt, __pyx_t_5);
    __pyx_t_5 = 0;
  }
  __pyx_L3:;

  /* "netCDF4/_netCDF4.pyx":6643
 *         else:
 *             xtype, dt = _def_enum(grp, dt, dtype_name, enum_dict)
 *         self._nc_type = xtype             # <<<<<<<<<<<<<<
 *         self.dtype = dt
 *         self.name = dtype_name
*/
  __pyx_v_self->_nc_type = __pyx_v_xtype;

  /* "netCDF4/_netCDF4.pyx":6644
 *             xtype, dt = _def_enum(grp, dt, dtype_name, enum_dict)
 *         self._nc_type = xtype
 *         self.dtype = dt             # <<<<<<<<<<<<<<
 *         self.name = dtype_name
 *         self.enum_dict = enum_dict
*/
  __Pyx_INCREF(__pyx_v_dt);
  __Pyx_GIVEREF(__pyx_v_dt);
  __Pyx_GOTREF(__pyx_v_self->dtype);
  __Pyx_DECREF(__pyx_v_self->dtype);
  __pyx_v_self->dtype = __pyx_v_dt;

  /* "netCDF4/_netCDF4.pyx":6645
 *         self._nc_type = xtype
 *         self.dtype = dt
 *         self.name = dtype_name             # <<<<<<<<<<<<<<
 *         self.enum_dict = enum_dict
 * 
*/
  __Pyx_INCREF(__pyx_v_dtype_name);
  __Pyx_GIVEREF(__pyx_v_dtype_name);
  __Pyx_GOTREF(__pyx_v_self->name);
  __Pyx_DECREF(__pyx_v_self->name);
  __pyx_v_self->name = __pyx_v_dtype_name;

  /* "netCDF4/_netCDF4.pyx":6646
 *         self.dtype = dt
 *         self.name = dtype_name
 *         self.enum_dict = enum_dict             # <<<<<<<<<<<<<<
 * 
 *     def __repr__(self):
*/
  __Pyx_INCREF(__pyx_v_enum_dict);
  __Pyx_GIVEREF(__pyx_v_enum_dict);
  __Pyx_GOTREF(__pyx_v_self->enum_dict);
  __Pyx_DECREF(__pyx_v_self->enum_dict);
  __pyx_v_self->enum_dict = __pyx_v_enum_dict;

  /* "netCDF4/_netCDF4.pyx":6617
 *     cdef public nc_type _nc_type
 *     cdef public dtype, name, enum_dict
 *     def __init__(self, grp, object dt, object dtype_name, object enum_dict, **kwargs):             # <<<<<<<<<<<<<<
 *         """
 *         **`__init__(group, datatype, datatype_name, enum_dict)`**
*/

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __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("netCDF4._netCDF4.EnumType.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_dt);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":6648
 *         self.enum_dict = enum_dict
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return self.__str__()
 * 
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8EnumType_3__repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8EnumType_3__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_7netCDF4_8_netCDF4_8EnumType_2__repr__(((struct __pyx_obj_7netCDF4_8_netCDF4_EnumType *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8EnumType_2__repr__(struct __pyx_obj_7netCDF4_8_netCDF4_EnumType *__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("__repr__", 0);

  /* "netCDF4/_netCDF4.pyx":6649
 * 
 *     def __repr__(self):
 *         return self.__str__()             # <<<<<<<<<<<<<<
 * 
 *     def __str__(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_str_2, __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(0, 6649, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":6648
 *         self.enum_dict = enum_dict
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return self.__str__()
 * 
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("netCDF4._netCDF4.EnumType.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":6651
 *         return self.__str__()
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         typ = repr(type(self)).replace("._netCDF4", "")
 *         return "%r: name = '%s', numpy dtype = %s, fields/values =%s" %\
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8EnumType_5__str__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8EnumType_5__str__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__str__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_8EnumType_4__str__(((struct __pyx_obj_7netCDF4_8_netCDF4_EnumType *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8EnumType_4__str__(struct __pyx_obj_7netCDF4_8_netCDF4_EnumType *__pyx_v_self) {
  PyObject *__pyx_v_typ = NULL;
  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[7];
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__str__", 0);

  /* "netCDF4/_netCDF4.pyx":6652
 * 
 *     def __str__(self):
 *         typ = repr(type(self)).replace("._netCDF4", "")             # <<<<<<<<<<<<<<
 *         return "%r: name = '%s', numpy dtype = %s, fields/values =%s" %\
 *             (typ, self.name, self.dtype, self.enum_dict)
*/
  __pyx_t_1 = PyObject_Repr(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6652, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (unlikely(__pyx_t_1 == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "replace");
    __PYX_ERR(0, 6652, __pyx_L1_error)
  }
  __pyx_t_2 = PyUnicode_Replace(((PyObject*)__pyx_t_1), __pyx_mstate_global->__pyx_kp_u_netCDF4, __pyx_mstate_global->__pyx_kp_u__4, -1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6652, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_typ = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":6653
 *     def __str__(self):
 *         typ = repr(type(self)).replace("._netCDF4", "")
 *         return "%r: name = '%s', numpy dtype = %s, fields/values =%s" %\             # <<<<<<<<<<<<<<
 *             (typ, self.name, self.dtype, self.enum_dict)
 * 
*/
  __Pyx_XDECREF(__pyx_r);

  /* "netCDF4/_netCDF4.pyx":6654
 *         typ = repr(type(self)).replace("._netCDF4", "")
 *         return "%r: name = '%s', numpy dtype = %s, fields/values =%s" %\
 *             (typ, self.name, self.dtype, self.enum_dict)             # <<<<<<<<<<<<<<
 * 
 *     def __reduce__(self):
*/
  __pyx_t_2 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_typ), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6654, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Str(__pyx_v_self->name), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6654, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Str(__pyx_v_self->dtype), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6654, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Str(__pyx_v_self->enum_dict), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6654, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5[0] = __pyx_t_2;
  __pyx_t_5[1] = __pyx_mstate_global->__pyx_kp_u_name_2;
  __pyx_t_5[2] = __pyx_t_1;
  __pyx_t_5[3] = __pyx_mstate_global->__pyx_kp_u_numpy_dtype;
  __pyx_t_5[4] = __pyx_t_3;
  __pyx_t_5[5] = __pyx_mstate_global->__pyx_kp_u_fields_values;
  __pyx_t_5[6] = __pyx_t_4;

  /* "netCDF4/_netCDF4.pyx":6653
 *     def __str__(self):
 *         typ = repr(type(self)).replace("._netCDF4", "")
 *         return "%r: name = '%s', numpy dtype = %s, fields/values =%s" %\             # <<<<<<<<<<<<<<
 *             (typ, self.name, self.dtype, self.enum_dict)
 * 
*/
  __pyx_t_6 = __Pyx_PyUnicode_Join(__pyx_t_5, 7, __Pyx_PyUnicode_GET_LENGTH(__pyx_t_2) + 10 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_1) + 17 * 2 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4), 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4));
  if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6653, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_r = __pyx_t_6;
  __pyx_t_6 = 0;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":6651
 *         return self.__str__()
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         typ = repr(type(self)).replace("._netCDF4", "")
 *         return "%r: name = '%s', numpy dtype = %s, fields/values =%s" %\
*/

  /* 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_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("netCDF4._netCDF4.EnumType.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_typ);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":6656
 *             (typ, self.name, self.dtype, self.enum_dict)
 * 
 *     def __reduce__(self):             # <<<<<<<<<<<<<<
 *         # raise error is user tries to pickle a EnumType object.
 *         raise NotImplementedError('EnumType is not picklable')
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8EnumType_7__reduce__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_8EnumType_7__reduce__ = {"__reduce__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_8EnumType_7__reduce__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8EnumType_7__reduce__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (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_7netCDF4_8_netCDF4_8EnumType_6__reduce__(((struct __pyx_obj_7netCDF4_8_netCDF4_EnumType *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8EnumType_6__reduce__(CYTHON_UNUSED struct __pyx_obj_7netCDF4_8_netCDF4_EnumType *__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("__reduce__", 0);

  /* "netCDF4/_netCDF4.pyx":6658
 *     def __reduce__(self):
 *         # raise error is user tries to pickle a EnumType object.
 *         raise NotImplementedError('EnumType is not picklable')             # <<<<<<<<<<<<<<
 * 
 * cdef _def_enum(grp, object dt, object dtype_name, object enum_dict):
*/
  __pyx_t_2 = NULL;
  __pyx_t_3 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_EnumType_is_not_picklable};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_NotImplementedError)), __pyx_callargs+__pyx_t_3, (2-__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(0, 6658, __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(0, 6658, __pyx_L1_error)

  /* "netCDF4/_netCDF4.pyx":6656
 *             (typ, self.name, self.dtype, self.enum_dict)
 * 
 *     def __reduce__(self):             # <<<<<<<<<<<<<<
 *         # raise error is user tries to pickle a EnumType object.
 *         raise NotImplementedError('EnumType is not picklable')
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("netCDF4._netCDF4.EnumType.__reduce__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":6615
 * the user.
 *     """
 *     cdef public nc_type _nc_type             # <<<<<<<<<<<<<<
 *     cdef public dtype, name, enum_dict
 *     def __init__(self, grp, object dt, object dtype_name, object enum_dict, **kwargs):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8EnumType_8_nc_type_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8EnumType_8_nc_type_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_7netCDF4_8_netCDF4_8EnumType_8_nc_type___get__(((struct __pyx_obj_7netCDF4_8_netCDF4_EnumType *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8EnumType_8_nc_type___get__(struct __pyx_obj_7netCDF4_8_netCDF4_EnumType *__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_PyLong_From_nc_type(__pyx_v_self->_nc_type); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6615, __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("netCDF4._netCDF4.EnumType._nc_type.__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_7netCDF4_8_netCDF4_8EnumType_8_nc_type_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_8EnumType_8_nc_type_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_7netCDF4_8_netCDF4_8EnumType_8_nc_type_2__set__(((struct __pyx_obj_7netCDF4_8_netCDF4_EnumType *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_7netCDF4_8_netCDF4_8EnumType_8_nc_type_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_EnumType *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  nc_type __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __pyx_t_1 = __Pyx_PyLong_As_nc_type(__pyx_v_value); if (unlikely((__pyx_t_1 == ((nc_type)-1)) && PyErr_Occurred())) __PYX_ERR(0, 6615, __pyx_L1_error)
  __pyx_v_self->_nc_type = __pyx_t_1;

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("netCDF4._netCDF4.EnumType._nc_type.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":6616
 *     """
 *     cdef public nc_type _nc_type
 *     cdef public dtype, name, enum_dict             # <<<<<<<<<<<<<<
 *     def __init__(self, grp, object dt, object dtype_name, object enum_dict, **kwargs):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8EnumType_5dtype_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8EnumType_5dtype_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_7netCDF4_8_netCDF4_8EnumType_5dtype___get__(((struct __pyx_obj_7netCDF4_8_netCDF4_EnumType *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8EnumType_5dtype___get__(struct __pyx_obj_7netCDF4_8_netCDF4_EnumType *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->dtype);
  __pyx_r = __pyx_v_self->dtype;
  goto __pyx_L0;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_8EnumType_5dtype_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_8EnumType_5dtype_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_7netCDF4_8_netCDF4_8EnumType_5dtype_2__set__(((struct __pyx_obj_7netCDF4_8_netCDF4_EnumType *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_7netCDF4_8_netCDF4_8EnumType_5dtype_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_EnumType *__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->dtype);
  __Pyx_DECREF(__pyx_v_self->dtype);
  __pyx_v_self->dtype = __pyx_v_value;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_8EnumType_5dtype_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_8EnumType_5dtype_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_7netCDF4_8_netCDF4_8EnumType_5dtype_4__del__(((struct __pyx_obj_7netCDF4_8_netCDF4_EnumType *)__pyx_v_self));

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

static int __pyx_pf_7netCDF4_8_netCDF4_8EnumType_5dtype_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_EnumType *__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->dtype);
  __Pyx_DECREF(__pyx_v_self->dtype);
  __pyx_v_self->dtype = Py_None;

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

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8EnumType_4name_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8EnumType_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_7netCDF4_8_netCDF4_8EnumType_4name___get__(((struct __pyx_obj_7netCDF4_8_netCDF4_EnumType *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8EnumType_4name___get__(struct __pyx_obj_7netCDF4_8_netCDF4_EnumType *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->name);
  __pyx_r = __pyx_v_self->name;
  goto __pyx_L0;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_8EnumType_4name_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_8EnumType_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_7netCDF4_8_netCDF4_8EnumType_4name_2__set__(((struct __pyx_obj_7netCDF4_8_netCDF4_EnumType *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_7netCDF4_8_netCDF4_8EnumType_4name_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_EnumType *__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->name);
  __Pyx_DECREF(__pyx_v_self->name);
  __pyx_v_self->name = __pyx_v_value;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_8EnumType_4name_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_8EnumType_4name_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_7netCDF4_8_netCDF4_8EnumType_4name_4__del__(((struct __pyx_obj_7netCDF4_8_netCDF4_EnumType *)__pyx_v_self));

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

static int __pyx_pf_7netCDF4_8_netCDF4_8EnumType_4name_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_EnumType *__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->name);
  __Pyx_DECREF(__pyx_v_self->name);
  __pyx_v_self->name = Py_None;

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

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8EnumType_9enum_dict_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8EnumType_9enum_dict_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_7netCDF4_8_netCDF4_8EnumType_9enum_dict___get__(((struct __pyx_obj_7netCDF4_8_netCDF4_EnumType *)__pyx_v_self));

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8EnumType_9enum_dict___get__(struct __pyx_obj_7netCDF4_8_netCDF4_EnumType *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->enum_dict);
  __pyx_r = __pyx_v_self->enum_dict;
  goto __pyx_L0;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_8EnumType_9enum_dict_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_8EnumType_9enum_dict_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_7netCDF4_8_netCDF4_8EnumType_9enum_dict_2__set__(((struct __pyx_obj_7netCDF4_8_netCDF4_EnumType *)__pyx_v_self), ((PyObject *)__pyx_v_value));

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

static int __pyx_pf_7netCDF4_8_netCDF4_8EnumType_9enum_dict_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_EnumType *__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->enum_dict);
  __Pyx_DECREF(__pyx_v_self->enum_dict);
  __pyx_v_self->enum_dict = __pyx_v_value;

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

/* Python wrapper */
static int __pyx_pw_7netCDF4_8_netCDF4_8EnumType_9enum_dict_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_7netCDF4_8_netCDF4_8EnumType_9enum_dict_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_7netCDF4_8_netCDF4_8EnumType_9enum_dict_4__del__(((struct __pyx_obj_7netCDF4_8_netCDF4_EnumType *)__pyx_v_self));

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

static int __pyx_pf_7netCDF4_8_netCDF4_8EnumType_9enum_dict_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_EnumType *__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->enum_dict);
  __Pyx_DECREF(__pyx_v_self->enum_dict);
  __pyx_v_self->enum_dict = Py_None;

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

/* "netCDF4/_netCDF4.pyx":6660
 *         raise NotImplementedError('EnumType is not picklable')
 * 
 * cdef _def_enum(grp, object dt, object dtype_name, object enum_dict):             # <<<<<<<<<<<<<<
 *     # private function used to construct a netCDF Enum data type
 *     # from a numpy dtype object or python str object by EnumType.__init__.
*/

static PyObject *__pyx_f_7netCDF4_8_netCDF4__def_enum(PyObject *__pyx_v_grp, PyObject *__pyx_v_dt, PyObject *__pyx_v_dtype_name, PyObject *__pyx_v_enum_dict) {
  nc_type __pyx_v_xtype;
  nc_type __pyx_v_xtype_tmp;
  int __pyx_v_ierr;
  int __pyx_v_grpid;
  char *__pyx_v_namstring;
  PyArrayObject *__pyx_v_value_arr = 0;
  PyObject *__pyx_v_bytestr = NULL;
  PyObject *__pyx_v_msg = NULL;
  PyObject *__pyx_v_field = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  char *__pyx_t_2;
  int __pyx_t_3;
  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;
  nc_type __pyx_t_10;
  Py_ssize_t __pyx_t_11;
  PyObject *(*__pyx_t_12)(PyObject *);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_def_enum", 0);
  __Pyx_INCREF(__pyx_v_dt);

  /* "netCDF4/_netCDF4.pyx":6667
 *     cdef char *namstring
 *     cdef ndarray value_arr
 *     bytestr = _strencode(dtype_name)             # <<<<<<<<<<<<<<
 *     namstring = bytestr
 *     grpid = grp._grpid
*/
  __pyx_t_1 = __pyx_f_7netCDF4_8_netCDF4__strencode(__pyx_v_dtype_name, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6667, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_bytestr = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":6668
 *     cdef ndarray value_arr
 *     bytestr = _strencode(dtype_name)
 *     namstring = bytestr             # <<<<<<<<<<<<<<
 *     grpid = grp._grpid
 *     dt = numpy.dtype(dt) # convert to numpy datatype.
*/
  __pyx_t_2 = __Pyx_PyObject_AsWritableString(__pyx_v_bytestr); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 6668, __pyx_L1_error)
  __pyx_v_namstring = __pyx_t_2;

  /* "netCDF4/_netCDF4.pyx":6669
 *     bytestr = _strencode(dtype_name)
 *     namstring = bytestr
 *     grpid = grp._grpid             # <<<<<<<<<<<<<<
 *     dt = numpy.dtype(dt) # convert to numpy datatype.
 *     if dt.str[1:] in _intnptonctype.keys():
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_mstate_global->__pyx_n_u_grpid); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6669, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyLong_As_int(__pyx_t_1); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 6669, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_grpid = __pyx_t_3;

  /* "netCDF4/_netCDF4.pyx":6670
 *     namstring = bytestr
 *     grpid = grp._grpid
 *     dt = numpy.dtype(dt) # convert to numpy datatype.             # <<<<<<<<<<<<<<
 *     if dt.str[1:] in _intnptonctype.keys():
 *         # find netCDF primitive data type corresponding to
*/
  __pyx_t_4 = NULL;
  __pyx_t_5 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_dt};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_5numpy_dtype, __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_1)) __PYX_ERR(0, 6670, __pyx_L1_error)
    __Pyx_GOTREF((PyObject *)__pyx_t_1);
  }
  __Pyx_DECREF_SET(__pyx_v_dt, ((PyObject *)__pyx_t_1));
  __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":6671
 *     grpid = grp._grpid
 *     dt = numpy.dtype(dt) # convert to numpy datatype.
 *     if dt.str[1:] in _intnptonctype.keys():             # <<<<<<<<<<<<<<
 *         # find netCDF primitive data type corresponding to
 *         # specified numpy data type.
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_dt, __pyx_mstate_global->__pyx_n_u_str); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6671, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyObject_GetSlice(__pyx_t_1, 1, 0, NULL, NULL, &__pyx_mstate_global->__pyx_slice[0], 1, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6671, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_6 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_intnptonctype); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6671, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_keys); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6671, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_5 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_8))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_8);
    assert(__pyx_t_6);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_8);
    __Pyx_INCREF(__pyx_t_6);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_8, __pyx__function);
    __pyx_t_5 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_8, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (__pyx_t_5*__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_1)) __PYX_ERR(0, 6671, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_t_9 = (__Pyx_PySequence_ContainsTF(__pyx_t_4, __pyx_t_1, Py_EQ)); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 6671, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (likely(__pyx_t_9)) {

    /* "netCDF4/_netCDF4.pyx":6674
 *         # find netCDF primitive data type corresponding to
 *         # specified numpy data type.
 *         xtype_tmp = _intnptonctype[dt.str[1:]]             # <<<<<<<<<<<<<<
 *         with nogil:
 *             ierr = nc_def_enum(grpid, xtype_tmp, namstring, &xtype)
*/
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_intnptonctype); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6674, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_dt, __pyx_mstate_global->__pyx_n_u_str); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6674, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_8 = __Pyx_PyObject_GetSlice(__pyx_t_4, 1, 0, NULL, NULL, &__pyx_mstate_global->__pyx_slice[0], 1, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6674, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6674, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_10 = __Pyx_PyLong_As_nc_type(__pyx_t_4); if (unlikely((__pyx_t_10 == ((nc_type)-1)) && PyErr_Occurred())) __PYX_ERR(0, 6674, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_xtype_tmp = __pyx_t_10;

    /* "netCDF4/_netCDF4.pyx":6675
 *         # specified numpy data type.
 *         xtype_tmp = _intnptonctype[dt.str[1:]]
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_def_enum(grpid, xtype_tmp, namstring, &xtype)
 *         _ensure_nc_success(ierr)
*/
    {
        PyThreadState * _save;
        _save = PyEval_SaveThread();
        __Pyx_FastGIL_Remember();
        /*try:*/ {

          /* "netCDF4/_netCDF4.pyx":6676
 *         xtype_tmp = _intnptonctype[dt.str[1:]]
 *         with nogil:
 *             ierr = nc_def_enum(grpid, xtype_tmp, namstring, &xtype)             # <<<<<<<<<<<<<<
 *         _ensure_nc_success(ierr)
 *     else:
*/
          __pyx_v_ierr = nc_def_enum(__pyx_v_grpid, __pyx_v_xtype_tmp, __pyx_v_namstring, (&__pyx_v_xtype));
        }

        /* "netCDF4/_netCDF4.pyx":6675
 *         # specified numpy data type.
 *         xtype_tmp = _intnptonctype[dt.str[1:]]
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_def_enum(grpid, xtype_tmp, namstring, &xtype)
 *         _ensure_nc_success(ierr)
*/
        /*finally:*/ {
          /*normal exit:*/{
            __Pyx_FastGIL_Forget();
            PyEval_RestoreThread(_save);
            goto __pyx_L6;
          }
          __pyx_L6:;
        }
    }

    /* "netCDF4/_netCDF4.pyx":6677
 *         with nogil:
 *             ierr = nc_def_enum(grpid, xtype_tmp, namstring, &xtype)
 *         _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 *     else:
 *         msg="unsupported datatype specified for ENUM (must be integer)"
*/
    __pyx_t_8 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6677, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_6 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6677, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_5 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_1))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_1);
      assert(__pyx_t_8);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_1, __pyx__function);
      __pyx_t_5 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_6};
      __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_1, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6677, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "netCDF4/_netCDF4.pyx":6671
 *     grpid = grp._grpid
 *     dt = numpy.dtype(dt) # convert to numpy datatype.
 *     if dt.str[1:] in _intnptonctype.keys():             # <<<<<<<<<<<<<<
 *         # find netCDF primitive data type corresponding to
 *         # specified numpy data type.
*/
    goto __pyx_L3;
  }

  /* "netCDF4/_netCDF4.pyx":6679
 *         _ensure_nc_success(ierr)
 *     else:
 *         msg="unsupported datatype specified for ENUM (must be integer)"             # <<<<<<<<<<<<<<
 *         raise KeyError(msg)
 *     # insert named members into enum type.
*/
  /*else*/ {
    __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u_unsupported_datatype_specified_f_2);
    __pyx_v_msg = __pyx_mstate_global->__pyx_kp_u_unsupported_datatype_specified_f_2;

    /* "netCDF4/_netCDF4.pyx":6680
 *     else:
 *         msg="unsupported datatype specified for ENUM (must be integer)"
 *         raise KeyError(msg)             # <<<<<<<<<<<<<<
 *     # insert named members into enum type.
 *     for field in enum_dict:
*/
    __pyx_t_1 = NULL;
    __pyx_t_5 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_v_msg};
      __pyx_t_4 = __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_1); __pyx_t_1 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6680, __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(0, 6680, __pyx_L1_error)
  }
  __pyx_L3:;

  /* "netCDF4/_netCDF4.pyx":6682
 *         raise KeyError(msg)
 *     # insert named members into enum type.
 *     for field in enum_dict:             # <<<<<<<<<<<<<<
 *         value_arr = numpy.array(enum_dict[field],dt)
 *         bytestr = _strencode(field)
*/
  if (likely(PyList_CheckExact(__pyx_v_enum_dict)) || PyTuple_CheckExact(__pyx_v_enum_dict)) {
    __pyx_t_4 = __pyx_v_enum_dict; __Pyx_INCREF(__pyx_t_4);
    __pyx_t_11 = 0;
    __pyx_t_12 = NULL;
  } else {
    __pyx_t_11 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_enum_dict); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6682, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_12 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_4); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 6682, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_12)) {
      if (likely(PyList_CheckExact(__pyx_t_4))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_4);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 6682, __pyx_L1_error)
          #endif
          if (__pyx_t_11 >= __pyx_temp) break;
        }
        __pyx_t_1 = __Pyx_PyList_GetItemRefFast(__pyx_t_4, __pyx_t_11, __Pyx_ReferenceSharing_OwnStrongReference);
        ++__pyx_t_11;
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_4);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 6682, __pyx_L1_error)
          #endif
          if (__pyx_t_11 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_1 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_11));
        #else
        __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_4, __pyx_t_11);
        #endif
        ++__pyx_t_11;
      }
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6682, __pyx_L1_error)
    } else {
      __pyx_t_1 = __pyx_t_12(__pyx_t_4);
      if (unlikely(!__pyx_t_1)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 6682, __pyx_L1_error)
          PyErr_Clear();
        }
        break;
      }
    }
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_XDECREF_SET(__pyx_v_field, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":6683
 *     # insert named members into enum type.
 *     for field in enum_dict:
 *         value_arr = numpy.array(enum_dict[field],dt)             # <<<<<<<<<<<<<<
 *         bytestr = _strencode(field)
 *         namstring = bytestr
*/
    __pyx_t_6 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_numpy); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6683, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_array); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6683, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_8 = __Pyx_PyObject_GetItem(__pyx_v_enum_dict, __pyx_v_field); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6683, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_5 = 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_5 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_t_8, __pyx_v_dt};
      __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_5, (3-__pyx_t_5) | (__pyx_t_5*__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_1)) __PYX_ERR(0, 6683, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_ndarray))))) __PYX_ERR(0, 6683, __pyx_L1_error)
    __Pyx_XDECREF_SET(__pyx_v_value_arr, ((PyArrayObject *)__pyx_t_1));
    __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":6684
 *     for field in enum_dict:
 *         value_arr = numpy.array(enum_dict[field],dt)
 *         bytestr = _strencode(field)             # <<<<<<<<<<<<<<
 *         namstring = bytestr
 *         with nogil:
*/
    __pyx_t_1 = __pyx_f_7netCDF4_8_netCDF4__strencode(__pyx_v_field, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6684, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_bytestr, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":6685
 *         value_arr = numpy.array(enum_dict[field],dt)
 *         bytestr = _strencode(field)
 *         namstring = bytestr             # <<<<<<<<<<<<<<
 *         with nogil:
 *             ierr = nc_insert_enum(grpid, xtype, namstring,
*/
    __pyx_t_2 = __Pyx_PyObject_AsWritableString(__pyx_v_bytestr); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 6685, __pyx_L1_error)
    __pyx_v_namstring = __pyx_t_2;

    /* "netCDF4/_netCDF4.pyx":6686
 *         bytestr = _strencode(field)
 *         namstring = bytestr
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_insert_enum(grpid, xtype, namstring,
 *                    PyArray_DATA(value_arr))
*/
    {
        PyThreadState * _save;
        _save = PyEval_SaveThread();
        __Pyx_FastGIL_Remember();
        /*try:*/ {

          /* "netCDF4/_netCDF4.pyx":6687
 *         namstring = bytestr
 *         with nogil:
 *             ierr = nc_insert_enum(grpid, xtype, namstring,             # <<<<<<<<<<<<<<
 *                    PyArray_DATA(value_arr))
 *         _ensure_nc_success(ierr)
*/
          __pyx_v_ierr = nc_insert_enum(__pyx_v_grpid, __pyx_v_xtype, __pyx_v_namstring, PyArray_DATA(__pyx_v_value_arr));
        }

        /* "netCDF4/_netCDF4.pyx":6686
 *         bytestr = _strencode(field)
 *         namstring = bytestr
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_insert_enum(grpid, xtype, namstring,
 *                    PyArray_DATA(value_arr))
*/
        /*finally:*/ {
          /*normal exit:*/{
            __Pyx_FastGIL_Forget();
            PyEval_RestoreThread(_save);
            goto __pyx_L13;
          }
          __pyx_L13:;
        }
    }

    /* "netCDF4/_netCDF4.pyx":6689
 *             ierr = nc_insert_enum(grpid, xtype, namstring,
 *                    PyArray_DATA(value_arr))
 *         _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 *     return xtype, dt
 * 
*/
    __pyx_t_7 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6689, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_6 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6689, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_5 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(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_5 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_6};
      __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_8, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6689, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":6682
 *         raise KeyError(msg)
 *     # insert named members into enum type.
 *     for field in enum_dict:             # <<<<<<<<<<<<<<
 *         value_arr = numpy.array(enum_dict[field],dt)
 *         bytestr = _strencode(field)
*/
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "netCDF4/_netCDF4.pyx":6690
 *                    PyArray_DATA(value_arr))
 *         _ensure_nc_success(ierr)
 *     return xtype, dt             # <<<<<<<<<<<<<<
 * 
 * cdef _read_enum(group, nc_type xtype, endian=None):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = __Pyx_PyLong_From_nc_type(__pyx_v_xtype); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6690, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6690, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_4);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4) != (0)) __PYX_ERR(0, 6690, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_dt);
  __Pyx_GIVEREF(__pyx_v_dt);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_dt) != (0)) __PYX_ERR(0, 6690, __pyx_L1_error);
  __pyx_t_4 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":6660
 *         raise NotImplementedError('EnumType is not picklable')
 * 
 * cdef _def_enum(grp, object dt, object dtype_name, object enum_dict):             # <<<<<<<<<<<<<<
 *     # private function used to construct a netCDF Enum data type
 *     # from a numpy dtype object or python str object by EnumType.__init__.
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("netCDF4._netCDF4._def_enum", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_value_arr);
  __Pyx_XDECREF(__pyx_v_bytestr);
  __Pyx_XDECREF(__pyx_v_msg);
  __Pyx_XDECREF(__pyx_v_field);
  __Pyx_XDECREF(__pyx_v_dt);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":6692
 *     return xtype, dt
 * 
 * cdef _read_enum(group, nc_type xtype, endian=None):             # <<<<<<<<<<<<<<
 *     # read a Enum data type id from an existing file,
 *     # construct a corresponding numpy dtype instance,
*/

static PyObject *__pyx_f_7netCDF4_8_netCDF4__read_enum(PyObject *__pyx_v_group, nc_type __pyx_v_xtype, struct __pyx_opt_args_7netCDF4_8_netCDF4__read_enum *__pyx_optional_args) {
  PyObject *__pyx_v_endian = ((PyObject *)Py_None);
  int __pyx_v_ierr;
  int __pyx_v_grpid;
  int __pyx_v_nmem;
  PyArrayObject *__pyx_v_enum_val = 0;
  nc_type __pyx_v_base_xtype;
  char __pyx_v_enum_namstring[(NC_MAX_NAME + 1)];
  size_t __pyx_v_nmembers;
  PyObject *__pyx_v_enum_name = NULL;
  PyObject *__pyx_v_datatype = NULL;
  PyObject *__pyx_v_dt = NULL;
  PyObject *__pyx_v_enum_dict = NULL;
  PyObject *__pyx_v_name = NULL;
  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;
  size_t __pyx_t_6;
  Py_ssize_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;
  size_t __pyx_t_13;
  size_t __pyx_t_14;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_read_enum", 0);
  if (__pyx_optional_args) {
    if (__pyx_optional_args->__pyx_n > 0) {
      __pyx_v_endian = __pyx_optional_args->endian;
    }
  }

  /* "netCDF4/_netCDF4.pyx":6702
 *     cdef char enum_namstring[NC_MAX_NAME+1]
 *     cdef size_t nmembers
 *     grpid = group._grpid             # <<<<<<<<<<<<<<
 *     # get name, datatype, and number of members.
 *     with nogil:
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_group, __pyx_mstate_global->__pyx_n_u_grpid); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6702, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyLong_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 6702, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_grpid = __pyx_t_2;

  /* "netCDF4/_netCDF4.pyx":6704
 *     grpid = group._grpid
 *     # get name, datatype, and number of members.
 *     with nogil:             # <<<<<<<<<<<<<<
 *         ierr = nc_inq_enum(grpid, xtype, enum_namstring, &base_xtype, NULL,\
 *                 &nmembers)
*/
  {
      PyThreadState * _save;
      _save = PyEval_SaveThread();
      __Pyx_FastGIL_Remember();
      /*try:*/ {

        /* "netCDF4/_netCDF4.pyx":6705
 *     # get name, datatype, and number of members.
 *     with nogil:
 *         ierr = nc_inq_enum(grpid, xtype, enum_namstring, &base_xtype, NULL,\             # <<<<<<<<<<<<<<
 *                 &nmembers)
 *     _ensure_nc_success(ierr)
*/
        __pyx_v_ierr = nc_inq_enum(__pyx_v_grpid, __pyx_v_xtype, __pyx_v_enum_namstring, (&__pyx_v_base_xtype), NULL, (&__pyx_v_nmembers));
      }

      /* "netCDF4/_netCDF4.pyx":6704
 *     grpid = group._grpid
 *     # get name, datatype, and number of members.
 *     with nogil:             # <<<<<<<<<<<<<<
 *         ierr = nc_inq_enum(grpid, xtype, enum_namstring, &base_xtype, NULL,\
 *                 &nmembers)
*/
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_FastGIL_Forget();
          PyEval_RestoreThread(_save);
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "netCDF4/_netCDF4.pyx":6707
 *         ierr = nc_inq_enum(grpid, xtype, enum_namstring, &base_xtype, NULL,\
 *                 &nmembers)
 *     _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 *     enum_name = enum_namstring.decode('utf-8')
 *     try:
*/
  __pyx_t_3 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6707, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6707, __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_1 = __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_1)) __PYX_ERR(0, 6707, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":6708
 *                 &nmembers)
 *     _ensure_nc_success(ierr)
 *     enum_name = enum_namstring.decode('utf-8')             # <<<<<<<<<<<<<<
 *     try:
 *         datatype = _nctonptype[base_xtype]
*/
  __pyx_t_7 = __Pyx_ssize_strlen(__pyx_v_enum_namstring); if (unlikely(__pyx_t_7 == ((Py_ssize_t)-1))) __PYX_ERR(0, 6708, __pyx_L1_error)
  __pyx_t_1 = __Pyx_decode_c_string(__pyx_v_enum_namstring, 0, __pyx_t_7, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6708, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_enum_name = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":6709
 *     _ensure_nc_success(ierr)
 *     enum_name = enum_namstring.decode('utf-8')
 *     try:             # <<<<<<<<<<<<<<
 *         datatype = _nctonptype[base_xtype]
 *         if endian is not None: datatype = endian + datatype
*/
  {
    __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:*/ {

      /* "netCDF4/_netCDF4.pyx":6710
 *     enum_name = enum_namstring.decode('utf-8')
 *     try:
 *         datatype = _nctonptype[base_xtype]             # <<<<<<<<<<<<<<
 *         if endian is not None: datatype = endian + datatype
 *         dt = numpy.dtype(datatype) # see if it is a primitive type
*/
      __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_nctonptype); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6710, __pyx_L6_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_1, __pyx_v_base_xtype, nc_type, 1, __Pyx_PyLong_From_nc_type, 0, 1, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6710, __pyx_L6_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_v_datatype = __pyx_t_4;
      __pyx_t_4 = 0;

      /* "netCDF4/_netCDF4.pyx":6711
 *     try:
 *         datatype = _nctonptype[base_xtype]
 *         if endian is not None: datatype = endian + datatype             # <<<<<<<<<<<<<<
 *         dt = numpy.dtype(datatype) # see if it is a primitive type
 *     except KeyError:
*/
      __pyx_t_11 = (__pyx_v_endian != Py_None);
      if (__pyx_t_11) {
        __pyx_t_4 = PyNumber_Add(__pyx_v_endian, __pyx_v_datatype); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6711, __pyx_L6_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF_SET(__pyx_v_datatype, __pyx_t_4);
        __pyx_t_4 = 0;
      }

      /* "netCDF4/_netCDF4.pyx":6712
 *         datatype = _nctonptype[base_xtype]
 *         if endian is not None: datatype = endian + datatype
 *         dt = numpy.dtype(datatype) # see if it is a primitive type             # <<<<<<<<<<<<<<
 *     except KeyError:
 *         raise KeyError("unsupported component type for ENUM")
*/
      __pyx_t_1 = NULL;
      __pyx_t_6 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_v_datatype};
        __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_5numpy_dtype, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6712, __pyx_L6_error)
        __Pyx_GOTREF((PyObject *)__pyx_t_4);
      }
      __pyx_v_dt = ((PyObject *)__pyx_t_4);
      __pyx_t_4 = 0;

      /* "netCDF4/_netCDF4.pyx":6709
 *     _ensure_nc_success(ierr)
 *     enum_name = enum_namstring.decode('utf-8')
 *     try:             # <<<<<<<<<<<<<<
 *         datatype = _nctonptype[base_xtype]
 *         if endian is not None: datatype = endian + datatype
*/
    }
    __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_L11_try_end;
    __pyx_L6_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;

    /* "netCDF4/_netCDF4.pyx":6713
 *         if endian is not None: datatype = endian + datatype
 *         dt = numpy.dtype(datatype) # see if it is a primitive type
 *     except KeyError:             # <<<<<<<<<<<<<<
 *         raise KeyError("unsupported component type for ENUM")
 *     # loop over members, build dict.
*/
    __pyx_t_2 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_KeyError))));
    if (__pyx_t_2) {
      __Pyx_AddTraceback("netCDF4._netCDF4._read_enum", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_1, &__pyx_t_5) < 0) __PYX_ERR(0, 6713, __pyx_L8_except_error)
      __Pyx_XGOTREF(__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_1);
      __Pyx_XGOTREF(__pyx_t_5);

      /* "netCDF4/_netCDF4.pyx":6714
 *         dt = numpy.dtype(datatype) # see if it is a primitive type
 *     except KeyError:
 *         raise KeyError("unsupported component type for ENUM")             # <<<<<<<<<<<<<<
 *     # loop over members, build dict.
 *     enum_dict = {}
*/
      __pyx_t_12 = NULL;
      __pyx_t_6 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_12, __pyx_mstate_global->__pyx_kp_u_unsupported_component_type_for_E};
        __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_KeyError)), __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;
        if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6714, __pyx_L8_except_error)
        __Pyx_GOTREF(__pyx_t_3);
      }
      __Pyx_Raise(__pyx_t_3, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __PYX_ERR(0, 6714, __pyx_L8_except_error)
    }
    goto __pyx_L8_except_error;

    /* "netCDF4/_netCDF4.pyx":6709
 *     _ensure_nc_success(ierr)
 *     enum_name = enum_namstring.decode('utf-8')
 *     try:             # <<<<<<<<<<<<<<
 *         datatype = _nctonptype[base_xtype]
 *         if endian is not None: datatype = endian + datatype
*/
    __pyx_L8_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_L11_try_end:;
  }

  /* "netCDF4/_netCDF4.pyx":6716
 *         raise KeyError("unsupported component type for ENUM")
 *     # loop over members, build dict.
 *     enum_dict = {}             # <<<<<<<<<<<<<<
 *     enum_val = numpy.empty(1,dt)
 *     for nmem in range(nmembers):
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6716, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_v_enum_dict = ((PyObject*)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "netCDF4/_netCDF4.pyx":6717
 *     # loop over members, build dict.
 *     enum_dict = {}
 *     enum_val = numpy.empty(1,dt)             # <<<<<<<<<<<<<<
 *     for nmem in range(nmembers):
 *         with nogil:
*/
  __pyx_t_1 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6717, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_empty); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6717, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_6 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(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_6 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_1, __pyx_mstate_global->__pyx_int_1, __pyx_v_dt};
    __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_3, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__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_5)) __PYX_ERR(0, 6717, __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_7netCDF4_8_netCDF4_ndarray))))) __PYX_ERR(0, 6717, __pyx_L1_error)
  __pyx_v_enum_val = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "netCDF4/_netCDF4.pyx":6718
 *     enum_dict = {}
 *     enum_val = numpy.empty(1,dt)
 *     for nmem in range(nmembers):             # <<<<<<<<<<<<<<
 *         with nogil:
 *             ierr = nc_inq_enum_member(grpid, xtype, nmem, \
*/
  __pyx_t_6 = __pyx_v_nmembers;
  __pyx_t_13 = __pyx_t_6;
  for (__pyx_t_2 = 0; __pyx_t_2 < __pyx_t_13; __pyx_t_2+=1) {
    __pyx_v_nmem = __pyx_t_2;

    /* "netCDF4/_netCDF4.pyx":6719
 *     enum_val = numpy.empty(1,dt)
 *     for nmem in range(nmembers):
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_inq_enum_member(grpid, xtype, nmem, \
 *                                       enum_namstring,PyArray_DATA(enum_val))
*/
    {
        PyThreadState * _save;
        _save = PyEval_SaveThread();
        __Pyx_FastGIL_Remember();
        /*try:*/ {

          /* "netCDF4/_netCDF4.pyx":6720
 *     for nmem in range(nmembers):
 *         with nogil:
 *             ierr = nc_inq_enum_member(grpid, xtype, nmem, \             # <<<<<<<<<<<<<<
 *                                       enum_namstring,PyArray_DATA(enum_val))
 *         _ensure_nc_success(ierr)
*/
          __pyx_v_ierr = nc_inq_enum_member(__pyx_v_grpid, __pyx_v_xtype, __pyx_v_nmem, __pyx_v_enum_namstring, PyArray_DATA(__pyx_v_enum_val));
        }

        /* "netCDF4/_netCDF4.pyx":6719
 *     enum_val = numpy.empty(1,dt)
 *     for nmem in range(nmembers):
 *         with nogil:             # <<<<<<<<<<<<<<
 *             ierr = nc_inq_enum_member(grpid, xtype, nmem, \
 *                                       enum_namstring,PyArray_DATA(enum_val))
*/
        /*finally:*/ {
          /*normal exit:*/{
            __Pyx_FastGIL_Forget();
            PyEval_RestoreThread(_save);
            goto __pyx_L21;
          }
          __pyx_L21:;
        }
    }

    /* "netCDF4/_netCDF4.pyx":6722
 *             ierr = nc_inq_enum_member(grpid, xtype, nmem, \
 *                                       enum_namstring,PyArray_DATA(enum_val))
 *         _ensure_nc_success(ierr)             # <<<<<<<<<<<<<<
 *         name = enum_namstring.decode('utf-8')
 *         enum_dict[name] = enum_val.item()
*/
    __pyx_t_3 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_ensure_nc_success); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6722, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_4 = __Pyx_PyLong_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6722, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_14 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_1))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
      assert(__pyx_t_3);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_1, __pyx__function);
      __pyx_t_14 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_4};
      __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_1, __pyx_callargs+__pyx_t_14, (2-__pyx_t_14) | (__pyx_t_14*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6722, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
    }
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "netCDF4/_netCDF4.pyx":6723
 *                                       enum_namstring,PyArray_DATA(enum_val))
 *         _ensure_nc_success(ierr)
 *         name = enum_namstring.decode('utf-8')             # <<<<<<<<<<<<<<
 *         enum_dict[name] = enum_val.item()
 *     return EnumType(group, dt, enum_name, enum_dict, typeid=xtype)
*/
    __pyx_t_7 = __Pyx_ssize_strlen(__pyx_v_enum_namstring); if (unlikely(__pyx_t_7 == ((Py_ssize_t)-1))) __PYX_ERR(0, 6723, __pyx_L1_error)
    __pyx_t_5 = __Pyx_decode_c_string(__pyx_v_enum_namstring, 0, __pyx_t_7, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6723, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "netCDF4/_netCDF4.pyx":6724
 *         _ensure_nc_success(ierr)
 *         name = enum_namstring.decode('utf-8')
 *         enum_dict[name] = enum_val.item()             # <<<<<<<<<<<<<<
 *     return EnumType(group, dt, enum_name, enum_dict, typeid=xtype)
 * 
*/
    __pyx_t_1 = ((PyObject *)__pyx_v_enum_val);
    __Pyx_INCREF(__pyx_t_1);
    __pyx_t_14 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_1, NULL};
      __pyx_t_5 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_item, __pyx_callargs+__pyx_t_14, (1-__pyx_t_14) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6724, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
    }
    if (unlikely((PyDict_SetItem(__pyx_v_enum_dict, __pyx_v_name, __pyx_t_5) < 0))) __PYX_ERR(0, 6724, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }

  /* "netCDF4/_netCDF4.pyx":6725
 *         name = enum_namstring.decode('utf-8')
 *         enum_dict[name] = enum_val.item()
 *     return EnumType(group, dt, enum_name, enum_dict, typeid=xtype)             # <<<<<<<<<<<<<<
 * 
 * cdef _strencode(pystr,encoding=None):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = NULL;
  __pyx_t_4 = __Pyx_PyLong_From_nc_type(__pyx_v_xtype); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6725, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = 1;
  {
    PyObject *__pyx_callargs[5 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_1, __pyx_v_group, __pyx_v_dt, __pyx_v_enum_name, __pyx_v_enum_dict};
    __pyx_t_3 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6725, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_typeid, __pyx_t_4, __pyx_t_3, __pyx_callargs+5, 0) < (0)) __PYX_ERR(0, 6725, __pyx_L1_error)
    __pyx_t_5 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_EnumType, __pyx_callargs+__pyx_t_6, (5-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_3);
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6725, __pyx_L1_error)
    __Pyx_GOTREF((PyObject *)__pyx_t_5);
  }
  __pyx_r = ((PyObject *)__pyx_t_5);
  __pyx_t_5 = 0;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":6692
 *     return xtype, dt
 * 
 * cdef _read_enum(group, nc_type xtype, endian=None):             # <<<<<<<<<<<<<<
 *     # read a Enum data type id from an existing file,
 *     # construct a corresponding numpy dtype instance,
*/

  /* 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_12);
  __Pyx_AddTraceback("netCDF4._netCDF4._read_enum", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_enum_val);
  __Pyx_XDECREF(__pyx_v_enum_name);
  __Pyx_XDECREF(__pyx_v_datatype);
  __Pyx_XDECREF(__pyx_v_dt);
  __Pyx_XDECREF(__pyx_v_enum_dict);
  __Pyx_XDECREF(__pyx_v_name);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":6727
 *     return EnumType(group, dt, enum_name, enum_dict, typeid=xtype)
 * 
 * cdef _strencode(pystr,encoding=None):             # <<<<<<<<<<<<<<
 *     # encode a string into bytes.  If already bytes, do nothing.
 *     # uses 'utf-8' for default encoding.
*/

static PyObject *__pyx_f_7netCDF4_8_netCDF4__strencode(PyObject *__pyx_v_pystr, struct __pyx_opt_args_7netCDF4_8_netCDF4__strencode *__pyx_optional_args) {
  PyObject *__pyx_v_encoding = ((PyObject *)Py_None);
  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;
  size_t __pyx_t_7;
  int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_strencode", 0);
  if (__pyx_optional_args) {
    if (__pyx_optional_args->__pyx_n > 0) {
      __pyx_v_encoding = __pyx_optional_args->encoding;
    }
  }
  __Pyx_INCREF(__pyx_v_encoding);

  /* "netCDF4/_netCDF4.pyx":6730
 *     # encode a string into bytes.  If already bytes, do nothing.
 *     # uses 'utf-8' for default encoding.
 *     if encoding is None:             # <<<<<<<<<<<<<<
 *         encoding = 'utf-8'
 *     try:
*/
  __pyx_t_1 = (__pyx_v_encoding == Py_None);
  if (__pyx_t_1) {

    /* "netCDF4/_netCDF4.pyx":6731
 *     # uses 'utf-8' for default encoding.
 *     if encoding is None:
 *         encoding = 'utf-8'             # <<<<<<<<<<<<<<
 *     try:
 *         return pystr.encode(encoding)
*/
    __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u_utf_8);
    __Pyx_DECREF_SET(__pyx_v_encoding, __pyx_mstate_global->__pyx_kp_u_utf_8);

    /* "netCDF4/_netCDF4.pyx":6730
 *     # encode a string into bytes.  If already bytes, do nothing.
 *     # uses 'utf-8' for default encoding.
 *     if encoding is None:             # <<<<<<<<<<<<<<
 *         encoding = 'utf-8'
 *     try:
*/
  }

  /* "netCDF4/_netCDF4.pyx":6732
 *     if encoding is None:
 *         encoding = 'utf-8'
 *     try:             # <<<<<<<<<<<<<<
 *         return pystr.encode(encoding)
 *     except (AttributeError, UnicodeDecodeError):
*/
  {
    __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:*/ {

      /* "netCDF4/_netCDF4.pyx":6733
 *         encoding = 'utf-8'
 *     try:
 *         return pystr.encode(encoding)             # <<<<<<<<<<<<<<
 *     except (AttributeError, UnicodeDecodeError):
 *         return pystr # already bytes or unicode?
*/
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_6 = __pyx_v_pystr;
      __Pyx_INCREF(__pyx_t_6);
      __pyx_t_7 = 0;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_v_encoding};
        __pyx_t_5 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_encode, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6733, __pyx_L4_error)
        __Pyx_GOTREF(__pyx_t_5);
      }
      __pyx_r = __pyx_t_5;
      __pyx_t_5 = 0;
      goto __pyx_L8_try_return;

      /* "netCDF4/_netCDF4.pyx":6732
 *     if encoding is None:
 *         encoding = 'utf-8'
 *     try:             # <<<<<<<<<<<<<<
 *         return pystr.encode(encoding)
 *     except (AttributeError, UnicodeDecodeError):
*/
    }
    __pyx_L4_error:;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;

    /* "netCDF4/_netCDF4.pyx":6734
 *     try:
 *         return pystr.encode(encoding)
 *     except (AttributeError, UnicodeDecodeError):             # <<<<<<<<<<<<<<
 *         return pystr # already bytes or unicode?
 * 
*/
    __pyx_t_8 = __Pyx_PyErr_ExceptionMatches2(((PyObject *)(((PyTypeObject*)PyExc_AttributeError))), ((PyObject *)(((PyTypeObject*)PyExc_UnicodeDecodeError))));
    if (__pyx_t_8) {
      __Pyx_ErrRestore(0,0,0);

      /* "netCDF4/_netCDF4.pyx":6735
 *         return pystr.encode(encoding)
 *     except (AttributeError, UnicodeDecodeError):
 *         return pystr # already bytes or unicode?             # <<<<<<<<<<<<<<
 * 
 * def _to_ascii(bytestr):
*/
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(__pyx_v_pystr);
      __pyx_r = __pyx_v_pystr;
      goto __pyx_L7_except_return;
    }
    goto __pyx_L6_except_error;

    /* "netCDF4/_netCDF4.pyx":6732
 *     if encoding is None:
 *         encoding = 'utf-8'
 *     try:             # <<<<<<<<<<<<<<
 *         return pystr.encode(encoding)
 *     except (AttributeError, UnicodeDecodeError):
*/
    __pyx_L6_except_error:;
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
    goto __pyx_L1_error;
    __pyx_L8_try_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_L7_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;
  }

  /* "netCDF4/_netCDF4.pyx":6727
 *     return EnumType(group, dt, enum_name, enum_dict, typeid=xtype)
 * 
 * cdef _strencode(pystr,encoding=None):             # <<<<<<<<<<<<<<
 *     # encode a string into bytes.  If already bytes, do nothing.
 *     # uses 'utf-8' for default encoding.
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("netCDF4._netCDF4._strencode", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_encoding);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":6737
 *         return pystr # already bytes or unicode?
 * 
 * def _to_ascii(bytestr):             # <<<<<<<<<<<<<<
 *     # encode a byte string to an ascii encoded string.
 *     return str(bytestr,encoding='ascii')
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_27_to_ascii(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_7netCDF4_8_netCDF4_27_to_ascii = {"_to_ascii", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_27_to_ascii, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_27_to_ascii(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_bytestr = 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("_to_ascii (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_bytestr,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 6737, __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(0, 6737, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "_to_ascii", 0) < (0)) __PYX_ERR(0, 6737, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("_to_ascii", 1, 1, 1, i); __PYX_ERR(0, 6737, __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(0, 6737, __pyx_L3_error)
    }
    __pyx_v_bytestr = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_to_ascii", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 6737, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4._to_ascii", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_26_to_ascii(__pyx_self, __pyx_v_bytestr);

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_26_to_ascii(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_bytestr) {
  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("_to_ascii", 0);

  /* "netCDF4/_netCDF4.pyx":6739
 * def _to_ascii(bytestr):
 *     # encode a byte string to an ascii encoded string.
 *     return str(bytestr,encoding='ascii')             # <<<<<<<<<<<<<<
 * 
 * def stringtoarr(string,NUMCHARS,dtype='S'):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = NULL;
  __pyx_t_3 = 1;
  {
    PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_2, __pyx_v_bytestr};
    __pyx_t_4 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6739, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_encoding, __pyx_mstate_global->__pyx_n_u_ascii, __pyx_t_4, __pyx_callargs+2, 0) < (0)) __PYX_ERR(0, 6739, __pyx_L1_error)
    __pyx_t_1 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)(&PyUnicode_Type), __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_4);
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6739, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":6737
 *         return pystr # already bytes or unicode?
 * 
 * def _to_ascii(bytestr):             # <<<<<<<<<<<<<<
 *     # encode a byte string to an ascii encoded string.
 *     return str(bytestr,encoding='ascii')
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("netCDF4._netCDF4._to_ascii", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":6741
 *     return str(bytestr,encoding='ascii')
 * 
 * def stringtoarr(string,NUMCHARS,dtype='S'):             # <<<<<<<<<<<<<<
 *     """
 * **`stringtoarr(a, NUMCHARS,dtype='S')`**
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_29stringtoarr(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_7netCDF4_8_netCDF4_28stringtoarr, "\n**`stringtoarr(a, NUMCHARS,dtype='S')`**\n\nconvert a string to a character array of length `NUMCHARS`\n\n**`a`**:  Input python string.\n\n**`NUMCHARS`**:  number of characters used to represent string\n(if len(a) < `NUMCHARS`, it will be padded on the right with blanks).\n\n**`dtype`**:  type of numpy array to return.  Default is `'S'`, which\nmeans an array of dtype `'S1'` will be returned.  If dtype=`'U'`, a\nunicode array (dtype = `'U1'`) will be returned.\n\nreturns a rank 1 numpy character array of length NUMCHARS with datatype `'S1'`\n(default) or `'U1'` (if dtype=`'U'`)");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_29stringtoarr = {"stringtoarr", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_29stringtoarr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_28stringtoarr};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_29stringtoarr(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_string = 0;
  PyObject *__pyx_v_NUMCHARS = 0;
  PyObject *__pyx_v_dtype = 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("stringtoarr (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_string,&__pyx_mstate_global->__pyx_n_u_NUMCHARS,&__pyx_mstate_global->__pyx_n_u_dtype,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 6741, __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(0, 6741, __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(0, 6741, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 6741, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "stringtoarr", 0) < (0)) __PYX_ERR(0, 6741, __pyx_L3_error)
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)((PyObject*)__pyx_mstate_global->__pyx_n_u_S)));
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("stringtoarr", 0, 2, 3, i); __PYX_ERR(0, 6741, __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(0, 6741, __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(0, 6741, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 6741, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)((PyObject*)__pyx_mstate_global->__pyx_n_u_S)));
    }
    __pyx_v_string = values[0];
    __pyx_v_NUMCHARS = values[1];
    __pyx_v_dtype = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("stringtoarr", 0, 2, 3, __pyx_nargs); __PYX_ERR(0, 6741, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4.stringtoarr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_28stringtoarr(__pyx_self, __pyx_v_string, __pyx_v_NUMCHARS, __pyx_v_dtype);

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_28stringtoarr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_string, PyObject *__pyx_v_NUMCHARS, PyObject *__pyx_v_dtype) {
  PyObject *__pyx_v_arr = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  size_t __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  Py_ssize_t __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("stringtoarr", 0);

  /* "netCDF4/_netCDF4.pyx":6758
 * returns a rank 1 numpy character array of length NUMCHARS with datatype `'S1'`
 * (default) or `'U1'` (if dtype=`'U'`)"""
 *     if dtype not in ["S","U"]:             # <<<<<<<<<<<<<<
 *         raise ValueError("dtype must string or unicode ('S' or 'U')")
 *     arr = numpy.zeros(NUMCHARS,dtype+'1')
*/
  __Pyx_INCREF(__pyx_v_dtype);
  __pyx_t_1 = __pyx_v_dtype;
  __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_S, Py_NE)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 6758, __pyx_L1_error)
  if (__pyx_t_3) {
  } else {
    __pyx_t_2 = __pyx_t_3;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_U, Py_NE)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 6758, __pyx_L1_error)
  __pyx_t_2 = __pyx_t_3;
  __pyx_L4_bool_binop_done:;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = __pyx_t_2;
  if (unlikely(__pyx_t_3)) {

    /* "netCDF4/_netCDF4.pyx":6759
 * (default) or `'U1'` (if dtype=`'U'`)"""
 *     if dtype not in ["S","U"]:
 *         raise ValueError("dtype must string or unicode ('S' or 'U')")             # <<<<<<<<<<<<<<
 *     arr = numpy.zeros(NUMCHARS,dtype+'1')
 *     arr[0:len(string)] = tuple(string)
*/
    __pyx_t_4 = NULL;
    __pyx_t_5 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_dtype_must_string_or_unicode_S_o};
      __pyx_t_1 = __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_1)) __PYX_ERR(0, 6759, __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(0, 6759, __pyx_L1_error)

    /* "netCDF4/_netCDF4.pyx":6758
 * returns a rank 1 numpy character array of length NUMCHARS with datatype `'S1'`
 * (default) or `'U1'` (if dtype=`'U'`)"""
 *     if dtype not in ["S","U"]:             # <<<<<<<<<<<<<<
 *         raise ValueError("dtype must string or unicode ('S' or 'U')")
 *     arr = numpy.zeros(NUMCHARS,dtype+'1')
*/
  }

  /* "netCDF4/_netCDF4.pyx":6760
 *     if dtype not in ["S","U"]:
 *         raise ValueError("dtype must string or unicode ('S' or 'U')")
 *     arr = numpy.zeros(NUMCHARS,dtype+'1')             # <<<<<<<<<<<<<<
 *     arr[0:len(string)] = tuple(string)
 *     return arr
*/
  __pyx_t_4 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6760, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_zeros); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6760, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = PyNumber_Add(__pyx_v_dtype, __pyx_mstate_global->__pyx_kp_u_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6760, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_5 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_7))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_7);
    assert(__pyx_t_4);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7);
    __Pyx_INCREF(__pyx_t_4);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_7, __pyx__function);
    __pyx_t_5 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_v_NUMCHARS, __pyx_t_6};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_5, (3-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6760, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_v_arr = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":6761
 *         raise ValueError("dtype must string or unicode ('S' or 'U')")
 *     arr = numpy.zeros(NUMCHARS,dtype+'1')
 *     arr[0:len(string)] = tuple(string)             # <<<<<<<<<<<<<<
 *     return arr
 * 
*/
  __pyx_t_1 = __Pyx_PySequence_Tuple(__pyx_v_string); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6761, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = PyObject_Length(__pyx_v_string); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(0, 6761, __pyx_L1_error)
  if (__Pyx_PyObject_SetSlice(__pyx_v_arr, __pyx_t_1, 0, __pyx_t_8, NULL, NULL, NULL, 1, 1, 1) < (0)) __PYX_ERR(0, 6761, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":6762
 *     arr = numpy.zeros(NUMCHARS,dtype+'1')
 *     arr[0:len(string)] = tuple(string)
 *     return arr             # <<<<<<<<<<<<<<
 * 
 * def stringtochar(a,encoding='utf-8'):
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_arr);
  __pyx_r = __pyx_v_arr;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":6741
 *     return str(bytestr,encoding='ascii')
 * 
 * def stringtoarr(string,NUMCHARS,dtype='S'):             # <<<<<<<<<<<<<<
 *     """
 * **`stringtoarr(a, NUMCHARS,dtype='S')`**
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("netCDF4._netCDF4.stringtoarr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_arr);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":6764
 *     return arr
 * 
 * def stringtochar(a,encoding='utf-8'):             # <<<<<<<<<<<<<<
 *     """
 * **`stringtochar(a,encoding='utf-8')`**
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_31stringtochar(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_7netCDF4_8_netCDF4_30stringtochar, "\n**`stringtochar(a,encoding='utf-8')`**\n\nconvert a string array to a character array with one extra dimension\n\n**`a`**:  Input numpy string array with numpy datatype `'SN'` or `'UN'`, where N\nis the number of characters in each string.  Will be converted to\nan array of characters (datatype `'S1'` or `'U1'`) of shape `a.shape + (N,)`.\n\noptional kwarg `encoding` can be used to specify character encoding (default\n`utf-8`). If `encoding` is 'none' or 'bytes', a `numpy.string_` the input array\nis treated a raw byte strings (`numpy.string_`).\n\nreturns a numpy character array with datatype `'S1'` or `'U1'`\nand shape `a.shape + (N,)`, where N is the length of each string in a.");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_31stringtochar = {"stringtochar", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_31stringtochar, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_30stringtochar};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_31stringtochar(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_a = 0;
  PyObject *__pyx_v_encoding = 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("stringtochar (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_a,&__pyx_mstate_global->__pyx_n_u_encoding,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 6764, __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(0, 6764, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 6764, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "stringtochar", 0) < (0)) __PYX_ERR(0, 6764, __pyx_L3_error)
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)((PyObject*)__pyx_mstate_global->__pyx_kp_u_utf_8)));
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("stringtochar", 0, 1, 2, i); __PYX_ERR(0, 6764, __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(0, 6764, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 6764, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)((PyObject*)__pyx_mstate_global->__pyx_kp_u_utf_8)));
    }
    __pyx_v_a = values[0];
    __pyx_v_encoding = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("stringtochar", 0, 1, 2, __pyx_nargs); __PYX_ERR(0, 6764, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4.stringtochar", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_30stringtochar(__pyx_self, __pyx_v_a, __pyx_v_encoding);

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_30stringtochar(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_a, PyObject *__pyx_v_encoding) {
  PyObject *__pyx_v_dtype = NULL;
  PyObject *__pyx_v_b = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  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_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("stringtochar", 0);

  /* "netCDF4/_netCDF4.pyx":6780
 * returns a numpy character array with datatype `'S1'` or `'U1'`
 * and shape `a.shape + (N,)`, where N is the length of each string in a."""
 *     dtype = a.dtype.kind             # <<<<<<<<<<<<<<
 *     if dtype not in ["S","U"]:
 *         raise ValueError("type must string or unicode ('S' or 'U')")
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_a, __pyx_mstate_global->__pyx_n_u_dtype); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6780, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_kind); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6780, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_dtype = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":6781
 * and shape `a.shape + (N,)`, where N is the length of each string in a."""
 *     dtype = a.dtype.kind
 *     if dtype not in ["S","U"]:             # <<<<<<<<<<<<<<
 *         raise ValueError("type must string or unicode ('S' or 'U')")
 *     if encoding in ['none','None','bytes']:
*/
  __Pyx_INCREF(__pyx_v_dtype);
  __pyx_t_2 = __pyx_v_dtype;
  __pyx_t_4 = (__Pyx_PyUnicode_Equals(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_S, Py_NE)); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 6781, __pyx_L1_error)
  if (__pyx_t_4) {
  } else {
    __pyx_t_3 = __pyx_t_4;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_4 = (__Pyx_PyUnicode_Equals(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_U, Py_NE)); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 6781, __pyx_L1_error)
  __pyx_t_3 = __pyx_t_4;
  __pyx_L4_bool_binop_done:;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __pyx_t_3;
  if (unlikely(__pyx_t_4)) {

    /* "netCDF4/_netCDF4.pyx":6782
 *     dtype = a.dtype.kind
 *     if dtype not in ["S","U"]:
 *         raise ValueError("type must string or unicode ('S' or 'U')")             # <<<<<<<<<<<<<<
 *     if encoding in ['none','None','bytes']:
 *         b = numpy.array(tuple(a.tobytes()),'S1')
*/
    __pyx_t_1 = NULL;
    __pyx_t_5 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_mstate_global->__pyx_kp_u_type_must_string_or_unicode_S_or};
      __pyx_t_2 = __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_1); __pyx_t_1 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6782, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(0, 6782, __pyx_L1_error)

    /* "netCDF4/_netCDF4.pyx":6781
 * and shape `a.shape + (N,)`, where N is the length of each string in a."""
 *     dtype = a.dtype.kind
 *     if dtype not in ["S","U"]:             # <<<<<<<<<<<<<<
 *         raise ValueError("type must string or unicode ('S' or 'U')")
 *     if encoding in ['none','None','bytes']:
*/
  }

  /* "netCDF4/_netCDF4.pyx":6783
 *     if dtype not in ["S","U"]:
 *         raise ValueError("type must string or unicode ('S' or 'U')")
 *     if encoding in ['none','None','bytes']:             # <<<<<<<<<<<<<<
 *         b = numpy.array(tuple(a.tobytes()),'S1')
 *     else:
*/
  __Pyx_INCREF(__pyx_v_encoding);
  __pyx_t_2 = __pyx_v_encoding;
  __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_none, Py_EQ)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 6783, __pyx_L1_error)
  if (!__pyx_t_3) {
  } else {
    __pyx_t_4 = __pyx_t_3;
    goto __pyx_L7_bool_binop_done;
  }
  __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_None, Py_EQ)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 6783, __pyx_L1_error)
  if (!__pyx_t_3) {
  } else {
    __pyx_t_4 = __pyx_t_3;
    goto __pyx_L7_bool_binop_done;
  }
  __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_bytes, Py_EQ)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 6783, __pyx_L1_error)
  __pyx_t_4 = __pyx_t_3;
  __pyx_L7_bool_binop_done:;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_3 = __pyx_t_4;
  if (__pyx_t_3) {

    /* "netCDF4/_netCDF4.pyx":6784
 *         raise ValueError("type must string or unicode ('S' or 'U')")
 *     if encoding in ['none','None','bytes']:
 *         b = numpy.array(tuple(a.tobytes()),'S1')             # <<<<<<<<<<<<<<
 *     else:
 *         b = numpy.array(tuple(a.tobytes().decode(encoding)),dtype+'1')
*/
    __pyx_t_1 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6784, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_array); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6784, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_8 = __pyx_v_a;
    __Pyx_INCREF(__pyx_t_8);
    __pyx_t_5 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_8, NULL};
      __pyx_t_6 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_tobytes, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6784, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
    }
    __pyx_t_8 = __Pyx_PySequence_Tuple(__pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6784, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_5 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_7);
      assert(__pyx_t_1);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_7, __pyx__function);
      __pyx_t_5 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_1, __pyx_t_8, __pyx_mstate_global->__pyx_n_u_S1};
      __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_5, (3-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6784, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __pyx_v_b = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "netCDF4/_netCDF4.pyx":6783
 *     if dtype not in ["S","U"]:
 *         raise ValueError("type must string or unicode ('S' or 'U')")
 *     if encoding in ['none','None','bytes']:             # <<<<<<<<<<<<<<
 *         b = numpy.array(tuple(a.tobytes()),'S1')
 *     else:
*/
    goto __pyx_L6;
  }

  /* "netCDF4/_netCDF4.pyx":6786
 *         b = numpy.array(tuple(a.tobytes()),'S1')
 *     else:
 *         b = numpy.array(tuple(a.tobytes().decode(encoding)),dtype+'1')             # <<<<<<<<<<<<<<
 *     b.shape = a.shape + (a.itemsize,)
 *     return b
*/
  /*else*/ {
    __pyx_t_7 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_numpy); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6786, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_array); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6786, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_10 = __pyx_v_a;
    __Pyx_INCREF(__pyx_t_10);
    __pyx_t_5 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_10, NULL};
      __pyx_t_9 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_tobytes, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 6786, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
    }
    __pyx_t_6 = __pyx_t_9;
    __Pyx_INCREF(__pyx_t_6);
    __pyx_t_5 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_v_encoding};
      __pyx_t_8 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_decode, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__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_8)) __PYX_ERR(0, 6786, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
    }
    __pyx_t_9 = __Pyx_PySequence_Tuple(__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 6786, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_8 = PyNumber_Add(__pyx_v_dtype, __pyx_mstate_global->__pyx_kp_u_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6786, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_5 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_1))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1);
      assert(__pyx_t_7);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_1, __pyx__function);
      __pyx_t_5 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_t_9, __pyx_t_8};
      __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_1, __pyx_callargs+__pyx_t_5, (3-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6786, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __pyx_v_b = __pyx_t_2;
    __pyx_t_2 = 0;
  }
  __pyx_L6:;

  /* "netCDF4/_netCDF4.pyx":6787
 *     else:
 *         b = numpy.array(tuple(a.tobytes().decode(encoding)),dtype+'1')
 *     b.shape = a.shape + (a.itemsize,)             # <<<<<<<<<<<<<<
 *     return b
 * 
*/
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_a, __pyx_mstate_global->__pyx_n_u_shape); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6787, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_a, __pyx_mstate_global->__pyx_n_u_itemsize); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6787, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6787, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_1) != (0)) __PYX_ERR(0, 6787, __pyx_L1_error);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyNumber_Add(__pyx_t_2, __pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6787, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_b, __pyx_mstate_global->__pyx_n_u_shape, __pyx_t_1) < (0)) __PYX_ERR(0, 6787, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":6788
 *         b = numpy.array(tuple(a.tobytes().decode(encoding)),dtype+'1')
 *     b.shape = a.shape + (a.itemsize,)
 *     return b             # <<<<<<<<<<<<<<
 * 
 * def chartostring(b,encoding='utf-8'):
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_b);
  __pyx_r = __pyx_v_b;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":6764
 *     return arr
 * 
 * def stringtochar(a,encoding='utf-8'):             # <<<<<<<<<<<<<<
 *     """
 * **`stringtochar(a,encoding='utf-8')`**
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __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_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("netCDF4._netCDF4.stringtochar", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_dtype);
  __Pyx_XDECREF(__pyx_v_b);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":6790
 *     return b
 * 
 * def chartostring(b,encoding='utf-8'):             # <<<<<<<<<<<<<<
 *     """
 * **`chartostring(b,encoding='utf-8')`**
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_33chartostring(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_7netCDF4_8_netCDF4_32chartostring, "\n**`chartostring(b,encoding='utf-8')`**\n\nconvert a character array to a string array with one less dimension.\n\n**`b`**:  Input character array (numpy datatype `'S1'` or `'U1'`).\nWill be converted to a array of strings, where each string has a fixed\nlength of `b.shape[-1]` characters.\n\noptional kwarg `encoding` can be used to specify character encoding (default\n`utf-8`). If `encoding` is 'none' or 'bytes', a `numpy.string_` byte array is\nreturned.\n\nreturns a numpy string array with datatype `'UN'` (or `'SN'`) and shape\n`b.shape[:-1]` where where `N=b.shape[-1]`.");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_33chartostring = {"chartostring", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_33chartostring, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_32chartostring};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_33chartostring(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_b = 0;
  PyObject *__pyx_v_encoding = 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("chartostring (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_b,&__pyx_mstate_global->__pyx_n_u_encoding,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 6790, __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(0, 6790, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 6790, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "chartostring", 0) < (0)) __PYX_ERR(0, 6790, __pyx_L3_error)
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)((PyObject*)__pyx_mstate_global->__pyx_kp_u_utf_8)));
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("chartostring", 0, 1, 2, i); __PYX_ERR(0, 6790, __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(0, 6790, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 6790, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)((PyObject*)__pyx_mstate_global->__pyx_kp_u_utf_8)));
    }
    __pyx_v_b = values[0];
    __pyx_v_encoding = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("chartostring", 0, 1, 2, __pyx_nargs); __PYX_ERR(0, 6790, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4.chartostring", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_32chartostring(__pyx_self, __pyx_v_b, __pyx_v_encoding);

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_32chartostring(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_b, PyObject *__pyx_v_encoding) {
  PyObject *__pyx_v_dtype = NULL;
  PyObject *__pyx_v_bs = NULL;
  PyObject *__pyx_v_slen = NULL;
  PyObject *__pyx_v_a = NULL;
  PyObject *__pyx_9genexpr18__pyx_v_n1 = NULL;
  PyObject *__pyx_9genexpr19__pyx_v_n1 = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  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;
  Py_ssize_t __pyx_t_10;
  PyObject *__pyx_t_11 = NULL;
  PyObject *(*__pyx_t_12)(PyObject *);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("chartostring", 0);

  /* "netCDF4/_netCDF4.pyx":6806
 * returns a numpy string array with datatype `'UN'` (or `'SN'`) and shape
 * `b.shape[:-1]` where where `N=b.shape[-1]`."""
 *     dtype = b.dtype.kind             # <<<<<<<<<<<<<<
 *     if dtype not in ["S","U"]:
 *         raise ValueError("type must be string or unicode ('S' or 'U')")
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_mstate_global->__pyx_n_u_dtype); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6806, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_kind); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6806, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_dtype = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":6807
 * `b.shape[:-1]` where where `N=b.shape[-1]`."""
 *     dtype = b.dtype.kind
 *     if dtype not in ["S","U"]:             # <<<<<<<<<<<<<<
 *         raise ValueError("type must be string or unicode ('S' or 'U')")
 *     if encoding in ['none','None','bytes']:
*/
  __Pyx_INCREF(__pyx_v_dtype);
  __pyx_t_2 = __pyx_v_dtype;
  __pyx_t_4 = (__Pyx_PyUnicode_Equals(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_S, Py_NE)); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 6807, __pyx_L1_error)
  if (__pyx_t_4) {
  } else {
    __pyx_t_3 = __pyx_t_4;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_4 = (__Pyx_PyUnicode_Equals(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_U, Py_NE)); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 6807, __pyx_L1_error)
  __pyx_t_3 = __pyx_t_4;
  __pyx_L4_bool_binop_done:;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __pyx_t_3;
  if (unlikely(__pyx_t_4)) {

    /* "netCDF4/_netCDF4.pyx":6808
 *     dtype = b.dtype.kind
 *     if dtype not in ["S","U"]:
 *         raise ValueError("type must be string or unicode ('S' or 'U')")             # <<<<<<<<<<<<<<
 *     if encoding in ['none','None','bytes']:
 *         bs = b.tobytes()
*/
    __pyx_t_1 = NULL;
    __pyx_t_5 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_mstate_global->__pyx_kp_u_type_must_be_string_or_unicode_S};
      __pyx_t_2 = __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_1); __pyx_t_1 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6808, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(0, 6808, __pyx_L1_error)

    /* "netCDF4/_netCDF4.pyx":6807
 * `b.shape[:-1]` where where `N=b.shape[-1]`."""
 *     dtype = b.dtype.kind
 *     if dtype not in ["S","U"]:             # <<<<<<<<<<<<<<
 *         raise ValueError("type must be string or unicode ('S' or 'U')")
 *     if encoding in ['none','None','bytes']:
*/
  }

  /* "netCDF4/_netCDF4.pyx":6809
 *     if dtype not in ["S","U"]:
 *         raise ValueError("type must be string or unicode ('S' or 'U')")
 *     if encoding in ['none','None','bytes']:             # <<<<<<<<<<<<<<
 *         bs = b.tobytes()
 *     else:
*/
  __Pyx_INCREF(__pyx_v_encoding);
  __pyx_t_2 = __pyx_v_encoding;
  __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_none, Py_EQ)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 6809, __pyx_L1_error)
  if (!__pyx_t_3) {
  } else {
    __pyx_t_4 = __pyx_t_3;
    goto __pyx_L7_bool_binop_done;
  }
  __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_None, Py_EQ)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 6809, __pyx_L1_error)
  if (!__pyx_t_3) {
  } else {
    __pyx_t_4 = __pyx_t_3;
    goto __pyx_L7_bool_binop_done;
  }
  __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_bytes, Py_EQ)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 6809, __pyx_L1_error)
  __pyx_t_4 = __pyx_t_3;
  __pyx_L7_bool_binop_done:;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_3 = __pyx_t_4;
  if (__pyx_t_3) {

    /* "netCDF4/_netCDF4.pyx":6810
 *         raise ValueError("type must be string or unicode ('S' or 'U')")
 *     if encoding in ['none','None','bytes']:
 *         bs = b.tobytes()             # <<<<<<<<<<<<<<
 *     else:
 *         bs = b.tobytes().decode(encoding)
*/
    __pyx_t_1 = __pyx_v_b;
    __Pyx_INCREF(__pyx_t_1);
    __pyx_t_5 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_1, NULL};
      __pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_tobytes, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6810, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __pyx_v_bs = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "netCDF4/_netCDF4.pyx":6809
 *     if dtype not in ["S","U"]:
 *         raise ValueError("type must be string or unicode ('S' or 'U')")
 *     if encoding in ['none','None','bytes']:             # <<<<<<<<<<<<<<
 *         bs = b.tobytes()
 *     else:
*/
    goto __pyx_L6;
  }

  /* "netCDF4/_netCDF4.pyx":6812
 *         bs = b.tobytes()
 *     else:
 *         bs = b.tobytes().decode(encoding)             # <<<<<<<<<<<<<<
 *     slen = int(b.shape[-1])
 *     if encoding in ['none','None','bytes']:
*/
  /*else*/ {
    __pyx_t_7 = __pyx_v_b;
    __Pyx_INCREF(__pyx_t_7);
    __pyx_t_5 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_7, NULL};
      __pyx_t_6 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_tobytes, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6812, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
    }
    __pyx_t_1 = __pyx_t_6;
    __Pyx_INCREF(__pyx_t_1);
    __pyx_t_5 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_v_encoding};
      __pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_decode, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6812, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __pyx_v_bs = __pyx_t_2;
    __pyx_t_2 = 0;
  }
  __pyx_L6:;

  /* "netCDF4/_netCDF4.pyx":6813
 *     else:
 *         bs = b.tobytes().decode(encoding)
 *     slen = int(b.shape[-1])             # <<<<<<<<<<<<<<
 *     if encoding in ['none','None','bytes']:
 *         a = numpy.array([bs[n1:n1+slen] for n1 in range(0,len(bs),slen)],'S'+repr(slen))
*/
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_mstate_global->__pyx_n_u_shape); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6813, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_6 = __Pyx_GetItemInt(__pyx_t_2, -1L, long, 1, __Pyx_PyLong_From_long, 0, 1, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6813, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyNumber_Int(__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6813, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_v_slen = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":6814
 *         bs = b.tobytes().decode(encoding)
 *     slen = int(b.shape[-1])
 *     if encoding in ['none','None','bytes']:             # <<<<<<<<<<<<<<
 *         a = numpy.array([bs[n1:n1+slen] for n1 in range(0,len(bs),slen)],'S'+repr(slen))
 *     else:
*/
  __Pyx_INCREF(__pyx_v_encoding);
  __pyx_t_2 = __pyx_v_encoding;
  __pyx_t_4 = (__Pyx_PyUnicode_Equals(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_none, Py_EQ)); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 6814, __pyx_L1_error)
  if (!__pyx_t_4) {
  } else {
    __pyx_t_3 = __pyx_t_4;
    goto __pyx_L11_bool_binop_done;
  }
  __pyx_t_4 = (__Pyx_PyUnicode_Equals(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_None, Py_EQ)); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 6814, __pyx_L1_error)
  if (!__pyx_t_4) {
  } else {
    __pyx_t_3 = __pyx_t_4;
    goto __pyx_L11_bool_binop_done;
  }
  __pyx_t_4 = (__Pyx_PyUnicode_Equals(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_bytes, Py_EQ)); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 6814, __pyx_L1_error)
  __pyx_t_3 = __pyx_t_4;
  __pyx_L11_bool_binop_done:;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __pyx_t_3;
  if (__pyx_t_4) {

    /* "netCDF4/_netCDF4.pyx":6815
 *     slen = int(b.shape[-1])
 *     if encoding in ['none','None','bytes']:
 *         a = numpy.array([bs[n1:n1+slen] for n1 in range(0,len(bs),slen)],'S'+repr(slen))             # <<<<<<<<<<<<<<
 *     else:
 *         a = numpy.array([bs[n1:n1+slen] for n1 in range(0,len(bs),slen)],'U'+repr(slen))
*/
    __pyx_t_6 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6815, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_array); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6815, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    { /* enter inner scope */
      __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6815, __pyx_L16_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_9 = NULL;
      __pyx_t_10 = PyObject_Length(__pyx_v_bs); if (unlikely(__pyx_t_10 == ((Py_ssize_t)-1))) __PYX_ERR(0, 6815, __pyx_L16_error)
      __pyx_t_11 = PyLong_FromSsize_t(__pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 6815, __pyx_L16_error)
      __Pyx_GOTREF(__pyx_t_11);
      __pyx_t_5 = 1;
      {
        PyObject *__pyx_callargs[4] = {__pyx_t_9, __pyx_mstate_global->__pyx_int_0, __pyx_t_11, __pyx_v_slen};
        __pyx_t_8 = __Pyx_PyObject_FastCall((PyObject*)(&PyRange_Type), __pyx_callargs+__pyx_t_5, (4-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
        if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6815, __pyx_L16_error)
        __Pyx_GOTREF(__pyx_t_8);
      }
      __pyx_t_11 = PyObject_GetIter(__pyx_t_8); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 6815, __pyx_L16_error)
      __Pyx_GOTREF(__pyx_t_11);
      __pyx_t_12 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_11); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 6815, __pyx_L16_error)
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      for (;;) {
        {
          __pyx_t_8 = __pyx_t_12(__pyx_t_11);
          if (unlikely(!__pyx_t_8)) {
            PyObject* exc_type = PyErr_Occurred();
            if (exc_type) {
              if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 6815, __pyx_L16_error)
              PyErr_Clear();
            }
            break;
          }
        }
        __Pyx_GOTREF(__pyx_t_8);
        if (__Pyx_PyInt_FromNumber(&__pyx_t_8, NULL, 1) < (0)) __PYX_ERR(0, 6815, __pyx_L16_error)
        __Pyx_XDECREF_SET(__pyx_9genexpr18__pyx_v_n1, ((PyObject*)__pyx_t_8));
        __pyx_t_8 = 0;
        __pyx_t_8 = PyNumber_Add(__pyx_9genexpr18__pyx_v_n1, __pyx_v_slen); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6815, __pyx_L16_error)
        __Pyx_GOTREF(__pyx_t_8);
        __pyx_t_9 = __Pyx_PyObject_GetSlice(__pyx_v_bs, 0, 0, &__pyx_9genexpr18__pyx_v_n1, &__pyx_t_8, NULL, 0, 0, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 6815, __pyx_L16_error)
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_9))) __PYX_ERR(0, 6815, __pyx_L16_error)
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      }
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_XDECREF(__pyx_9genexpr18__pyx_v_n1); __pyx_9genexpr18__pyx_v_n1 = 0;
      goto __pyx_L20_exit_scope;
      __pyx_L16_error:;
      __Pyx_XDECREF(__pyx_9genexpr18__pyx_v_n1); __pyx_9genexpr18__pyx_v_n1 = 0;
      goto __pyx_L1_error;
      __pyx_L20_exit_scope:;
    } /* exit inner scope */
    __pyx_t_11 = PyObject_Repr(__pyx_v_slen); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 6815, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __pyx_t_9 = __Pyx_PyUnicode_ConcatSafe(__pyx_mstate_global->__pyx_n_u_S, __pyx_t_11); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 6815, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __pyx_t_5 = 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_5 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_t_1, __pyx_t_9};
      __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_5, (3-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6815, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __pyx_v_a = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "netCDF4/_netCDF4.pyx":6814
 *         bs = b.tobytes().decode(encoding)
 *     slen = int(b.shape[-1])
 *     if encoding in ['none','None','bytes']:             # <<<<<<<<<<<<<<
 *         a = numpy.array([bs[n1:n1+slen] for n1 in range(0,len(bs),slen)],'S'+repr(slen))
 *     else:
*/
    goto __pyx_L10;
  }

  /* "netCDF4/_netCDF4.pyx":6817
 *         a = numpy.array([bs[n1:n1+slen] for n1 in range(0,len(bs),slen)],'S'+repr(slen))
 *     else:
 *         a = numpy.array([bs[n1:n1+slen] for n1 in range(0,len(bs),slen)],'U'+repr(slen))             # <<<<<<<<<<<<<<
 *     a.shape = b.shape[:-1]
 *     return a
*/
  /*else*/ {
    __pyx_t_7 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_mstate_global->__pyx_n_u_numpy); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 6817, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_mstate_global->__pyx_n_u_array); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6817, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    { /* enter inner scope */
      __pyx_t_9 = PyList_New(0); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 6817, __pyx_L23_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_11 = NULL;
      __pyx_t_10 = PyObject_Length(__pyx_v_bs); if (unlikely(__pyx_t_10 == ((Py_ssize_t)-1))) __PYX_ERR(0, 6817, __pyx_L23_error)
      __pyx_t_8 = PyLong_FromSsize_t(__pyx_t_10); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6817, __pyx_L23_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_5 = 1;
      {
        PyObject *__pyx_callargs[4] = {__pyx_t_11, __pyx_mstate_global->__pyx_int_0, __pyx_t_8, __pyx_v_slen};
        __pyx_t_6 = __Pyx_PyObject_FastCall((PyObject*)(&PyRange_Type), __pyx_callargs+__pyx_t_5, (4-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6817, __pyx_L23_error)
        __Pyx_GOTREF(__pyx_t_6);
      }
      __pyx_t_8 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6817, __pyx_L23_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_12 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_8); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 6817, __pyx_L23_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      for (;;) {
        {
          __pyx_t_6 = __pyx_t_12(__pyx_t_8);
          if (unlikely(!__pyx_t_6)) {
            PyObject* exc_type = PyErr_Occurred();
            if (exc_type) {
              if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 6817, __pyx_L23_error)
              PyErr_Clear();
            }
            break;
          }
        }
        __Pyx_GOTREF(__pyx_t_6);
        if (__Pyx_PyInt_FromNumber(&__pyx_t_6, NULL, 1) < (0)) __PYX_ERR(0, 6817, __pyx_L23_error)
        __Pyx_XDECREF_SET(__pyx_9genexpr19__pyx_v_n1, ((PyObject*)__pyx_t_6));
        __pyx_t_6 = 0;
        __pyx_t_6 = PyNumber_Add(__pyx_9genexpr19__pyx_v_n1, __pyx_v_slen); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6817, __pyx_L23_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_11 = __Pyx_PyObject_GetSlice(__pyx_v_bs, 0, 0, &__pyx_9genexpr19__pyx_v_n1, &__pyx_t_6, NULL, 0, 0, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 6817, __pyx_L23_error)
        __Pyx_GOTREF(__pyx_t_11);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        if (unlikely(__Pyx_ListComp_Append(__pyx_t_9, (PyObject*)__pyx_t_11))) __PYX_ERR(0, 6817, __pyx_L23_error)
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      }
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_9genexpr19__pyx_v_n1); __pyx_9genexpr19__pyx_v_n1 = 0;
      goto __pyx_L27_exit_scope;
      __pyx_L23_error:;
      __Pyx_XDECREF(__pyx_9genexpr19__pyx_v_n1); __pyx_9genexpr19__pyx_v_n1 = 0;
      goto __pyx_L1_error;
      __pyx_L27_exit_scope:;
    } /* exit inner scope */
    __pyx_t_8 = PyObject_Repr(__pyx_v_slen); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6817, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_11 = __Pyx_PyUnicode_ConcatSafe(__pyx_mstate_global->__pyx_n_u_U, __pyx_t_8); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 6817, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_5 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_1))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1);
      assert(__pyx_t_7);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_1, __pyx__function);
      __pyx_t_5 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_t_9, __pyx_t_11};
      __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_1, __pyx_callargs+__pyx_t_5, (3-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6817, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __pyx_v_a = __pyx_t_2;
    __pyx_t_2 = 0;
  }
  __pyx_L10:;

  /* "netCDF4/_netCDF4.pyx":6818
 *     else:
 *         a = numpy.array([bs[n1:n1+slen] for n1 in range(0,len(bs),slen)],'U'+repr(slen))
 *     a.shape = b.shape[:-1]             # <<<<<<<<<<<<<<
 *     return a
 * 
*/
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_mstate_global->__pyx_n_u_shape); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6818, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyObject_GetSlice(__pyx_t_2, 0, -1L, NULL, NULL, &__pyx_mstate_global->__pyx_slice[2], 0, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6818, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_a, __pyx_mstate_global->__pyx_n_u_shape, __pyx_t_1) < (0)) __PYX_ERR(0, 6818, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":6819
 *         a = numpy.array([bs[n1:n1+slen] for n1 in range(0,len(bs),slen)],'U'+repr(slen))
 *     a.shape = b.shape[:-1]
 *     return a             # <<<<<<<<<<<<<<
 * 
 * class MFDataset(Dataset):
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_a);
  __pyx_r = __pyx_v_a;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":6790
 *     return b
 * 
 * def chartostring(b,encoding='utf-8'):             # <<<<<<<<<<<<<<
 *     """
 * **`chartostring(b,encoding='utf-8')`**
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __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_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("netCDF4._netCDF4.chartostring", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_dtype);
  __Pyx_XDECREF(__pyx_v_bs);
  __Pyx_XDECREF(__pyx_v_slen);
  __Pyx_XDECREF(__pyx_v_a);
  __Pyx_XDECREF(__pyx_9genexpr18__pyx_v_n1);
  __Pyx_XDECREF(__pyx_9genexpr19__pyx_v_n1);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":6852
 *     """
 * 
 *     def __init__(self, files, check=False, aggdim=None, exclude=[],             # <<<<<<<<<<<<<<
 *             master_file=None):
 *         """
*/

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_41__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);

  /* "netCDF4/_netCDF4.pyx":6853
 * 
 *     def __init__(self, files, check=False, aggdim=None, exclude=[],
 *             master_file=None):             # <<<<<<<<<<<<<<
 *         """
 *         **`__init__(self, files, check=False, aggdim=None, exclude=[],
*/
  __pyx_t_1 = PyTuple_New(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6852, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject*)Py_False));
  __Pyx_GIVEREF(((PyObject*)Py_False));
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject*)Py_False)) != (0)) __PYX_ERR(0, 6852, __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(0, 6852, __pyx_L1_error);
  __Pyx_INCREF(__Pyx_CyFunction_Defaults(struct __pyx_defaults, __pyx_self)->arg0);
  __Pyx_GIVEREF(__Pyx_CyFunction_Defaults(struct __pyx_defaults, __pyx_self)->arg0);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, __Pyx_CyFunction_Defaults(struct __pyx_defaults, __pyx_self)->arg0) != (0)) __PYX_ERR(0, 6852, __pyx_L1_error);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 3, Py_None) != (0)) __PYX_ERR(0, 6852, __pyx_L1_error);

  /* "netCDF4/_netCDF4.pyx":6852
 *     """
 * 
 *     def __init__(self, files, check=False, aggdim=None, exclude=[],             # <<<<<<<<<<<<<<
 *             master_file=None):
 *         """
*/
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6852, __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(0, 6852, __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(0, 6852, __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("netCDF4._netCDF4.__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_7netCDF4_8_netCDF4_9MFDataset_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_7netCDF4_8_netCDF4_9MFDataset___init__, "\n        **`__init__(self, files, check=False, aggdim=None, exclude=[],\n        master_file=None)`**\n\n        Open a Dataset spanning multiple files, making it look as if it was a\n        single file. Variables in the list of files that share the same\n        dimension (specified with the keyword `aggdim`) are aggregated. If\n        `aggdim` is not specified, the unlimited is aggregated.  Currently,\n        `aggdim` must be the leftmost (slowest varying) dimension of each\n        of the variables to be aggregated.\n\n        **`files`**: either a sequence of netCDF files or a string with a\n        wildcard (converted to a sorted list of files using glob)  If\n        the `master_file` kwarg is not specified, the first file\n        in the list will become the \"master\" file, defining all the\n        variables with an aggregation dimension which may span\n        subsequent files. Attribute access returns attributes only from \"master\"\n        file. The files are always opened in read-only mode.\n\n        **`check`**: True if you want to do consistency checking to ensure the\n        correct variables structure for all of the netcdf files.  Checking makes\n        the initialization of the MFDataset instance much slower. Default is\n        False.\n\n        **`aggdim`**: The name of the dimension to aggregate over (must\n        be the leftmost dimension of each of the variables to be aggregated).\n        If None (default), aggregate over the unlimited dimension.\n\n        **`exclude`**: A list of variable names to exclude from aggregation.\n        Default is an empty list.\n\n        **`master_file`**: file to use as \"master file\", defining all the\n        variables with an aggregation dimension and all global attributes.\n       ");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_9MFDataset_1__init__ = {"__init__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_9MFDataset_1__init__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_9MFDataset___init__};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9MFDataset_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;
  PyObject *__pyx_v_files = 0;
  PyObject *__pyx_v_check = 0;
  PyObject *__pyx_v_aggdim = 0;
  PyObject *__pyx_v_exclude = 0;
  PyObject *__pyx_v_master_file = 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("__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_self,&__pyx_mstate_global->__pyx_n_u_files,&__pyx_mstate_global->__pyx_n_u_check,&__pyx_mstate_global->__pyx_n_u_aggdim,&__pyx_mstate_global->__pyx_n_u_exclude,&__pyx_mstate_global->__pyx_n_u_master_file,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(0, 6852, __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(0, 6852, __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(0, 6852, __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(0, 6852, __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(0, 6852, __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(0, 6852, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 6852, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_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(0, 6852, __pyx_L3_error)
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)((PyObject*)Py_False)));
      if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[4]) values[4] = __Pyx_NewRef(__pyx_dynamic_args->arg0);

      /* "netCDF4/_netCDF4.pyx":6853
 * 
 *     def __init__(self, files, check=False, aggdim=None, exclude=[],
 *             master_file=None):             # <<<<<<<<<<<<<<
 *         """
 *         **`__init__(self, files, check=False, aggdim=None, exclude=[],
*/
      if (!values[5]) values[5] = __Pyx_NewRef(((PyObject *)Py_None));
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 6, i); __PYX_ERR(0, 6852, __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(0, 6852, __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(0, 6852, __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(0, 6852, __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(0, 6852, __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(0, 6852, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 6852, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)((PyObject*)Py_False)));

      /* "netCDF4/_netCDF4.pyx":6852
 *     """
 * 
 *     def __init__(self, files, check=False, aggdim=None, exclude=[],             # <<<<<<<<<<<<<<
 *             master_file=None):
 *         """
*/
      if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[4]) values[4] = __Pyx_NewRef(__pyx_dynamic_args->arg0);

      /* "netCDF4/_netCDF4.pyx":6853
 * 
 *     def __init__(self, files, check=False, aggdim=None, exclude=[],
 *             master_file=None):             # <<<<<<<<<<<<<<
 *         """
 *         **`__init__(self, files, check=False, aggdim=None, exclude=[],
*/
      if (!values[5]) values[5] = __Pyx_NewRef(((PyObject *)Py_None));
    }
    __pyx_v_self = values[0];
    __pyx_v_files = values[1];
    __pyx_v_check = values[2];
    __pyx_v_aggdim = values[3];
    __pyx_v_exclude = values[4];
    __pyx_v_master_file = values[5];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 6, __pyx_nargs); __PYX_ERR(0, 6852, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4.MFDataset.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(__pyx_self, __pyx_v_self, __pyx_v_files, __pyx_v_check, __pyx_v_aggdim, __pyx_v_exclude, __pyx_v_master_file);

  /* "netCDF4/_netCDF4.pyx":6852
 *     """
 * 
 *     def __init__(self, files, check=False, aggdim=None, exclude=[],             # <<<<<<<<<<<<<<
 *             master_file=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_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_files, PyObject *__pyx_v_check, PyObject *__pyx_v_aggdim, PyObject *__pyx_v_exclude, PyObject *__pyx_v_master_file) {
  PyObject *__pyx_v_msg = NULL;
  PyObject *__pyx_v_master = NULL;
  struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_cdfm = NULL;
  PyObject *__pyx_v_name = NULL;
  PyObject *__pyx_v_value = NULL;
  PyObject *__pyx_v_aggDimId = NULL;
  PyObject *__pyx_v_dimname = NULL;
  PyObject *__pyx_v_dim = NULL;
  PyObject *__pyx_v_aggDimName = NULL;
  PyObject *__pyx_v_masterRecVar = NULL;
  PyObject *__pyx_v_vName = NULL;
  PyObject *__pyx_v_v = NULL;
  PyObject *__pyx_v_dims = NULL;
  PyObject *__pyx_v_shape = NULL;
  PyObject *__pyx_v_dtype = NULL;
  PyObject *__pyx_v_cdf = NULL;
  PyObject *__pyx_v_cdfVLen = NULL;
  PyObject *__pyx_v_cdfRecVar = NULL;
  PyObject *__pyx_v_f = NULL;
  struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_part = NULL;
  int __pyx_v_empty_cdfRecVar;
  PyObject *__pyx_v_varInfo = NULL;
  PyObject *__pyx_v_masterDims = NULL;
  PyObject *__pyx_v_masterShape = NULL;
  PyObject *__pyx_v_masterType = NULL;
  PyObject *__pyx_v_extDims = NULL;
  PyObject *__pyx_v_extShape = NULL;
  PyObject *__pyx_v_extType = NULL;
  PyObject *__pyx_v_varname = NULL;
  PyObject *__pyx_v_var = NULL;
  PyObject *__pyx_v_dset = NULL;
  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_t_6;
  Py_ssize_t __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  int __pyx_t_9;
  int __pyx_t_10;
  Py_ssize_t __pyx_t_11;
  PyObject *(*__pyx_t_12)(PyObject *);
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  PyObject *__pyx_t_15 = NULL;
  PyObject *__pyx_t_16[4];
  PyObject *__pyx_t_17 = NULL;
  PyObject *(*__pyx_t_18)(PyObject *);
  PyObject *__pyx_t_19 = NULL;
  PyObject *__pyx_t_20 = NULL;
  PyObject *__pyx_t_21[11];
  PyObject *__pyx_t_22 = NULL;
  Py_ssize_t __pyx_t_23;
  Py_ssize_t __pyx_t_24;
  int __pyx_t_25;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);
  __Pyx_INCREF(__pyx_v_files);

  /* "netCDF4/_netCDF4.pyx":6891
 *         # Open the master file in the base class, so that the CDFMF instance
 *         # can be used like a CDF instance.
 *         if isinstance(files, str):             # <<<<<<<<<<<<<<
 *             if files.startswith('http'):
 *                 msg='cannot using file globbing for remote (OPeNDAP) datasets'
*/
  __pyx_t_1 = PyUnicode_Check(__pyx_v_files); 
  if (__pyx_t_1) {

    /* "netCDF4/_netCDF4.pyx":6892
 *         # can be used like a CDF instance.
 *         if isinstance(files, str):
 *             if files.startswith('http'):             # <<<<<<<<<<<<<<
 *                 msg='cannot using file globbing for remote (OPeNDAP) datasets'
 *                 raise ValueError(msg)
*/
    __pyx_t_3 = __pyx_v_files;
    __Pyx_INCREF(__pyx_t_3);
    __pyx_t_4 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_n_u_http};
      __pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_startswith, __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(0, 6892, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 6892, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(__pyx_t_1)) {

      /* "netCDF4/_netCDF4.pyx":6893
 *         if isinstance(files, str):
 *             if files.startswith('http'):
 *                 msg='cannot using file globbing for remote (OPeNDAP) datasets'             # <<<<<<<<<<<<<<
 *                 raise ValueError(msg)
 *             else:
*/
      __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u_cannot_using_file_globbing_for_r);
      __pyx_v_msg = __pyx_mstate_global->__pyx_kp_u_cannot_using_file_globbing_for_r;

      /* "netCDF4/_netCDF4.pyx":6894
 *             if files.startswith('http'):
 *                 msg='cannot using file globbing for remote (OPeNDAP) datasets'
 *                 raise ValueError(msg)             # <<<<<<<<<<<<<<
 *             else:
 *                 files = sorted(glob(files))
*/
      __pyx_t_3 = NULL;
      __pyx_t_4 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_msg};
        __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(0, 6894, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
      }
      __Pyx_Raise(__pyx_t_2, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __PYX_ERR(0, 6894, __pyx_L1_error)

      /* "netCDF4/_netCDF4.pyx":6892
 *         # can be used like a CDF instance.
 *         if isinstance(files, str):
 *             if files.startswith('http'):             # <<<<<<<<<<<<<<
 *                 msg='cannot using file globbing for remote (OPeNDAP) datasets'
 *                 raise ValueError(msg)
*/
    }

    /* "netCDF4/_netCDF4.pyx":6896
 *                 raise ValueError(msg)
 *             else:
 *                 files = sorted(glob(files))             # <<<<<<<<<<<<<<
 * 
 *         if not files:
*/
    /*else*/ {
      __pyx_t_3 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_glob); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6896, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_4 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_5))) {
        __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
        assert(__pyx_t_3);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
        __pyx_t_4 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_files};
        __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __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_5); __pyx_t_5 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6896, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
      }
      __pyx_t_5 = PySequence_List(__pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6896, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (unlikely((PyList_Sort(__pyx_t_5) < 0))) __PYX_ERR(0, 6896, __pyx_L1_error)
      __Pyx_DECREF_SET(__pyx_v_files, __pyx_t_5);
      __pyx_t_5 = 0;
    }

    /* "netCDF4/_netCDF4.pyx":6891
 *         # Open the master file in the base class, so that the CDFMF instance
 *         # can be used like a CDF instance.
 *         if isinstance(files, str):             # <<<<<<<<<<<<<<
 *             if files.startswith('http'):
 *                 msg='cannot using file globbing for remote (OPeNDAP) datasets'
*/
  }

  /* "netCDF4/_netCDF4.pyx":6898
 *                 files = sorted(glob(files))
 * 
 *         if not files:             # <<<<<<<<<<<<<<
 *            msg='no files specified (file list is empty)'
 *            raise OSError(msg)
*/
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_files); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 6898, __pyx_L1_error)
  __pyx_t_6 = (!__pyx_t_1);
  if (unlikely(__pyx_t_6)) {

    /* "netCDF4/_netCDF4.pyx":6899
 * 
 *         if not files:
 *            msg='no files specified (file list is empty)'             # <<<<<<<<<<<<<<
 *            raise OSError(msg)
 * 
*/
    __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u_no_files_specified_file_list_is);
    __pyx_v_msg = __pyx_mstate_global->__pyx_kp_u_no_files_specified_file_list_is;

    /* "netCDF4/_netCDF4.pyx":6900
 *         if not files:
 *            msg='no files specified (file list is empty)'
 *            raise OSError(msg)             # <<<<<<<<<<<<<<
 * 
 *         if master_file is not None:
*/
    __pyx_t_2 = NULL;
    __pyx_t_4 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_msg};
      __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_OSError)), __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;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6900, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
    }
    __Pyx_Raise(__pyx_t_5, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __PYX_ERR(0, 6900, __pyx_L1_error)

    /* "netCDF4/_netCDF4.pyx":6898
 *                 files = sorted(glob(files))
 * 
 *         if not files:             # <<<<<<<<<<<<<<
 *            msg='no files specified (file list is empty)'
 *            raise OSError(msg)
*/
  }

  /* "netCDF4/_netCDF4.pyx":6902
 *            raise OSError(msg)
 * 
 *         if master_file is not None:             # <<<<<<<<<<<<<<
 *             if master_file not in files:
 *                 raise ValueError('master_file not in files list')
*/
  __pyx_t_6 = (__pyx_v_master_file != Py_None);
  if (__pyx_t_6) {

    /* "netCDF4/_netCDF4.pyx":6903
 * 
 *         if master_file is not None:
 *             if master_file not in files:             # <<<<<<<<<<<<<<
 *                 raise ValueError('master_file not in files list')
 *             else:
*/
    __pyx_t_6 = (__Pyx_PySequence_ContainsTF(__pyx_v_master_file, __pyx_v_files, Py_NE)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 6903, __pyx_L1_error)
    if (unlikely(__pyx_t_6)) {

      /* "netCDF4/_netCDF4.pyx":6904
 *         if master_file is not None:
 *             if master_file not in files:
 *                 raise ValueError('master_file not in files list')             # <<<<<<<<<<<<<<
 *             else:
 *                 master = master_file
*/
      __pyx_t_2 = NULL;
      __pyx_t_4 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_master_file_not_in_files_list};
        __pyx_t_5 = __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_2); __pyx_t_2 = 0;
        if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6904, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
      }
      __Pyx_Raise(__pyx_t_5, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __PYX_ERR(0, 6904, __pyx_L1_error)

      /* "netCDF4/_netCDF4.pyx":6903
 * 
 *         if master_file is not None:
 *             if master_file not in files:             # <<<<<<<<<<<<<<
 *                 raise ValueError('master_file not in files list')
 *             else:
*/
    }

    /* "netCDF4/_netCDF4.pyx":6906
 *                 raise ValueError('master_file not in files list')
 *             else:
 *                 master = master_file             # <<<<<<<<<<<<<<
 *         else:
 *             master = files[0]
*/
    /*else*/ {
      __Pyx_INCREF(__pyx_v_master_file);
      __pyx_v_master = __pyx_v_master_file;
    }

    /* "netCDF4/_netCDF4.pyx":6902
 *            raise OSError(msg)
 * 
 *         if master_file is not None:             # <<<<<<<<<<<<<<
 *             if master_file not in files:
 *                 raise ValueError('master_file not in files list')
*/
    goto __pyx_L6;
  }

  /* "netCDF4/_netCDF4.pyx":6908
 *                 master = master_file
 *         else:
 *             master = files[0]             # <<<<<<<<<<<<<<
 * 
 *         # Open the master again, this time as a classic CDF instance. This will avoid
*/
  /*else*/ {
    __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_files, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6908, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_v_master = __pyx_t_5;
    __pyx_t_5 = 0;
  }
  __pyx_L6:;

  /* "netCDF4/_netCDF4.pyx":6912
 *         # Open the master again, this time as a classic CDF instance. This will avoid
 *         # calling methods of the CDFMF subclass when querying the master file.
 *         cdfm = Dataset(master)             # <<<<<<<<<<<<<<
 *         # copy attributes from master.
 *         for name, value in cdfm.__dict__.items():
*/
  __pyx_t_2 = NULL;
  __pyx_t_4 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_master};
    __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Dataset, __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;
    if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6912, __pyx_L1_error)
    __Pyx_GOTREF((PyObject *)__pyx_t_5);
  }
  __pyx_v_cdfm = ((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "netCDF4/_netCDF4.pyx":6914
 *         cdfm = Dataset(master)
 *         # copy attributes from master.
 *         for name, value in cdfm.__dict__.items():             # <<<<<<<<<<<<<<
 *             self.__dict__[name] = value
 * 
*/
  __pyx_t_7 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_cdfm), __pyx_mstate_global->__pyx_n_u_dict); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6914, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (unlikely(__pyx_t_2 == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "items");
    __PYX_ERR(0, 6914, __pyx_L1_error)
  }
  __pyx_t_3 = __Pyx_dict_iterator(__pyx_t_2, 0, __pyx_mstate_global->__pyx_n_u_items, (&__pyx_t_8), (&__pyx_t_9)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6914, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_XDECREF(__pyx_t_5);
  __pyx_t_5 = __pyx_t_3;
  __pyx_t_3 = 0;
  while (1) {
    __pyx_t_10 = __Pyx_dict_iter_next(__pyx_t_5, __pyx_t_8, &__pyx_t_7, &__pyx_t_3, &__pyx_t_2, NULL, __pyx_t_9);
    if (unlikely(__pyx_t_10 == 0)) break;
    if (unlikely(__pyx_t_10 == -1)) __PYX_ERR(0, 6914, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_3);
    __pyx_t_3 = 0;
    __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_2);
    __pyx_t_2 = 0;

    /* "netCDF4/_netCDF4.pyx":6915
 *         # copy attributes from master.
 *         for name, value in cdfm.__dict__.items():
 *             self.__dict__[name] = value             # <<<<<<<<<<<<<<
 * 
 *         # Make sure the master defines a dim with name aggdim,
*/
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_dict); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6915, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    if (unlikely((PyObject_SetItem(__pyx_t_2, __pyx_v_name, __pyx_v_value) < 0))) __PYX_ERR(0, 6915, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "netCDF4/_netCDF4.pyx":6919
 *         # Make sure the master defines a dim with name aggdim,
 *         # or an unlimited dimension.
 *         aggDimId = None             # <<<<<<<<<<<<<<
 *         for dimname,dim in cdfm.dimensions.items():
 *             if aggdim is None:
*/
  __Pyx_INCREF(Py_None);
  __pyx_v_aggDimId = Py_None;

  /* "netCDF4/_netCDF4.pyx":6920
 *         # or an unlimited dimension.
 *         aggDimId = None
 *         for dimname,dim in cdfm.dimensions.items():             # <<<<<<<<<<<<<<
 *             if aggdim is None:
 *                 if dim.isunlimited():
*/
  __pyx_t_8 = 0;
  if (unlikely(__pyx_v_cdfm->dimensions == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "items");
    __PYX_ERR(0, 6920, __pyx_L1_error)
  }
  __pyx_t_2 = __Pyx_dict_iterator(__pyx_v_cdfm->dimensions, 0, __pyx_mstate_global->__pyx_n_u_items, (&__pyx_t_7), (&__pyx_t_9)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6920, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __pyx_t_5 = __pyx_t_2;
  __pyx_t_2 = 0;
  while (1) {
    __pyx_t_10 = __Pyx_dict_iter_next(__pyx_t_5, __pyx_t_7, &__pyx_t_8, &__pyx_t_2, &__pyx_t_3, NULL, __pyx_t_9);
    if (unlikely(__pyx_t_10 == 0)) break;
    if (unlikely(__pyx_t_10 == -1)) __PYX_ERR(0, 6920, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_XDECREF_SET(__pyx_v_dimname, __pyx_t_2);
    __pyx_t_2 = 0;
    __Pyx_XDECREF_SET(__pyx_v_dim, __pyx_t_3);
    __pyx_t_3 = 0;

    /* "netCDF4/_netCDF4.pyx":6921
 *         aggDimId = None
 *         for dimname,dim in cdfm.dimensions.items():
 *             if aggdim is None:             # <<<<<<<<<<<<<<
 *                 if dim.isunlimited():
 *                     aggDimId = dim
*/
    __pyx_t_6 = (__pyx_v_aggdim == Py_None);
    if (__pyx_t_6) {

      /* "netCDF4/_netCDF4.pyx":6922
 *         for dimname,dim in cdfm.dimensions.items():
 *             if aggdim is None:
 *                 if dim.isunlimited():             # <<<<<<<<<<<<<<
 *                     aggDimId = dim
 *                     aggDimName = dimname
*/
      __pyx_t_2 = __pyx_v_dim;
      __Pyx_INCREF(__pyx_t_2);
      __pyx_t_4 = 0;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
        __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_isunlimited, __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_3)) __PYX_ERR(0, 6922, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
      }
      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 6922, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (__pyx_t_6) {

        /* "netCDF4/_netCDF4.pyx":6923
 *             if aggdim is None:
 *                 if dim.isunlimited():
 *                     aggDimId = dim             # <<<<<<<<<<<<<<
 *                     aggDimName = dimname
 *             else:
*/
        __Pyx_INCREF(__pyx_v_dim);
        __Pyx_DECREF_SET(__pyx_v_aggDimId, __pyx_v_dim);

        /* "netCDF4/_netCDF4.pyx":6924
 *                 if dim.isunlimited():
 *                     aggDimId = dim
 *                     aggDimName = dimname             # <<<<<<<<<<<<<<
 *             else:
 *                 if dimname == aggdim:
*/
        __Pyx_INCREF(__pyx_v_dimname);
        __Pyx_XDECREF_SET(__pyx_v_aggDimName, __pyx_v_dimname);

        /* "netCDF4/_netCDF4.pyx":6922
 *         for dimname,dim in cdfm.dimensions.items():
 *             if aggdim is None:
 *                 if dim.isunlimited():             # <<<<<<<<<<<<<<
 *                     aggDimId = dim
 *                     aggDimName = dimname
*/
      }

      /* "netCDF4/_netCDF4.pyx":6921
 *         aggDimId = None
 *         for dimname,dim in cdfm.dimensions.items():
 *             if aggdim is None:             # <<<<<<<<<<<<<<
 *                 if dim.isunlimited():
 *                     aggDimId = dim
*/
      goto __pyx_L12;
    }

    /* "netCDF4/_netCDF4.pyx":6926
 *                     aggDimName = dimname
 *             else:
 *                 if dimname == aggdim:             # <<<<<<<<<<<<<<
 *                     aggDimId = dim
 *                     aggDimName = dimname
*/
    /*else*/ {
      __pyx_t_3 = PyObject_RichCompare(__pyx_v_dimname, __pyx_v_aggdim, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6926, __pyx_L1_error)
      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 6926, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (__pyx_t_6) {

        /* "netCDF4/_netCDF4.pyx":6927
 *             else:
 *                 if dimname == aggdim:
 *                     aggDimId = dim             # <<<<<<<<<<<<<<
 *                     aggDimName = dimname
 *         if aggDimId is None:
*/
        __Pyx_INCREF(__pyx_v_dim);
        __Pyx_DECREF_SET(__pyx_v_aggDimId, __pyx_v_dim);

        /* "netCDF4/_netCDF4.pyx":6928
 *                 if dimname == aggdim:
 *                     aggDimId = dim
 *                     aggDimName = dimname             # <<<<<<<<<<<<<<
 *         if aggDimId is None:
 *             raise OSError("master dataset %s does not have a aggregation dimension" % master)
*/
        __Pyx_INCREF(__pyx_v_dimname);
        __Pyx_XDECREF_SET(__pyx_v_aggDimName, __pyx_v_dimname);

        /* "netCDF4/_netCDF4.pyx":6926
 *                     aggDimName = dimname
 *             else:
 *                 if dimname == aggdim:             # <<<<<<<<<<<<<<
 *                     aggDimId = dim
 *                     aggDimName = dimname
*/
      }
    }
    __pyx_L12:;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "netCDF4/_netCDF4.pyx":6929
 *                     aggDimId = dim
 *                     aggDimName = dimname
 *         if aggDimId is None:             # <<<<<<<<<<<<<<
 *             raise OSError("master dataset %s does not have a aggregation dimension" % master)
 * 
*/
  __pyx_t_6 = (__pyx_v_aggDimId == Py_None);
  if (unlikely(__pyx_t_6)) {

    /* "netCDF4/_netCDF4.pyx":6930
 *                     aggDimName = dimname
 *         if aggDimId is None:
 *             raise OSError("master dataset %s does not have a aggregation dimension" % master)             # <<<<<<<<<<<<<<
 * 
 *         # Get info on all aggregation variables defined in the master.
*/
    __pyx_t_3 = NULL;
    __pyx_t_2 = __Pyx_PyUnicode_FormatSafe(__pyx_mstate_global->__pyx_kp_u_master_dataset_s_does_not_have_a, __pyx_v_master); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6930, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_2};
      __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_OSError)), __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_2); __pyx_t_2 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6930, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
    }
    __Pyx_Raise(__pyx_t_5, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __PYX_ERR(0, 6930, __pyx_L1_error)

    /* "netCDF4/_netCDF4.pyx":6929
 *                     aggDimId = dim
 *                     aggDimName = dimname
 *         if aggDimId is None:             # <<<<<<<<<<<<<<
 *             raise OSError("master dataset %s does not have a aggregation dimension" % master)
 * 
*/
  }

  /* "netCDF4/_netCDF4.pyx":6934
 *         # Get info on all aggregation variables defined in the master.
 *         # Make sure the master defines at least one aggregation variable.
 *         masterRecVar = {}             # <<<<<<<<<<<<<<
 *         for vName,v in cdfm.variables.items():
 *             # skip variables specified in exclude list.
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6934, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_v_masterRecVar = ((PyObject*)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "netCDF4/_netCDF4.pyx":6935
 *         # Make sure the master defines at least one aggregation variable.
 *         masterRecVar = {}
 *         for vName,v in cdfm.variables.items():             # <<<<<<<<<<<<<<
 *             # skip variables specified in exclude list.
 *             if vName in exclude: continue
*/
  __pyx_t_7 = 0;
  if (unlikely(__pyx_v_cdfm->variables == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "items");
    __PYX_ERR(0, 6935, __pyx_L1_error)
  }
  __pyx_t_2 = __Pyx_dict_iterator(__pyx_v_cdfm->variables, 0, __pyx_mstate_global->__pyx_n_u_items, (&__pyx_t_8), (&__pyx_t_9)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6935, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __pyx_t_5 = __pyx_t_2;
  __pyx_t_2 = 0;
  while (1) {
    __pyx_t_10 = __Pyx_dict_iter_next(__pyx_t_5, __pyx_t_8, &__pyx_t_7, &__pyx_t_2, &__pyx_t_3, NULL, __pyx_t_9);
    if (unlikely(__pyx_t_10 == 0)) break;
    if (unlikely(__pyx_t_10 == -1)) __PYX_ERR(0, 6935, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_XDECREF_SET(__pyx_v_vName, __pyx_t_2);
    __pyx_t_2 = 0;
    __Pyx_XDECREF_SET(__pyx_v_v, __pyx_t_3);
    __pyx_t_3 = 0;

    /* "netCDF4/_netCDF4.pyx":6937
 *         for vName,v in cdfm.variables.items():
 *             # skip variables specified in exclude list.
 *             if vName in exclude: continue             # <<<<<<<<<<<<<<
 *             dims = v.dimensions
 *             shape = v.shape
*/
    __pyx_t_6 = (__Pyx_PySequence_ContainsTF(__pyx_v_vName, __pyx_v_exclude, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 6937, __pyx_L1_error)
    if (__pyx_t_6) {
      goto __pyx_L16_continue;
    }

    /* "netCDF4/_netCDF4.pyx":6938
 *             # skip variables specified in exclude list.
 *             if vName in exclude: continue
 *             dims = v.dimensions             # <<<<<<<<<<<<<<
 *             shape = v.shape
 *             dtype = v.dtype
*/
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_v, __pyx_mstate_global->__pyx_n_u_dimensions); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6938, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_XDECREF_SET(__pyx_v_dims, __pyx_t_3);
    __pyx_t_3 = 0;

    /* "netCDF4/_netCDF4.pyx":6939
 *             if vName in exclude: continue
 *             dims = v.dimensions
 *             shape = v.shape             # <<<<<<<<<<<<<<
 *             dtype = v.dtype
 *             # Be careful: we may deal with a scalar (dimensionless) variable.
*/
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_v, __pyx_mstate_global->__pyx_n_u_shape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6939, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_XDECREF_SET(__pyx_v_shape, __pyx_t_3);
    __pyx_t_3 = 0;

    /* "netCDF4/_netCDF4.pyx":6940
 *             dims = v.dimensions
 *             shape = v.shape
 *             dtype = v.dtype             # <<<<<<<<<<<<<<
 *             # Be careful: we may deal with a scalar (dimensionless) variable.
 *             # Unlimited dimension always occupies index 0.
*/
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_v, __pyx_mstate_global->__pyx_n_u_dtype); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6940, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_XDECREF_SET(__pyx_v_dtype, __pyx_t_3);
    __pyx_t_3 = 0;

    /* "netCDF4/_netCDF4.pyx":6943
 *             # Be careful: we may deal with a scalar (dimensionless) variable.
 *             # Unlimited dimension always occupies index 0.
 *             if (len(dims) > 0 and aggDimName == dims[0]):             # <<<<<<<<<<<<<<
 *                 masterRecVar[vName] = (dims, shape, dtype)
 *         if len(masterRecVar) == 0:
*/
    __pyx_t_11 = PyObject_Length(__pyx_v_dims); if (unlikely(__pyx_t_11 == ((Py_ssize_t)-1))) __PYX_ERR(0, 6943, __pyx_L1_error)
    __pyx_t_1 = (__pyx_t_11 > 0);
    if (__pyx_t_1) {
    } else {
      __pyx_t_6 = __pyx_t_1;
      goto __pyx_L20_bool_binop_done;
    }
    if (unlikely(!__pyx_v_aggDimName)) { __Pyx_RaiseUnboundLocalError("aggDimName"); __PYX_ERR(0, 6943, __pyx_L1_error) }
    __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_dims, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6943, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_2 = PyObject_RichCompare(__pyx_v_aggDimName, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6943, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 6943, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_6 = __pyx_t_1;
    __pyx_L20_bool_binop_done:;
    if (__pyx_t_6) {

      /* "netCDF4/_netCDF4.pyx":6944
 *             # Unlimited dimension always occupies index 0.
 *             if (len(dims) > 0 and aggDimName == dims[0]):
 *                 masterRecVar[vName] = (dims, shape, dtype)             # <<<<<<<<<<<<<<
 *         if len(masterRecVar) == 0:
 *             raise OSError("master dataset %s does not have any variables to aggregate" % master)
*/
      __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6944, __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(0, 6944, __pyx_L1_error);
      __Pyx_INCREF(__pyx_v_shape);
      __Pyx_GIVEREF(__pyx_v_shape);
      if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_shape) != (0)) __PYX_ERR(0, 6944, __pyx_L1_error);
      __Pyx_INCREF(__pyx_v_dtype);
      __Pyx_GIVEREF(__pyx_v_dtype);
      if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_dtype) != (0)) __PYX_ERR(0, 6944, __pyx_L1_error);
      if (unlikely((PyDict_SetItem(__pyx_v_masterRecVar, __pyx_v_vName, __pyx_t_2) < 0))) __PYX_ERR(0, 6944, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

      /* "netCDF4/_netCDF4.pyx":6943
 *             # Be careful: we may deal with a scalar (dimensionless) variable.
 *             # Unlimited dimension always occupies index 0.
 *             if (len(dims) > 0 and aggDimName == dims[0]):             # <<<<<<<<<<<<<<
 *                 masterRecVar[vName] = (dims, shape, dtype)
 *         if len(masterRecVar) == 0:
*/
    }
    __pyx_L16_continue:;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "netCDF4/_netCDF4.pyx":6945
 *             if (len(dims) > 0 and aggDimName == dims[0]):
 *                 masterRecVar[vName] = (dims, shape, dtype)
 *         if len(masterRecVar) == 0:             # <<<<<<<<<<<<<<
 *             raise OSError("master dataset %s does not have any variables to aggregate" % master)
 * 
*/
  __pyx_t_8 = PyDict_Size(__pyx_v_masterRecVar); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(0, 6945, __pyx_L1_error)
  __pyx_t_6 = (__pyx_t_8 == 0);
  if (unlikely(__pyx_t_6)) {

    /* "netCDF4/_netCDF4.pyx":6946
 *                 masterRecVar[vName] = (dims, shape, dtype)
 *         if len(masterRecVar) == 0:
 *             raise OSError("master dataset %s does not have any variables to aggregate" % master)             # <<<<<<<<<<<<<<
 * 
 *         # Create the following:
*/
    __pyx_t_2 = NULL;
    __pyx_t_3 = __Pyx_PyUnicode_FormatSafe(__pyx_mstate_global->__pyx_kp_u_master_dataset_s_does_not_have_a_2, __pyx_v_master); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6946, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_3};
      __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_OSError)), __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_5)) __PYX_ERR(0, 6946, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
    }
    __Pyx_Raise(__pyx_t_5, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __PYX_ERR(0, 6946, __pyx_L1_error)

    /* "netCDF4/_netCDF4.pyx":6945
 *             if (len(dims) > 0 and aggDimName == dims[0]):
 *                 masterRecVar[vName] = (dims, shape, dtype)
 *         if len(masterRecVar) == 0:             # <<<<<<<<<<<<<<
 *             raise OSError("master dataset %s does not have any variables to aggregate" % master)
 * 
*/
  }

  /* "netCDF4/_netCDF4.pyx":6954
 *         #             a list of the corresponding Variable instance, one for each
 *         #             cdf file of the file set
 *         cdf = []             # <<<<<<<<<<<<<<
 *         self._cdf = cdf        # Store this now, because dim() method needs it
 *         cdfVLen = []
*/
  __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6954, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_v_cdf = ((PyObject*)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "netCDF4/_netCDF4.pyx":6955
 *         #             cdf file of the file set
 *         cdf = []
 *         self._cdf = cdf        # Store this now, because dim() method needs it             # <<<<<<<<<<<<<<
 *         cdfVLen = []
 *         cdfRecVar = {}
*/
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_cdf, __pyx_v_cdf) < (0)) __PYX_ERR(0, 6955, __pyx_L1_error)

  /* "netCDF4/_netCDF4.pyx":6956
 *         cdf = []
 *         self._cdf = cdf        # Store this now, because dim() method needs it
 *         cdfVLen = []             # <<<<<<<<<<<<<<
 *         cdfRecVar = {}
 * 
*/
  __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6956, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_v_cdfVLen = ((PyObject*)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "netCDF4/_netCDF4.pyx":6957
 *         self._cdf = cdf        # Store this now, because dim() method needs it
 *         cdfVLen = []
 *         cdfRecVar = {}             # <<<<<<<<<<<<<<
 * 
 *         # Open each remaining file in read-only mode.
*/
  __pyx_t_5 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6957, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_v_cdfRecVar = ((PyObject*)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "netCDF4/_netCDF4.pyx":6962
 *         # Make sure each file defines the same aggregation variables as the master
 *         # and that the variables are defined in the same way (name, shape and type)
 *         for f in files:             # <<<<<<<<<<<<<<
 *             if f == master:
 *                 part = cdfm
*/
  if (likely(PyList_CheckExact(__pyx_v_files)) || PyTuple_CheckExact(__pyx_v_files)) {
    __pyx_t_5 = __pyx_v_files; __Pyx_INCREF(__pyx_t_5);
    __pyx_t_8 = 0;
    __pyx_t_12 = NULL;
  } else {
    __pyx_t_8 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_v_files); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6962, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_12 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 6962, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_12)) {
      if (likely(PyList_CheckExact(__pyx_t_5))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_5);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 6962, __pyx_L1_error)
          #endif
          if (__pyx_t_8 >= __pyx_temp) break;
        }
        __pyx_t_3 = __Pyx_PyList_GetItemRefFast(__pyx_t_5, __pyx_t_8, __Pyx_ReferenceSharing_OwnStrongReference);
        ++__pyx_t_8;
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_5);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 6962, __pyx_L1_error)
          #endif
          if (__pyx_t_8 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_3 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_8));
        #else
        __pyx_t_3 = __Pyx_PySequence_ITEM(__pyx_t_5, __pyx_t_8);
        #endif
        ++__pyx_t_8;
      }
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6962, __pyx_L1_error)
    } else {
      __pyx_t_3 = __pyx_t_12(__pyx_t_5);
      if (unlikely(!__pyx_t_3)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 6962, __pyx_L1_error)
          PyErr_Clear();
        }
        break;
      }
    }
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_XDECREF_SET(__pyx_v_f, __pyx_t_3);
    __pyx_t_3 = 0;

    /* "netCDF4/_netCDF4.pyx":6963
 *         # and that the variables are defined in the same way (name, shape and type)
 *         for f in files:
 *             if f == master:             # <<<<<<<<<<<<<<
 *                 part = cdfm
 *             else:
*/
    __pyx_t_3 = PyObject_RichCompare(__pyx_v_f, __pyx_v_master, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6963, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 6963, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__pyx_t_6) {

      /* "netCDF4/_netCDF4.pyx":6964
 *         for f in files:
 *             if f == master:
 *                 part = cdfm             # <<<<<<<<<<<<<<
 *             else:
 *                 part = Dataset(f)
*/
      __Pyx_INCREF((PyObject *)__pyx_v_cdfm);
      __Pyx_XDECREF_SET(__pyx_v_part, __pyx_v_cdfm);

      /* "netCDF4/_netCDF4.pyx":6963
 *         # and that the variables are defined in the same way (name, shape and type)
 *         for f in files:
 *             if f == master:             # <<<<<<<<<<<<<<
 *                 part = cdfm
 *             else:
*/
      goto __pyx_L25;
    }

    /* "netCDF4/_netCDF4.pyx":6966
 *                 part = cdfm
 *             else:
 *                 part = Dataset(f)             # <<<<<<<<<<<<<<
 *             if cdfRecVar == {}:
 *                 empty_cdfRecVar = True
*/
    /*else*/ {
      __pyx_t_2 = NULL;
      __pyx_t_4 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_f};
        __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Dataset, __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;
        if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6966, __pyx_L1_error)
        __Pyx_GOTREF((PyObject *)__pyx_t_3);
      }
      __Pyx_XDECREF_SET(__pyx_v_part, ((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_t_3));
      __pyx_t_3 = 0;
    }
    __pyx_L25:;

    /* "netCDF4/_netCDF4.pyx":6967
 *             else:
 *                 part = Dataset(f)
 *             if cdfRecVar == {}:             # <<<<<<<<<<<<<<
 *                 empty_cdfRecVar = True
 *             else:
*/
    __pyx_t_3 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6967, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_2 = PyObject_RichCompare(__pyx_v_cdfRecVar, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6967, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 6967, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (__pyx_t_6) {

      /* "netCDF4/_netCDF4.pyx":6968
 *                 part = Dataset(f)
 *             if cdfRecVar == {}:
 *                 empty_cdfRecVar = True             # <<<<<<<<<<<<<<
 *             else:
 *                 empty_cdfRecVar = False
*/
      __pyx_v_empty_cdfRecVar = 1;

      /* "netCDF4/_netCDF4.pyx":6967
 *             else:
 *                 part = Dataset(f)
 *             if cdfRecVar == {}:             # <<<<<<<<<<<<<<
 *                 empty_cdfRecVar = True
 *             else:
*/
      goto __pyx_L26;
    }

    /* "netCDF4/_netCDF4.pyx":6970
 *                 empty_cdfRecVar = True
 *             else:
 *                 empty_cdfRecVar = False             # <<<<<<<<<<<<<<
 *             varInfo = part.variables
 *             for v in masterRecVar.keys():
*/
    /*else*/ {
      __pyx_v_empty_cdfRecVar = 0;
    }
    __pyx_L26:;

    /* "netCDF4/_netCDF4.pyx":6971
 *             else:
 *                 empty_cdfRecVar = False
 *             varInfo = part.variables             # <<<<<<<<<<<<<<
 *             for v in masterRecVar.keys():
 *                 if check:
*/
    __pyx_t_2 = __pyx_v_part->variables;
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_XDECREF_SET(__pyx_v_varInfo, __pyx_t_2);
    __pyx_t_2 = 0;

    /* "netCDF4/_netCDF4.pyx":6972
 *                 empty_cdfRecVar = False
 *             varInfo = part.variables
 *             for v in masterRecVar.keys():             # <<<<<<<<<<<<<<
 *                 if check:
 *                     # Make sure master rec var is also defined here.
*/
    __pyx_t_7 = 0;
    __pyx_t_3 = __Pyx_dict_iterator(__pyx_v_masterRecVar, 1, __pyx_mstate_global->__pyx_n_u_keys, (&__pyx_t_11), (&__pyx_t_9)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6972, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_XDECREF(__pyx_t_2);
    __pyx_t_2 = __pyx_t_3;
    __pyx_t_3 = 0;
    while (1) {
      __pyx_t_10 = __Pyx_dict_iter_next(__pyx_t_2, __pyx_t_11, &__pyx_t_7, &__pyx_t_3, NULL, NULL, __pyx_t_9);
      if (unlikely(__pyx_t_10 == 0)) break;
      if (unlikely(__pyx_t_10 == -1)) __PYX_ERR(0, 6972, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_XDECREF_SET(__pyx_v_v, __pyx_t_3);
      __pyx_t_3 = 0;

      /* "netCDF4/_netCDF4.pyx":6973
 *             varInfo = part.variables
 *             for v in masterRecVar.keys():
 *                 if check:             # <<<<<<<<<<<<<<
 *                     # Make sure master rec var is also defined here.
 *                     if v not in varInfo.keys():
*/
      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_check); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 6973, __pyx_L1_error)
      if (__pyx_t_6) {

        /* "netCDF4/_netCDF4.pyx":6975
 *                 if check:
 *                     # Make sure master rec var is also defined here.
 *                     if v not in varInfo.keys():             # <<<<<<<<<<<<<<
 *                         raise OSError("aggregation variable %s not defined in %s" % (v, f))
 * 
*/
        __pyx_t_13 = __pyx_v_varInfo;
        __Pyx_INCREF(__pyx_t_13);
        __pyx_t_4 = 0;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_13, NULL};
          __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_keys, __pyx_callargs+__pyx_t_4, (1-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
          if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6975, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
        }
        __pyx_t_6 = (__Pyx_PySequence_ContainsTF(__pyx_v_v, __pyx_t_3, Py_NE)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 6975, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        if (unlikely(__pyx_t_6)) {

          /* "netCDF4/_netCDF4.pyx":6976
 *                     # Make sure master rec var is also defined here.
 *                     if v not in varInfo.keys():
 *                         raise OSError("aggregation variable %s not defined in %s" % (v, f))             # <<<<<<<<<<<<<<
 * 
 *                     #if not vInst.dimensions[0] != aggDimName:
*/
          __pyx_t_13 = NULL;
          __pyx_t_14 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Str(__pyx_v_v), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 6976, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_14);
          __pyx_t_15 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Str(__pyx_v_f), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 6976, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_15);
          __pyx_t_16[0] = __pyx_mstate_global->__pyx_kp_u_aggregation_variable;
          __pyx_t_16[1] = __pyx_t_14;
          __pyx_t_16[2] = __pyx_mstate_global->__pyx_kp_u_not_defined_in;
          __pyx_t_16[3] = __pyx_t_15;
          __pyx_t_17 = __Pyx_PyUnicode_Join(__pyx_t_16, 4, 21 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_14) + 16 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_15), 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_14) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_15));
          if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 6976, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_17);
          __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
          __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
          __pyx_t_4 = 1;
          {
            PyObject *__pyx_callargs[2] = {__pyx_t_13, __pyx_t_17};
            __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_OSError)), __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
            __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
            __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
            if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6976, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_3);
          }
          __Pyx_Raise(__pyx_t_3, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          __PYX_ERR(0, 6976, __pyx_L1_error)

          /* "netCDF4/_netCDF4.pyx":6975
 *                 if check:
 *                     # Make sure master rec var is also defined here.
 *                     if v not in varInfo.keys():             # <<<<<<<<<<<<<<
 *                         raise OSError("aggregation variable %s not defined in %s" % (v, f))
 * 
*/
        }

        /* "netCDF4/_netCDF4.pyx":6980
 *                     #if not vInst.dimensions[0] != aggDimName:
 * 
 *                     masterDims, masterShape, masterType = masterRecVar[v][:3]             # <<<<<<<<<<<<<<
 *                     extDims = varInfo[v].dimensions
 *                     extShape = varInfo[v].shape
*/
        __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_masterRecVar, __pyx_v_v); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6980, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_17 = __Pyx_PyObject_GetSlice(__pyx_t_3, 0, 3, NULL, NULL, &__pyx_mstate_global->__pyx_slice[5], 0, 1, 1); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 6980, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_17);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        if ((likely(PyTuple_CheckExact(__pyx_t_17))) || (PyList_CheckExact(__pyx_t_17))) {
          PyObject* sequence = __pyx_t_17;
          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(0, 6980, __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_13 = PyTuple_GET_ITEM(sequence, 1);
            __Pyx_INCREF(__pyx_t_13);
            __pyx_t_15 = PyTuple_GET_ITEM(sequence, 2);
            __Pyx_INCREF(__pyx_t_15);
          } else {
            __pyx_t_3 = __Pyx_PyList_GetItemRefFast(sequence, 0, __Pyx_ReferenceSharing_SharedReference);
            if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6980, __pyx_L1_error)
            __Pyx_XGOTREF(__pyx_t_3);
            __pyx_t_13 = __Pyx_PyList_GetItemRefFast(sequence, 1, __Pyx_ReferenceSharing_SharedReference);
            if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 6980, __pyx_L1_error)
            __Pyx_XGOTREF(__pyx_t_13);
            __pyx_t_15 = __Pyx_PyList_GetItemRefFast(sequence, 2, __Pyx_ReferenceSharing_SharedReference);
            if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 6980, __pyx_L1_error)
            __Pyx_XGOTREF(__pyx_t_15);
          }
          #else
          __pyx_t_3 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6980, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
          __pyx_t_13 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 6980, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_13);
          __pyx_t_15 = __Pyx_PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 6980, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_15);
          #endif
          __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
        } else {
          Py_ssize_t index = -1;
          __pyx_t_14 = PyObject_GetIter(__pyx_t_17); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 6980, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_14);
          __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
          __pyx_t_18 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_14);
          index = 0; __pyx_t_3 = __pyx_t_18(__pyx_t_14); if (unlikely(!__pyx_t_3)) goto __pyx_L31_unpacking_failed;
          __Pyx_GOTREF(__pyx_t_3);
          index = 1; __pyx_t_13 = __pyx_t_18(__pyx_t_14); if (unlikely(!__pyx_t_13)) goto __pyx_L31_unpacking_failed;
          __Pyx_GOTREF(__pyx_t_13);
          index = 2; __pyx_t_15 = __pyx_t_18(__pyx_t_14); if (unlikely(!__pyx_t_15)) goto __pyx_L31_unpacking_failed;
          __Pyx_GOTREF(__pyx_t_15);
          if (__Pyx_IternextUnpackEndCheck(__pyx_t_18(__pyx_t_14), 3) < (0)) __PYX_ERR(0, 6980, __pyx_L1_error)
          __pyx_t_18 = NULL;
          __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
          goto __pyx_L32_unpacking_done;
          __pyx_L31_unpacking_failed:;
          __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
          __pyx_t_18 = NULL;
          if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
          __PYX_ERR(0, 6980, __pyx_L1_error)
          __pyx_L32_unpacking_done:;
        }
        __Pyx_XDECREF_SET(__pyx_v_masterDims, __pyx_t_3);
        __pyx_t_3 = 0;
        __Pyx_XDECREF_SET(__pyx_v_masterShape, __pyx_t_13);
        __pyx_t_13 = 0;
        __Pyx_XDECREF_SET(__pyx_v_masterType, __pyx_t_15);
        __pyx_t_15 = 0;

        /* "netCDF4/_netCDF4.pyx":6981
 * 
 *                     masterDims, masterShape, masterType = masterRecVar[v][:3]
 *                     extDims = varInfo[v].dimensions             # <<<<<<<<<<<<<<
 *                     extShape = varInfo[v].shape
 *                     extType = varInfo[v].dtype
*/
        __pyx_t_17 = __Pyx_PyObject_GetItem(__pyx_v_varInfo, __pyx_v_v); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 6981, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_17);
        __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_dimensions); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 6981, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_15);
        __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
        __Pyx_XDECREF_SET(__pyx_v_extDims, __pyx_t_15);
        __pyx_t_15 = 0;

        /* "netCDF4/_netCDF4.pyx":6982
 *                     masterDims, masterShape, masterType = masterRecVar[v][:3]
 *                     extDims = varInfo[v].dimensions
 *                     extShape = varInfo[v].shape             # <<<<<<<<<<<<<<
 *                     extType = varInfo[v].dtype
 *                     # Check that dimension names are identical.
*/
        __pyx_t_15 = __Pyx_PyObject_GetItem(__pyx_v_varInfo, __pyx_v_v); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 6982, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_15);
        __pyx_t_17 = __Pyx_PyObject_GetAttrStr(__pyx_t_15, __pyx_mstate_global->__pyx_n_u_shape); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 6982, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_17);
        __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
        __Pyx_XDECREF_SET(__pyx_v_extShape, __pyx_t_17);
        __pyx_t_17 = 0;

        /* "netCDF4/_netCDF4.pyx":6983
 *                     extDims = varInfo[v].dimensions
 *                     extShape = varInfo[v].shape
 *                     extType = varInfo[v].dtype             # <<<<<<<<<<<<<<
 *                     # Check that dimension names are identical.
 *                     if masterDims != extDims:
*/
        __pyx_t_17 = __Pyx_PyObject_GetItem(__pyx_v_varInfo, __pyx_v_v); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 6983, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_17);
        __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_dtype); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 6983, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_15);
        __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
        __Pyx_XDECREF_SET(__pyx_v_extType, __pyx_t_15);
        __pyx_t_15 = 0;

        /* "netCDF4/_netCDF4.pyx":6985
 *                     extType = varInfo[v].dtype
 *                     # Check that dimension names are identical.
 *                     if masterDims != extDims:             # <<<<<<<<<<<<<<
 *                         raise OSError("variable %s : dimensions mismatch between "
 *                                        "master %s (%s) and extension %s (%s)" %
*/
        __pyx_t_15 = PyObject_RichCompare(__pyx_v_masterDims, __pyx_v_extDims, Py_NE); __Pyx_XGOTREF(__pyx_t_15); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 6985, __pyx_L1_error)
        __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_15); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 6985, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
        if (unlikely(__pyx_t_6)) {

          /* "netCDF4/_netCDF4.pyx":6986
 *                     # Check that dimension names are identical.
 *                     if masterDims != extDims:
 *                         raise OSError("variable %s : dimensions mismatch between "             # <<<<<<<<<<<<<<
 *                                        "master %s (%s) and extension %s (%s)" %
 *                                        (v, master, masterDims, f, extDims))
*/
          __pyx_t_17 = NULL;

          /* "netCDF4/_netCDF4.pyx":6988
 *                         raise OSError("variable %s : dimensions mismatch between "
 *                                        "master %s (%s) and extension %s (%s)" %
 *                                        (v, master, masterDims, f, extDims))             # <<<<<<<<<<<<<<
 * 
 *                     # Check that the ranks are identical, and the dimension lengths are
*/
          __pyx_t_13 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Str(__pyx_v_v), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 6988, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_13);
          __pyx_t_3 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Str(__pyx_v_master), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6988, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
          __pyx_t_14 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Str(__pyx_v_masterDims), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 6988, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_14);
          __pyx_t_19 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Str(__pyx_v_f), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 6988, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_19);
          __pyx_t_20 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Str(__pyx_v_extDims), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 6988, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_20);
          __pyx_t_21[0] = __pyx_mstate_global->__pyx_kp_u_variable_2;
          __pyx_t_21[1] = __pyx_t_13;
          __pyx_t_21[2] = __pyx_mstate_global->__pyx_kp_u_dimensions_mismatch_between_mas;
          __pyx_t_21[3] = __pyx_t_3;
          __pyx_t_21[4] = __pyx_mstate_global->__pyx_kp_u__20;
          __pyx_t_21[5] = __pyx_t_14;
          __pyx_t_21[6] = __pyx_mstate_global->__pyx_kp_u_and_extension;
          __pyx_t_21[7] = __pyx_t_19;
          __pyx_t_21[8] = __pyx_mstate_global->__pyx_kp_u__20;
          __pyx_t_21[9] = __pyx_t_20;
          __pyx_t_21[10] = __pyx_mstate_global->__pyx_kp_u__2;

          /* "netCDF4/_netCDF4.pyx":6986
 *                     # Check that dimension names are identical.
 *                     if masterDims != extDims:
 *                         raise OSError("variable %s : dimensions mismatch between "             # <<<<<<<<<<<<<<
 *                                        "master %s (%s) and extension %s (%s)" %
 *                                        (v, master, masterDims, f, extDims))
*/
          __pyx_t_22 = __Pyx_PyUnicode_Join(__pyx_t_21, 11, 9 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_13) + 38 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3) + 2 * 2 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_14) + 16 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_19) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_20) + 1, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_13) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_14) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_19) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_20));
          if (unlikely(!__pyx_t_22)) __PYX_ERR(0, 6986, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_22);
          __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
          __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
          __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
          __pyx_t_4 = 1;
          {
            PyObject *__pyx_callargs[2] = {__pyx_t_17, __pyx_t_22};
            __pyx_t_15 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_OSError)), __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
            __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
            __Pyx_DECREF(__pyx_t_22); __pyx_t_22 = 0;
            if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 6986, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_15);
          }
          __Pyx_Raise(__pyx_t_15, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
          __PYX_ERR(0, 6986, __pyx_L1_error)

          /* "netCDF4/_netCDF4.pyx":6985
 *                     extType = varInfo[v].dtype
 *                     # Check that dimension names are identical.
 *                     if masterDims != extDims:             # <<<<<<<<<<<<<<
 *                         raise OSError("variable %s : dimensions mismatch between "
 *                                        "master %s (%s) and extension %s (%s)" %
*/
        }

        /* "netCDF4/_netCDF4.pyx":6993
 *                     # identical (except for that of the unlimited dimension, which of
 *                     # course may vary.
 *                     if len(masterShape) != len(extShape):             # <<<<<<<<<<<<<<
 *                         raise OSError("variable %s : rank mismatch between "
 *                                        "master %s (%s) and extension %s (%s)" %
*/
        __pyx_t_23 = PyObject_Length(__pyx_v_masterShape); if (unlikely(__pyx_t_23 == ((Py_ssize_t)-1))) __PYX_ERR(0, 6993, __pyx_L1_error)
        __pyx_t_24 = PyObject_Length(__pyx_v_extShape); if (unlikely(__pyx_t_24 == ((Py_ssize_t)-1))) __PYX_ERR(0, 6993, __pyx_L1_error)
        __pyx_t_6 = (__pyx_t_23 != __pyx_t_24);
        if (unlikely(__pyx_t_6)) {

          /* "netCDF4/_netCDF4.pyx":6994
 *                     # course may vary.
 *                     if len(masterShape) != len(extShape):
 *                         raise OSError("variable %s : rank mismatch between "             # <<<<<<<<<<<<<<
 *                                        "master %s (%s) and extension %s (%s)" %
 *                                        (v, master, len(masterShape), f, len(extShape)))
*/
          __pyx_t_22 = NULL;

          /* "netCDF4/_netCDF4.pyx":6996
 *                         raise OSError("variable %s : rank mismatch between "
 *                                        "master %s (%s) and extension %s (%s)" %
 *                                        (v, master, len(masterShape), f, len(extShape)))             # <<<<<<<<<<<<<<
 *                     if masterShape[1:] != extShape[1:]:
 *                         raise OSError("variable %s : shape mismatch between "
*/
          __pyx_t_17 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Str(__pyx_v_v), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 6996, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_17);
          __pyx_t_20 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Str(__pyx_v_master), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 6996, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_20);
          __pyx_t_24 = PyObject_Length(__pyx_v_masterShape); if (unlikely(__pyx_t_24 == ((Py_ssize_t)-1))) __PYX_ERR(0, 6996, __pyx_L1_error)
          __pyx_t_19 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_t_24, 0, ' ', 'd'); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 6996, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_19);
          __pyx_t_14 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Str(__pyx_v_f), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 6996, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_14);
          __pyx_t_24 = PyObject_Length(__pyx_v_extShape); if (unlikely(__pyx_t_24 == ((Py_ssize_t)-1))) __PYX_ERR(0, 6996, __pyx_L1_error)
          __pyx_t_3 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_t_24, 0, ' ', 'd'); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6996, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
          __pyx_t_21[0] = __pyx_mstate_global->__pyx_kp_u_variable_2;
          __pyx_t_21[1] = __pyx_t_17;
          __pyx_t_21[2] = __pyx_mstate_global->__pyx_kp_u_rank_mismatch_between_master;
          __pyx_t_21[3] = __pyx_t_20;
          __pyx_t_21[4] = __pyx_mstate_global->__pyx_kp_u__20;
          __pyx_t_21[5] = __pyx_t_19;
          __pyx_t_21[6] = __pyx_mstate_global->__pyx_kp_u_and_extension;
          __pyx_t_21[7] = __pyx_t_14;
          __pyx_t_21[8] = __pyx_mstate_global->__pyx_kp_u__20;
          __pyx_t_21[9] = __pyx_t_3;
          __pyx_t_21[10] = __pyx_mstate_global->__pyx_kp_u__2;

          /* "netCDF4/_netCDF4.pyx":6994
 *                     # course may vary.
 *                     if len(masterShape) != len(extShape):
 *                         raise OSError("variable %s : rank mismatch between "             # <<<<<<<<<<<<<<
 *                                        "master %s (%s) and extension %s (%s)" %
 *                                        (v, master, len(masterShape), f, len(extShape)))
*/
          __pyx_t_13 = __Pyx_PyUnicode_Join(__pyx_t_21, 11, 9 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_17) + 32 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_20) + 2 * 2 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_19) + 16 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_14) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3) + 1, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_17) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_20) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_14));
          if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 6994, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_13);
          __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
          __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
          __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
          __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          __pyx_t_4 = 1;
          {
            PyObject *__pyx_callargs[2] = {__pyx_t_22, __pyx_t_13};
            __pyx_t_15 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_OSError)), __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
            __Pyx_XDECREF(__pyx_t_22); __pyx_t_22 = 0;
            __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
            if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 6994, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_15);
          }
          __Pyx_Raise(__pyx_t_15, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
          __PYX_ERR(0, 6994, __pyx_L1_error)

          /* "netCDF4/_netCDF4.pyx":6993
 *                     # identical (except for that of the unlimited dimension, which of
 *                     # course may vary.
 *                     if len(masterShape) != len(extShape):             # <<<<<<<<<<<<<<
 *                         raise OSError("variable %s : rank mismatch between "
 *                                        "master %s (%s) and extension %s (%s)" %
*/
        }

        /* "netCDF4/_netCDF4.pyx":6997
 *                                        "master %s (%s) and extension %s (%s)" %
 *                                        (v, master, len(masterShape), f, len(extShape)))
 *                     if masterShape[1:] != extShape[1:]:             # <<<<<<<<<<<<<<
 *                         raise OSError("variable %s : shape mismatch between "
 *                                        "master %s (%s) and extension %s (%s)" %
*/
        __pyx_t_15 = __Pyx_PyObject_GetSlice(__pyx_v_masterShape, 1, 0, NULL, NULL, &__pyx_mstate_global->__pyx_slice[0], 1, 0, 1); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 6997, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_15);
        __pyx_t_13 = __Pyx_PyObject_GetSlice(__pyx_v_extShape, 1, 0, NULL, NULL, &__pyx_mstate_global->__pyx_slice[0], 1, 0, 1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 6997, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_13);
        __pyx_t_22 = PyObject_RichCompare(__pyx_t_15, __pyx_t_13, Py_NE); __Pyx_XGOTREF(__pyx_t_22); if (unlikely(!__pyx_t_22)) __PYX_ERR(0, 6997, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
        __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_22); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 6997, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_22); __pyx_t_22 = 0;
        if (unlikely(__pyx_t_6)) {

          /* "netCDF4/_netCDF4.pyx":6998
 *                                        (v, master, len(masterShape), f, len(extShape)))
 *                     if masterShape[1:] != extShape[1:]:
 *                         raise OSError("variable %s : shape mismatch between "             # <<<<<<<<<<<<<<
 *                                        "master %s (%s) and extension %s (%s)" %
 *                                        (v, master, masterShape, f, extShape))
*/
          __pyx_t_13 = NULL;

          /* "netCDF4/_netCDF4.pyx":7000
 *                         raise OSError("variable %s : shape mismatch between "
 *                                        "master %s (%s) and extension %s (%s)" %
 *                                        (v, master, masterShape, f, extShape))             # <<<<<<<<<<<<<<
 * 
 *                     # Check that the data types are identical.
*/
          __pyx_t_15 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Str(__pyx_v_v), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 7000, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_15);
          __pyx_t_3 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Str(__pyx_v_master), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7000, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
          __pyx_t_14 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Str(__pyx_v_masterShape), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 7000, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_14);
          __pyx_t_19 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Str(__pyx_v_f), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 7000, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_19);
          __pyx_t_20 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Str(__pyx_v_extShape), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 7000, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_20);
          __pyx_t_21[0] = __pyx_mstate_global->__pyx_kp_u_variable_2;
          __pyx_t_21[1] = __pyx_t_15;
          __pyx_t_21[2] = __pyx_mstate_global->__pyx_kp_u_shape_mismatch_between_master;
          __pyx_t_21[3] = __pyx_t_3;
          __pyx_t_21[4] = __pyx_mstate_global->__pyx_kp_u__20;
          __pyx_t_21[5] = __pyx_t_14;
          __pyx_t_21[6] = __pyx_mstate_global->__pyx_kp_u_and_extension;
          __pyx_t_21[7] = __pyx_t_19;
          __pyx_t_21[8] = __pyx_mstate_global->__pyx_kp_u__20;
          __pyx_t_21[9] = __pyx_t_20;
          __pyx_t_21[10] = __pyx_mstate_global->__pyx_kp_u__2;

          /* "netCDF4/_netCDF4.pyx":6998
 *                                        (v, master, len(masterShape), f, len(extShape)))
 *                     if masterShape[1:] != extShape[1:]:
 *                         raise OSError("variable %s : shape mismatch between "             # <<<<<<<<<<<<<<
 *                                        "master %s (%s) and extension %s (%s)" %
 *                                        (v, master, masterShape, f, extShape))
*/
          __pyx_t_17 = __Pyx_PyUnicode_Join(__pyx_t_21, 11, 9 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_15) + 33 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3) + 2 * 2 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_14) + 16 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_19) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_20) + 1, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_15) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_14) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_19) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_20));
          if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 6998, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_17);
          __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
          __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
          __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
          __pyx_t_4 = 1;
          {
            PyObject *__pyx_callargs[2] = {__pyx_t_13, __pyx_t_17};
            __pyx_t_22 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_OSError)), __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
            __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
            __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
            if (unlikely(!__pyx_t_22)) __PYX_ERR(0, 6998, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_22);
          }
          __Pyx_Raise(__pyx_t_22, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_22); __pyx_t_22 = 0;
          __PYX_ERR(0, 6998, __pyx_L1_error)

          /* "netCDF4/_netCDF4.pyx":6997
 *                                        "master %s (%s) and extension %s (%s)" %
 *                                        (v, master, len(masterShape), f, len(extShape)))
 *                     if masterShape[1:] != extShape[1:]:             # <<<<<<<<<<<<<<
 *                         raise OSError("variable %s : shape mismatch between "
 *                                        "master %s (%s) and extension %s (%s)" %
*/
        }

        /* "netCDF4/_netCDF4.pyx":7003
 * 
 *                     # Check that the data types are identical.
 *                     if masterType != extType:             # <<<<<<<<<<<<<<
 *                         raise OSError("variable %s : data type mismatch between "
 *                                        "master %s (%s) and extension %s (%s)" %
*/
        __pyx_t_22 = PyObject_RichCompare(__pyx_v_masterType, __pyx_v_extType, Py_NE); __Pyx_XGOTREF(__pyx_t_22); if (unlikely(!__pyx_t_22)) __PYX_ERR(0, 7003, __pyx_L1_error)
        __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_22); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 7003, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_22); __pyx_t_22 = 0;
        if (unlikely(__pyx_t_6)) {

          /* "netCDF4/_netCDF4.pyx":7004
 *                     # Check that the data types are identical.
 *                     if masterType != extType:
 *                         raise OSError("variable %s : data type mismatch between "             # <<<<<<<<<<<<<<
 *                                        "master %s (%s) and extension %s (%s)" %
 *                                        (v, master, masterType, f, extType))
*/
          __pyx_t_17 = NULL;

          /* "netCDF4/_netCDF4.pyx":7006
 *                         raise OSError("variable %s : data type mismatch between "
 *                                        "master %s (%s) and extension %s (%s)" %
 *                                        (v, master, masterType, f, extType))             # <<<<<<<<<<<<<<
 * 
 *                     # Everything ok.
*/
          __pyx_t_13 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Str(__pyx_v_v), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 7006, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_13);
          __pyx_t_20 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Str(__pyx_v_master), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 7006, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_20);
          __pyx_t_19 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Str(__pyx_v_masterType), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 7006, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_19);
          __pyx_t_14 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Str(__pyx_v_f), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 7006, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_14);
          __pyx_t_3 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Str(__pyx_v_extType), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7006, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
          __pyx_t_21[0] = __pyx_mstate_global->__pyx_kp_u_variable_2;
          __pyx_t_21[1] = __pyx_t_13;
          __pyx_t_21[2] = __pyx_mstate_global->__pyx_kp_u_data_type_mismatch_between_mast;
          __pyx_t_21[3] = __pyx_t_20;
          __pyx_t_21[4] = __pyx_mstate_global->__pyx_kp_u__20;
          __pyx_t_21[5] = __pyx_t_19;
          __pyx_t_21[6] = __pyx_mstate_global->__pyx_kp_u_and_extension;
          __pyx_t_21[7] = __pyx_t_14;
          __pyx_t_21[8] = __pyx_mstate_global->__pyx_kp_u__20;
          __pyx_t_21[9] = __pyx_t_3;
          __pyx_t_21[10] = __pyx_mstate_global->__pyx_kp_u__2;

          /* "netCDF4/_netCDF4.pyx":7004
 *                     # Check that the data types are identical.
 *                     if masterType != extType:
 *                         raise OSError("variable %s : data type mismatch between "             # <<<<<<<<<<<<<<
 *                                        "master %s (%s) and extension %s (%s)" %
 *                                        (v, master, masterType, f, extType))
*/
          __pyx_t_15 = __Pyx_PyUnicode_Join(__pyx_t_21, 11, 9 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_13) + 37 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_20) + 2 * 2 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_19) + 16 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_14) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3) + 1, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_13) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_20) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_19) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_14) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3));
          if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 7004, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_15);
          __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
          __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
          __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
          __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          __pyx_t_4 = 1;
          {
            PyObject *__pyx_callargs[2] = {__pyx_t_17, __pyx_t_15};
            __pyx_t_22 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_OSError)), __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
            __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
            __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
            if (unlikely(!__pyx_t_22)) __PYX_ERR(0, 7004, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_22);
          }
          __Pyx_Raise(__pyx_t_22, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_22); __pyx_t_22 = 0;
          __PYX_ERR(0, 7004, __pyx_L1_error)

          /* "netCDF4/_netCDF4.pyx":7003
 * 
 *                     # Check that the data types are identical.
 *                     if masterType != extType:             # <<<<<<<<<<<<<<
 *                         raise OSError("variable %s : data type mismatch between "
 *                                        "master %s (%s) and extension %s (%s)" %
*/
        }

        /* "netCDF4/_netCDF4.pyx":7009
 * 
 *                     # Everything ok.
 *                     if empty_cdfRecVar:             # <<<<<<<<<<<<<<
 *                         cdfRecVar[v] = [part.variables[v]]
 *                     else:
*/
        if (__pyx_v_empty_cdfRecVar) {

          /* "netCDF4/_netCDF4.pyx":7010
 *                     # Everything ok.
 *                     if empty_cdfRecVar:
 *                         cdfRecVar[v] = [part.variables[v]]             # <<<<<<<<<<<<<<
 *                     else:
 *                         cdfRecVar[v].append(part.variables[v])
*/
          __pyx_t_22 = __Pyx_PyObject_GetItem(__pyx_v_part->variables, __pyx_v_v); if (unlikely(!__pyx_t_22)) __PYX_ERR(0, 7010, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_22);
          __pyx_t_15 = PyList_New(1); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 7010, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_15);
          __Pyx_GIVEREF(__pyx_t_22);
          if (__Pyx_PyList_SET_ITEM(__pyx_t_15, 0, __pyx_t_22) != (0)) __PYX_ERR(0, 7010, __pyx_L1_error);
          __pyx_t_22 = 0;
          if (unlikely((PyDict_SetItem(__pyx_v_cdfRecVar, __pyx_v_v, __pyx_t_15) < 0))) __PYX_ERR(0, 7010, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;

          /* "netCDF4/_netCDF4.pyx":7009
 * 
 *                     # Everything ok.
 *                     if empty_cdfRecVar:             # <<<<<<<<<<<<<<
 *                         cdfRecVar[v] = [part.variables[v]]
 *                     else:
*/
          goto __pyx_L37;
        }

        /* "netCDF4/_netCDF4.pyx":7012
 *                         cdfRecVar[v] = [part.variables[v]]
 *                     else:
 *                         cdfRecVar[v].append(part.variables[v])             # <<<<<<<<<<<<<<
 *                 else:
 *                     # No making sure of anything -- assume this is ok..
*/
        /*else*/ {
          __pyx_t_15 = __Pyx_PyDict_GetItem(__pyx_v_cdfRecVar, __pyx_v_v); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 7012, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_15);
          __pyx_t_22 = __Pyx_PyObject_GetItem(__pyx_v_part->variables, __pyx_v_v); if (unlikely(!__pyx_t_22)) __PYX_ERR(0, 7012, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_22);
          __pyx_t_25 = __Pyx_PyObject_Append(__pyx_t_15, __pyx_t_22); if (unlikely(__pyx_t_25 == ((int)-1))) __PYX_ERR(0, 7012, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
          __Pyx_DECREF(__pyx_t_22); __pyx_t_22 = 0;
        }
        __pyx_L37:;

        /* "netCDF4/_netCDF4.pyx":6973
 *             varInfo = part.variables
 *             for v in masterRecVar.keys():
 *                 if check:             # <<<<<<<<<<<<<<
 *                     # Make sure master rec var is also defined here.
 *                     if v not in varInfo.keys():
*/
        goto __pyx_L29;
      }

      /* "netCDF4/_netCDF4.pyx":7015
 *                 else:
 *                     # No making sure of anything -- assume this is ok..
 *                     if empty_cdfRecVar:             # <<<<<<<<<<<<<<
 *                         cdfRecVar[v] = [part.variables[v]]
 *                     else:
*/
      /*else*/ {
        if (__pyx_v_empty_cdfRecVar) {

          /* "netCDF4/_netCDF4.pyx":7016
 *                     # No making sure of anything -- assume this is ok..
 *                     if empty_cdfRecVar:
 *                         cdfRecVar[v] = [part.variables[v]]             # <<<<<<<<<<<<<<
 *                     else:
 *                         cdfRecVar[v].append(part.variables[v])
*/
          __pyx_t_22 = __Pyx_PyObject_GetItem(__pyx_v_part->variables, __pyx_v_v); if (unlikely(!__pyx_t_22)) __PYX_ERR(0, 7016, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_22);
          __pyx_t_15 = PyList_New(1); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 7016, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_15);
          __Pyx_GIVEREF(__pyx_t_22);
          if (__Pyx_PyList_SET_ITEM(__pyx_t_15, 0, __pyx_t_22) != (0)) __PYX_ERR(0, 7016, __pyx_L1_error);
          __pyx_t_22 = 0;
          if (unlikely((PyDict_SetItem(__pyx_v_cdfRecVar, __pyx_v_v, __pyx_t_15) < 0))) __PYX_ERR(0, 7016, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;

          /* "netCDF4/_netCDF4.pyx":7015
 *                 else:
 *                     # No making sure of anything -- assume this is ok..
 *                     if empty_cdfRecVar:             # <<<<<<<<<<<<<<
 *                         cdfRecVar[v] = [part.variables[v]]
 *                     else:
*/
          goto __pyx_L38;
        }

        /* "netCDF4/_netCDF4.pyx":7018
 *                         cdfRecVar[v] = [part.variables[v]]
 *                     else:
 *                         cdfRecVar[v].append(part.variables[v])             # <<<<<<<<<<<<<<
 * 
 *             cdf.append(part)
*/
        /*else*/ {
          __pyx_t_15 = __Pyx_PyDict_GetItem(__pyx_v_cdfRecVar, __pyx_v_v); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 7018, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_15);
          __pyx_t_22 = __Pyx_PyObject_GetItem(__pyx_v_part->variables, __pyx_v_v); if (unlikely(!__pyx_t_22)) __PYX_ERR(0, 7018, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_22);
          __pyx_t_25 = __Pyx_PyObject_Append(__pyx_t_15, __pyx_t_22); if (unlikely(__pyx_t_25 == ((int)-1))) __PYX_ERR(0, 7018, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
          __Pyx_DECREF(__pyx_t_22); __pyx_t_22 = 0;
        }
        __pyx_L38:;
      }
      __pyx_L29:;
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "netCDF4/_netCDF4.pyx":7020
 *                         cdfRecVar[v].append(part.variables[v])
 * 
 *             cdf.append(part)             # <<<<<<<<<<<<<<
 *             cdfVLen.append(len(part.dimensions[aggDimName]))
 * 
*/
    __pyx_t_25 = __Pyx_PyList_Append(__pyx_v_cdf, ((PyObject *)__pyx_v_part)); if (unlikely(__pyx_t_25 == ((int)-1))) __PYX_ERR(0, 7020, __pyx_L1_error)

    /* "netCDF4/_netCDF4.pyx":7021
 * 
 *             cdf.append(part)
 *             cdfVLen.append(len(part.dimensions[aggDimName]))             # <<<<<<<<<<<<<<
 * 
 *         # Attach attributes to the MFDataset instance.
*/
    if (unlikely(!__pyx_v_aggDimName)) { __Pyx_RaiseUnboundLocalError("aggDimName"); __PYX_ERR(0, 7021, __pyx_L1_error) }
    __pyx_t_2 = __Pyx_PyObject_GetItem(__pyx_v_part->dimensions, __pyx_v_aggDimName); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7021, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_11 = PyObject_Length(__pyx_t_2); if (unlikely(__pyx_t_11 == ((Py_ssize_t)-1))) __PYX_ERR(0, 7021, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = PyLong_FromSsize_t(__pyx_t_11); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7021, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_25 = __Pyx_PyList_Append(__pyx_v_cdfVLen, __pyx_t_2); if (unlikely(__pyx_t_25 == ((int)-1))) __PYX_ERR(0, 7021, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "netCDF4/_netCDF4.pyx":6962
 *         # Make sure each file defines the same aggregation variables as the master
 *         # and that the variables are defined in the same way (name, shape and type)
 *         for f in files:             # <<<<<<<<<<<<<<
 *             if f == master:
 *                 part = cdfm
*/
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "netCDF4/_netCDF4.pyx":7025
 *         # Attach attributes to the MFDataset instance.
 *         # A local __setattr__() method is required for them.
 *         self._files = files            # list of cdf file names in the set             # <<<<<<<<<<<<<<
 *         self._cdfVLen = cdfVLen              # list of unlimited lengths
 *         self._cdfTLen = sum(cdfVLen) # total length
*/
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_files_2, __pyx_v_files) < (0)) __PYX_ERR(0, 7025, __pyx_L1_error)

  /* "netCDF4/_netCDF4.pyx":7026
 *         # A local __setattr__() method is required for them.
 *         self._files = files            # list of cdf file names in the set
 *         self._cdfVLen = cdfVLen              # list of unlimited lengths             # <<<<<<<<<<<<<<
 *         self._cdfTLen = sum(cdfVLen) # total length
 *         self._cdfRecVar = cdfRecVar          # dictionary of Variable instances for all
*/
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_cdfVLen, __pyx_v_cdfVLen) < (0)) __PYX_ERR(0, 7026, __pyx_L1_error)

  /* "netCDF4/_netCDF4.pyx":7027
 *         self._files = files            # list of cdf file names in the set
 *         self._cdfVLen = cdfVLen              # list of unlimited lengths
 *         self._cdfTLen = sum(cdfVLen) # total length             # <<<<<<<<<<<<<<
 *         self._cdfRecVar = cdfRecVar          # dictionary of Variable instances for all
 *                                              # the aggregation variables
*/
  __pyx_t_2 = NULL;
  __pyx_t_4 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_cdfVLen};
    __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_sum, __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;
    if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7027, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
  }
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_cdfTLen, __pyx_t_5) < (0)) __PYX_ERR(0, 7027, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "netCDF4/_netCDF4.pyx":7028
 *         self._cdfVLen = cdfVLen              # list of unlimited lengths
 *         self._cdfTLen = sum(cdfVLen) # total length
 *         self._cdfRecVar = cdfRecVar          # dictionary of Variable instances for all             # <<<<<<<<<<<<<<
 *                                              # the aggregation variables
 *         self._dims = cdfm.dimensions
*/
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_cdfRecVar, __pyx_v_cdfRecVar) < (0)) __PYX_ERR(0, 7028, __pyx_L1_error)

  /* "netCDF4/_netCDF4.pyx":7030
 *         self._cdfRecVar = cdfRecVar          # dictionary of Variable instances for all
 *                                              # the aggregation variables
 *         self._dims = cdfm.dimensions             # <<<<<<<<<<<<<<
 *         self._grps = cdfm.groups
 *         for dimname, dim in self._dims.items():
*/
  __pyx_t_5 = __pyx_v_cdfm->dimensions;
  __Pyx_INCREF(__pyx_t_5);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_dims, __pyx_t_5) < (0)) __PYX_ERR(0, 7030, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "netCDF4/_netCDF4.pyx":7031
 *                                              # the aggregation variables
 *         self._dims = cdfm.dimensions
 *         self._grps = cdfm.groups             # <<<<<<<<<<<<<<
 *         for dimname, dim in self._dims.items():
 *             if dimname == aggDimName:
*/
  __pyx_t_5 = __pyx_v_cdfm->groups;
  __Pyx_INCREF(__pyx_t_5);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_grps, __pyx_t_5) < (0)) __PYX_ERR(0, 7031, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "netCDF4/_netCDF4.pyx":7032
 *         self._dims = cdfm.dimensions
 *         self._grps = cdfm.groups
 *         for dimname, dim in self._dims.items():             # <<<<<<<<<<<<<<
 *             if dimname == aggDimName:
 *                 self._dims[dimname] = _Dimension(dimname, dim, self._cdfVLen, self._cdfTLen)
*/
  __pyx_t_8 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_dims); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7032, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (unlikely(__pyx_t_2 == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "items");
    __PYX_ERR(0, 7032, __pyx_L1_error)
  }
  __pyx_t_22 = __Pyx_dict_iterator(__pyx_t_2, 0, __pyx_mstate_global->__pyx_n_u_items, (&__pyx_t_11), (&__pyx_t_9)); if (unlikely(!__pyx_t_22)) __PYX_ERR(0, 7032, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_22);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_XDECREF(__pyx_t_5);
  __pyx_t_5 = __pyx_t_22;
  __pyx_t_22 = 0;
  while (1) {
    __pyx_t_10 = __Pyx_dict_iter_next(__pyx_t_5, __pyx_t_11, &__pyx_t_8, &__pyx_t_22, &__pyx_t_2, NULL, __pyx_t_9);
    if (unlikely(__pyx_t_10 == 0)) break;
    if (unlikely(__pyx_t_10 == -1)) __PYX_ERR(0, 7032, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_22);
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_XDECREF_SET(__pyx_v_dimname, __pyx_t_22);
    __pyx_t_22 = 0;
    __Pyx_XDECREF_SET(__pyx_v_dim, __pyx_t_2);
    __pyx_t_2 = 0;

    /* "netCDF4/_netCDF4.pyx":7033
 *         self._grps = cdfm.groups
 *         for dimname, dim in self._dims.items():
 *             if dimname == aggDimName:             # <<<<<<<<<<<<<<
 *                 self._dims[dimname] = _Dimension(dimname, dim, self._cdfVLen, self._cdfTLen)
 *         self._vars = cdfm.variables
*/
    if (unlikely(!__pyx_v_aggDimName)) { __Pyx_RaiseUnboundLocalError("aggDimName"); __PYX_ERR(0, 7033, __pyx_L1_error) }
    __pyx_t_2 = PyObject_RichCompare(__pyx_v_dimname, __pyx_v_aggDimName, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7033, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 7033, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (__pyx_t_6) {

      /* "netCDF4/_netCDF4.pyx":7034
 *         for dimname, dim in self._dims.items():
 *             if dimname == aggDimName:
 *                 self._dims[dimname] = _Dimension(dimname, dim, self._cdfVLen, self._cdfTLen)             # <<<<<<<<<<<<<<
 *         self._vars = cdfm.variables
 *         for varname,var in self._vars.items():
*/
      __pyx_t_22 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_15, __pyx_mstate_global->__pyx_n_u_Dimension); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 7034, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_15);
      __pyx_t_17 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_cdfVLen); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 7034, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_17);
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_cdfTLen); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7034, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_15))) {
        __pyx_t_22 = PyMethod_GET_SELF(__pyx_t_15);
        assert(__pyx_t_22);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_15);
        __Pyx_INCREF(__pyx_t_22);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_15, __pyx__function);
        __pyx_t_4 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[5] = {__pyx_t_22, __pyx_v_dimname, __pyx_v_dim, __pyx_t_17, __pyx_t_3};
        __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_15, __pyx_callargs+__pyx_t_4, (5-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_22); __pyx_t_22 = 0;
        __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7034, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
      }
      __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_dims); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 7034, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_15);
      if (unlikely((PyObject_SetItem(__pyx_t_15, __pyx_v_dimname, __pyx_t_2) < 0))) __PYX_ERR(0, 7034, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

      /* "netCDF4/_netCDF4.pyx":7033
 *         self._grps = cdfm.groups
 *         for dimname, dim in self._dims.items():
 *             if dimname == aggDimName:             # <<<<<<<<<<<<<<
 *                 self._dims[dimname] = _Dimension(dimname, dim, self._cdfVLen, self._cdfTLen)
 *         self._vars = cdfm.variables
*/
    }
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "netCDF4/_netCDF4.pyx":7035
 *             if dimname == aggDimName:
 *                 self._dims[dimname] = _Dimension(dimname, dim, self._cdfVLen, self._cdfTLen)
 *         self._vars = cdfm.variables             # <<<<<<<<<<<<<<
 *         for varname,var in self._vars.items():
 *             if varname in self._cdfRecVar.keys():
*/
  __pyx_t_5 = __pyx_v_cdfm->variables;
  __Pyx_INCREF(__pyx_t_5);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_vars, __pyx_t_5) < (0)) __PYX_ERR(0, 7035, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "netCDF4/_netCDF4.pyx":7036
 *                 self._dims[dimname] = _Dimension(dimname, dim, self._cdfVLen, self._cdfTLen)
 *         self._vars = cdfm.variables
 *         for varname,var in self._vars.items():             # <<<<<<<<<<<<<<
 *             if varname in self._cdfRecVar.keys():
 *                 self._vars[varname] = _Variable(self, varname, var, aggDimName)
*/
  __pyx_t_11 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_vars); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7036, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (unlikely(__pyx_t_2 == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "items");
    __PYX_ERR(0, 7036, __pyx_L1_error)
  }
  __pyx_t_15 = __Pyx_dict_iterator(__pyx_t_2, 0, __pyx_mstate_global->__pyx_n_u_items, (&__pyx_t_8), (&__pyx_t_9)); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 7036, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_15);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_XDECREF(__pyx_t_5);
  __pyx_t_5 = __pyx_t_15;
  __pyx_t_15 = 0;
  while (1) {
    __pyx_t_10 = __Pyx_dict_iter_next(__pyx_t_5, __pyx_t_8, &__pyx_t_11, &__pyx_t_15, &__pyx_t_2, NULL, __pyx_t_9);
    if (unlikely(__pyx_t_10 == 0)) break;
    if (unlikely(__pyx_t_10 == -1)) __PYX_ERR(0, 7036, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_15);
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_XDECREF_SET(__pyx_v_varname, __pyx_t_15);
    __pyx_t_15 = 0;
    __Pyx_XDECREF_SET(__pyx_v_var, __pyx_t_2);
    __pyx_t_2 = 0;

    /* "netCDF4/_netCDF4.pyx":7037
 *         self._vars = cdfm.variables
 *         for varname,var in self._vars.items():
 *             if varname in self._cdfRecVar.keys():             # <<<<<<<<<<<<<<
 *                 self._vars[varname] = _Variable(self, varname, var, aggDimName)
 *         self._file_format = []
*/
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_cdfRecVar); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7037, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_15 = __pyx_t_3;
    __Pyx_INCREF(__pyx_t_15);
    __pyx_t_4 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_15, NULL};
      __pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_keys, __pyx_callargs+__pyx_t_4, (1-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7037, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __pyx_t_6 = (__Pyx_PySequence_ContainsTF(__pyx_v_varname, __pyx_t_2, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 7037, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (__pyx_t_6) {

      /* "netCDF4/_netCDF4.pyx":7038
 *         for varname,var in self._vars.items():
 *             if varname in self._cdfRecVar.keys():
 *                 self._vars[varname] = _Variable(self, varname, var, aggDimName)             # <<<<<<<<<<<<<<
 *         self._file_format = []
 *         self._data_model = []
*/
      __pyx_t_3 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_15, __pyx_mstate_global->__pyx_n_u_Variable); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 7038, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_15);
      if (unlikely(!__pyx_v_aggDimName)) { __Pyx_RaiseUnboundLocalError("aggDimName"); __PYX_ERR(0, 7038, __pyx_L1_error) }
      __pyx_t_4 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_15))) {
        __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_15);
        assert(__pyx_t_3);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_15);
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_15, __pyx__function);
        __pyx_t_4 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[5] = {__pyx_t_3, __pyx_v_self, __pyx_v_varname, __pyx_v_var, __pyx_v_aggDimName};
        __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_15, __pyx_callargs+__pyx_t_4, (5-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7038, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
      }
      __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_vars); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 7038, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_15);
      if (unlikely((PyObject_SetItem(__pyx_t_15, __pyx_v_varname, __pyx_t_2) < 0))) __PYX_ERR(0, 7038, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

      /* "netCDF4/_netCDF4.pyx":7037
 *         self._vars = cdfm.variables
 *         for varname,var in self._vars.items():
 *             if varname in self._cdfRecVar.keys():             # <<<<<<<<<<<<<<
 *                 self._vars[varname] = _Variable(self, varname, var, aggDimName)
 *         self._file_format = []
*/
    }
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "netCDF4/_netCDF4.pyx":7039
 *             if varname in self._cdfRecVar.keys():
 *                 self._vars[varname] = _Variable(self, varname, var, aggDimName)
 *         self._file_format = []             # <<<<<<<<<<<<<<
 *         self._data_model = []
 *         self._disk_format = []
*/
  __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7039, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_file_format_2, __pyx_t_5) < (0)) __PYX_ERR(0, 7039, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "netCDF4/_netCDF4.pyx":7040
 *                 self._vars[varname] = _Variable(self, varname, var, aggDimName)
 *         self._file_format = []
 *         self._data_model = []             # <<<<<<<<<<<<<<
 *         self._disk_format = []
 *         for dset in self._cdf:
*/
  __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7040, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_data_model_2, __pyx_t_5) < (0)) __PYX_ERR(0, 7040, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "netCDF4/_netCDF4.pyx":7041
 *         self._file_format = []
 *         self._data_model = []
 *         self._disk_format = []             # <<<<<<<<<<<<<<
 *         for dset in self._cdf:
 *             if dset.file_format == 'NETCDF4' or dset.data_model == 'NETCDF4':
*/
  __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7041, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_disk_format, __pyx_t_5) < (0)) __PYX_ERR(0, 7041, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "netCDF4/_netCDF4.pyx":7042
 *         self._data_model = []
 *         self._disk_format = []
 *         for dset in self._cdf:             # <<<<<<<<<<<<<<
 *             if dset.file_format == 'NETCDF4' or dset.data_model == 'NETCDF4':
 *                 raise ValueError('MFNetCDF4 only works with NETCDF3_* and NETCDF4_CLASSIC formatted files, not NETCDF4')
*/
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_cdf); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7042, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (likely(PyList_CheckExact(__pyx_t_5)) || PyTuple_CheckExact(__pyx_t_5)) {
    __pyx_t_2 = __pyx_t_5; __Pyx_INCREF(__pyx_t_2);
    __pyx_t_8 = 0;
    __pyx_t_12 = NULL;
  } else {
    __pyx_t_8 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7042, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_12 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 7042, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  for (;;) {
    if (likely(!__pyx_t_12)) {
      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(0, 7042, __pyx_L1_error)
          #endif
          if (__pyx_t_8 >= __pyx_temp) break;
        }
        __pyx_t_5 = __Pyx_PyList_GetItemRefFast(__pyx_t_2, __pyx_t_8, __Pyx_ReferenceSharing_OwnStrongReference);
        ++__pyx_t_8;
      } 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(0, 7042, __pyx_L1_error)
          #endif
          if (__pyx_t_8 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_8));
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_8);
        #endif
        ++__pyx_t_8;
      }
      if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7042, __pyx_L1_error)
    } else {
      __pyx_t_5 = __pyx_t_12(__pyx_t_2);
      if (unlikely(!__pyx_t_5)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 7042, __pyx_L1_error)
          PyErr_Clear();
        }
        break;
      }
    }
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_XDECREF_SET(__pyx_v_dset, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "netCDF4/_netCDF4.pyx":7043
 *         self._disk_format = []
 *         for dset in self._cdf:
 *             if dset.file_format == 'NETCDF4' or dset.data_model == 'NETCDF4':             # <<<<<<<<<<<<<<
 *                 raise ValueError('MFNetCDF4 only works with NETCDF3_* and NETCDF4_CLASSIC formatted files, not NETCDF4')
 *             self._file_format.append(dset.file_format)
*/
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_dset, __pyx_mstate_global->__pyx_n_u_file_format); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7043, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_NETCDF4, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 7043, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (!__pyx_t_1) {
    } else {
      __pyx_t_6 = __pyx_t_1;
      goto __pyx_L49_bool_binop_done;
    }
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_dset, __pyx_mstate_global->__pyx_n_u_data_model); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7043, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_NETCDF4, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 7043, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_6 = __pyx_t_1;
    __pyx_L49_bool_binop_done:;
    if (unlikely(__pyx_t_6)) {

      /* "netCDF4/_netCDF4.pyx":7044
 *         for dset in self._cdf:
 *             if dset.file_format == 'NETCDF4' or dset.data_model == 'NETCDF4':
 *                 raise ValueError('MFNetCDF4 only works with NETCDF3_* and NETCDF4_CLASSIC formatted files, not NETCDF4')             # <<<<<<<<<<<<<<
 *             self._file_format.append(dset.file_format)
 *             self._data_model.append(dset.data_model)
*/
      __pyx_t_15 = NULL;
      __pyx_t_4 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_15, __pyx_mstate_global->__pyx_kp_u_MFNetCDF4_only_works_with_NETCDF};
        __pyx_t_5 = __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_15); __pyx_t_15 = 0;
        if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7044, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
      }
      __Pyx_Raise(__pyx_t_5, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __PYX_ERR(0, 7044, __pyx_L1_error)

      /* "netCDF4/_netCDF4.pyx":7043
 *         self._disk_format = []
 *         for dset in self._cdf:
 *             if dset.file_format == 'NETCDF4' or dset.data_model == 'NETCDF4':             # <<<<<<<<<<<<<<
 *                 raise ValueError('MFNetCDF4 only works with NETCDF3_* and NETCDF4_CLASSIC formatted files, not NETCDF4')
 *             self._file_format.append(dset.file_format)
*/
    }

    /* "netCDF4/_netCDF4.pyx":7045
 *             if dset.file_format == 'NETCDF4' or dset.data_model == 'NETCDF4':
 *                 raise ValueError('MFNetCDF4 only works with NETCDF3_* and NETCDF4_CLASSIC formatted files, not NETCDF4')
 *             self._file_format.append(dset.file_format)             # <<<<<<<<<<<<<<
 *             self._data_model.append(dset.data_model)
 *             self._disk_format.append(dset.disk_format)
*/
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_file_format_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7045, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_v_dset, __pyx_mstate_global->__pyx_n_u_file_format); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 7045, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_15);
    __pyx_t_25 = __Pyx_PyObject_Append(__pyx_t_5, __pyx_t_15); if (unlikely(__pyx_t_25 == ((int)-1))) __PYX_ERR(0, 7045, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;

    /* "netCDF4/_netCDF4.pyx":7046
 *                 raise ValueError('MFNetCDF4 only works with NETCDF3_* and NETCDF4_CLASSIC formatted files, not NETCDF4')
 *             self._file_format.append(dset.file_format)
 *             self._data_model.append(dset.data_model)             # <<<<<<<<<<<<<<
 *             self._disk_format.append(dset.disk_format)
 *         self._path = '/'
*/
    __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_data_model_2); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 7046, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_15);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_dset, __pyx_mstate_global->__pyx_n_u_data_model); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7046, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_25 = __Pyx_PyObject_Append(__pyx_t_15, __pyx_t_5); if (unlikely(__pyx_t_25 == ((int)-1))) __PYX_ERR(0, 7046, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "netCDF4/_netCDF4.pyx":7047
 *             self._file_format.append(dset.file_format)
 *             self._data_model.append(dset.data_model)
 *             self._disk_format.append(dset.disk_format)             # <<<<<<<<<<<<<<
 *         self._path = '/'
 * 
*/
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_disk_format); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7047, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_v_dset, __pyx_mstate_global->__pyx_n_u_disk_format_2); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 7047, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_15);
    __pyx_t_25 = __Pyx_PyObject_Append(__pyx_t_5, __pyx_t_15); if (unlikely(__pyx_t_25 == ((int)-1))) __PYX_ERR(0, 7047, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;

    /* "netCDF4/_netCDF4.pyx":7042
 *         self._data_model = []
 *         self._disk_format = []
 *         for dset in self._cdf:             # <<<<<<<<<<<<<<
 *             if dset.file_format == 'NETCDF4' or dset.data_model == 'NETCDF4':
 *                 raise ValueError('MFNetCDF4 only works with NETCDF3_* and NETCDF4_CLASSIC formatted files, not NETCDF4')
*/
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":7048
 *             self._data_model.append(dset.data_model)
 *             self._disk_format.append(dset.disk_format)
 *         self._path = '/'             # <<<<<<<<<<<<<<
 * 
 *     def __setattr__(self, name, value):
*/
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_path_2, __pyx_mstate_global->__pyx_kp_u__10) < (0)) __PYX_ERR(0, 7048, __pyx_L1_error)

  /* "netCDF4/_netCDF4.pyx":6852
 *     """
 * 
 *     def __init__(self, files, check=False, aggdim=None, exclude=[],             # <<<<<<<<<<<<<<
 *             master_file=None):
 *         """
*/

  /* 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_5);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_XDECREF(__pyx_t_15);
  __Pyx_XDECREF(__pyx_t_17);
  __Pyx_XDECREF(__pyx_t_19);
  __Pyx_XDECREF(__pyx_t_20);
  __Pyx_XDECREF(__pyx_t_22);
  __Pyx_AddTraceback("netCDF4._netCDF4.MFDataset.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_msg);
  __Pyx_XDECREF(__pyx_v_master);
  __Pyx_XDECREF((PyObject *)__pyx_v_cdfm);
  __Pyx_XDECREF(__pyx_v_name);
  __Pyx_XDECREF(__pyx_v_value);
  __Pyx_XDECREF(__pyx_v_aggDimId);
  __Pyx_XDECREF(__pyx_v_dimname);
  __Pyx_XDECREF(__pyx_v_dim);
  __Pyx_XDECREF(__pyx_v_aggDimName);
  __Pyx_XDECREF(__pyx_v_masterRecVar);
  __Pyx_XDECREF(__pyx_v_vName);
  __Pyx_XDECREF(__pyx_v_v);
  __Pyx_XDECREF(__pyx_v_dims);
  __Pyx_XDECREF(__pyx_v_shape);
  __Pyx_XDECREF(__pyx_v_dtype);
  __Pyx_XDECREF(__pyx_v_cdf);
  __Pyx_XDECREF(__pyx_v_cdfVLen);
  __Pyx_XDECREF(__pyx_v_cdfRecVar);
  __Pyx_XDECREF(__pyx_v_f);
  __Pyx_XDECREF((PyObject *)__pyx_v_part);
  __Pyx_XDECREF(__pyx_v_varInfo);
  __Pyx_XDECREF(__pyx_v_masterDims);
  __Pyx_XDECREF(__pyx_v_masterShape);
  __Pyx_XDECREF(__pyx_v_masterType);
  __Pyx_XDECREF(__pyx_v_extDims);
  __Pyx_XDECREF(__pyx_v_extShape);
  __Pyx_XDECREF(__pyx_v_extType);
  __Pyx_XDECREF(__pyx_v_varname);
  __Pyx_XDECREF(__pyx_v_var);
  __Pyx_XDECREF(__pyx_v_dset);
  __Pyx_XDECREF(__pyx_v_files);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":7050
 *         self._path = '/'
 * 
 *     def __setattr__(self, name, value):             # <<<<<<<<<<<<<<
 *         """override base class attribute creation"""
 *         self.__dict__[name] = value
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9MFDataset_3__setattr__(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_7netCDF4_8_netCDF4_9MFDataset_2__setattr__, "override base class attribute creation");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_9MFDataset_3__setattr__ = {"__setattr__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_9MFDataset_3__setattr__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_9MFDataset_2__setattr__};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9MFDataset_3__setattr__(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_name = 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[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("__setattr__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 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,&__pyx_mstate_global->__pyx_n_u_name,&__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(0, 7050, __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(0, 7050, __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(0, 7050, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 7050, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setattr__", 0) < (0)) __PYX_ERR(0, 7050, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 3; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setattr__", 1, 3, 3, i); __PYX_ERR(0, 7050, __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(0, 7050, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 7050, __pyx_L3_error)
      values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 7050, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
    __pyx_v_name = values[1];
    __pyx_v_value = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setattr__", 1, 3, 3, __pyx_nargs); __PYX_ERR(0, 7050, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4.MFDataset.__setattr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_9MFDataset_2__setattr__(__pyx_self, __pyx_v_self, __pyx_v_name, __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_7netCDF4_8_netCDF4_9MFDataset_2__setattr__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_value) {
  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("__setattr__", 0);

  /* "netCDF4/_netCDF4.pyx":7052
 *     def __setattr__(self, name, value):
 *         """override base class attribute creation"""
 *         self.__dict__[name] = value             # <<<<<<<<<<<<<<
 * 
 *     def __getattribute__(self, name):
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_dict); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7052, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (unlikely((PyObject_SetItem(__pyx_t_1, __pyx_v_name, __pyx_v_value) < 0))) __PYX_ERR(0, 7052, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":7050
 *         self._path = '/'
 * 
 *     def __setattr__(self, name, value):             # <<<<<<<<<<<<<<
 *         """override base class attribute creation"""
 *         self.__dict__[name] = value
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("netCDF4._netCDF4.MFDataset.__setattr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":7054
 *         self.__dict__[name] = value
 * 
 *     def __getattribute__(self, name):             # <<<<<<<<<<<<<<
 *         if name in ['variables','dimensions','file_format','groups',\
 *                     'data_model','disk_format','path']:
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9MFDataset_5__getattribute__(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_7netCDF4_8_netCDF4_9MFDataset_5__getattribute__ = {"__getattribute__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_9MFDataset_5__getattribute__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9MFDataset_5__getattribute__(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_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("__getattribute__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 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,&__pyx_mstate_global->__pyx_n_u_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(0, 7054, __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(0, 7054, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 7054, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__getattribute__", 0) < (0)) __PYX_ERR(0, 7054, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__getattribute__", 1, 2, 2, i); __PYX_ERR(0, 7054, __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(0, 7054, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 7054, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
    __pyx_v_name = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__getattribute__", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 7054, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4.MFDataset.__getattribute__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_9MFDataset_4__getattribute__(__pyx_self, __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_7netCDF4_8_netCDF4_9MFDataset_4__getattribute__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  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("__getattribute__", 0);

  /* "netCDF4/_netCDF4.pyx":7055
 * 
 *     def __getattribute__(self, name):
 *         if name in ['variables','dimensions','file_format','groups',\             # <<<<<<<<<<<<<<
 *                     'data_model','disk_format','path']:
 *             if name == 'dimensions': return self._dims
*/
  __Pyx_INCREF(__pyx_v_name);
  __pyx_t_1 = __pyx_v_name;
  __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_variables, Py_EQ)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 7055, __pyx_L1_error)
  if (!__pyx_t_3) {
  } else {
    __pyx_t_2 = __pyx_t_3;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_dimensions, Py_EQ)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 7055, __pyx_L1_error)
  if (!__pyx_t_3) {
  } else {
    __pyx_t_2 = __pyx_t_3;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_file_format, Py_EQ)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 7055, __pyx_L1_error)
  if (!__pyx_t_3) {
  } else {
    __pyx_t_2 = __pyx_t_3;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_groups, Py_EQ)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 7055, __pyx_L1_error)
  if (!__pyx_t_3) {
  } else {
    __pyx_t_2 = __pyx_t_3;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_data_model, Py_EQ)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 7055, __pyx_L1_error)
  if (!__pyx_t_3) {
  } else {
    __pyx_t_2 = __pyx_t_3;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_disk_format_2, Py_EQ)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 7055, __pyx_L1_error)
  if (!__pyx_t_3) {
  } else {
    __pyx_t_2 = __pyx_t_3;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_path, Py_EQ)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 7055, __pyx_L1_error)
  __pyx_t_2 = __pyx_t_3;
  __pyx_L4_bool_binop_done:;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = __pyx_t_2;
  if (__pyx_t_3) {

    /* "netCDF4/_netCDF4.pyx":7057
 *         if name in ['variables','dimensions','file_format','groups',\
 *                     'data_model','disk_format','path']:
 *             if name == 'dimensions': return self._dims             # <<<<<<<<<<<<<<
 *             if name == 'variables': return self._vars
 *             if name == 'file_format': return self._file_format
*/
    __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_v_name, __pyx_mstate_global->__pyx_n_u_dimensions, Py_EQ)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 7057, __pyx_L1_error)
    if (__pyx_t_3) {
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_dims); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7057, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_r = __pyx_t_1;
      __pyx_t_1 = 0;
      goto __pyx_L0;
    }

    /* "netCDF4/_netCDF4.pyx":7058
 *                     'data_model','disk_format','path']:
 *             if name == 'dimensions': return self._dims
 *             if name == 'variables': return self._vars             # <<<<<<<<<<<<<<
 *             if name == 'file_format': return self._file_format
 *             if name == 'data_model': return self._data_model
*/
    __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_v_name, __pyx_mstate_global->__pyx_n_u_variables, Py_EQ)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 7058, __pyx_L1_error)
    if (__pyx_t_3) {
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_vars); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7058, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_r = __pyx_t_1;
      __pyx_t_1 = 0;
      goto __pyx_L0;
    }

    /* "netCDF4/_netCDF4.pyx":7059
 *             if name == 'dimensions': return self._dims
 *             if name == 'variables': return self._vars
 *             if name == 'file_format': return self._file_format             # <<<<<<<<<<<<<<
 *             if name == 'data_model': return self._data_model
 *             if name == 'disk_format': return self._disk_format
*/
    __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_v_name, __pyx_mstate_global->__pyx_n_u_file_format, Py_EQ)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 7059, __pyx_L1_error)
    if (__pyx_t_3) {
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_file_format_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7059, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_r = __pyx_t_1;
      __pyx_t_1 = 0;
      goto __pyx_L0;
    }

    /* "netCDF4/_netCDF4.pyx":7060
 *             if name == 'variables': return self._vars
 *             if name == 'file_format': return self._file_format
 *             if name == 'data_model': return self._data_model             # <<<<<<<<<<<<<<
 *             if name == 'disk_format': return self._disk_format
 *             if name == 'path': return self._path
*/
    __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_v_name, __pyx_mstate_global->__pyx_n_u_data_model, Py_EQ)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 7060, __pyx_L1_error)
    if (__pyx_t_3) {
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_data_model_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7060, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_r = __pyx_t_1;
      __pyx_t_1 = 0;
      goto __pyx_L0;
    }

    /* "netCDF4/_netCDF4.pyx":7061
 *             if name == 'file_format': return self._file_format
 *             if name == 'data_model': return self._data_model
 *             if name == 'disk_format': return self._disk_format             # <<<<<<<<<<<<<<
 *             if name == 'path': return self._path
 *             if name == 'groups': return self._grps
*/
    __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_v_name, __pyx_mstate_global->__pyx_n_u_disk_format_2, Py_EQ)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 7061, __pyx_L1_error)
    if (__pyx_t_3) {
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_disk_format); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7061, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_r = __pyx_t_1;
      __pyx_t_1 = 0;
      goto __pyx_L0;
    }

    /* "netCDF4/_netCDF4.pyx":7062
 *             if name == 'data_model': return self._data_model
 *             if name == 'disk_format': return self._disk_format
 *             if name == 'path': return self._path             # <<<<<<<<<<<<<<
 *             if name == 'groups': return self._grps
 *         else:
*/
    __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_v_name, __pyx_mstate_global->__pyx_n_u_path, Py_EQ)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 7062, __pyx_L1_error)
    if (__pyx_t_3) {
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_path_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7062, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_r = __pyx_t_1;
      __pyx_t_1 = 0;
      goto __pyx_L0;
    }

    /* "netCDF4/_netCDF4.pyx":7063
 *             if name == 'disk_format': return self._disk_format
 *             if name == 'path': return self._path
 *             if name == 'groups': return self._grps             # <<<<<<<<<<<<<<
 *         else:
 *             return Dataset.__getattribute__(self, name)
*/
    __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_v_name, __pyx_mstate_global->__pyx_n_u_groups, Py_EQ)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 7063, __pyx_L1_error)
    if (__pyx_t_3) {
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_grps); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7063, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_r = __pyx_t_1;
      __pyx_t_1 = 0;
      goto __pyx_L0;
    }

    /* "netCDF4/_netCDF4.pyx":7055
 * 
 *     def __getattribute__(self, name):
 *         if name in ['variables','dimensions','file_format','groups',\             # <<<<<<<<<<<<<<
 *                     'data_model','disk_format','path']:
 *             if name == 'dimensions': return self._dims
*/
    goto __pyx_L3;
  }

  /* "netCDF4/_netCDF4.pyx":7065
 *             if name == 'groups': return self._grps
 *         else:
 *             return Dataset.__getattribute__(self, name)             # <<<<<<<<<<<<<<
 * 
 *     def ncattrs(self):
*/
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_4 = ((PyObject *)__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Dataset);
    __Pyx_INCREF(__pyx_t_4);
    __pyx_t_5 = 0;
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_v_self, __pyx_v_name};
      __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_getattribute, __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_1)) __PYX_ERR(0, 7065, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
  }
  __pyx_L3:;

  /* "netCDF4/_netCDF4.pyx":7054
 *         self.__dict__[name] = value
 * 
 *     def __getattribute__(self, name):             # <<<<<<<<<<<<<<
 *         if name in ['variables','dimensions','file_format','groups',\
 *                     'data_model','disk_format','path']:
*/

  /* 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_4);
  __Pyx_AddTraceback("netCDF4._netCDF4.MFDataset.__getattribute__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":7067
 *             return Dataset.__getattribute__(self, name)
 * 
 *     def ncattrs(self):             # <<<<<<<<<<<<<<
 *         """
 *         **`ncattrs(self)`**
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9MFDataset_7ncattrs(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_7netCDF4_8_netCDF4_9MFDataset_6ncattrs, "\n        **`ncattrs(self)`**\n\n        return the netcdf attribute names from the master file.\n        ");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_9MFDataset_7ncattrs = {"ncattrs", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_9MFDataset_7ncattrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_9MFDataset_6ncattrs};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9MFDataset_7ncattrs(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("ncattrs (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 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(0, 7067, __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(0, 7067, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "ncattrs", 0) < (0)) __PYX_ERR(0, 7067, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("ncattrs", 1, 1, 1, i); __PYX_ERR(0, 7067, __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(0, 7067, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("ncattrs", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 7067, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4.MFDataset.ncattrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_9MFDataset_6ncattrs(__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_7netCDF4_8_netCDF4_9MFDataset_6ncattrs(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("ncattrs", 0);

  /* "netCDF4/_netCDF4.pyx":7073
 *         return the netcdf attribute names from the master file.
 *         """
 *         return list(self._cdf[0].__dict__)             # <<<<<<<<<<<<<<
 * 
 *     def close(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_cdf); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7073, __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(0, 7073, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_dict); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7073, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PySequence_ListKeepNew(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7073, __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;

  /* "netCDF4/_netCDF4.pyx":7067
 *             return Dataset.__getattribute__(self, name)
 * 
 *     def ncattrs(self):             # <<<<<<<<<<<<<<
 *         """
 *         **`ncattrs(self)`**
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("netCDF4._netCDF4.MFDataset.ncattrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":7075
 *         return list(self._cdf[0].__dict__)
 * 
 *     def close(self):             # <<<<<<<<<<<<<<
 *         """
 *         **`close(self)`**
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9MFDataset_9close(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_7netCDF4_8_netCDF4_9MFDataset_8close, "\n        **`close(self)`**\n\n        close all the open files.\n        ");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_9MFDataset_9close = {"close", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_9MFDataset_9close, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_9MFDataset_8close};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9MFDataset_9close(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("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);
  {
    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(0, 7075, __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(0, 7075, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_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", 0) < (0)) __PYX_ERR(0, 7075, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("close", 1, 1, 1, i); __PYX_ERR(0, 7075, __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(0, 7075, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("close", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 7075, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4.MFDataset.close", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_9MFDataset_8close(__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_7netCDF4_8_netCDF4_9MFDataset_8close(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_v_dset = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  PyObject *(*__pyx_t_4)(PyObject *);
  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("close", 0);

  /* "netCDF4/_netCDF4.pyx":7081
 *         close all the open files.
 *         """
 *         for dset in self._cdf:             # <<<<<<<<<<<<<<
 *             dset.close()
 * 
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_cdf); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7081, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
    __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2);
    __pyx_t_3 = 0;
    __pyx_t_4 = NULL;
  } else {
    __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7081, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 7081, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  for (;;) {
    if (likely(!__pyx_t_4)) {
      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(0, 7081, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        __pyx_t_1 = __Pyx_PyList_GetItemRefFast(__pyx_t_2, __pyx_t_3, __Pyx_ReferenceSharing_OwnStrongReference);
        ++__pyx_t_3;
      } 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(0, 7081, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __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_3));
        #else
        __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3);
        #endif
        ++__pyx_t_3;
      }
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7081, __pyx_L1_error)
    } else {
      __pyx_t_1 = __pyx_t_4(__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(0, 7081, __pyx_L1_error)
          PyErr_Clear();
        }
        break;
      }
    }
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_XDECREF_SET(__pyx_v_dset, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":7082
 *         """
 *         for dset in self._cdf:
 *             dset.close()             # <<<<<<<<<<<<<<
 * 
 *     def isopen(self):
*/
    __pyx_t_5 = __pyx_v_dset;
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_6 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
      __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_close, __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_1)) __PYX_ERR(0, 7082, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":7081
 *         close all the open files.
 *         """
 *         for dset in self._cdf:             # <<<<<<<<<<<<<<
 *             dset.close()
 * 
*/
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":7075
 *         return list(self._cdf[0].__dict__)
 * 
 *     def close(self):             # <<<<<<<<<<<<<<
 *         """
 *         **`close(self)`**
*/

  /* 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_5);
  __Pyx_AddTraceback("netCDF4._netCDF4.MFDataset.close", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_dset);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":7084
 *             dset.close()
 * 
 *     def isopen(self):             # <<<<<<<<<<<<<<
 *         """
 *         **`isopen(self)`**
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9MFDataset_11isopen(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_7netCDF4_8_netCDF4_9MFDataset_10isopen, "\n        **`isopen(self)`**\n\n        True if all files are open, False otherwise.\n        ");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_9MFDataset_11isopen = {"isopen", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_9MFDataset_11isopen, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_9MFDataset_10isopen};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9MFDataset_11isopen(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("isopen (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 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(0, 7084, __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(0, 7084, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "isopen", 0) < (0)) __PYX_ERR(0, 7084, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("isopen", 1, 1, 1, i); __PYX_ERR(0, 7084, __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(0, 7084, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("isopen", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 7084, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4.MFDataset.isopen", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_9MFDataset_10isopen(__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;
}

/* "netCDF4/_netCDF4.pyx":7090
 *         True if all files are open, False otherwise.
 *         """
 *         return all(map(lambda dset: dset.isopen(), self._cdf))             # <<<<<<<<<<<<<<
 * 
 *     def __repr__(self):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9MFDataset_6isopen_lambda7(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_7netCDF4_8_netCDF4_9MFDataset_6isopen_lambda7 = {"lambda7", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_9MFDataset_6isopen_lambda7, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9MFDataset_6isopen_lambda7(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_dset = 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("lambda7 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_dset,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 7090, __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(0, 7090, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "lambda7", 0) < (0)) __PYX_ERR(0, 7090, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("lambda7", 1, 1, 1, i); __PYX_ERR(0, 7090, __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(0, 7090, __pyx_L3_error)
    }
    __pyx_v_dset = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("lambda7", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 7090, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4.MFDataset.isopen.lambda7", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_lambda_funcdef_lambda7(__pyx_self, __pyx_v_dset);

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

static PyObject *__pyx_lambda_funcdef_lambda7(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_dset) {
  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("lambda7", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_v_dset;
  __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_isopen, __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(0, 7090, __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_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("netCDF4._netCDF4.MFDataset.isopen.lambda7", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":7084
 *             dset.close()
 * 
 *     def isopen(self):             # <<<<<<<<<<<<<<
 *         """
 *         **`isopen(self)`**
*/

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset_10isopen(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 = 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("isopen", 0);

  /* "netCDF4/_netCDF4.pyx":7090
 *         True if all files are open, False otherwise.
 *         """
 *         return all(map(lambda dset: dset.isopen(), self._cdf))             # <<<<<<<<<<<<<<
 * 
 *     def __repr__(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = NULL;
  __pyx_t_4 = NULL;
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_9MFDataset_6isopen_lambda7, 0, __pyx_mstate_global->__pyx_n_u_MFDataset_isopen_locals_lambda, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[7])); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7090, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_cdf); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7090, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = 1;
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_t_5, __pyx_t_6};
    __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_map, __pyx_callargs+__pyx_t_7, (3-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __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_3)) __PYX_ERR(0, 7090, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  }
  __pyx_t_7 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_all, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__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(0, 7090, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":7084
 *             dset.close()
 * 
 *     def isopen(self):             # <<<<<<<<<<<<<<
 *         """
 *         **`isopen(self)`**
*/

  /* 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_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("netCDF4._netCDF4.MFDataset.isopen", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":7092
 *         return all(map(lambda dset: dset.isopen(), self._cdf))
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         ncdump = [repr(type(self)).replace("._netCDF4", "")]
 *         dimnames = tuple(str(dimname) for dimname in self.dimensions.keys())
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9MFDataset_13__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*/
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_9MFDataset_13__repr__ = {"__repr__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_9MFDataset_13__repr__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9MFDataset_13__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(0, 7092, __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(0, 7092, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_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(0, 7092, __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(0, 7092, __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(0, 7092, __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(0, 7092, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4.MFDataset.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_9MFDataset_12__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_gb_7netCDF4_8_netCDF4_9MFDataset_8__repr___2generator7(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "netCDF4/_netCDF4.pyx":7094
 *     def __repr__(self):
 *         ncdump = [repr(type(self)).replace("._netCDF4", "")]
 *         dimnames = tuple(str(dimname) for dimname in self.dimensions.keys())             # <<<<<<<<<<<<<<
 *         varnames = tuple(str(varname) for varname in self.variables.keys())
 *         grpnames = ()
*/

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset_8__repr___genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_11_genexpr *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("genexpr", 0);
  __pyx_cur_scope = (struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_11_genexpr *)__pyx_tp_new_7netCDF4_8_netCDF4___pyx_scope_struct_11_genexpr(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_11_genexpr, __pyx_mstate_global->__pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_11_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(0, 7094, __pyx_L1_error)
  } else {
    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_genexpr_arg_0 = __pyx_genexpr_arg_0;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_genexpr_arg_0);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_genexpr_arg_0);
  {
    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_7netCDF4_8_netCDF4_9MFDataset_8__repr___2generator7, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[8]), (PyObject *) __pyx_cur_scope, __pyx_mstate_global->__pyx_n_u_genexpr, __pyx_mstate_global->__pyx_n_u_MFDataset___repr___locals_genexp, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4); if (unlikely(!gen)) __PYX_ERR(0, 7094, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("netCDF4._netCDF4.MFDataset.__repr__.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_7netCDF4_8_netCDF4_9MFDataset_8__repr___2generator7(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_11_genexpr *__pyx_cur_scope = ((struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_11_genexpr *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("genexpr", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    case 1: goto __pyx_L6_resume_from_yield;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(__pyx_sent_value != Py_None)) {
    if (unlikely(__pyx_sent_value)) PyErr_SetString(PyExc_TypeError, "can't send non-None value to a just-started generator");
    __PYX_ERR(0, 7094, __pyx_L1_error)
  }
  __pyx_t_2 = 0;
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(0, 7094, __pyx_L1_error) }
  if (unlikely(__pyx_cur_scope->__pyx_genexpr_arg_0 == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "keys");
    __PYX_ERR(0, 7094, __pyx_L1_error)
  }
  __pyx_t_5 = __Pyx_dict_iterator(__pyx_cur_scope->__pyx_genexpr_arg_0, 0, __pyx_mstate_global->__pyx_n_u_keys, (&__pyx_t_3), (&__pyx_t_4)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7094, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_1);
  __pyx_t_1 = __pyx_t_5;
  __pyx_t_5 = 0;
  while (1) {
    __pyx_t_6 = __Pyx_dict_iter_next(__pyx_t_1, __pyx_t_3, &__pyx_t_2, &__pyx_t_5, NULL, NULL, __pyx_t_4);
    if (unlikely(__pyx_t_6 == 0)) break;
    if (unlikely(__pyx_t_6 == -1)) __PYX_ERR(0, 7094, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_dimname);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_dimname, __pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyObject_Unicode(__pyx_cur_scope->__pyx_v_dimname); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7094, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    __Pyx_XGIVEREF(__pyx_t_1);
    __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
    __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
    __pyx_cur_scope->__pyx_t_2 = __pyx_t_3;
    __pyx_cur_scope->__pyx_t_3 = __pyx_t_4;
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
    /* return from generator, yielding value */
    __pyx_generator->resume_label = 1;
    return __pyx_r;
    __pyx_L6_resume_from_yield:;
    __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
    __pyx_cur_scope->__pyx_t_0 = 0;
    __Pyx_XGOTREF(__pyx_t_1);
    __pyx_t_2 = __pyx_cur_scope->__pyx_t_1;
    __pyx_t_3 = __pyx_cur_scope->__pyx_t_2;
    __pyx_t_4 = __pyx_cur_scope->__pyx_t_3;
    if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 7094, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);

  /* 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_5);
  if (__Pyx_PyErr_Occurred()) {
    __Pyx_Generator_Replace_StopIteration(0);
    __Pyx_AddTraceback("genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  }
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  #if !CYTHON_USE_EXC_INFO_STACK
  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
  #endif
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_7netCDF4_8_netCDF4_9MFDataset_8__repr___5generator8(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "netCDF4/_netCDF4.pyx":7095
 *         ncdump = [repr(type(self)).replace("._netCDF4", "")]
 *         dimnames = tuple(str(dimname) for dimname in self.dimensions.keys())
 *         varnames = tuple(str(varname) for varname in self.variables.keys())             # <<<<<<<<<<<<<<
 *         grpnames = ()
 *         if self.path == '/':
*/

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset_8__repr___3genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_12_genexpr *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("genexpr", 0);
  __pyx_cur_scope = (struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_12_genexpr *)__pyx_tp_new_7netCDF4_8_netCDF4___pyx_scope_struct_12_genexpr(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_12_genexpr, __pyx_mstate_global->__pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_12_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(0, 7095, __pyx_L1_error)
  } else {
    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_genexpr_arg_0 = __pyx_genexpr_arg_0;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_genexpr_arg_0);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_genexpr_arg_0);
  {
    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_7netCDF4_8_netCDF4_9MFDataset_8__repr___5generator8, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[9]), (PyObject *) __pyx_cur_scope, __pyx_mstate_global->__pyx_n_u_genexpr, __pyx_mstate_global->__pyx_n_u_MFDataset___repr___locals_genexp, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4); if (unlikely(!gen)) __PYX_ERR(0, 7095, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("netCDF4._netCDF4.MFDataset.__repr__.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_7netCDF4_8_netCDF4_9MFDataset_8__repr___5generator8(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_12_genexpr *__pyx_cur_scope = ((struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_12_genexpr *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("genexpr", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    case 1: goto __pyx_L6_resume_from_yield;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(__pyx_sent_value != Py_None)) {
    if (unlikely(__pyx_sent_value)) PyErr_SetString(PyExc_TypeError, "can't send non-None value to a just-started generator");
    __PYX_ERR(0, 7095, __pyx_L1_error)
  }
  __pyx_t_2 = 0;
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(0, 7095, __pyx_L1_error) }
  if (unlikely(__pyx_cur_scope->__pyx_genexpr_arg_0 == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "keys");
    __PYX_ERR(0, 7095, __pyx_L1_error)
  }
  __pyx_t_5 = __Pyx_dict_iterator(__pyx_cur_scope->__pyx_genexpr_arg_0, 0, __pyx_mstate_global->__pyx_n_u_keys, (&__pyx_t_3), (&__pyx_t_4)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7095, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_1);
  __pyx_t_1 = __pyx_t_5;
  __pyx_t_5 = 0;
  while (1) {
    __pyx_t_6 = __Pyx_dict_iter_next(__pyx_t_1, __pyx_t_3, &__pyx_t_2, &__pyx_t_5, NULL, NULL, __pyx_t_4);
    if (unlikely(__pyx_t_6 == 0)) break;
    if (unlikely(__pyx_t_6 == -1)) __PYX_ERR(0, 7095, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_varname);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_varname, __pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyObject_Unicode(__pyx_cur_scope->__pyx_v_varname); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7095, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    __Pyx_XGIVEREF(__pyx_t_1);
    __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
    __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
    __pyx_cur_scope->__pyx_t_2 = __pyx_t_3;
    __pyx_cur_scope->__pyx_t_3 = __pyx_t_4;
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
    /* return from generator, yielding value */
    __pyx_generator->resume_label = 1;
    return __pyx_r;
    __pyx_L6_resume_from_yield:;
    __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
    __pyx_cur_scope->__pyx_t_0 = 0;
    __Pyx_XGOTREF(__pyx_t_1);
    __pyx_t_2 = __pyx_cur_scope->__pyx_t_1;
    __pyx_t_3 = __pyx_cur_scope->__pyx_t_2;
    __pyx_t_4 = __pyx_cur_scope->__pyx_t_3;
    if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 7095, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);

  /* 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_5);
  if (__Pyx_PyErr_Occurred()) {
    __Pyx_Generator_Replace_StopIteration(0);
    __Pyx_AddTraceback("genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  }
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  #if !CYTHON_USE_EXC_INFO_STACK
  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
  #endif
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":7092
 *         return all(map(lambda dset: dset.isopen(), self._cdf))
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         ncdump = [repr(type(self)).replace("._netCDF4", "")]
 *         dimnames = tuple(str(dimname) for dimname in self.dimensions.keys())
*/

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset_12__repr__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_v_ncdump = NULL;
  PyObject *__pyx_v_dimnames = NULL;
  PyObject *__pyx_v_varnames = NULL;
  PyObject *__pyx_v_grpnames = NULL;
  PyObject *__pyx_v_name = NULL;
  PyObject *__pyx_gb_7netCDF4_8_netCDF4_9MFDataset_8__repr___2generator7 = 0;
  PyObject *__pyx_gb_7netCDF4_8_netCDF4_9MFDataset_8__repr___5generator8 = 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;
  PyObject *__pyx_t_5[5];
  int __pyx_t_6;
  size_t __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  PyObject *(*__pyx_t_9)(PyObject *);
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11[4];
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__repr__", 0);

  /* "netCDF4/_netCDF4.pyx":7093
 * 
 *     def __repr__(self):
 *         ncdump = [repr(type(self)).replace("._netCDF4", "")]             # <<<<<<<<<<<<<<
 *         dimnames = tuple(str(dimname) for dimname in self.dimensions.keys())
 *         varnames = tuple(str(varname) for varname in self.variables.keys())
*/
  __pyx_t_1 = PyObject_Repr(((PyObject *)Py_TYPE(__pyx_v_self))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7093, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (unlikely(__pyx_t_1 == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "replace");
    __PYX_ERR(0, 7093, __pyx_L1_error)
  }
  __pyx_t_2 = PyUnicode_Replace(((PyObject*)__pyx_t_1), __pyx_mstate_global->__pyx_kp_u_netCDF4, __pyx_mstate_global->__pyx_kp_u__4, -1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7093, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7093, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_2);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, __pyx_t_2) != (0)) __PYX_ERR(0, 7093, __pyx_L1_error);
  __pyx_t_2 = 0;
  __pyx_v_ncdump = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":7094
 *     def __repr__(self):
 *         ncdump = [repr(type(self)).replace("._netCDF4", "")]
 *         dimnames = tuple(str(dimname) for dimname in self.dimensions.keys())             # <<<<<<<<<<<<<<
 *         varnames = tuple(str(varname) for varname in self.variables.keys())
 *         grpnames = ()
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_dimensions); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7094, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_pf_7netCDF4_8_netCDF4_9MFDataset_8__repr___genexpr(NULL, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7094, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PySequence_Tuple(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7094, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_dimnames = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":7095
 *         ncdump = [repr(type(self)).replace("._netCDF4", "")]
 *         dimnames = tuple(str(dimname) for dimname in self.dimensions.keys())
 *         varnames = tuple(str(varname) for varname in self.variables.keys())             # <<<<<<<<<<<<<<
 *         grpnames = ()
 *         if self.path == '/':
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_variables); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7095, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_pf_7netCDF4_8_netCDF4_9MFDataset_8__repr___3genexpr(NULL, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7095, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PySequence_Tuple(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7095, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_varnames = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":7096
 *         dimnames = tuple(str(dimname) for dimname in self.dimensions.keys())
 *         varnames = tuple(str(varname) for varname in self.variables.keys())
 *         grpnames = ()             # <<<<<<<<<<<<<<
 *         if self.path == '/':
 *             ncdump.append('root group (%s data model, file format %s):' %
*/
  __Pyx_INCREF(__pyx_mstate_global->__pyx_empty_tuple);
  __pyx_v_grpnames = __pyx_mstate_global->__pyx_empty_tuple;

  /* "netCDF4/_netCDF4.pyx":7097
 *         varnames = tuple(str(varname) for varname in self.variables.keys())
 *         grpnames = ()
 *         if self.path == '/':             # <<<<<<<<<<<<<<
 *             ncdump.append('root group (%s data model, file format %s):' %
 *                     (self.data_model[0], self.disk_format[0]))
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_path); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7097, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_mstate_global->__pyx_kp_u__10, Py_EQ)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 7097, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_3) {

    /* "netCDF4/_netCDF4.pyx":7099
 *         if self.path == '/':
 *             ncdump.append('root group (%s data model, file format %s):' %
 *                     (self.data_model[0], self.disk_format[0]))             # <<<<<<<<<<<<<<
 *         else:
 *             ncdump.append('group %s:' % self.path)
*/
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_data_model); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7099, __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(0, 7099, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Str(__pyx_t_2), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7099, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_disk_format_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7099, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_2, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 7099, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Str(__pyx_t_4), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7099, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_5[0] = __pyx_mstate_global->__pyx_kp_u_root_group;
    __pyx_t_5[1] = __pyx_t_1;
    __pyx_t_5[2] = __pyx_mstate_global->__pyx_kp_u_data_model_file_format;
    __pyx_t_5[3] = __pyx_t_2;
    __pyx_t_5[4] = __pyx_mstate_global->__pyx_kp_u__12;

    /* "netCDF4/_netCDF4.pyx":7098
 *         grpnames = ()
 *         if self.path == '/':
 *             ncdump.append('root group (%s data model, file format %s):' %             # <<<<<<<<<<<<<<
 *                     (self.data_model[0], self.disk_format[0]))
 *         else:
*/
    __pyx_t_4 = __Pyx_PyUnicode_Join(__pyx_t_5, 5, 12 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_1) + 25 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_2) + 2, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2));
    if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 7098, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_6 = __Pyx_PyList_Append(__pyx_v_ncdump, __pyx_t_4); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 7098, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "netCDF4/_netCDF4.pyx":7097
 *         varnames = tuple(str(varname) for varname in self.variables.keys())
 *         grpnames = ()
 *         if self.path == '/':             # <<<<<<<<<<<<<<
 *             ncdump.append('root group (%s data model, file format %s):' %
 *                     (self.data_model[0], self.disk_format[0]))
*/
    goto __pyx_L3;
  }

  /* "netCDF4/_netCDF4.pyx":7101
 *                     (self.data_model[0], self.disk_format[0]))
 *         else:
 *             ncdump.append('group %s:' % self.path)             # <<<<<<<<<<<<<<
 *         for name in self.ncattrs():
 *             ncdump.append('    %s: %s' % (name, self.__dict__[name]))
*/
  /*else*/ {
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_path); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 7101, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_2 = __Pyx_PyUnicode_FormatSafe(__pyx_mstate_global->__pyx_kp_u_group_s, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7101, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyList_Append(__pyx_v_ncdump, __pyx_t_2); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 7101, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_L3:;

  /* "netCDF4/_netCDF4.pyx":7102
 *         else:
 *             ncdump.append('group %s:' % self.path)
 *         for name in self.ncattrs():             # <<<<<<<<<<<<<<
 *             ncdump.append('    %s: %s' % (name, self.__dict__[name]))
 *         ncdump.append('    dimensions = %s' % str(dimnames))
*/
  __pyx_t_4 = __pyx_v_self;
  __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_ncattrs, __pyx_callargs+__pyx_t_7, (1-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7102, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  if (likely(PyList_CheckExact(__pyx_t_2)) || PyTuple_CheckExact(__pyx_t_2)) {
    __pyx_t_4 = __pyx_t_2; __Pyx_INCREF(__pyx_t_4);
    __pyx_t_8 = 0;
    __pyx_t_9 = NULL;
  } else {
    __pyx_t_8 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 7102, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_9 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 7102, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  for (;;) {
    if (likely(!__pyx_t_9)) {
      if (likely(PyList_CheckExact(__pyx_t_4))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_4);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 7102, __pyx_L1_error)
          #endif
          if (__pyx_t_8 >= __pyx_temp) break;
        }
        __pyx_t_2 = __Pyx_PyList_GetItemRefFast(__pyx_t_4, __pyx_t_8, __Pyx_ReferenceSharing_OwnStrongReference);
        ++__pyx_t_8;
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_4);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 7102, __pyx_L1_error)
          #endif
          if (__pyx_t_8 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_2 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_8));
        #else
        __pyx_t_2 = __Pyx_PySequence_ITEM(__pyx_t_4, __pyx_t_8);
        #endif
        ++__pyx_t_8;
      }
      if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7102, __pyx_L1_error)
    } else {
      __pyx_t_2 = __pyx_t_9(__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(0, 7102, __pyx_L1_error)
          PyErr_Clear();
        }
        break;
      }
    }
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_2);
    __pyx_t_2 = 0;

    /* "netCDF4/_netCDF4.pyx":7103
 *             ncdump.append('group %s:' % self.path)
 *         for name in self.ncattrs():
 *             ncdump.append('    %s: %s' % (name, self.__dict__[name]))             # <<<<<<<<<<<<<<
 *         ncdump.append('    dimensions = %s' % str(dimnames))
 *         ncdump.append('    variables = %s' % str(varnames))
*/
    __pyx_t_2 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Str(__pyx_v_name), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7103, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_dict); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7103, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_10 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_v_name); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 7103, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Str(__pyx_t_10), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7103, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __pyx_t_11[0] = __pyx_mstate_global->__pyx_kp_u__13;
    __pyx_t_11[1] = __pyx_t_2;
    __pyx_t_11[2] = __pyx_mstate_global->__pyx_kp_u__7;
    __pyx_t_11[3] = __pyx_t_1;
    __pyx_t_10 = __Pyx_PyUnicode_Join(__pyx_t_11, 4, 4 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_2) + 2 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_1), 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1));
    if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 7103, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_6 = __Pyx_PyList_Append(__pyx_v_ncdump, __pyx_t_10); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 7103, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

    /* "netCDF4/_netCDF4.pyx":7102
 *         else:
 *             ncdump.append('group %s:' % self.path)
 *         for name in self.ncattrs():             # <<<<<<<<<<<<<<
 *             ncdump.append('    %s: %s' % (name, self.__dict__[name]))
 *         ncdump.append('    dimensions = %s' % str(dimnames))
*/
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "netCDF4/_netCDF4.pyx":7104
 *         for name in self.ncattrs():
 *             ncdump.append('    %s: %s' % (name, self.__dict__[name]))
 *         ncdump.append('    dimensions = %s' % str(dimnames))             # <<<<<<<<<<<<<<
 *         ncdump.append('    variables = %s' % str(varnames))
 *         ncdump.append('    groups = %s' % str(grpnames))
*/
  __pyx_t_4 = __Pyx_PyObject_Unicode(__pyx_v_dimnames); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 7104, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_10 = PyUnicode_Format(__pyx_mstate_global->__pyx_kp_u_dimensions_s, __pyx_t_4); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 7104, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_6 = __Pyx_PyList_Append(__pyx_v_ncdump, __pyx_t_10); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 7104, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

  /* "netCDF4/_netCDF4.pyx":7105
 *             ncdump.append('    %s: %s' % (name, self.__dict__[name]))
 *         ncdump.append('    dimensions = %s' % str(dimnames))
 *         ncdump.append('    variables = %s' % str(varnames))             # <<<<<<<<<<<<<<
 *         ncdump.append('    groups = %s' % str(grpnames))
 *         return '\n'.join(ncdump)
*/
  __pyx_t_10 = __Pyx_PyObject_Unicode(__pyx_v_varnames); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 7105, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_4 = PyUnicode_Format(__pyx_mstate_global->__pyx_kp_u_variables_s, __pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 7105, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __pyx_t_6 = __Pyx_PyList_Append(__pyx_v_ncdump, __pyx_t_4); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 7105, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "netCDF4/_netCDF4.pyx":7106
 *         ncdump.append('    dimensions = %s' % str(dimnames))
 *         ncdump.append('    variables = %s' % str(varnames))
 *         ncdump.append('    groups = %s' % str(grpnames))             # <<<<<<<<<<<<<<
 *         return '\n'.join(ncdump)
 * 
*/
  __pyx_t_4 = __Pyx_PyObject_Unicode(__pyx_v_grpnames); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 7106, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_10 = PyUnicode_Format(__pyx_mstate_global->__pyx_kp_u_groups_s_2, __pyx_t_4); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 7106, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_6 = __Pyx_PyList_Append(__pyx_v_ncdump, __pyx_t_10); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 7106, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

  /* "netCDF4/_netCDF4.pyx":7107
 *         ncdump.append('    variables = %s' % str(varnames))
 *         ncdump.append('    groups = %s' % str(grpnames))
 *         return '\n'.join(ncdump)             # <<<<<<<<<<<<<<
 * 
 *     def __reduce__(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_10 = PyUnicode_Join(__pyx_mstate_global->__pyx_kp_u__15, __pyx_v_ncdump); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 7107, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_r = __pyx_t_10;
  __pyx_t_10 = 0;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":7092
 *         return all(map(lambda dset: dset.isopen(), self._cdf))
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         ncdump = [repr(type(self)).replace("._netCDF4", "")]
 *         dimnames = tuple(str(dimname) for dimname in self.dimensions.keys())
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("netCDF4._netCDF4.MFDataset.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_ncdump);
  __Pyx_XDECREF(__pyx_v_dimnames);
  __Pyx_XDECREF(__pyx_v_varnames);
  __Pyx_XDECREF(__pyx_v_grpnames);
  __Pyx_XDECREF(__pyx_v_name);
  __Pyx_XDECREF(__pyx_gb_7netCDF4_8_netCDF4_9MFDataset_8__repr___2generator7);
  __Pyx_XDECREF(__pyx_gb_7netCDF4_8_netCDF4_9MFDataset_8__repr___5generator8);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":7109
 *         return '\n'.join(ncdump)
 * 
 *     def __reduce__(self):             # <<<<<<<<<<<<<<
 *         # raise error is user tries to pickle a MFDataset object.
 *         raise NotImplementedError('MFDataset is not picklable')
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9MFDataset_15__reduce__(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_7netCDF4_8_netCDF4_9MFDataset_15__reduce__ = {"__reduce__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_9MFDataset_15__reduce__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9MFDataset_15__reduce__(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
) {
  CYTHON_UNUSED 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("__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_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(0, 7109, __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(0, 7109, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_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(0, 7109, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__reduce__", 1, 1, 1, i); __PYX_ERR(0, 7109, __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(0, 7109, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__reduce__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 7109, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4.MFDataset.__reduce__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_9MFDataset_14__reduce__(__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_7netCDF4_8_netCDF4_9MFDataset_14__reduce__(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED 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("__reduce__", 0);

  /* "netCDF4/_netCDF4.pyx":7111
 *     def __reduce__(self):
 *         # raise error is user tries to pickle a MFDataset object.
 *         raise NotImplementedError('MFDataset is not picklable')             # <<<<<<<<<<<<<<
 * 
 * class _Dimension:
*/
  __pyx_t_2 = NULL;
  __pyx_t_3 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_MFDataset_is_not_picklable};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_NotImplementedError)), __pyx_callargs+__pyx_t_3, (2-__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(0, 7111, __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(0, 7111, __pyx_L1_error)

  /* "netCDF4/_netCDF4.pyx":7109
 *         return '\n'.join(ncdump)
 * 
 *     def __reduce__(self):             # <<<<<<<<<<<<<<
 *         # raise error is user tries to pickle a MFDataset object.
 *         raise NotImplementedError('MFDataset is not picklable')
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("netCDF4._netCDF4.MFDataset.__reduce__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":7114
 * 
 * class _Dimension:
 *     def __init__(self, dimname, dim, dimlens, dimtotlen):             # <<<<<<<<<<<<<<
 *         self.dimlens = dimlens
 *         self.dimtotlen = dimtotlen
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_10_Dimension_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*/
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_10_Dimension_1__init__ = {"__init__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_10_Dimension_1__init__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_10_Dimension_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;
  PyObject *__pyx_v_dimname = 0;
  CYTHON_UNUSED PyObject *__pyx_v_dim = 0;
  PyObject *__pyx_v_dimlens = 0;
  PyObject *__pyx_v_dimtotlen = 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("__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_self,&__pyx_mstate_global->__pyx_n_u_dimname,&__pyx_mstate_global->__pyx_n_u_dim,&__pyx_mstate_global->__pyx_n_u_dimlens,&__pyx_mstate_global->__pyx_n_u_dimtotlen,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 7114, __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(0, 7114, __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(0, 7114, __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(0, 7114, __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(0, 7114, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 7114, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_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(0, 7114, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 5; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, i); __PYX_ERR(0, 7114, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 5)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 7114, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 7114, __pyx_L3_error)
      values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 7114, __pyx_L3_error)
      values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 7114, __pyx_L3_error)
      values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 7114, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
    __pyx_v_dimname = values[1];
    __pyx_v_dim = values[2];
    __pyx_v_dimlens = values[3];
    __pyx_v_dimtotlen = values[4];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, __pyx_nargs); __PYX_ERR(0, 7114, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4._Dimension.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_10_Dimension___init__(__pyx_self, __pyx_v_self, __pyx_v_dimname, __pyx_v_dim, __pyx_v_dimlens, __pyx_v_dimtotlen);

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_10_Dimension___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_dimname, CYTHON_UNUSED PyObject *__pyx_v_dim, PyObject *__pyx_v_dimlens, PyObject *__pyx_v_dimtotlen) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "netCDF4/_netCDF4.pyx":7115
 * class _Dimension:
 *     def __init__(self, dimname, dim, dimlens, dimtotlen):
 *         self.dimlens = dimlens             # <<<<<<<<<<<<<<
 *         self.dimtotlen = dimtotlen
 *         self._name = dimname
*/
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_dimlens, __pyx_v_dimlens) < (0)) __PYX_ERR(0, 7115, __pyx_L1_error)

  /* "netCDF4/_netCDF4.pyx":7116
 *     def __init__(self, dimname, dim, dimlens, dimtotlen):
 *         self.dimlens = dimlens
 *         self.dimtotlen = dimtotlen             # <<<<<<<<<<<<<<
 *         self._name = dimname
 *     def __len__(self):
*/
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_dimtotlen, __pyx_v_dimtotlen) < (0)) __PYX_ERR(0, 7116, __pyx_L1_error)

  /* "netCDF4/_netCDF4.pyx":7117
 *         self.dimlens = dimlens
 *         self.dimtotlen = dimtotlen
 *         self._name = dimname             # <<<<<<<<<<<<<<
 *     def __len__(self):
 *         return self.dimtotlen
*/
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_name_3, __pyx_v_dimname) < (0)) __PYX_ERR(0, 7117, __pyx_L1_error)

  /* "netCDF4/_netCDF4.pyx":7114
 * 
 * class _Dimension:
 *     def __init__(self, dimname, dim, dimlens, dimtotlen):             # <<<<<<<<<<<<<<
 *         self.dimlens = dimlens
 *         self.dimtotlen = dimtotlen
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("netCDF4._netCDF4._Dimension.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":7118
 *         self.dimtotlen = dimtotlen
 *         self._name = dimname
 *     def __len__(self):             # <<<<<<<<<<<<<<
 *         return self.dimtotlen
 *     def isunlimited(self):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_10_Dimension_3__len__(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_7netCDF4_8_netCDF4_10_Dimension_3__len__ = {"__len__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_10_Dimension_3__len__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_10_Dimension_3__len__(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("__len__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 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(0, 7118, __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(0, 7118, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__len__", 0) < (0)) __PYX_ERR(0, 7118, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__len__", 1, 1, 1, i); __PYX_ERR(0, 7118, __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(0, 7118, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__len__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 7118, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4._Dimension.__len__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_10_Dimension_2__len__(__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_7netCDF4_8_netCDF4_10_Dimension_2__len__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__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("__len__", 0);

  /* "netCDF4/_netCDF4.pyx":7119
 *         self._name = dimname
 *     def __len__(self):
 *         return self.dimtotlen             # <<<<<<<<<<<<<<
 *     def isunlimited(self):
 *         return True
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_dimtotlen); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7119, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":7118
 *         self.dimtotlen = dimtotlen
 *         self._name = dimname
 *     def __len__(self):             # <<<<<<<<<<<<<<
 *         return self.dimtotlen
 *     def isunlimited(self):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("netCDF4._netCDF4._Dimension.__len__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":7120
 *     def __len__(self):
 *         return self.dimtotlen
 *     def isunlimited(self):             # <<<<<<<<<<<<<<
 *         return True
 *     def __repr__(self):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_10_Dimension_5isunlimited(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_7netCDF4_8_netCDF4_10_Dimension_5isunlimited = {"isunlimited", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_10_Dimension_5isunlimited, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_10_Dimension_5isunlimited(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
) {
  CYTHON_UNUSED 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("isunlimited (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 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(0, 7120, __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(0, 7120, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "isunlimited", 0) < (0)) __PYX_ERR(0, 7120, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("isunlimited", 1, 1, 1, i); __PYX_ERR(0, 7120, __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(0, 7120, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("isunlimited", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 7120, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4._Dimension.isunlimited", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_10_Dimension_4isunlimited(__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_7netCDF4_8_netCDF4_10_Dimension_4isunlimited(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("isunlimited", 0);

  /* "netCDF4/_netCDF4.pyx":7121
 *         return self.dimtotlen
 *     def isunlimited(self):
 *         return True             # <<<<<<<<<<<<<<
 *     def __repr__(self):
 *         typ = repr(type(self)).replace("._netCDF4", "")
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(Py_True);
  __pyx_r = Py_True;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":7120
 *     def __len__(self):
 *         return self.dimtotlen
 *     def isunlimited(self):             # <<<<<<<<<<<<<<
 *         return True
 *     def __repr__(self):
*/

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

/* "netCDF4/_netCDF4.pyx":7122
 *     def isunlimited(self):
 *         return True
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         typ = repr(type(self)).replace("._netCDF4", "")
 *         if self.isunlimited():
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_10_Dimension_7__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*/
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_10_Dimension_7__repr__ = {"__repr__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_10_Dimension_7__repr__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_10_Dimension_7__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(0, 7122, __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(0, 7122, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_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(0, 7122, __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(0, 7122, __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(0, 7122, __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(0, 7122, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4._Dimension.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_10_Dimension_6__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_7netCDF4_8_netCDF4_10_Dimension_6__repr__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_v_typ = NULL;
  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;
  Py_ssize_t __pyx_t_6;
  PyObject *__pyx_t_7[5];
  PyObject *__pyx_t_8 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__repr__", 0);

  /* "netCDF4/_netCDF4.pyx":7123
 *         return True
 *     def __repr__(self):
 *         typ = repr(type(self)).replace("._netCDF4", "")             # <<<<<<<<<<<<<<
 *         if self.isunlimited():
 *             return "%r (unlimited): name = '%s', size = %s" %\
*/
  __pyx_t_1 = PyObject_Repr(((PyObject *)Py_TYPE(__pyx_v_self))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7123, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (unlikely(__pyx_t_1 == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "replace");
    __PYX_ERR(0, 7123, __pyx_L1_error)
  }
  __pyx_t_2 = PyUnicode_Replace(((PyObject*)__pyx_t_1), __pyx_mstate_global->__pyx_kp_u_netCDF4, __pyx_mstate_global->__pyx_kp_u__4, -1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7123, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_typ = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":7124
 *     def __repr__(self):
 *         typ = repr(type(self)).replace("._netCDF4", "")
 *         if self.isunlimited():             # <<<<<<<<<<<<<<
 *             return "%r (unlimited): name = '%s', size = %s" %\
 *                 (typ, self._name, len(self))
*/
  __pyx_t_1 = __pyx_v_self;
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_1, NULL};
    __pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_isunlimited, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7124, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 7124, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__pyx_t_4) {

    /* "netCDF4/_netCDF4.pyx":7125
 *         typ = repr(type(self)).replace("._netCDF4", "")
 *         if self.isunlimited():
 *             return "%r (unlimited): name = '%s', size = %s" %\             # <<<<<<<<<<<<<<
 *                 (typ, self._name, len(self))
 *         else:
*/
    __Pyx_XDECREF(__pyx_r);

    /* "netCDF4/_netCDF4.pyx":7126
 *         if self.isunlimited():
 *             return "%r (unlimited): name = '%s', size = %s" %\
 *                 (typ, self._name, len(self))             # <<<<<<<<<<<<<<
 *         else:
 *             return "%r: name = '%s', size = %s" %\
*/
    __pyx_t_2 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_typ), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7126, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_name_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7126, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_5 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Str(__pyx_t_1), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7126, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_6 = PyObject_Length(__pyx_v_self); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 7126, __pyx_L1_error)
    __pyx_t_1 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_t_6, 0, ' ', 'd'); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7126, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_7[0] = __pyx_t_2;
    __pyx_t_7[1] = __pyx_mstate_global->__pyx_kp_u_unlimited_name;
    __pyx_t_7[2] = __pyx_t_5;
    __pyx_t_7[3] = __pyx_mstate_global->__pyx_kp_u_size_2;
    __pyx_t_7[4] = __pyx_t_1;

    /* "netCDF4/_netCDF4.pyx":7125
 *         typ = repr(type(self)).replace("._netCDF4", "")
 *         if self.isunlimited():
 *             return "%r (unlimited): name = '%s', size = %s" %\             # <<<<<<<<<<<<<<
 *                 (typ, self._name, len(self))
 *         else:
*/
    __pyx_t_8 = __Pyx_PyUnicode_Join(__pyx_t_7, 5, __Pyx_PyUnicode_GET_LENGTH(__pyx_t_2) + 22 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5) + 10 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_1), 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5));
    if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7125, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_r = __pyx_t_8;
    __pyx_t_8 = 0;
    goto __pyx_L0;

    /* "netCDF4/_netCDF4.pyx":7124
 *     def __repr__(self):
 *         typ = repr(type(self)).replace("._netCDF4", "")
 *         if self.isunlimited():             # <<<<<<<<<<<<<<
 *             return "%r (unlimited): name = '%s', size = %s" %\
 *                 (typ, self._name, len(self))
*/
  }

  /* "netCDF4/_netCDF4.pyx":7128
 *                 (typ, self._name, len(self))
 *         else:
 *             return "%r: name = '%s', size = %s" %\             # <<<<<<<<<<<<<<
 *                 (typ, self._name, len(self))
 * 
*/
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);

    /* "netCDF4/_netCDF4.pyx":7129
 *         else:
 *             return "%r: name = '%s', size = %s" %\
 *                 (typ, self._name, len(self))             # <<<<<<<<<<<<<<
 * 
 * class _Variable:
*/
    __pyx_t_8 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_typ), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7129, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_name_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7129, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_5 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Str(__pyx_t_1), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7129, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_6 = PyObject_Length(__pyx_v_self); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 7129, __pyx_L1_error)
    __pyx_t_1 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_t_6, 0, ' ', 'd'); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7129, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_7[0] = __pyx_t_8;
    __pyx_t_7[1] = __pyx_mstate_global->__pyx_kp_u_name_2;
    __pyx_t_7[2] = __pyx_t_5;
    __pyx_t_7[3] = __pyx_mstate_global->__pyx_kp_u_size_2;
    __pyx_t_7[4] = __pyx_t_1;

    /* "netCDF4/_netCDF4.pyx":7128
 *                 (typ, self._name, len(self))
 *         else:
 *             return "%r: name = '%s', size = %s" %\             # <<<<<<<<<<<<<<
 *                 (typ, self._name, len(self))
 * 
*/
    __pyx_t_2 = __Pyx_PyUnicode_Join(__pyx_t_7, 5, __Pyx_PyUnicode_GET_LENGTH(__pyx_t_8) + 10 * 2 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_1), 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_8) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5));
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7128, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }

  /* "netCDF4/_netCDF4.pyx":7122
 *     def isunlimited(self):
 *         return True
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         typ = repr(type(self)).replace("._netCDF4", "")
 *         if self.isunlimited():
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("netCDF4._netCDF4._Dimension.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_typ);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":7132
 * 
 * class _Variable:
 *     def __init__(self, dset, varname, var, recdimname):             # <<<<<<<<<<<<<<
 *         self.dimensions = var.dimensions
 *         self._dset = dset
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9_Variable_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*/
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_9_Variable_1__init__ = {"__init__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_9_Variable_1__init__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9_Variable_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;
  PyObject *__pyx_v_dset = 0;
  PyObject *__pyx_v_varname = 0;
  PyObject *__pyx_v_var = 0;
  PyObject *__pyx_v_recdimname = 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("__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_self,&__pyx_mstate_global->__pyx_n_u_dset,&__pyx_mstate_global->__pyx_n_u_varname,&__pyx_mstate_global->__pyx_n_u_var,&__pyx_mstate_global->__pyx_n_u_recdimname,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 7132, __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(0, 7132, __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(0, 7132, __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(0, 7132, __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(0, 7132, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 7132, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_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(0, 7132, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 5; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, i); __PYX_ERR(0, 7132, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 5)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 7132, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 7132, __pyx_L3_error)
      values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 7132, __pyx_L3_error)
      values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 7132, __pyx_L3_error)
      values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 7132, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
    __pyx_v_dset = values[1];
    __pyx_v_varname = values[2];
    __pyx_v_var = values[3];
    __pyx_v_recdimname = values[4];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, __pyx_nargs); __PYX_ERR(0, 7132, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4._Variable.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_9_Variable___init__(__pyx_self, __pyx_v_self, __pyx_v_dset, __pyx_v_varname, __pyx_v_var, __pyx_v_recdimname);

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_dset, PyObject *__pyx_v_varname, PyObject *__pyx_v_var, PyObject *__pyx_v_recdimname) {
  PyObject *__pyx_v_name = NULL;
  PyObject *__pyx_v_value = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "netCDF4/_netCDF4.pyx":7133
 * class _Variable:
 *     def __init__(self, dset, varname, var, recdimname):
 *         self.dimensions = var.dimensions             # <<<<<<<<<<<<<<
 *         self._dset = dset
 *         self._grp = dset
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_var, __pyx_mstate_global->__pyx_n_u_dimensions); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7133, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_dimensions, __pyx_t_1) < (0)) __PYX_ERR(0, 7133, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":7134
 *     def __init__(self, dset, varname, var, recdimname):
 *         self.dimensions = var.dimensions
 *         self._dset = dset             # <<<<<<<<<<<<<<
 *         self._grp = dset
 *         self._mastervar = var
*/
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_dset_2, __pyx_v_dset) < (0)) __PYX_ERR(0, 7134, __pyx_L1_error)

  /* "netCDF4/_netCDF4.pyx":7135
 *         self.dimensions = var.dimensions
 *         self._dset = dset
 *         self._grp = dset             # <<<<<<<<<<<<<<
 *         self._mastervar = var
 *         self._recVar = dset._cdfRecVar[varname]
*/
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_grp_2, __pyx_v_dset) < (0)) __PYX_ERR(0, 7135, __pyx_L1_error)

  /* "netCDF4/_netCDF4.pyx":7136
 *         self._dset = dset
 *         self._grp = dset
 *         self._mastervar = var             # <<<<<<<<<<<<<<
 *         self._recVar = dset._cdfRecVar[varname]
 *         self._recdimname = recdimname
*/
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_mastervar, __pyx_v_var) < (0)) __PYX_ERR(0, 7136, __pyx_L1_error)

  /* "netCDF4/_netCDF4.pyx":7137
 *         self._grp = dset
 *         self._mastervar = var
 *         self._recVar = dset._cdfRecVar[varname]             # <<<<<<<<<<<<<<
 *         self._recdimname = recdimname
 *         self._recLen = dset._cdfVLen
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_dset, __pyx_mstate_global->__pyx_n_u_cdfRecVar); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7137, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_v_varname); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7137, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_recVar, __pyx_t_2) < (0)) __PYX_ERR(0, 7137, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":7138
 *         self._mastervar = var
 *         self._recVar = dset._cdfRecVar[varname]
 *         self._recdimname = recdimname             # <<<<<<<<<<<<<<
 *         self._recLen = dset._cdfVLen
 *         self.dtype = var.dtype
*/
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_recdimname_2, __pyx_v_recdimname) < (0)) __PYX_ERR(0, 7138, __pyx_L1_error)

  /* "netCDF4/_netCDF4.pyx":7139
 *         self._recVar = dset._cdfRecVar[varname]
 *         self._recdimname = recdimname
 *         self._recLen = dset._cdfVLen             # <<<<<<<<<<<<<<
 *         self.dtype = var.dtype
 *         self._name = var._name
*/
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_dset, __pyx_mstate_global->__pyx_n_u_cdfVLen); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7139, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_recLen, __pyx_t_2) < (0)) __PYX_ERR(0, 7139, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":7140
 *         self._recdimname = recdimname
 *         self._recLen = dset._cdfVLen
 *         self.dtype = var.dtype             # <<<<<<<<<<<<<<
 *         self._name = var._name
 *         # copy attributes from master.
*/
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_var, __pyx_mstate_global->__pyx_n_u_dtype); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7140, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_dtype, __pyx_t_2) < (0)) __PYX_ERR(0, 7140, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":7141
 *         self._recLen = dset._cdfVLen
 *         self.dtype = var.dtype
 *         self._name = var._name             # <<<<<<<<<<<<<<
 *         # copy attributes from master.
 *         for name, value in var.__dict__.items():
*/
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_var, __pyx_mstate_global->__pyx_n_u_name_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7141, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_name_3, __pyx_t_2) < (0)) __PYX_ERR(0, 7141, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":7143
 *         self._name = var._name
 *         # copy attributes from master.
 *         for name, value in var.__dict__.items():             # <<<<<<<<<<<<<<
 *             self.__dict__[name] = value
 *     def typecode(self):
*/
  __pyx_t_3 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_var, __pyx_mstate_global->__pyx_n_u_dict); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7143, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (unlikely(__pyx_t_1 == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "items");
    __PYX_ERR(0, 7143, __pyx_L1_error)
  }
  __pyx_t_6 = __Pyx_dict_iterator(__pyx_t_1, 0, __pyx_mstate_global->__pyx_n_u_items, (&__pyx_t_4), (&__pyx_t_5)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7143, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_XDECREF(__pyx_t_2);
  __pyx_t_2 = __pyx_t_6;
  __pyx_t_6 = 0;
  while (1) {
    __pyx_t_7 = __Pyx_dict_iter_next(__pyx_t_2, __pyx_t_4, &__pyx_t_3, &__pyx_t_6, &__pyx_t_1, NULL, __pyx_t_5);
    if (unlikely(__pyx_t_7 == 0)) break;
    if (unlikely(__pyx_t_7 == -1)) __PYX_ERR(0, 7143, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_6);
    __pyx_t_6 = 0;
    __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":7144
 *         # copy attributes from master.
 *         for name, value in var.__dict__.items():
 *             self.__dict__[name] = value             # <<<<<<<<<<<<<<
 *     def typecode(self):
 *         return self.dtype
*/
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_dict); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7144, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    if (unlikely((PyObject_SetItem(__pyx_t_1, __pyx_v_name, __pyx_v_value) < 0))) __PYX_ERR(0, 7144, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":7132
 * 
 * class _Variable:
 *     def __init__(self, dset, varname, var, recdimname):             # <<<<<<<<<<<<<<
 *         self.dimensions = var.dimensions
 *         self._dset = dset
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("netCDF4._netCDF4._Variable.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_name);
  __Pyx_XDECREF(__pyx_v_value);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":7145
 *         for name, value in var.__dict__.items():
 *             self.__dict__[name] = value
 *     def typecode(self):             # <<<<<<<<<<<<<<
 *         return self.dtype
 *     def ncattrs(self):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9_Variable_3typecode(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_7netCDF4_8_netCDF4_9_Variable_3typecode = {"typecode", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_9_Variable_3typecode, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9_Variable_3typecode(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("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_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(0, 7145, __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(0, 7145, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_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(0, 7145, __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(0, 7145, __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(0, 7145, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("typecode", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 7145, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4._Variable.typecode", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_9_Variable_2typecode(__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_7netCDF4_8_netCDF4_9_Variable_2typecode(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__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("typecode", 0);

  /* "netCDF4/_netCDF4.pyx":7146
 *             self.__dict__[name] = value
 *     def typecode(self):
 *         return self.dtype             # <<<<<<<<<<<<<<
 *     def ncattrs(self):
 *         return list(self._mastervar.__dict__.keys())
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_dtype); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7146, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":7145
 *         for name, value in var.__dict__.items():
 *             self.__dict__[name] = value
 *     def typecode(self):             # <<<<<<<<<<<<<<
 *         return self.dtype
 *     def ncattrs(self):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("netCDF4._netCDF4._Variable.typecode", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":7147
 *     def typecode(self):
 *         return self.dtype
 *     def ncattrs(self):             # <<<<<<<<<<<<<<
 *         return list(self._mastervar.__dict__.keys())
 *     def __getattr__(self,name):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9_Variable_5ncattrs(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_7netCDF4_8_netCDF4_9_Variable_5ncattrs = {"ncattrs", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_9_Variable_5ncattrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9_Variable_5ncattrs(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("ncattrs (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 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(0, 7147, __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(0, 7147, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "ncattrs", 0) < (0)) __PYX_ERR(0, 7147, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("ncattrs", 1, 1, 1, i); __PYX_ERR(0, 7147, __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(0, 7147, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("ncattrs", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 7147, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4._Variable.ncattrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_9_Variable_4ncattrs(__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_7netCDF4_8_netCDF4_9_Variable_4ncattrs(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 = 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("ncattrs", 0);

  /* "netCDF4/_netCDF4.pyx":7148
 *         return self.dtype
 *     def ncattrs(self):
 *         return list(self._mastervar.__dict__.keys())             # <<<<<<<<<<<<<<
 *     def __getattr__(self,name):
 *         if name == 'shape': return self._shape()
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_mastervar); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7148, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_dict); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 7148, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_2 = __pyx_t_4;
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_5 = 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_5, (1-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7148, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_t_4 = __Pyx_PySequence_ListKeepNew(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 7148, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":7147
 *     def typecode(self):
 *         return self.dtype
 *     def ncattrs(self):             # <<<<<<<<<<<<<<
 *         return list(self._mastervar.__dict__.keys())
 *     def __getattr__(self,name):
*/

  /* 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("netCDF4._netCDF4._Variable.ncattrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":7149
 *     def ncattrs(self):
 *         return list(self._mastervar.__dict__.keys())
 *     def __getattr__(self,name):             # <<<<<<<<<<<<<<
 *         if name == 'shape': return self._shape()
 *         if name == 'ndim': return len(self._shape())
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9_Variable_7__getattr__(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_7netCDF4_8_netCDF4_9_Variable_7__getattr__ = {"__getattr__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_9_Variable_7__getattr__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9_Variable_7__getattr__(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_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("__getattr__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 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,&__pyx_mstate_global->__pyx_n_u_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(0, 7149, __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(0, 7149, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 7149, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__getattr__", 0) < (0)) __PYX_ERR(0, 7149, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__getattr__", 1, 2, 2, i); __PYX_ERR(0, 7149, __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(0, 7149, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 7149, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
    __pyx_v_name = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__getattr__", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 7149, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4._Variable.__getattr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_9_Variable_6__getattr__(__pyx_self, __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_7netCDF4_8_netCDF4_9_Variable_6__getattr__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
  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;
  Py_ssize_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_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__getattr__", 0);

  /* "netCDF4/_netCDF4.pyx":7150
 *         return list(self._mastervar.__dict__.keys())
 *     def __getattr__(self,name):
 *         if name == 'shape': return self._shape()             # <<<<<<<<<<<<<<
 *         if name == 'ndim': return len(self._shape())
 *         if name == 'name':  return self._name
*/
  __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v_name, __pyx_mstate_global->__pyx_n_u_shape, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 7150, __pyx_L1_error)
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __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_shape_2, __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(0, 7150, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }

  /* "netCDF4/_netCDF4.pyx":7151
 *     def __getattr__(self,name):
 *         if name == 'shape': return self._shape()
 *         if name == 'ndim': return len(self._shape())             # <<<<<<<<<<<<<<
 *         if name == 'name':  return self._name
 *         try:
*/
  __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v_name, __pyx_mstate_global->__pyx_n_u_ndim, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 7151, __pyx_L1_error)
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __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_shape_2, __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(0, 7151, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __pyx_t_5 = PyObject_Length(__pyx_t_2); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(0, 7151, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = PyLong_FromSsize_t(__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7151, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }

  /* "netCDF4/_netCDF4.pyx":7152
 *         if name == 'shape': return self._shape()
 *         if name == 'ndim': return len(self._shape())
 *         if name == 'name':  return self._name             # <<<<<<<<<<<<<<
 *         try:
 *             return self.__dict__[name]
*/
  __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v_name, __pyx_mstate_global->__pyx_n_u_name, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 7152, __pyx_L1_error)
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_name_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7152, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }

  /* "netCDF4/_netCDF4.pyx":7153
 *         if name == 'ndim': return len(self._shape())
 *         if name == 'name':  return self._name
 *         try:             # <<<<<<<<<<<<<<
 *             return self.__dict__[name]
 *         except:
*/
  {
    __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:*/ {

      /* "netCDF4/_netCDF4.pyx":7154
 *         if name == 'name':  return self._name
 *         try:
 *             return self.__dict__[name]             # <<<<<<<<<<<<<<
 *         except:
 *             raise AttributeError(name)
*/
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_dict); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7154, __pyx_L6_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_t_2, __pyx_v_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7154, __pyx_L6_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_L10_try_return;

      /* "netCDF4/_netCDF4.pyx":7153
 *         if name == 'ndim': return len(self._shape())
 *         if name == 'name':  return self._name
 *         try:             # <<<<<<<<<<<<<<
 *             return self.__dict__[name]
 *         except:
*/
    }
    __pyx_L6_error:;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "netCDF4/_netCDF4.pyx":7155
 *         try:
 *             return self.__dict__[name]
 *         except:             # <<<<<<<<<<<<<<
 *             raise AttributeError(name)
 *     def __repr__(self):
*/
    /*except:*/ {
      __Pyx_AddTraceback("netCDF4._netCDF4._Variable.__getattr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_2, &__pyx_t_9) < 0) __PYX_ERR(0, 7155, __pyx_L8_except_error)
      __Pyx_XGOTREF(__pyx_t_3);
      __Pyx_XGOTREF(__pyx_t_2);
      __Pyx_XGOTREF(__pyx_t_9);

      /* "netCDF4/_netCDF4.pyx":7156
 *             return self.__dict__[name]
 *         except:
 *             raise AttributeError(name)             # <<<<<<<<<<<<<<
 *     def __repr__(self):
 *         ncdump = [repr(type(self)).replace("._netCDF4", "")]
*/
      __pyx_t_11 = NULL;
      __pyx_t_4 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_v_name};
        __pyx_t_10 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_AttributeError)), __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
        if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 7156, __pyx_L8_except_error)
        __Pyx_GOTREF(__pyx_t_10);
      }
      __Pyx_Raise(__pyx_t_10, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __PYX_ERR(0, 7156, __pyx_L8_except_error)
    }

    /* "netCDF4/_netCDF4.pyx":7153
 *         if name == 'ndim': return len(self._shape())
 *         if name == 'name':  return self._name
 *         try:             # <<<<<<<<<<<<<<
 *             return self.__dict__[name]
 *         except:
*/
    __pyx_L8_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_L10_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_L0;
  }

  /* "netCDF4/_netCDF4.pyx":7149
 *     def ncattrs(self):
 *         return list(self._mastervar.__dict__.keys())
 *     def __getattr__(self,name):             # <<<<<<<<<<<<<<
 *         if name == 'shape': return self._shape()
 *         if name == 'ndim': return len(self._shape())
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("netCDF4._netCDF4._Variable.__getattr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":7157
 *         except:
 *             raise AttributeError(name)
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         ncdump = [repr(type(self)).replace("._netCDF4", "")]
 *         dimnames = tuple(str(dimname) for dimname in self.dimensions)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9_Variable_9__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*/
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_9_Variable_9__repr__ = {"__repr__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_9_Variable_9__repr__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9_Variable_9__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(0, 7157, __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(0, 7157, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_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(0, 7157, __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(0, 7157, __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(0, 7157, __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(0, 7157, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4._Variable.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_9_Variable_8__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_gb_7netCDF4_8_netCDF4_9_Variable_8__repr___2generator9(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "netCDF4/_netCDF4.pyx":7159
 *     def __repr__(self):
 *         ncdump = [repr(type(self)).replace("._netCDF4", "")]
 *         dimnames = tuple(str(dimname) for dimname in self.dimensions)             # <<<<<<<<<<<<<<
 *         ncdump.append('%s %s%s' % (self.dtype, self._name, dimnames))
 *         for name in self.ncattrs():
*/

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_8__repr___genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_13_genexpr *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("genexpr", 0);
  __pyx_cur_scope = (struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_13_genexpr *)__pyx_tp_new_7netCDF4_8_netCDF4___pyx_scope_struct_13_genexpr(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_13_genexpr, __pyx_mstate_global->__pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_13_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(0, 7159, __pyx_L1_error)
  } else {
    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_genexpr_arg_0 = __pyx_genexpr_arg_0;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_genexpr_arg_0);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_genexpr_arg_0);
  {
    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_7netCDF4_8_netCDF4_9_Variable_8__repr___2generator9, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[10]), (PyObject *) __pyx_cur_scope, __pyx_mstate_global->__pyx_n_u_genexpr, __pyx_mstate_global->__pyx_n_u_Variable___repr___locals_genexp, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4); if (unlikely(!gen)) __PYX_ERR(0, 7159, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("netCDF4._netCDF4._Variable.__repr__.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_7netCDF4_8_netCDF4_9_Variable_8__repr___2generator9(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_13_genexpr *__pyx_cur_scope = ((struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_13_genexpr *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  PyObject *(*__pyx_t_3)(PyObject *);
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("genexpr", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    case 1: goto __pyx_L6_resume_from_yield;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(__pyx_sent_value != Py_None)) {
    if (unlikely(__pyx_sent_value)) PyErr_SetString(PyExc_TypeError, "can't send non-None value to a just-started generator");
    __PYX_ERR(0, 7159, __pyx_L1_error)
  }
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(0, 7159, __pyx_L1_error) }
  if (likely(PyList_CheckExact(__pyx_cur_scope->__pyx_genexpr_arg_0)) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_genexpr_arg_0)) {
    __pyx_t_1 = __pyx_cur_scope->__pyx_genexpr_arg_0; __Pyx_INCREF(__pyx_t_1);
    __pyx_t_2 = 0;
    __pyx_t_3 = NULL;
  } else {
    __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_cur_scope->__pyx_genexpr_arg_0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7159, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7159, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 7159, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) break;
        }
        __pyx_t_4 = __Pyx_PyList_GetItemRefFast(__pyx_t_1, __pyx_t_2, __Pyx_ReferenceSharing_OwnStrongReference);
        ++__pyx_t_2;
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 7159, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2));
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2);
        #endif
        ++__pyx_t_2;
      }
      if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 7159, __pyx_L1_error)
    } else {
      __pyx_t_4 = __pyx_t_3(__pyx_t_1);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 7159, __pyx_L1_error)
          PyErr_Clear();
        }
        break;
      }
    }
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_dimname);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_dimname, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_PyObject_Unicode(__pyx_cur_scope->__pyx_v_dimname); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 7159, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    __Pyx_XGIVEREF(__pyx_t_1);
    __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
    __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
    __pyx_cur_scope->__pyx_t_2 = __pyx_t_3;
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
    /* return from generator, yielding value */
    __pyx_generator->resume_label = 1;
    return __pyx_r;
    __pyx_L6_resume_from_yield:;
    __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
    __pyx_cur_scope->__pyx_t_0 = 0;
    __Pyx_XGOTREF(__pyx_t_1);
    __pyx_t_2 = __pyx_cur_scope->__pyx_t_1;
    __pyx_t_3 = __pyx_cur_scope->__pyx_t_2;
    if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 7159, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);

  /* 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_4);
  if (__Pyx_PyErr_Occurred()) {
    __Pyx_Generator_Replace_StopIteration(0);
    __Pyx_AddTraceback("genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  }
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  #if !CYTHON_USE_EXC_INFO_STACK
  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
  #endif
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":7157
 *         except:
 *             raise AttributeError(name)
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         ncdump = [repr(type(self)).replace("._netCDF4", "")]
 *         dimnames = tuple(str(dimname) for dimname in self.dimensions)
*/

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_8__repr__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_v_ncdump = NULL;
  PyObject *__pyx_v_dimnames = NULL;
  PyObject *__pyx_v_name = NULL;
  PyObject *__pyx_v_unlimdims = NULL;
  PyObject *__pyx_v_dimname = NULL;
  PyObject *__pyx_v_dim = NULL;
  PyObject *__pyx_gb_7netCDF4_8_netCDF4_9_Variable_8__repr___2generator9 = 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[4];
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  size_t __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  PyObject *(*__pyx_t_9)(PyObject *);
  PyObject *__pyx_t_10 = NULL;
  int __pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__repr__", 0);

  /* "netCDF4/_netCDF4.pyx":7158
 *             raise AttributeError(name)
 *     def __repr__(self):
 *         ncdump = [repr(type(self)).replace("._netCDF4", "")]             # <<<<<<<<<<<<<<
 *         dimnames = tuple(str(dimname) for dimname in self.dimensions)
 *         ncdump.append('%s %s%s' % (self.dtype, self._name, dimnames))
*/
  __pyx_t_1 = PyObject_Repr(((PyObject *)Py_TYPE(__pyx_v_self))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7158, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (unlikely(__pyx_t_1 == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "replace");
    __PYX_ERR(0, 7158, __pyx_L1_error)
  }
  __pyx_t_2 = PyUnicode_Replace(((PyObject*)__pyx_t_1), __pyx_mstate_global->__pyx_kp_u_netCDF4, __pyx_mstate_global->__pyx_kp_u__4, -1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7158, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7158, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_2);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, __pyx_t_2) != (0)) __PYX_ERR(0, 7158, __pyx_L1_error);
  __pyx_t_2 = 0;
  __pyx_v_ncdump = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":7159
 *     def __repr__(self):
 *         ncdump = [repr(type(self)).replace("._netCDF4", "")]
 *         dimnames = tuple(str(dimname) for dimname in self.dimensions)             # <<<<<<<<<<<<<<
 *         ncdump.append('%s %s%s' % (self.dtype, self._name, dimnames))
 *         for name in self.ncattrs():
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_dimensions); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7159, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_pf_7netCDF4_8_netCDF4_9_Variable_8__repr___genexpr(NULL, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7159, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PySequence_Tuple(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7159, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_dimnames = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":7160
 *         ncdump = [repr(type(self)).replace("._netCDF4", "")]
 *         dimnames = tuple(str(dimname) for dimname in self.dimensions)
 *         ncdump.append('%s %s%s' % (self.dtype, self._name, dimnames))             # <<<<<<<<<<<<<<
 *         for name in self.ncattrs():
 *             ncdump.append('    %s: %s' % (name, self.__dict__[name]))
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_dtype); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7160, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Str(__pyx_t_1), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7160, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_name_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7160, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Str(__pyx_t_1), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7160, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Str(__pyx_v_dimnames), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7160, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4[0] = __pyx_t_2;
  __pyx_t_4[1] = __pyx_mstate_global->__pyx_kp_u__8;
  __pyx_t_4[2] = __pyx_t_3;
  __pyx_t_4[3] = __pyx_t_1;
  __pyx_t_5 = __Pyx_PyUnicode_Join(__pyx_t_4, 4, __Pyx_PyUnicode_GET_LENGTH(__pyx_t_2) + 1 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_1), 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1));
  if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7160, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_6 = __Pyx_PyList_Append(__pyx_v_ncdump, __pyx_t_5); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 7160, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "netCDF4/_netCDF4.pyx":7161
 *         dimnames = tuple(str(dimname) for dimname in self.dimensions)
 *         ncdump.append('%s %s%s' % (self.dtype, self._name, dimnames))
 *         for name in self.ncattrs():             # <<<<<<<<<<<<<<
 *             ncdump.append('    %s: %s' % (name, self.__dict__[name]))
 *         unlimdims = []
*/
  __pyx_t_1 = __pyx_v_self;
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_7 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_1, NULL};
    __pyx_t_5 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_ncattrs, __pyx_callargs+__pyx_t_7, (1-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7161, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
  }
  if (likely(PyList_CheckExact(__pyx_t_5)) || PyTuple_CheckExact(__pyx_t_5)) {
    __pyx_t_1 = __pyx_t_5; __Pyx_INCREF(__pyx_t_1);
    __pyx_t_8 = 0;
    __pyx_t_9 = NULL;
  } else {
    __pyx_t_8 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7161, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_9 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 7161, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  for (;;) {
    if (likely(!__pyx_t_9)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 7161, __pyx_L1_error)
          #endif
          if (__pyx_t_8 >= __pyx_temp) break;
        }
        __pyx_t_5 = __Pyx_PyList_GetItemRefFast(__pyx_t_1, __pyx_t_8, __Pyx_ReferenceSharing_OwnStrongReference);
        ++__pyx_t_8;
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 7161, __pyx_L1_error)
          #endif
          if (__pyx_t_8 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_8));
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_8);
        #endif
        ++__pyx_t_8;
      }
      if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7161, __pyx_L1_error)
    } else {
      __pyx_t_5 = __pyx_t_9(__pyx_t_1);
      if (unlikely(!__pyx_t_5)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 7161, __pyx_L1_error)
          PyErr_Clear();
        }
        break;
      }
    }
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "netCDF4/_netCDF4.pyx":7162
 *         ncdump.append('%s %s%s' % (self.dtype, self._name, dimnames))
 *         for name in self.ncattrs():
 *             ncdump.append('    %s: %s' % (name, self.__dict__[name]))             # <<<<<<<<<<<<<<
 *         unlimdims = []
 *         for dimname in self.dimensions:
*/
    __pyx_t_5 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Str(__pyx_v_name), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7162, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_dict); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7162, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_2 = __Pyx_PyObject_GetItem(__pyx_t_3, __pyx_v_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7162, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Str(__pyx_t_2), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7162, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_4[0] = __pyx_mstate_global->__pyx_kp_u__13;
    __pyx_t_4[1] = __pyx_t_5;
    __pyx_t_4[2] = __pyx_mstate_global->__pyx_kp_u__7;
    __pyx_t_4[3] = __pyx_t_3;
    __pyx_t_2 = __Pyx_PyUnicode_Join(__pyx_t_4, 4, 4 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5) + 2 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3), 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3));
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7162, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_6 = __Pyx_PyList_Append(__pyx_v_ncdump, __pyx_t_2); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 7162, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "netCDF4/_netCDF4.pyx":7161
 *         dimnames = tuple(str(dimname) for dimname in self.dimensions)
 *         ncdump.append('%s %s%s' % (self.dtype, self._name, dimnames))
 *         for name in self.ncattrs():             # <<<<<<<<<<<<<<
 *             ncdump.append('    %s: %s' % (name, self.__dict__[name]))
 *         unlimdims = []
*/
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":7163
 *         for name in self.ncattrs():
 *             ncdump.append('    %s: %s' % (name, self.__dict__[name]))
 *         unlimdims = []             # <<<<<<<<<<<<<<
 *         for dimname in self.dimensions:
 *             dim = _find_dim(self._grp, dimname)
*/
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7163, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_unlimdims = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":7164
 *             ncdump.append('    %s: %s' % (name, self.__dict__[name]))
 *         unlimdims = []
 *         for dimname in self.dimensions:             # <<<<<<<<<<<<<<
 *             dim = _find_dim(self._grp, dimname)
 *             if dim.isunlimited():
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_dimensions); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7164, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
    __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2);
    __pyx_t_8 = 0;
    __pyx_t_9 = NULL;
  } else {
    __pyx_t_8 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7164, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_9 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 7164, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  for (;;) {
    if (likely(!__pyx_t_9)) {
      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(0, 7164, __pyx_L1_error)
          #endif
          if (__pyx_t_8 >= __pyx_temp) break;
        }
        __pyx_t_1 = __Pyx_PyList_GetItemRefFast(__pyx_t_2, __pyx_t_8, __Pyx_ReferenceSharing_OwnStrongReference);
        ++__pyx_t_8;
      } 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(0, 7164, __pyx_L1_error)
          #endif
          if (__pyx_t_8 >= __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_8));
        #else
        __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_8);
        #endif
        ++__pyx_t_8;
      }
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7164, __pyx_L1_error)
    } else {
      __pyx_t_1 = __pyx_t_9(__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(0, 7164, __pyx_L1_error)
          PyErr_Clear();
        }
        break;
      }
    }
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_XDECREF_SET(__pyx_v_dimname, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":7165
 *         unlimdims = []
 *         for dimname in self.dimensions:
 *             dim = _find_dim(self._grp, dimname)             # <<<<<<<<<<<<<<
 *             if dim.isunlimited():
 *                 unlimdims.append(str(dimname))
*/
    __pyx_t_3 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_find_dim); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7165, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_grp_2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 7165, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_t_7 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
      assert(__pyx_t_3);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
      __pyx_t_7 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_t_10, __pyx_v_dimname};
      __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_7, (3-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7165, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_XDECREF_SET(__pyx_v_dim, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":7166
 *         for dimname in self.dimensions:
 *             dim = _find_dim(self._grp, dimname)
 *             if dim.isunlimited():             # <<<<<<<<<<<<<<
 *                 unlimdims.append(str(dimname))
 *         ncdump.append('unlimited dimensions = %r' % (tuple(unlimdims),))
*/
    __pyx_t_5 = __pyx_v_dim;
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_7 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
      __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_isunlimited, __pyx_callargs+__pyx_t_7, (1-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7166, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_11 < 0))) __PYX_ERR(0, 7166, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (__pyx_t_11) {

      /* "netCDF4/_netCDF4.pyx":7167
 *             dim = _find_dim(self._grp, dimname)
 *             if dim.isunlimited():
 *                 unlimdims.append(str(dimname))             # <<<<<<<<<<<<<<
 *         ncdump.append('unlimited dimensions = %r' % (tuple(unlimdims),))
 *         ncdump.append('current size = %r' % (self.shape,))
*/
      __pyx_t_1 = __Pyx_PyObject_Unicode(__pyx_v_dimname); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7167, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_6 = __Pyx_PyList_Append(__pyx_v_unlimdims, __pyx_t_1); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 7167, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

      /* "netCDF4/_netCDF4.pyx":7166
 *         for dimname in self.dimensions:
 *             dim = _find_dim(self._grp, dimname)
 *             if dim.isunlimited():             # <<<<<<<<<<<<<<
 *                 unlimdims.append(str(dimname))
 *         ncdump.append('unlimited dimensions = %r' % (tuple(unlimdims),))
*/
    }

    /* "netCDF4/_netCDF4.pyx":7164
 *             ncdump.append('    %s: %s' % (name, self.__dict__[name]))
 *         unlimdims = []
 *         for dimname in self.dimensions:             # <<<<<<<<<<<<<<
 *             dim = _find_dim(self._grp, dimname)
 *             if dim.isunlimited():
*/
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":7168
 *             if dim.isunlimited():
 *                 unlimdims.append(str(dimname))
 *         ncdump.append('unlimited dimensions = %r' % (tuple(unlimdims),))             # <<<<<<<<<<<<<<
 *         ncdump.append('current size = %r' % (self.shape,))
 *         return '\n'.join(ncdump)
*/
  __pyx_t_2 = PyList_AsTuple(__pyx_v_unlimdims); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7168, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_t_2), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7168, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_unlimited_dimensions, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7168, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_6 = __Pyx_PyList_Append(__pyx_v_ncdump, __pyx_t_2); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 7168, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":7169
 *                 unlimdims.append(str(dimname))
 *         ncdump.append('unlimited dimensions = %r' % (tuple(unlimdims),))
 *         ncdump.append('current size = %r' % (self.shape,))             # <<<<<<<<<<<<<<
 *         return '\n'.join(ncdump)
 *     def __len__(self):
*/
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_shape); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7169, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_t_2), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7169, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_current_size, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7169, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_6 = __Pyx_PyList_Append(__pyx_v_ncdump, __pyx_t_2); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 7169, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":7170
 *         ncdump.append('unlimited dimensions = %r' % (tuple(unlimdims),))
 *         ncdump.append('current size = %r' % (self.shape,))
 *         return '\n'.join(ncdump)             # <<<<<<<<<<<<<<
 *     def __len__(self):
 *         if not self._shape:
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyUnicode_Join(__pyx_mstate_global->__pyx_kp_u__15, __pyx_v_ncdump); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7170, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":7157
 *         except:
 *             raise AttributeError(name)
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         ncdump = [repr(type(self)).replace("._netCDF4", "")]
 *         dimnames = tuple(str(dimname) for dimname in self.dimensions)
*/

  /* 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_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("netCDF4._netCDF4._Variable.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_ncdump);
  __Pyx_XDECREF(__pyx_v_dimnames);
  __Pyx_XDECREF(__pyx_v_name);
  __Pyx_XDECREF(__pyx_v_unlimdims);
  __Pyx_XDECREF(__pyx_v_dimname);
  __Pyx_XDECREF(__pyx_v_dim);
  __Pyx_XDECREF(__pyx_gb_7netCDF4_8_netCDF4_9_Variable_8__repr___2generator9);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":7171
 *         ncdump.append('current size = %r' % (self.shape,))
 *         return '\n'.join(ncdump)
 *     def __len__(self):             # <<<<<<<<<<<<<<
 *         if not self._shape:
 *             raise TypeError('len() of unsized object')
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9_Variable_11__len__(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_7netCDF4_8_netCDF4_9_Variable_11__len__ = {"__len__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_9_Variable_11__len__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9_Variable_11__len__(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("__len__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 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(0, 7171, __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(0, 7171, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__len__", 0) < (0)) __PYX_ERR(0, 7171, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__len__", 1, 1, 1, i); __PYX_ERR(0, 7171, __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(0, 7171, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__len__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 7171, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4._Variable.__len__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_9_Variable_10__len__(__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_7netCDF4_8_netCDF4_9_Variable_10__len__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  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("__len__", 0);

  /* "netCDF4/_netCDF4.pyx":7172
 *         return '\n'.join(ncdump)
 *     def __len__(self):
 *         if not self._shape:             # <<<<<<<<<<<<<<
 *             raise TypeError('len() of unsized object')
 *         else:
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_shape_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7172, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 7172, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = (!__pyx_t_2);
  if (unlikely(__pyx_t_3)) {

    /* "netCDF4/_netCDF4.pyx":7173
 *     def __len__(self):
 *         if not self._shape:
 *             raise TypeError('len() of unsized object')             # <<<<<<<<<<<<<<
 *         else:
 *             return self._shape()[0]
*/
    __pyx_t_4 = NULL;
    __pyx_t_5 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_len_of_unsized_object};
      __pyx_t_1 = __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_1)) __PYX_ERR(0, 7173, __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(0, 7173, __pyx_L1_error)

    /* "netCDF4/_netCDF4.pyx":7172
 *         return '\n'.join(ncdump)
 *     def __len__(self):
 *         if not self._shape:             # <<<<<<<<<<<<<<
 *             raise TypeError('len() of unsized object')
 *         else:
*/
  }

  /* "netCDF4/_netCDF4.pyx":7175
 *             raise TypeError('len() of unsized object')
 *         else:
 *             return self._shape()[0]             # <<<<<<<<<<<<<<
 *     def _shape(self):
 *         recdimlen = len(self._dset.dimensions[self._recdimname])
*/
  /*else*/ {
    __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_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_shape_2, __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_1)) __PYX_ERR(0, 7175, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 7175, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;
  }

  /* "netCDF4/_netCDF4.pyx":7171
 *         ncdump.append('current size = %r' % (self.shape,))
 *         return '\n'.join(ncdump)
 *     def __len__(self):             # <<<<<<<<<<<<<<
 *         if not self._shape:
 *             raise TypeError('len() of unsized object')
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("netCDF4._netCDF4._Variable.__len__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":7176
 *         else:
 *             return self._shape()[0]
 *     def _shape(self):             # <<<<<<<<<<<<<<
 *         recdimlen = len(self._dset.dimensions[self._recdimname])
 *         return (recdimlen,) + self._mastervar.shape[1:]
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9_Variable_13_shape(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_7netCDF4_8_netCDF4_9_Variable_13_shape = {"_shape", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_9_Variable_13_shape, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9_Variable_13_shape(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("_shape (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 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(0, 7176, __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(0, 7176, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "_shape", 0) < (0)) __PYX_ERR(0, 7176, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("_shape", 1, 1, 1, i); __PYX_ERR(0, 7176, __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(0, 7176, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_shape", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 7176, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4._Variable._shape", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_9_Variable_12_shape(__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_7netCDF4_8_netCDF4_9_Variable_12_shape(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  Py_ssize_t __pyx_v_recdimlen;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  Py_ssize_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_shape", 0);

  /* "netCDF4/_netCDF4.pyx":7177
 *             return self._shape()[0]
 *     def _shape(self):
 *         recdimlen = len(self._dset.dimensions[self._recdimname])             # <<<<<<<<<<<<<<
 *         return (recdimlen,) + self._mastervar.shape[1:]
 *     def set_auto_chartostring(self,val):
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_dset_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7177, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_dimensions); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7177, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_recdimname_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7177, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7177, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_4 = PyObject_Length(__pyx_t_3); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 7177, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_recdimlen = __pyx_t_4;

  /* "netCDF4/_netCDF4.pyx":7178
 *     def _shape(self):
 *         recdimlen = len(self._dset.dimensions[self._recdimname])
 *         return (recdimlen,) + self._mastervar.shape[1:]             # <<<<<<<<<<<<<<
 *     def set_auto_chartostring(self,val):
 *         for v in self._recVar:
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = PyLong_FromSsize_t(__pyx_v_recdimlen); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7178, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7178, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_3) != (0)) __PYX_ERR(0, 7178, __pyx_L1_error);
  __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_mastervar); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7178, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_shape); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7178, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_t_2, 1, 0, NULL, NULL, &__pyx_mstate_global->__pyx_slice[0], 1, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7178, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyNumber_Add(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7178, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":7176
 *         else:
 *             return self._shape()[0]
 *     def _shape(self):             # <<<<<<<<<<<<<<
 *         recdimlen = len(self._dset.dimensions[self._recdimname])
 *         return (recdimlen,) + self._mastervar.shape[1:]
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("netCDF4._netCDF4._Variable._shape", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":7179
 *         recdimlen = len(self._dset.dimensions[self._recdimname])
 *         return (recdimlen,) + self._mastervar.shape[1:]
 *     def set_auto_chartostring(self,val):             # <<<<<<<<<<<<<<
 *         for v in self._recVar:
 *             v.set_auto_chartostring(val)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9_Variable_15set_auto_chartostring(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_7netCDF4_8_netCDF4_9_Variable_15set_auto_chartostring = {"set_auto_chartostring", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_9_Variable_15set_auto_chartostring, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9_Variable_15set_auto_chartostring(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_val = 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_auto_chartostring (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 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,&__pyx_mstate_global->__pyx_n_u_val,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 7179, __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(0, 7179, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 7179, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_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_auto_chartostring", 0) < (0)) __PYX_ERR(0, 7179, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("set_auto_chartostring", 1, 2, 2, i); __PYX_ERR(0, 7179, __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(0, 7179, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 7179, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
    __pyx_v_val = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("set_auto_chartostring", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 7179, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4._Variable.set_auto_chartostring", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_9_Variable_14set_auto_chartostring(__pyx_self, __pyx_v_self, __pyx_v_val);

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_14set_auto_chartostring(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_val) {
  PyObject *__pyx_v_v = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  PyObject *(*__pyx_t_4)(PyObject *);
  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("set_auto_chartostring", 0);

  /* "netCDF4/_netCDF4.pyx":7180
 *         return (recdimlen,) + self._mastervar.shape[1:]
 *     def set_auto_chartostring(self,val):
 *         for v in self._recVar:             # <<<<<<<<<<<<<<
 *             v.set_auto_chartostring(val)
 *     def set_auto_maskandscale(self,val):
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_recVar); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7180, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
    __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2);
    __pyx_t_3 = 0;
    __pyx_t_4 = NULL;
  } else {
    __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7180, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 7180, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  for (;;) {
    if (likely(!__pyx_t_4)) {
      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(0, 7180, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        __pyx_t_1 = __Pyx_PyList_GetItemRefFast(__pyx_t_2, __pyx_t_3, __Pyx_ReferenceSharing_OwnStrongReference);
        ++__pyx_t_3;
      } 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(0, 7180, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __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_3));
        #else
        __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3);
        #endif
        ++__pyx_t_3;
      }
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7180, __pyx_L1_error)
    } else {
      __pyx_t_1 = __pyx_t_4(__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(0, 7180, __pyx_L1_error)
          PyErr_Clear();
        }
        break;
      }
    }
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_XDECREF_SET(__pyx_v_v, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":7181
 *     def set_auto_chartostring(self,val):
 *         for v in self._recVar:
 *             v.set_auto_chartostring(val)             # <<<<<<<<<<<<<<
 *     def set_auto_maskandscale(self,val):
 *         for v in self._recVar:
*/
    __pyx_t_5 = __pyx_v_v;
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_6 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_val};
      __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_set_auto_chartostring, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7181, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":7180
 *         return (recdimlen,) + self._mastervar.shape[1:]
 *     def set_auto_chartostring(self,val):
 *         for v in self._recVar:             # <<<<<<<<<<<<<<
 *             v.set_auto_chartostring(val)
 *     def set_auto_maskandscale(self,val):
*/
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":7179
 *         recdimlen = len(self._dset.dimensions[self._recdimname])
 *         return (recdimlen,) + self._mastervar.shape[1:]
 *     def set_auto_chartostring(self,val):             # <<<<<<<<<<<<<<
 *         for v in self._recVar:
 *             v.set_auto_chartostring(val)
*/

  /* 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_5);
  __Pyx_AddTraceback("netCDF4._netCDF4._Variable.set_auto_chartostring", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_v);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":7182
 *         for v in self._recVar:
 *             v.set_auto_chartostring(val)
 *     def set_auto_maskandscale(self,val):             # <<<<<<<<<<<<<<
 *         for v in self._recVar:
 *             v.set_auto_maskandscale(val)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9_Variable_17set_auto_maskandscale(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_7netCDF4_8_netCDF4_9_Variable_17set_auto_maskandscale = {"set_auto_maskandscale", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_9_Variable_17set_auto_maskandscale, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9_Variable_17set_auto_maskandscale(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_val = 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_auto_maskandscale (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 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,&__pyx_mstate_global->__pyx_n_u_val,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 7182, __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(0, 7182, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 7182, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_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_auto_maskandscale", 0) < (0)) __PYX_ERR(0, 7182, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("set_auto_maskandscale", 1, 2, 2, i); __PYX_ERR(0, 7182, __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(0, 7182, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 7182, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
    __pyx_v_val = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("set_auto_maskandscale", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 7182, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4._Variable.set_auto_maskandscale", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_9_Variable_16set_auto_maskandscale(__pyx_self, __pyx_v_self, __pyx_v_val);

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16set_auto_maskandscale(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_val) {
  PyObject *__pyx_v_v = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  PyObject *(*__pyx_t_4)(PyObject *);
  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("set_auto_maskandscale", 0);

  /* "netCDF4/_netCDF4.pyx":7183
 *             v.set_auto_chartostring(val)
 *     def set_auto_maskandscale(self,val):
 *         for v in self._recVar:             # <<<<<<<<<<<<<<
 *             v.set_auto_maskandscale(val)
 *     def set_auto_mask(self,val):
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_recVar); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7183, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
    __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2);
    __pyx_t_3 = 0;
    __pyx_t_4 = NULL;
  } else {
    __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7183, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 7183, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  for (;;) {
    if (likely(!__pyx_t_4)) {
      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(0, 7183, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        __pyx_t_1 = __Pyx_PyList_GetItemRefFast(__pyx_t_2, __pyx_t_3, __Pyx_ReferenceSharing_OwnStrongReference);
        ++__pyx_t_3;
      } 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(0, 7183, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __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_3));
        #else
        __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3);
        #endif
        ++__pyx_t_3;
      }
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7183, __pyx_L1_error)
    } else {
      __pyx_t_1 = __pyx_t_4(__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(0, 7183, __pyx_L1_error)
          PyErr_Clear();
        }
        break;
      }
    }
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_XDECREF_SET(__pyx_v_v, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":7184
 *     def set_auto_maskandscale(self,val):
 *         for v in self._recVar:
 *             v.set_auto_maskandscale(val)             # <<<<<<<<<<<<<<
 *     def set_auto_mask(self,val):
 *         for v in self._recVar:
*/
    __pyx_t_5 = __pyx_v_v;
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_6 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_val};
      __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_set_auto_maskandscale, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7184, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":7183
 *             v.set_auto_chartostring(val)
 *     def set_auto_maskandscale(self,val):
 *         for v in self._recVar:             # <<<<<<<<<<<<<<
 *             v.set_auto_maskandscale(val)
 *     def set_auto_mask(self,val):
*/
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":7182
 *         for v in self._recVar:
 *             v.set_auto_chartostring(val)
 *     def set_auto_maskandscale(self,val):             # <<<<<<<<<<<<<<
 *         for v in self._recVar:
 *             v.set_auto_maskandscale(val)
*/

  /* 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_5);
  __Pyx_AddTraceback("netCDF4._netCDF4._Variable.set_auto_maskandscale", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_v);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":7185
 *         for v in self._recVar:
 *             v.set_auto_maskandscale(val)
 *     def set_auto_mask(self,val):             # <<<<<<<<<<<<<<
 *         for v in self._recVar:
 *             v.set_auto_mask(val)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9_Variable_19set_auto_mask(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_7netCDF4_8_netCDF4_9_Variable_19set_auto_mask = {"set_auto_mask", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_9_Variable_19set_auto_mask, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9_Variable_19set_auto_mask(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_val = 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_auto_mask (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 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,&__pyx_mstate_global->__pyx_n_u_val,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 7185, __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(0, 7185, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 7185, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_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_auto_mask", 0) < (0)) __PYX_ERR(0, 7185, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("set_auto_mask", 1, 2, 2, i); __PYX_ERR(0, 7185, __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(0, 7185, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 7185, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
    __pyx_v_val = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("set_auto_mask", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 7185, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4._Variable.set_auto_mask", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_9_Variable_18set_auto_mask(__pyx_self, __pyx_v_self, __pyx_v_val);

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_18set_auto_mask(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_val) {
  PyObject *__pyx_v_v = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  PyObject *(*__pyx_t_4)(PyObject *);
  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("set_auto_mask", 0);

  /* "netCDF4/_netCDF4.pyx":7186
 *             v.set_auto_maskandscale(val)
 *     def set_auto_mask(self,val):
 *         for v in self._recVar:             # <<<<<<<<<<<<<<
 *             v.set_auto_mask(val)
 *     def set_auto_scale(self,val):
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_recVar); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7186, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
    __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2);
    __pyx_t_3 = 0;
    __pyx_t_4 = NULL;
  } else {
    __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7186, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 7186, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  for (;;) {
    if (likely(!__pyx_t_4)) {
      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(0, 7186, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        __pyx_t_1 = __Pyx_PyList_GetItemRefFast(__pyx_t_2, __pyx_t_3, __Pyx_ReferenceSharing_OwnStrongReference);
        ++__pyx_t_3;
      } 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(0, 7186, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __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_3));
        #else
        __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3);
        #endif
        ++__pyx_t_3;
      }
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7186, __pyx_L1_error)
    } else {
      __pyx_t_1 = __pyx_t_4(__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(0, 7186, __pyx_L1_error)
          PyErr_Clear();
        }
        break;
      }
    }
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_XDECREF_SET(__pyx_v_v, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":7187
 *     def set_auto_mask(self,val):
 *         for v in self._recVar:
 *             v.set_auto_mask(val)             # <<<<<<<<<<<<<<
 *     def set_auto_scale(self,val):
 *         for v in self._recVar:
*/
    __pyx_t_5 = __pyx_v_v;
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_6 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_val};
      __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_set_auto_mask, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7187, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":7186
 *             v.set_auto_maskandscale(val)
 *     def set_auto_mask(self,val):
 *         for v in self._recVar:             # <<<<<<<<<<<<<<
 *             v.set_auto_mask(val)
 *     def set_auto_scale(self,val):
*/
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":7185
 *         for v in self._recVar:
 *             v.set_auto_maskandscale(val)
 *     def set_auto_mask(self,val):             # <<<<<<<<<<<<<<
 *         for v in self._recVar:
 *             v.set_auto_mask(val)
*/

  /* 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_5);
  __Pyx_AddTraceback("netCDF4._netCDF4._Variable.set_auto_mask", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_v);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":7188
 *         for v in self._recVar:
 *             v.set_auto_mask(val)
 *     def set_auto_scale(self,val):             # <<<<<<<<<<<<<<
 *         for v in self._recVar:
 *             v.set_auto_scale(val)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9_Variable_21set_auto_scale(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_7netCDF4_8_netCDF4_9_Variable_21set_auto_scale = {"set_auto_scale", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_9_Variable_21set_auto_scale, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9_Variable_21set_auto_scale(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_val = 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_auto_scale (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 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,&__pyx_mstate_global->__pyx_n_u_val,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 7188, __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(0, 7188, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 7188, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_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_auto_scale", 0) < (0)) __PYX_ERR(0, 7188, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("set_auto_scale", 1, 2, 2, i); __PYX_ERR(0, 7188, __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(0, 7188, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 7188, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
    __pyx_v_val = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("set_auto_scale", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 7188, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4._Variable.set_auto_scale", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_9_Variable_20set_auto_scale(__pyx_self, __pyx_v_self, __pyx_v_val);

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_20set_auto_scale(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_val) {
  PyObject *__pyx_v_v = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  PyObject *(*__pyx_t_4)(PyObject *);
  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("set_auto_scale", 0);

  /* "netCDF4/_netCDF4.pyx":7189
 *             v.set_auto_mask(val)
 *     def set_auto_scale(self,val):
 *         for v in self._recVar:             # <<<<<<<<<<<<<<
 *             v.set_auto_scale(val)
 *     def set_always_mask(self,val):
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_recVar); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7189, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
    __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2);
    __pyx_t_3 = 0;
    __pyx_t_4 = NULL;
  } else {
    __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7189, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 7189, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  for (;;) {
    if (likely(!__pyx_t_4)) {
      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(0, 7189, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        __pyx_t_1 = __Pyx_PyList_GetItemRefFast(__pyx_t_2, __pyx_t_3, __Pyx_ReferenceSharing_OwnStrongReference);
        ++__pyx_t_3;
      } 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(0, 7189, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __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_3));
        #else
        __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3);
        #endif
        ++__pyx_t_3;
      }
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7189, __pyx_L1_error)
    } else {
      __pyx_t_1 = __pyx_t_4(__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(0, 7189, __pyx_L1_error)
          PyErr_Clear();
        }
        break;
      }
    }
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_XDECREF_SET(__pyx_v_v, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":7190
 *     def set_auto_scale(self,val):
 *         for v in self._recVar:
 *             v.set_auto_scale(val)             # <<<<<<<<<<<<<<
 *     def set_always_mask(self,val):
 *         for v in self._recVar:
*/
    __pyx_t_5 = __pyx_v_v;
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_6 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_val};
      __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_set_auto_scale, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7190, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":7189
 *             v.set_auto_mask(val)
 *     def set_auto_scale(self,val):
 *         for v in self._recVar:             # <<<<<<<<<<<<<<
 *             v.set_auto_scale(val)
 *     def set_always_mask(self,val):
*/
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":7188
 *         for v in self._recVar:
 *             v.set_auto_mask(val)
 *     def set_auto_scale(self,val):             # <<<<<<<<<<<<<<
 *         for v in self._recVar:
 *             v.set_auto_scale(val)
*/

  /* 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_5);
  __Pyx_AddTraceback("netCDF4._netCDF4._Variable.set_auto_scale", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_v);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":7191
 *         for v in self._recVar:
 *             v.set_auto_scale(val)
 *     def set_always_mask(self,val):             # <<<<<<<<<<<<<<
 *         for v in self._recVar:
 *             v.set_always_mask(val)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9_Variable_23set_always_mask(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_7netCDF4_8_netCDF4_9_Variable_23set_always_mask = {"set_always_mask", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_9_Variable_23set_always_mask, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9_Variable_23set_always_mask(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_val = 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_always_mask (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 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,&__pyx_mstate_global->__pyx_n_u_val,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 7191, __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(0, 7191, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 7191, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_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_always_mask", 0) < (0)) __PYX_ERR(0, 7191, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("set_always_mask", 1, 2, 2, i); __PYX_ERR(0, 7191, __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(0, 7191, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 7191, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
    __pyx_v_val = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("set_always_mask", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 7191, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4._Variable.set_always_mask", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_9_Variable_22set_always_mask(__pyx_self, __pyx_v_self, __pyx_v_val);

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_22set_always_mask(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_val) {
  PyObject *__pyx_v_v = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  PyObject *(*__pyx_t_4)(PyObject *);
  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("set_always_mask", 0);

  /* "netCDF4/_netCDF4.pyx":7192
 *             v.set_auto_scale(val)
 *     def set_always_mask(self,val):
 *         for v in self._recVar:             # <<<<<<<<<<<<<<
 *             v.set_always_mask(val)
 *     def __getitem__(self, elem):
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_recVar); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7192, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
    __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2);
    __pyx_t_3 = 0;
    __pyx_t_4 = NULL;
  } else {
    __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7192, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 7192, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  for (;;) {
    if (likely(!__pyx_t_4)) {
      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(0, 7192, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        __pyx_t_1 = __Pyx_PyList_GetItemRefFast(__pyx_t_2, __pyx_t_3, __Pyx_ReferenceSharing_OwnStrongReference);
        ++__pyx_t_3;
      } 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(0, 7192, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __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_3));
        #else
        __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3);
        #endif
        ++__pyx_t_3;
      }
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7192, __pyx_L1_error)
    } else {
      __pyx_t_1 = __pyx_t_4(__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(0, 7192, __pyx_L1_error)
          PyErr_Clear();
        }
        break;
      }
    }
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_XDECREF_SET(__pyx_v_v, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":7193
 *     def set_always_mask(self,val):
 *         for v in self._recVar:
 *             v.set_always_mask(val)             # <<<<<<<<<<<<<<
 *     def __getitem__(self, elem):
 *         """Get records from a concatenated set of variables."""
*/
    __pyx_t_5 = __pyx_v_v;
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_6 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_val};
      __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_set_always_mask, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7193, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":7192
 *             v.set_auto_scale(val)
 *     def set_always_mask(self,val):
 *         for v in self._recVar:             # <<<<<<<<<<<<<<
 *             v.set_always_mask(val)
 *     def __getitem__(self, elem):
*/
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":7191
 *         for v in self._recVar:
 *             v.set_auto_scale(val)
 *     def set_always_mask(self,val):             # <<<<<<<<<<<<<<
 *         for v in self._recVar:
 *             v.set_always_mask(val)
*/

  /* 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_5);
  __Pyx_AddTraceback("netCDF4._netCDF4._Variable.set_always_mask", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_v);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":7194
 *         for v in self._recVar:
 *             v.set_always_mask(val)
 *     def __getitem__(self, elem):             # <<<<<<<<<<<<<<
 *         """Get records from a concatenated set of variables."""
 * 
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9_Variable_25__getitem__(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_7netCDF4_8_netCDF4_9_Variable_24__getitem__, "Get records from a concatenated set of variables.");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_9_Variable_25__getitem__ = {"__getitem__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_9_Variable_25__getitem__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_9_Variable_24__getitem__};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9_Variable_25__getitem__(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_elem = 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("__getitem__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 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,&__pyx_mstate_global->__pyx_n_u_elem,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 7194, __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(0, 7194, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 7194, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__getitem__", 0) < (0)) __PYX_ERR(0, 7194, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__getitem__", 1, 2, 2, i); __PYX_ERR(0, 7194, __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(0, 7194, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 7194, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
    __pyx_v_elem = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__getitem__", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 7194, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4._Variable.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_9_Variable_24__getitem__(__pyx_self, __pyx_v_self, __pyx_v_elem);

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_24__getitem__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_elem) {
  PyObject *__pyx_v_start = NULL;
  PyObject *__pyx_v_count = NULL;
  PyObject *__pyx_v_stride = NULL;
  PyObject *__pyx_v_put_ind = NULL;
  PyObject *__pyx_v_datashape = NULL;
  PyObject *__pyx_v_data = NULL;
  PyObject *__pyx_v_squeeze = NULL;
  PyObject *__pyx_v_i = NULL;
  PyObject *__pyx_v_n = NULL;
  PyObject *__pyx_v_strt = NULL;
  PyObject *__pyx_v_cnt = NULL;
  PyObject *__pyx_v_strd = NULL;
  Py_ssize_t __pyx_v_nv;
  PyObject *__pyx_v_ind = NULL;
  PyObject *__pyx_v_sta = NULL;
  PyObject *__pyx_v_step = NULL;
  PyObject *__pyx_v_stop = NULL;
  PyObject *__pyx_v_idx = NULL;
  PyObject *__pyx_v_vid = NULL;
  PyObject *__pyx_v_k = NULL;
  PyObject *__pyx_v_lst = NULL;
  PyObject *__pyx_v_newSlice = NULL;
  PyObject *__pyx_v_s = NULL;
  PyObject *__pyx_v_lstArr = NULL;
  int __pyx_v_ismasked;
  PyObject *__pyx_v_dat = NULL;
  CYTHON_UNUSED PyObject *__pyx_v_fill_value = NULL;
  PyObject *__pyx_9genexpr23__pyx_v_cnt = NULL;
  PyObject *__pyx_9genexpr24__pyx_v_i = NULL;
  PyObject *__pyx_9genexpr24__pyx_v_numv = NULL;
  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)(PyObject *);
  Py_ssize_t __pyx_t_9;
  PyObject *(*__pyx_t_10)(PyObject *);
  int __pyx_t_11;
  int __pyx_t_12;
  PyObject *__pyx_t_13 = NULL;
  Py_ssize_t __pyx_t_14;
  PyObject *(*__pyx_t_15)(PyObject *);
  int __pyx_t_16;
  PyObject *(*__pyx_t_17)(PyObject *);
  PyObject *__pyx_t_18 = NULL;
  PyObject *__pyx_t_19 = NULL;
  PyObject *__pyx_t_20 = NULL;
  PyObject *__pyx_t_21 = NULL;
  int __pyx_t_22;
  int __pyx_t_23;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__getitem__", 0);

  /* "netCDF4/_netCDF4.pyx":7203
 *         # to use.
 *         start, count, stride, put_ind =\
 *         _StartCountStride(elem, self.shape)             # <<<<<<<<<<<<<<
 *         datashape = _out_array_shape(count)
 *         data = ma.empty(datashape, dtype=self.dtype)
*/
  __pyx_t_2 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_StartCountStride); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7203, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_shape); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 7203, __pyx_L1_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[3] = {__pyx_t_2, __pyx_v_elem, __pyx_t_4};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_3, __pyx_callargs+__pyx_t_5, (3-__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(0, 7203, __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 != 4)) {
      if (size > 4) __Pyx_RaiseTooManyValuesError(4);
      else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
      __PYX_ERR(0, 7202, __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);
      __pyx_t_2 = PyTuple_GET_ITEM(sequence, 2);
      __Pyx_INCREF(__pyx_t_2);
      __pyx_t_6 = PyTuple_GET_ITEM(sequence, 3);
      __Pyx_INCREF(__pyx_t_6);
    } else {
      __pyx_t_3 = __Pyx_PyList_GetItemRefFast(sequence, 0, __Pyx_ReferenceSharing_SharedReference);
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7202, __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(0, 7202, __pyx_L1_error)
      __Pyx_XGOTREF(__pyx_t_4);
      __pyx_t_2 = __Pyx_PyList_GetItemRefFast(sequence, 2, __Pyx_ReferenceSharing_SharedReference);
      if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7202, __pyx_L1_error)
      __Pyx_XGOTREF(__pyx_t_2);
      __pyx_t_6 = __Pyx_PyList_GetItemRefFast(sequence, 3, __Pyx_ReferenceSharing_SharedReference);
      if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7202, __pyx_L1_error)
      __Pyx_XGOTREF(__pyx_t_6);
    }
    #else
    {
      Py_ssize_t i;
      PyObject** temps[4] = {&__pyx_t_3,&__pyx_t_4,&__pyx_t_2,&__pyx_t_6};
      for (i=0; i < 4; i++) {
        PyObject* item = __Pyx_PySequence_ITEM(sequence, i); if (unlikely(!item)) __PYX_ERR(0, 7202, __pyx_L1_error)
        __Pyx_GOTREF(item);
        *(temps[i]) = item;
      }
    }
    #endif
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  } else {
    Py_ssize_t index = -1;
    PyObject** temps[4] = {&__pyx_t_3,&__pyx_t_4,&__pyx_t_2,&__pyx_t_6};
    __pyx_t_7 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7202, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_8 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_7);
    for (index=0; index < 4; index++) {
      PyObject* item = __pyx_t_8(__pyx_t_7); if (unlikely(!item)) goto __pyx_L3_unpacking_failed;
      __Pyx_GOTREF(item);
      *(temps[index]) = item;
    }
    if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 4) < (0)) __PYX_ERR(0, 7202, __pyx_L1_error)
    __pyx_t_8 = NULL;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    goto __pyx_L4_unpacking_done;
    __pyx_L3_unpacking_failed:;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_8 = NULL;
    if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
    __PYX_ERR(0, 7202, __pyx_L1_error)
    __pyx_L4_unpacking_done:;
  }

  /* "netCDF4/_netCDF4.pyx":7202
 *         # arguments to the nc_get_var() function, and is much more easy
 *         # to use.
 *         start, count, stride, put_ind =\             # <<<<<<<<<<<<<<
 *         _StartCountStride(elem, self.shape)
 *         datashape = _out_array_shape(count)
*/
  __pyx_v_start = __pyx_t_3;
  __pyx_t_3 = 0;
  __pyx_v_count = __pyx_t_4;
  __pyx_t_4 = 0;
  __pyx_v_stride = __pyx_t_2;
  __pyx_t_2 = 0;
  __pyx_v_put_ind = __pyx_t_6;
  __pyx_t_6 = 0;

  /* "netCDF4/_netCDF4.pyx":7204
 *         start, count, stride, put_ind =\
 *         _StartCountStride(elem, self.shape)
 *         datashape = _out_array_shape(count)             # <<<<<<<<<<<<<<
 *         data = ma.empty(datashape, dtype=self.dtype)
 * 
*/
  __pyx_t_6 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_out_array_shape); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7204, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_5 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
    assert(__pyx_t_6);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_6);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_2, __pyx__function);
    __pyx_t_5 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_v_count};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_2, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7204, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_v_datashape = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":7205
 *         _StartCountStride(elem, self.shape)
 *         datashape = _out_array_shape(count)
 *         data = ma.empty(datashape, dtype=self.dtype)             # <<<<<<<<<<<<<<
 * 
 *         # Determine which dimensions need to be squeezed
*/
  __pyx_t_2 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_ma); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7205, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_empty); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 7205, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_dtype); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7205, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_5 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(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_5 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_2, __pyx_v_datashape};
    __pyx_t_3 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7205, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_dtype, __pyx_t_6, __pyx_t_3, __pyx_callargs+2, 0) < (0)) __PYX_ERR(0, 7205, __pyx_L1_error)
    __pyx_t_1 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_3);
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7205, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_v_data = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":7211
 *         # The convention used is that for those cases,
 *         # put_ind for this dimension is set to -1 by _StartCountStride.
 *         squeeze = data.ndim * [slice(None),]             # <<<<<<<<<<<<<<
 *         for i,n in enumerate(put_ind.shape[:-1]):
 *             if n == 1 and put_ind[...,i].ravel()[0] == -1:
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_mstate_global->__pyx_n_u_ndim); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7211, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 7211, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_mstate_global->__pyx_slice[1]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_slice[1]);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_mstate_global->__pyx_slice[1]) != (0)) __PYX_ERR(0, 7211, __pyx_L1_error);
  __pyx_t_3 = PyNumber_Multiply(__pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7211, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_v_squeeze = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "netCDF4/_netCDF4.pyx":7212
 *         # put_ind for this dimension is set to -1 by _StartCountStride.
 *         squeeze = data.ndim * [slice(None),]
 *         for i,n in enumerate(put_ind.shape[:-1]):             # <<<<<<<<<<<<<<
 *             if n == 1 and put_ind[...,i].ravel()[0] == -1:
 *                 squeeze[i] = 0
*/
  __Pyx_INCREF(__pyx_mstate_global->__pyx_int_0);
  __pyx_t_3 = __pyx_mstate_global->__pyx_int_0;
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_put_ind, __pyx_mstate_global->__pyx_n_u_shape); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 7212, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_1 = __Pyx_PyObject_GetSlice(__pyx_t_4, 0, -1L, NULL, NULL, &__pyx_mstate_global->__pyx_slice[2], 0, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7212, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
    __pyx_t_4 = __pyx_t_1; __Pyx_INCREF(__pyx_t_4);
    __pyx_t_9 = 0;
    __pyx_t_10 = NULL;
  } else {
    __pyx_t_9 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 7212, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_10 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_4); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 7212, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  for (;;) {
    if (likely(!__pyx_t_10)) {
      if (likely(PyList_CheckExact(__pyx_t_4))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_4);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 7212, __pyx_L1_error)
          #endif
          if (__pyx_t_9 >= __pyx_temp) break;
        }
        __pyx_t_1 = __Pyx_PyList_GetItemRefFast(__pyx_t_4, __pyx_t_9, __Pyx_ReferenceSharing_OwnStrongReference);
        ++__pyx_t_9;
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_4);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 7212, __pyx_L1_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_4, __pyx_t_9));
        #else
        __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_4, __pyx_t_9);
        #endif
        ++__pyx_t_9;
      }
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7212, __pyx_L1_error)
    } else {
      __pyx_t_1 = __pyx_t_10(__pyx_t_4);
      if (unlikely(!__pyx_t_1)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 7212, __pyx_L1_error)
          PyErr_Clear();
        }
        break;
      }
    }
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_XDECREF_SET(__pyx_v_n, __pyx_t_1);
    __pyx_t_1 = 0;
    __Pyx_INCREF(__pyx_t_3);
    __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_3);
    __pyx_t_1 = __Pyx_PyLong_AddObjC(__pyx_t_3, __pyx_mstate_global->__pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7212, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3);
    __pyx_t_3 = __pyx_t_1;
    __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":7213
 *         squeeze = data.ndim * [slice(None),]
 *         for i,n in enumerate(put_ind.shape[:-1]):
 *             if n == 1 and put_ind[...,i].ravel()[0] == -1:             # <<<<<<<<<<<<<<
 *                 squeeze[i] = 0
 * 
*/
    __pyx_t_12 = (__Pyx_PyLong_BoolEqObjC(__pyx_v_n, __pyx_mstate_global->__pyx_int_1, 1, 0)); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 7213, __pyx_L1_error)
    if (__pyx_t_12) {
    } else {
      __pyx_t_11 = __pyx_t_12;
      goto __pyx_L8_bool_binop_done;
    }
    __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7213, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(Py_Ellipsis);
    __Pyx_GIVEREF(Py_Ellipsis);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, Py_Ellipsis) != (0)) __PYX_ERR(0, 7213, __pyx_L1_error);
    __Pyx_INCREF(__pyx_v_i);
    __Pyx_GIVEREF(__pyx_v_i);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_i) != (0)) __PYX_ERR(0, 7213, __pyx_L1_error);
    __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_v_put_ind, __pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7213, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_6 = __pyx_t_7;
    __Pyx_INCREF(__pyx_t_6);
    __pyx_t_5 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL};
      __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_ravel, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (1*__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(0, 7213, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __pyx_t_7 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7213, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_12 = (__Pyx_PyLong_BoolEqObjC(__pyx_t_7, __pyx_mstate_global->__pyx_int_neg_1, -1L, 0)); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 7213, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_11 = __pyx_t_12;
    __pyx_L8_bool_binop_done:;
    if (__pyx_t_11) {

      /* "netCDF4/_netCDF4.pyx":7214
 *         for i,n in enumerate(put_ind.shape[:-1]):
 *             if n == 1 and put_ind[...,i].ravel()[0] == -1:
 *                 squeeze[i] = 0             # <<<<<<<<<<<<<<
 * 
 *         # Reshape the arrays so we can iterate over them.
*/
      if (unlikely((PyObject_SetItem(__pyx_v_squeeze, __pyx_v_i, __pyx_mstate_global->__pyx_int_0) < 0))) __PYX_ERR(0, 7214, __pyx_L1_error)

      /* "netCDF4/_netCDF4.pyx":7213
 *         squeeze = data.ndim * [slice(None),]
 *         for i,n in enumerate(put_ind.shape[:-1]):
 *             if n == 1 and put_ind[...,i].ravel()[0] == -1:             # <<<<<<<<<<<<<<
 *                 squeeze[i] = 0
 * 
*/
    }

    /* "netCDF4/_netCDF4.pyx":7212
 *         # put_ind for this dimension is set to -1 by _StartCountStride.
 *         squeeze = data.ndim * [slice(None),]
 *         for i,n in enumerate(put_ind.shape[:-1]):             # <<<<<<<<<<<<<<
 *             if n == 1 and put_ind[...,i].ravel()[0] == -1:
 *                 squeeze[i] = 0
*/
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "netCDF4/_netCDF4.pyx":7217
 * 
 *         # Reshape the arrays so we can iterate over them.
 *         strt = start.reshape((-1, self.ndim or 1))             # <<<<<<<<<<<<<<
 *         cnt = count.reshape((-1, self.ndim or 1))
 *         strd = stride.reshape((-1, self.ndim or 1))
*/
  __pyx_t_4 = __pyx_v_start;
  __Pyx_INCREF(__pyx_t_4);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_ndim); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7217, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_11 < 0))) __PYX_ERR(0, 7217, __pyx_L1_error)
  if (!__pyx_t_11) {
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  } else {
    __Pyx_INCREF(__pyx_t_1);
    __pyx_t_7 = __pyx_t_1;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    goto __pyx_L11_bool_binop_done;
  }
  __pyx_t_1 = __Pyx_PyLong_From_long(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7217, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __pyx_t_1;
  __pyx_t_1 = 0;
  __pyx_L11_bool_binop_done:;
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7217, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_mstate_global->__pyx_int_neg_1);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_int_neg_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_mstate_global->__pyx_int_neg_1) != (0)) __PYX_ERR(0, 7217, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_7);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_7) != (0)) __PYX_ERR(0, 7217, __pyx_L1_error);
  __pyx_t_7 = 0;
  __pyx_t_5 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_1};
    __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_reshape, __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_1); __pyx_t_1 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7217, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  }
  __pyx_v_strt = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "netCDF4/_netCDF4.pyx":7218
 *         # Reshape the arrays so we can iterate over them.
 *         strt = start.reshape((-1, self.ndim or 1))
 *         cnt = count.reshape((-1, self.ndim or 1))             # <<<<<<<<<<<<<<
 *         strd = stride.reshape((-1, self.ndim or 1))
 *         put_ind = put_ind.reshape((-1, self.ndim or 1))
*/
  __pyx_t_1 = __pyx_v_count;
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_ndim); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7218, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_11 < 0))) __PYX_ERR(0, 7218, __pyx_L1_error)
  if (!__pyx_t_11) {
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  } else {
    __Pyx_INCREF(__pyx_t_7);
    __pyx_t_4 = __pyx_t_7;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    goto __pyx_L13_bool_binop_done;
  }
  __pyx_t_7 = __Pyx_PyLong_From_long(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7218, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_4 = __pyx_t_7;
  __pyx_t_7 = 0;
  __pyx_L13_bool_binop_done:;
  __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7218, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_INCREF(__pyx_mstate_global->__pyx_int_neg_1);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_int_neg_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_mstate_global->__pyx_int_neg_1) != (0)) __PYX_ERR(0, 7218, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_4);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_4) != (0)) __PYX_ERR(0, 7218, __pyx_L1_error);
  __pyx_t_4 = 0;
  __pyx_t_5 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_t_7};
    __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_reshape, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7218, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  }
  __pyx_v_cnt = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "netCDF4/_netCDF4.pyx":7219
 *         strt = start.reshape((-1, self.ndim or 1))
 *         cnt = count.reshape((-1, self.ndim or 1))
 *         strd = stride.reshape((-1, self.ndim or 1))             # <<<<<<<<<<<<<<
 *         put_ind = put_ind.reshape((-1, self.ndim or 1))
 * 
*/
  __pyx_t_7 = __pyx_v_stride;
  __Pyx_INCREF(__pyx_t_7);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_ndim); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 7219, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_11 < 0))) __PYX_ERR(0, 7219, __pyx_L1_error)
  if (!__pyx_t_11) {
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  } else {
    __Pyx_INCREF(__pyx_t_4);
    __pyx_t_1 = __pyx_t_4;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L15_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_PyLong_From_long(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 7219, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_1 = __pyx_t_4;
  __pyx_t_4 = 0;
  __pyx_L15_bool_binop_done:;
  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 7219, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_mstate_global->__pyx_int_neg_1);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_int_neg_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_mstate_global->__pyx_int_neg_1) != (0)) __PYX_ERR(0, 7219, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1) != (0)) __PYX_ERR(0, 7219, __pyx_L1_error);
  __pyx_t_1 = 0;
  __pyx_t_5 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_4};
    __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_reshape, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7219, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  }
  __pyx_v_strd = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "netCDF4/_netCDF4.pyx":7220
 *         cnt = count.reshape((-1, self.ndim or 1))
 *         strd = stride.reshape((-1, self.ndim or 1))
 *         put_ind = put_ind.reshape((-1, self.ndim or 1))             # <<<<<<<<<<<<<<
 * 
 *         # Fill output array with data chunks.
*/
  __pyx_t_4 = __pyx_v_put_ind;
  __Pyx_INCREF(__pyx_t_4);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_ndim); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7220, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_11 < 0))) __PYX_ERR(0, 7220, __pyx_L1_error)
  if (!__pyx_t_11) {
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  } else {
    __Pyx_INCREF(__pyx_t_1);
    __pyx_t_7 = __pyx_t_1;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    goto __pyx_L17_bool_binop_done;
  }
  __pyx_t_1 = __Pyx_PyLong_From_long(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7220, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __pyx_t_1;
  __pyx_t_1 = 0;
  __pyx_L17_bool_binop_done:;
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7220, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_mstate_global->__pyx_int_neg_1);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_int_neg_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_mstate_global->__pyx_int_neg_1) != (0)) __PYX_ERR(0, 7220, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_7);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_7) != (0)) __PYX_ERR(0, 7220, __pyx_L1_error);
  __pyx_t_7 = 0;
  __pyx_t_5 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_1};
    __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_reshape, __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_1); __pyx_t_1 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7220, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  }
  __Pyx_DECREF_SET(__pyx_v_put_ind, __pyx_t_3);
  __pyx_t_3 = 0;

  /* "netCDF4/_netCDF4.pyx":7224
 *         # Fill output array with data chunks.
 *         # Number of variables making up the MFVariable.Variable.
 *         nv = len(self._recLen)             # <<<<<<<<<<<<<<
 *         for (start,count,stride,ind) in zip(strt, cnt, strd, put_ind):
 *             # make sure count=-1 becomes count=1
*/
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_recLen); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7224, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_9 = PyObject_Length(__pyx_t_3); if (unlikely(__pyx_t_9 == ((Py_ssize_t)-1))) __PYX_ERR(0, 7224, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_nv = __pyx_t_9;

  /* "netCDF4/_netCDF4.pyx":7225
 *         # Number of variables making up the MFVariable.Variable.
 *         nv = len(self._recLen)
 *         for (start,count,stride,ind) in zip(strt, cnt, strd, put_ind):             # <<<<<<<<<<<<<<
 *             # make sure count=-1 becomes count=1
 *             count = [abs(cnt) for cnt in count]
*/
  __pyx_t_1 = NULL;
  __pyx_t_5 = 1;
  {
    PyObject *__pyx_callargs[5] = {__pyx_t_1, __pyx_v_strt, __pyx_v_cnt, __pyx_v_strd, __pyx_v_put_ind};
    __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_zip, __pyx_callargs+__pyx_t_5, (5-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7225, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  }
  if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) {
    __pyx_t_1 = __pyx_t_3; __Pyx_INCREF(__pyx_t_1);
    __pyx_t_9 = 0;
    __pyx_t_10 = NULL;
  } else {
    __pyx_t_9 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7225, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_10 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 7225, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  for (;;) {
    if (likely(!__pyx_t_10)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 7225, __pyx_L1_error)
          #endif
          if (__pyx_t_9 >= __pyx_temp) break;
        }
        __pyx_t_3 = __Pyx_PyList_GetItemRefFast(__pyx_t_1, __pyx_t_9, __Pyx_ReferenceSharing_OwnStrongReference);
        ++__pyx_t_9;
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 7225, __pyx_L1_error)
          #endif
          if (__pyx_t_9 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_3 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_9));
        #else
        __pyx_t_3 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_9);
        #endif
        ++__pyx_t_9;
      }
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7225, __pyx_L1_error)
    } else {
      __pyx_t_3 = __pyx_t_10(__pyx_t_1);
      if (unlikely(!__pyx_t_3)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 7225, __pyx_L1_error)
          PyErr_Clear();
        }
        break;
      }
    }
    __Pyx_GOTREF(__pyx_t_3);
    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 != 4)) {
        if (size > 4) __Pyx_RaiseTooManyValuesError(4);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(0, 7225, __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_7 = PyTuple_GET_ITEM(sequence, 1);
        __Pyx_INCREF(__pyx_t_7);
        __pyx_t_6 = PyTuple_GET_ITEM(sequence, 2);
        __Pyx_INCREF(__pyx_t_6);
        __pyx_t_2 = PyTuple_GET_ITEM(sequence, 3);
        __Pyx_INCREF(__pyx_t_2);
      } else {
        __pyx_t_4 = __Pyx_PyList_GetItemRefFast(sequence, 0, __Pyx_ReferenceSharing_SharedReference);
        if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 7225, __pyx_L1_error)
        __Pyx_XGOTREF(__pyx_t_4);
        __pyx_t_7 = __Pyx_PyList_GetItemRefFast(sequence, 1, __Pyx_ReferenceSharing_SharedReference);
        if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7225, __pyx_L1_error)
        __Pyx_XGOTREF(__pyx_t_7);
        __pyx_t_6 = __Pyx_PyList_GetItemRefFast(sequence, 2, __Pyx_ReferenceSharing_SharedReference);
        if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7225, __pyx_L1_error)
        __Pyx_XGOTREF(__pyx_t_6);
        __pyx_t_2 = __Pyx_PyList_GetItemRefFast(sequence, 3, __Pyx_ReferenceSharing_SharedReference);
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7225, __pyx_L1_error)
        __Pyx_XGOTREF(__pyx_t_2);
      }
      #else
      {
        Py_ssize_t i;
        PyObject** temps[4] = {&__pyx_t_4,&__pyx_t_7,&__pyx_t_6,&__pyx_t_2};
        for (i=0; i < 4; i++) {
          PyObject* item = __Pyx_PySequence_ITEM(sequence, i); if (unlikely(!item)) __PYX_ERR(0, 7225, __pyx_L1_error)
          __Pyx_GOTREF(item);
          *(temps[i]) = item;
        }
      }
      #endif
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    } else {
      Py_ssize_t index = -1;
      PyObject** temps[4] = {&__pyx_t_4,&__pyx_t_7,&__pyx_t_6,&__pyx_t_2};
      __pyx_t_13 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 7225, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_13);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_8 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_13);
      for (index=0; index < 4; index++) {
        PyObject* item = __pyx_t_8(__pyx_t_13); if (unlikely(!item)) goto __pyx_L21_unpacking_failed;
        __Pyx_GOTREF(item);
        *(temps[index]) = item;
      }
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_13), 4) < (0)) __PYX_ERR(0, 7225, __pyx_L1_error)
      __pyx_t_8 = NULL;
      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
      goto __pyx_L22_unpacking_done;
      __pyx_L21_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
      __pyx_t_8 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(0, 7225, __pyx_L1_error)
      __pyx_L22_unpacking_done:;
    }
    __Pyx_DECREF_SET(__pyx_v_start, __pyx_t_4);
    __pyx_t_4 = 0;
    __Pyx_DECREF_SET(__pyx_v_count, __pyx_t_7);
    __pyx_t_7 = 0;
    __Pyx_DECREF_SET(__pyx_v_stride, __pyx_t_6);
    __pyx_t_6 = 0;
    __Pyx_XDECREF_SET(__pyx_v_ind, __pyx_t_2);
    __pyx_t_2 = 0;

    /* "netCDF4/_netCDF4.pyx":7227
 *         for (start,count,stride,ind) in zip(strt, cnt, strd, put_ind):
 *             # make sure count=-1 becomes count=1
 *             count = [abs(cnt) for cnt in count]             # <<<<<<<<<<<<<<
 *             if (numpy.array(stride) < 0).any():
 *                 raise IndexError('negative strides not allowed when slicing MFVariable Variable instance')
*/
    { /* enter inner scope */
      __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7227, __pyx_L25_error)
      __Pyx_GOTREF(__pyx_t_3);
      if (likely(PyList_CheckExact(__pyx_v_count)) || PyTuple_CheckExact(__pyx_v_count)) {
        __pyx_t_2 = __pyx_v_count; __Pyx_INCREF(__pyx_t_2);
        __pyx_t_14 = 0;
        __pyx_t_15 = NULL;
      } else {
        __pyx_t_14 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_count); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7227, __pyx_L25_error)
        __Pyx_GOTREF(__pyx_t_2);
        __pyx_t_15 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 7227, __pyx_L25_error)
      }
      for (;;) {
        if (likely(!__pyx_t_15)) {
          if (likely(PyList_CheckExact(__pyx_t_2))) {
            {
              Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2);
              #if !CYTHON_ASSUME_SAFE_SIZE
              if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 7227, __pyx_L25_error)
              #endif
              if (__pyx_t_14 >= __pyx_temp) break;
            }
            __pyx_t_6 = __Pyx_PyList_GetItemRefFast(__pyx_t_2, __pyx_t_14, __Pyx_ReferenceSharing_OwnStrongReference);
            ++__pyx_t_14;
          } 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(0, 7227, __pyx_L25_error)
              #endif
              if (__pyx_t_14 >= __pyx_temp) break;
            }
            #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
            __pyx_t_6 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_14));
            #else
            __pyx_t_6 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_14);
            #endif
            ++__pyx_t_14;
          }
          if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7227, __pyx_L25_error)
        } else {
          __pyx_t_6 = __pyx_t_15(__pyx_t_2);
          if (unlikely(!__pyx_t_6)) {
            PyObject* exc_type = PyErr_Occurred();
            if (exc_type) {
              if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 7227, __pyx_L25_error)
              PyErr_Clear();
            }
            break;
          }
        }
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_XDECREF_SET(__pyx_9genexpr23__pyx_v_cnt, __pyx_t_6);
        __pyx_t_6 = 0;
        __pyx_t_6 = __Pyx_PyNumber_Absolute(__pyx_9genexpr23__pyx_v_cnt); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7227, __pyx_L25_error)
        __Pyx_GOTREF(__pyx_t_6);
        if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_6))) __PYX_ERR(0, 7227, __pyx_L25_error)
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      }
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF(__pyx_9genexpr23__pyx_v_cnt); __pyx_9genexpr23__pyx_v_cnt = 0;
      goto __pyx_L29_exit_scope;
      __pyx_L25_error:;
      __Pyx_XDECREF(__pyx_9genexpr23__pyx_v_cnt); __pyx_9genexpr23__pyx_v_cnt = 0;
      goto __pyx_L1_error;
      __pyx_L29_exit_scope:;
    } /* exit inner scope */
    __Pyx_DECREF_SET(__pyx_v_count, __pyx_t_3);
    __pyx_t_3 = 0;

    /* "netCDF4/_netCDF4.pyx":7228
 *             # make sure count=-1 becomes count=1
 *             count = [abs(cnt) for cnt in count]
 *             if (numpy.array(stride) < 0).any():             # <<<<<<<<<<<<<<
 *                 raise IndexError('negative strides not allowed when slicing MFVariable Variable instance')
 *             # Start, stop and step along 1st dimension, eg the unlimited
*/
    __pyx_t_7 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 7228, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_array); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 7228, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_13);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_5 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_13))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_13);
      assert(__pyx_t_7);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_13);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_13, __pyx__function);
      __pyx_t_5 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_v_stride};
      __pyx_t_6 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_13, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
      if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7228, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
    }
    __pyx_t_13 = PyObject_RichCompare(__pyx_t_6, __pyx_mstate_global->__pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_13); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 7228, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_2 = __pyx_t_13;
    __Pyx_INCREF(__pyx_t_2);
    __pyx_t_5 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
      __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_any, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7228, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_11 < 0))) __PYX_ERR(0, 7228, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(__pyx_t_11)) {

      /* "netCDF4/_netCDF4.pyx":7229
 *             count = [abs(cnt) for cnt in count]
 *             if (numpy.array(stride) < 0).any():
 *                 raise IndexError('negative strides not allowed when slicing MFVariable Variable instance')             # <<<<<<<<<<<<<<
 *             # Start, stop and step along 1st dimension, eg the unlimited
 *             # dimension.
*/
      __pyx_t_13 = NULL;
      __pyx_t_5 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_13, __pyx_mstate_global->__pyx_kp_u_negative_strides_not_allowed_whe};
        __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_IndexError)), __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
        if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7229, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
      }
      __Pyx_Raise(__pyx_t_3, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __PYX_ERR(0, 7229, __pyx_L1_error)

      /* "netCDF4/_netCDF4.pyx":7228
 *             # make sure count=-1 becomes count=1
 *             count = [abs(cnt) for cnt in count]
 *             if (numpy.array(stride) < 0).any():             # <<<<<<<<<<<<<<
 *                 raise IndexError('negative strides not allowed when slicing MFVariable Variable instance')
 *             # Start, stop and step along 1st dimension, eg the unlimited
*/
    }

    /* "netCDF4/_netCDF4.pyx":7232
 *             # Start, stop and step along 1st dimension, eg the unlimited
 *             # dimension.
 *             sta = start[0]             # <<<<<<<<<<<<<<
 *             step = stride[0]
 *             stop = sta + count[0] * step
*/
    __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_start, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7232, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_XDECREF_SET(__pyx_v_sta, __pyx_t_3);
    __pyx_t_3 = 0;

    /* "netCDF4/_netCDF4.pyx":7233
 *             # dimension.
 *             sta = start[0]
 *             step = stride[0]             # <<<<<<<<<<<<<<
 *             stop = sta + count[0] * step
 * 
*/
    __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_stride, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7233, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_XDECREF_SET(__pyx_v_step, __pyx_t_3);
    __pyx_t_3 = 0;

    /* "netCDF4/_netCDF4.pyx":7234
 *             sta = start[0]
 *             step = stride[0]
 *             stop = sta + count[0] * step             # <<<<<<<<<<<<<<
 * 
 *             # Build a list representing the concatenated list of all records in
*/
    __pyx_t_3 = __Pyx_GetItemInt_List(__pyx_v_count, 0, long, 1, __Pyx_PyLong_From_long, 1, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7234, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_13 = PyNumber_Multiply(__pyx_t_3, __pyx_v_step); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 7234, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_13);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyNumber_Add(__pyx_v_sta, __pyx_t_13); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7234, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
    __Pyx_XDECREF_SET(__pyx_v_stop, __pyx_t_3);
    __pyx_t_3 = 0;

    /* "netCDF4/_netCDF4.pyx":7241
 *             #  the record index inside the variables, from 0 to n
 *             #  the index of the Variable instance to which each record belongs
 *             idx = []    # list of record indices             # <<<<<<<<<<<<<<
 *             vid = []    # list of Variable indices
 *             for n in range(nv):
*/
    __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7241, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_XDECREF_SET(__pyx_v_idx, ((PyObject*)__pyx_t_3));
    __pyx_t_3 = 0;

    /* "netCDF4/_netCDF4.pyx":7242
 *             #  the index of the Variable instance to which each record belongs
 *             idx = []    # list of record indices
 *             vid = []    # list of Variable indices             # <<<<<<<<<<<<<<
 *             for n in range(nv):
 *                 k = self._recLen[n]     # number of records in this variable
*/
    __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7242, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_XDECREF_SET(__pyx_v_vid, ((PyObject*)__pyx_t_3));
    __pyx_t_3 = 0;

    /* "netCDF4/_netCDF4.pyx":7243
 *             idx = []    # list of record indices
 *             vid = []    # list of Variable indices
 *             for n in range(nv):             # <<<<<<<<<<<<<<
 *                 k = self._recLen[n]     # number of records in this variable
 *                 idx.extend(range(k))
*/
    __pyx_t_13 = NULL;
    __pyx_t_2 = PyLong_FromSsize_t(__pyx_v_nv); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7243, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_5 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_13, __pyx_t_2};
      __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(&PyRange_Type), __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7243, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __pyx_t_2 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7243, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_15 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 7243, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    for (;;) {
      {
        __pyx_t_3 = __pyx_t_15(__pyx_t_2);
        if (unlikely(!__pyx_t_3)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 7243, __pyx_L1_error)
            PyErr_Clear();
          }
          break;
        }
      }
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_XDECREF_SET(__pyx_v_n, __pyx_t_3);
      __pyx_t_3 = 0;

      /* "netCDF4/_netCDF4.pyx":7244
 *             vid = []    # list of Variable indices
 *             for n in range(nv):
 *                 k = self._recLen[n]     # number of records in this variable             # <<<<<<<<<<<<<<
 *                 idx.extend(range(k))
 *                 vid.extend([n] * k)
*/
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_recLen); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7244, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_13 = __Pyx_PyObject_GetItem(__pyx_t_3, __pyx_v_n); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 7244, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_13);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_XDECREF_SET(__pyx_v_k, __pyx_t_13);
      __pyx_t_13 = 0;

      /* "netCDF4/_netCDF4.pyx":7245
 *             for n in range(nv):
 *                 k = self._recLen[n]     # number of records in this variable
 *                 idx.extend(range(k))             # <<<<<<<<<<<<<<
 *                 vid.extend([n] * k)
 * 
*/
      __pyx_t_3 = NULL;
      __pyx_t_5 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_k};
        __pyx_t_13 = __Pyx_PyObject_FastCall((PyObject*)(&PyRange_Type), __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 7245, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_13);
      }
      __pyx_t_16 = __Pyx_PyList_Extend(__pyx_v_idx, __pyx_t_13); if (unlikely(__pyx_t_16 == ((int)-1))) __PYX_ERR(0, 7245, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;

      /* "netCDF4/_netCDF4.pyx":7246
 *                 k = self._recLen[n]     # number of records in this variable
 *                 idx.extend(range(k))
 *                 vid.extend([n] * k)             # <<<<<<<<<<<<<<
 * 
 *             # Merge the two lists to get a list of 2-elem lists.
*/
      __pyx_t_13 = PyList_New(1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 7246, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_13);
      __Pyx_INCREF(__pyx_v_n);
      __Pyx_GIVEREF(__pyx_v_n);
      if (__Pyx_PyList_SET_ITEM(__pyx_t_13, 0, __pyx_v_n) != (0)) __PYX_ERR(0, 7246, __pyx_L1_error);
      { PyObject* __pyx_temp = PyNumber_InPlaceMultiply(__pyx_t_13, __pyx_v_k); if (unlikely(!__pyx_temp)) __PYX_ERR(0, 7246, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_temp);
        __Pyx_DECREF(__pyx_t_13);
        __pyx_t_13 = __pyx_temp;
      }
      __pyx_t_16 = __Pyx_PyList_Extend(__pyx_v_vid, __pyx_t_13); if (unlikely(__pyx_t_16 == ((int)-1))) __PYX_ERR(0, 7246, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;

      /* "netCDF4/_netCDF4.pyx":7243
 *             idx = []    # list of record indices
 *             vid = []    # list of Variable indices
 *             for n in range(nv):             # <<<<<<<<<<<<<<
 *                 k = self._recLen[n]     # number of records in this variable
 *                 idx.extend(range(k))
*/
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "netCDF4/_netCDF4.pyx":7250
 *             # Merge the two lists to get a list of 2-elem lists.
 *             # Slice this list along the first dimension.
 *             lst = list(zip(idx, vid)).__getitem__(slice(sta, stop, step))             # <<<<<<<<<<<<<<
 * 
 *             # Rebuild the slicing expression for dimensions 1 and ssq.
*/
    __pyx_t_6 = NULL;
    __pyx_t_5 = 1;
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_v_idx, __pyx_v_vid};
      __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_zip, __pyx_callargs+__pyx_t_5, (3-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7250, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __pyx_t_6 = __Pyx_PySequence_ListKeepNew(__pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7250, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_13 = __pyx_t_6;
    __Pyx_INCREF(__pyx_t_13);
    __pyx_t_3 = PySlice_New(__pyx_v_sta, __pyx_v_stop, __pyx_v_step); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7250, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_5 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_13, __pyx_t_3};
      __pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_getitem, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7250, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __Pyx_XDECREF_SET(__pyx_v_lst, __pyx_t_2);
    __pyx_t_2 = 0;

    /* "netCDF4/_netCDF4.pyx":7253
 * 
 *             # Rebuild the slicing expression for dimensions 1 and ssq.
 *             newSlice = [slice(None, None, None)]             # <<<<<<<<<<<<<<
 *             for n in range(1, len(start)):   # skip dimension 0
 *                 s = slice(start[n],start[n] + count[n] * stride[n], stride[n])
*/
    __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7253, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_mstate_global->__pyx_slice[1]);
    __Pyx_GIVEREF(__pyx_mstate_global->__pyx_slice[1]);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_mstate_global->__pyx_slice[1]) != (0)) __PYX_ERR(0, 7253, __pyx_L1_error);
    __Pyx_XDECREF_SET(__pyx_v_newSlice, ((PyObject*)__pyx_t_2));
    __pyx_t_2 = 0;

    /* "netCDF4/_netCDF4.pyx":7254
 *             # Rebuild the slicing expression for dimensions 1 and ssq.
 *             newSlice = [slice(None, None, None)]
 *             for n in range(1, len(start)):   # skip dimension 0             # <<<<<<<<<<<<<<
 *                 s = slice(start[n],start[n] + count[n] * stride[n], stride[n])
 *                 newSlice.append(s)
*/
    __pyx_t_6 = NULL;
    __pyx_t_14 = PyObject_Length(__pyx_v_start); if (unlikely(__pyx_t_14 == ((Py_ssize_t)-1))) __PYX_ERR(0, 7254, __pyx_L1_error)
    __pyx_t_3 = PyLong_FromSsize_t(__pyx_t_14); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7254, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_5 = 1;
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_mstate_global->__pyx_int_1, __pyx_t_3};
      __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(&PyRange_Type), __pyx_callargs+__pyx_t_5, (3-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7254, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __pyx_t_3 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7254, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_15 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_3); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 7254, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    for (;;) {
      {
        __pyx_t_2 = __pyx_t_15(__pyx_t_3);
        if (unlikely(!__pyx_t_2)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 7254, __pyx_L1_error)
            PyErr_Clear();
          }
          break;
        }
      }
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_XDECREF_SET(__pyx_v_n, __pyx_t_2);
      __pyx_t_2 = 0;

      /* "netCDF4/_netCDF4.pyx":7255
 *             newSlice = [slice(None, None, None)]
 *             for n in range(1, len(start)):   # skip dimension 0
 *                 s = slice(start[n],start[n] + count[n] * stride[n], stride[n])             # <<<<<<<<<<<<<<
 *                 newSlice.append(s)
 * 
*/
      __pyx_t_2 = __Pyx_PyObject_GetItem(__pyx_v_start, __pyx_v_n); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7255, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_v_start, __pyx_v_n); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7255, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_13 = __Pyx_PyObject_GetItem(__pyx_v_count, __pyx_v_n); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 7255, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_13);
      __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_v_stride, __pyx_v_n); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7255, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_4 = PyNumber_Multiply(__pyx_t_13, __pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 7255, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_7 = PyNumber_Add(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7255, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_4 = __Pyx_PyObject_GetItem(__pyx_v_stride, __pyx_v_n); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 7255, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_6 = PySlice_New(__pyx_t_2, __pyx_t_7, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7255, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF_SET(__pyx_v_s, ((PyObject*)__pyx_t_6));
      __pyx_t_6 = 0;

      /* "netCDF4/_netCDF4.pyx":7256
 *             for n in range(1, len(start)):   # skip dimension 0
 *                 s = slice(start[n],start[n] + count[n] * stride[n], stride[n])
 *                 newSlice.append(s)             # <<<<<<<<<<<<<<
 * 
 *             # Apply the slicing expression to each var in turn, extracting records
*/
      __pyx_t_16 = __Pyx_PyList_Append(__pyx_v_newSlice, __pyx_v_s); if (unlikely(__pyx_t_16 == ((int)-1))) __PYX_ERR(0, 7256, __pyx_L1_error)

      /* "netCDF4/_netCDF4.pyx":7254
 *             # Rebuild the slicing expression for dimensions 1 and ssq.
 *             newSlice = [slice(None, None, None)]
 *             for n in range(1, len(start)):   # skip dimension 0             # <<<<<<<<<<<<<<
 *                 s = slice(start[n],start[n] + count[n] * stride[n], stride[n])
 *                 newSlice.append(s)
*/
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "netCDF4/_netCDF4.pyx":7260
 *             # Apply the slicing expression to each var in turn, extracting records
 *             # in a list of arrays.
 *             lstArr = []             # <<<<<<<<<<<<<<
 *             ismasked = False
 *             for n in range(nv):
*/
    __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7260, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_XDECREF_SET(__pyx_v_lstArr, __pyx_t_3);
    __pyx_t_3 = 0;

    /* "netCDF4/_netCDF4.pyx":7261
 *             # in a list of arrays.
 *             lstArr = []
 *             ismasked = False             # <<<<<<<<<<<<<<
 *             for n in range(nv):
 *                 # Get the list of indices for variable 'n'.
*/
    __pyx_v_ismasked = 0;

    /* "netCDF4/_netCDF4.pyx":7262
 *             lstArr = []
 *             ismasked = False
 *             for n in range(nv):             # <<<<<<<<<<<<<<
 *                 # Get the list of indices for variable 'n'.
 *                 idx = [i for i,numv in lst if numv == n]
*/
    __pyx_t_6 = NULL;
    __pyx_t_4 = PyLong_FromSsize_t(__pyx_v_nv); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 7262, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_4};
      __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(&PyRange_Type), __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__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_3)) __PYX_ERR(0, 7262, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __pyx_t_4 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 7262, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_15 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_4); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 7262, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    for (;;) {
      {
        __pyx_t_3 = __pyx_t_15(__pyx_t_4);
        if (unlikely(!__pyx_t_3)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 7262, __pyx_L1_error)
            PyErr_Clear();
          }
          break;
        }
      }
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_XDECREF_SET(__pyx_v_n, __pyx_t_3);
      __pyx_t_3 = 0;

      /* "netCDF4/_netCDF4.pyx":7264
 *             for n in range(nv):
 *                 # Get the list of indices for variable 'n'.
 *                 idx = [i for i,numv in lst if numv == n]             # <<<<<<<<<<<<<<
 *                 if idx:
 *                     # Rebuild slicing expression for dimension 0.
*/
      { /* enter inner scope */
        __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7264, __pyx_L41_error)
        __Pyx_GOTREF(__pyx_t_3);
        if (likely(PyList_CheckExact(__pyx_v_lst)) || PyTuple_CheckExact(__pyx_v_lst)) {
          __pyx_t_6 = __pyx_v_lst; __Pyx_INCREF(__pyx_t_6);
          __pyx_t_14 = 0;
          __pyx_t_17 = NULL;
        } else {
          __pyx_t_14 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_v_lst); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7264, __pyx_L41_error)
          __Pyx_GOTREF(__pyx_t_6);
          __pyx_t_17 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_6); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 7264, __pyx_L41_error)
        }
        for (;;) {
          if (likely(!__pyx_t_17)) {
            if (likely(PyList_CheckExact(__pyx_t_6))) {
              {
                Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_6);
                #if !CYTHON_ASSUME_SAFE_SIZE
                if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 7264, __pyx_L41_error)
                #endif
                if (__pyx_t_14 >= __pyx_temp) break;
              }
              __pyx_t_7 = __Pyx_PyList_GetItemRefFast(__pyx_t_6, __pyx_t_14, __Pyx_ReferenceSharing_OwnStrongReference);
              ++__pyx_t_14;
            } else {
              {
                Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_6);
                #if !CYTHON_ASSUME_SAFE_SIZE
                if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 7264, __pyx_L41_error)
                #endif
                if (__pyx_t_14 >= __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_14));
              #else
              __pyx_t_7 = __Pyx_PySequence_ITEM(__pyx_t_6, __pyx_t_14);
              #endif
              ++__pyx_t_14;
            }
            if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7264, __pyx_L41_error)
          } else {
            __pyx_t_7 = __pyx_t_17(__pyx_t_6);
            if (unlikely(!__pyx_t_7)) {
              PyObject* exc_type = PyErr_Occurred();
              if (exc_type) {
                if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 7264, __pyx_L41_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(0, 7264, __pyx_L41_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_13 = PyTuple_GET_ITEM(sequence, 1);
              __Pyx_INCREF(__pyx_t_13);
            } else {
              __pyx_t_2 = __Pyx_PyList_GetItemRefFast(sequence, 0, __Pyx_ReferenceSharing_SharedReference);
              if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7264, __pyx_L41_error)
              __Pyx_XGOTREF(__pyx_t_2);
              __pyx_t_13 = __Pyx_PyList_GetItemRefFast(sequence, 1, __Pyx_ReferenceSharing_SharedReference);
              if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 7264, __pyx_L41_error)
              __Pyx_XGOTREF(__pyx_t_13);
            }
            #else
            __pyx_t_2 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7264, __pyx_L41_error)
            __Pyx_GOTREF(__pyx_t_2);
            __pyx_t_13 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 7264, __pyx_L41_error)
            __Pyx_GOTREF(__pyx_t_13);
            #endif
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          } else {
            Py_ssize_t index = -1;
            __pyx_t_18 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 7264, __pyx_L41_error)
            __Pyx_GOTREF(__pyx_t_18);
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
            __pyx_t_8 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_18);
            index = 0; __pyx_t_2 = __pyx_t_8(__pyx_t_18); if (unlikely(!__pyx_t_2)) goto __pyx_L44_unpacking_failed;
            __Pyx_GOTREF(__pyx_t_2);
            index = 1; __pyx_t_13 = __pyx_t_8(__pyx_t_18); if (unlikely(!__pyx_t_13)) goto __pyx_L44_unpacking_failed;
            __Pyx_GOTREF(__pyx_t_13);
            if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_18), 2) < (0)) __PYX_ERR(0, 7264, __pyx_L41_error)
            __pyx_t_8 = NULL;
            __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
            goto __pyx_L45_unpacking_done;
            __pyx_L44_unpacking_failed:;
            __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
            __pyx_t_8 = NULL;
            if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
            __PYX_ERR(0, 7264, __pyx_L41_error)
            __pyx_L45_unpacking_done:;
          }
          __Pyx_XDECREF_SET(__pyx_9genexpr24__pyx_v_i, __pyx_t_2);
          __pyx_t_2 = 0;
          __Pyx_XDECREF_SET(__pyx_9genexpr24__pyx_v_numv, __pyx_t_13);
          __pyx_t_13 = 0;
          __pyx_t_7 = PyObject_RichCompare(__pyx_9genexpr24__pyx_v_numv, __pyx_v_n, Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7264, __pyx_L41_error)
          __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_11 < 0))) __PYX_ERR(0, 7264, __pyx_L41_error)
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          if (__pyx_t_11) {
            if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_9genexpr24__pyx_v_i))) __PYX_ERR(0, 7264, __pyx_L41_error)
          }
        }
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_XDECREF(__pyx_9genexpr24__pyx_v_i); __pyx_9genexpr24__pyx_v_i = 0;
        __Pyx_XDECREF(__pyx_9genexpr24__pyx_v_numv); __pyx_9genexpr24__pyx_v_numv = 0;
        goto __pyx_L48_exit_scope;
        __pyx_L41_error:;
        __Pyx_XDECREF(__pyx_9genexpr24__pyx_v_i); __pyx_9genexpr24__pyx_v_i = 0;
        __Pyx_XDECREF(__pyx_9genexpr24__pyx_v_numv); __pyx_9genexpr24__pyx_v_numv = 0;
        goto __pyx_L1_error;
        __pyx_L48_exit_scope:;
      } /* exit inner scope */
      __Pyx_DECREF_SET(__pyx_v_idx, ((PyObject*)__pyx_t_3));
      __pyx_t_3 = 0;

      /* "netCDF4/_netCDF4.pyx":7265
 *                 # Get the list of indices for variable 'n'.
 *                 idx = [i for i,numv in lst if numv == n]
 *                 if idx:             # <<<<<<<<<<<<<<
 *                     # Rebuild slicing expression for dimension 0.
 *                     newSlice[0] = slice(idx[0], idx[-1] + 1, step)
*/
      {
        Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_v_idx);
        if (unlikely(((!CYTHON_ASSUME_SAFE_SIZE) && __pyx_temp < 0))) __PYX_ERR(0, 7265, __pyx_L1_error)
        __pyx_t_11 = (__pyx_temp != 0);
      }

      if (__pyx_t_11) {

        /* "netCDF4/_netCDF4.pyx":7267
 *                 if idx:
 *                     # Rebuild slicing expression for dimension 0.
 *                     newSlice[0] = slice(idx[0], idx[-1] + 1, step)             # <<<<<<<<<<<<<<
 *                     # Extract records from the var, and append them to a list
 *                     # of arrays.
*/
        __pyx_t_3 = __Pyx_GetItemInt_List(__pyx_v_idx, 0, long, 1, __Pyx_PyLong_From_long, 1, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7267, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_6 = __Pyx_GetItemInt_List(__pyx_v_idx, -1L, long, 1, __Pyx_PyLong_From_long, 1, 1, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7267, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_7 = __Pyx_PyLong_AddObjC(__pyx_t_6, __pyx_mstate_global->__pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7267, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_6 = PySlice_New(__pyx_t_3, __pyx_t_7, __pyx_v_step); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7267, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        if (unlikely((__Pyx_SetItemInt(__pyx_v_newSlice, 0, __pyx_t_6, long, 1, __Pyx_PyLong_From_long, 1, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference) < 0))) __PYX_ERR(0, 7267, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

        /* "netCDF4/_netCDF4.pyx":7270
 *                     # Extract records from the var, and append them to a list
 *                     # of arrays.
 *                     dat = Variable.__getitem__(self._recVar[n],tuple(newSlice))             # <<<<<<<<<<<<<<
 *                     if ma.isMA(dat) and not ismasked:
 *                         ismasked=True
*/
        __pyx_t_7 = ((PyObject *)__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Variable);
        __Pyx_INCREF(__pyx_t_7);
        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_recVar); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7270, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_13 = __Pyx_PyObject_GetItem(__pyx_t_3, __pyx_v_n); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 7270, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_13);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_t_3 = PyList_AsTuple(__pyx_v_newSlice); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7270, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_5 = 0;
        {
          PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_t_13, __pyx_t_3};
          __pyx_t_6 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_getitem, __pyx_callargs+__pyx_t_5, (3-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
          __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7270, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
        }
        __Pyx_XDECREF_SET(__pyx_v_dat, __pyx_t_6);
        __pyx_t_6 = 0;

        /* "netCDF4/_netCDF4.pyx":7271
 *                     # of arrays.
 *                     dat = Variable.__getitem__(self._recVar[n],tuple(newSlice))
 *                     if ma.isMA(dat) and not ismasked:             # <<<<<<<<<<<<<<
 *                         ismasked=True
 *                         fill_value = dat.fill_value
*/
        __pyx_t_3 = NULL;
        __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_ma); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 7271, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_13);
        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_isMA); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7271, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
        __pyx_t_5 = 1;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_7))) {
          __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_7);
          assert(__pyx_t_3);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7);
          __Pyx_INCREF(__pyx_t_3);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_7, __pyx__function);
          __pyx_t_5 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_dat};
          __pyx_t_6 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__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_6)) __PYX_ERR(0, 7271, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
        }
        __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 7271, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        if (__pyx_t_12) {
        } else {
          __pyx_t_11 = __pyx_t_12;
          goto __pyx_L51_bool_binop_done;
        }
        __pyx_t_12 = (!__pyx_v_ismasked);
        __pyx_t_11 = __pyx_t_12;
        __pyx_L51_bool_binop_done:;
        if (__pyx_t_11) {

          /* "netCDF4/_netCDF4.pyx":7272
 *                     dat = Variable.__getitem__(self._recVar[n],tuple(newSlice))
 *                     if ma.isMA(dat) and not ismasked:
 *                         ismasked=True             # <<<<<<<<<<<<<<
 *                         fill_value = dat.fill_value
 *                     lstArr.append(dat)
*/
          __pyx_v_ismasked = 1;

          /* "netCDF4/_netCDF4.pyx":7273
 *                     if ma.isMA(dat) and not ismasked:
 *                         ismasked=True
 *                         fill_value = dat.fill_value             # <<<<<<<<<<<<<<
 *                     lstArr.append(dat)
 *             if ismasked:
*/
          __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_dat, __pyx_mstate_global->__pyx_n_u_fill_value); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7273, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_XDECREF_SET(__pyx_v_fill_value, __pyx_t_6);
          __pyx_t_6 = 0;

          /* "netCDF4/_netCDF4.pyx":7271
 *                     # of arrays.
 *                     dat = Variable.__getitem__(self._recVar[n],tuple(newSlice))
 *                     if ma.isMA(dat) and not ismasked:             # <<<<<<<<<<<<<<
 *                         ismasked=True
 *                         fill_value = dat.fill_value
*/
        }

        /* "netCDF4/_netCDF4.pyx":7274
 *                         ismasked=True
 *                         fill_value = dat.fill_value
 *                     lstArr.append(dat)             # <<<<<<<<<<<<<<
 *             if ismasked:
 *                 lstArr = ma.concatenate(lstArr)
*/
        __pyx_t_16 = __Pyx_PyObject_Append(__pyx_v_lstArr, __pyx_v_dat); if (unlikely(__pyx_t_16 == ((int)-1))) __PYX_ERR(0, 7274, __pyx_L1_error)

        /* "netCDF4/_netCDF4.pyx":7265
 *                 # Get the list of indices for variable 'n'.
 *                 idx = [i for i,numv in lst if numv == n]
 *                 if idx:             # <<<<<<<<<<<<<<
 *                     # Rebuild slicing expression for dimension 0.
 *                     newSlice[0] = slice(idx[0], idx[-1] + 1, step)
*/
      }

      /* "netCDF4/_netCDF4.pyx":7262
 *             lstArr = []
 *             ismasked = False
 *             for n in range(nv):             # <<<<<<<<<<<<<<
 *                 # Get the list of indices for variable 'n'.
 *                 idx = [i for i,numv in lst if numv == n]
*/
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "netCDF4/_netCDF4.pyx":7275
 *                         fill_value = dat.fill_value
 *                     lstArr.append(dat)
 *             if ismasked:             # <<<<<<<<<<<<<<
 *                 lstArr = ma.concatenate(lstArr)
 *             else:
*/
    if (__pyx_v_ismasked) {

      /* "netCDF4/_netCDF4.pyx":7276
 *                     lstArr.append(dat)
 *             if ismasked:
 *                 lstArr = ma.concatenate(lstArr)             # <<<<<<<<<<<<<<
 *             else:
 *                 lstArr = numpy.concatenate(lstArr)
*/
      __pyx_t_6 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_ma); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7276, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_concatenate); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7276, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_5 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_3))) {
        __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
        assert(__pyx_t_6);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
        __pyx_t_5 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_v_lstArr};
        __pyx_t_4 = __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_6); __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 7276, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
      }
      __Pyx_DECREF_SET(__pyx_v_lstArr, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "netCDF4/_netCDF4.pyx":7275
 *                         fill_value = dat.fill_value
 *                     lstArr.append(dat)
 *             if ismasked:             # <<<<<<<<<<<<<<
 *                 lstArr = ma.concatenate(lstArr)
 *             else:
*/
      goto __pyx_L54;
    }

    /* "netCDF4/_netCDF4.pyx":7278
 *                 lstArr = ma.concatenate(lstArr)
 *             else:
 *                 lstArr = numpy.concatenate(lstArr)             # <<<<<<<<<<<<<<
 *             if lstArr.dtype != data.dtype: data = data.astype(lstArr.dtype)
 *             # sometimes there are legitimate singleton dimensions, in which
*/
    /*else*/ {
      __pyx_t_3 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7278, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_concatenate); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7278, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_5 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_7))) {
        __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_7);
        assert(__pyx_t_3);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_7, __pyx__function);
        __pyx_t_5 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_lstArr};
        __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__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_4)) __PYX_ERR(0, 7278, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
      }
      __Pyx_DECREF_SET(__pyx_v_lstArr, __pyx_t_4);
      __pyx_t_4 = 0;
    }
    __pyx_L54:;

    /* "netCDF4/_netCDF4.pyx":7279
 *             else:
 *                 lstArr = numpy.concatenate(lstArr)
 *             if lstArr.dtype != data.dtype: data = data.astype(lstArr.dtype)             # <<<<<<<<<<<<<<
 *             # sometimes there are legitimate singleton dimensions, in which
 *             # case the array shapes won't conform. If so, a ValueError will
*/
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_lstArr, __pyx_mstate_global->__pyx_n_u_dtype); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 7279, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_mstate_global->__pyx_n_u_dtype); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7279, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_3 = PyObject_RichCompare(__pyx_t_4, __pyx_t_7, Py_NE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7279, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_11 < 0))) __PYX_ERR(0, 7279, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__pyx_t_11) {
      __pyx_t_7 = __pyx_v_data;
      __Pyx_INCREF(__pyx_t_7);
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_lstArr, __pyx_mstate_global->__pyx_n_u_dtype); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 7279, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = 0;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_4};
        __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_astype, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7279, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
      }
      __Pyx_DECREF_SET(__pyx_v_data, __pyx_t_3);
      __pyx_t_3 = 0;
    }

    /* "netCDF4/_netCDF4.pyx":7283
 *             # case the array shapes won't conform. If so, a ValueError will
 *             # result, and no squeeze will be done.
 *             try:             # <<<<<<<<<<<<<<
 *                 data[tuple(ind)] = lstArr.squeeze()
 *             except ValueError:
*/
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21);
      __Pyx_XGOTREF(__pyx_t_19);
      __Pyx_XGOTREF(__pyx_t_20);
      __Pyx_XGOTREF(__pyx_t_21);
      /*try:*/ {

        /* "netCDF4/_netCDF4.pyx":7284
 *             # result, and no squeeze will be done.
 *             try:
 *                 data[tuple(ind)] = lstArr.squeeze()             # <<<<<<<<<<<<<<
 *             except ValueError:
 *                 data[tuple(ind)] = lstArr
*/
        __pyx_t_4 = __pyx_v_lstArr;
        __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_squeeze, __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(0, 7284, __pyx_L56_error)
          __Pyx_GOTREF(__pyx_t_3);
        }
        __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_v_ind); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 7284, __pyx_L56_error)
        __Pyx_GOTREF(__pyx_t_4);
        if (unlikely((PyObject_SetItem(__pyx_v_data, __pyx_t_4, __pyx_t_3) < 0))) __PYX_ERR(0, 7284, __pyx_L56_error)
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

        /* "netCDF4/_netCDF4.pyx":7283
 *             # case the array shapes won't conform. If so, a ValueError will
 *             # result, and no squeeze will be done.
 *             try:             # <<<<<<<<<<<<<<
 *                 data[tuple(ind)] = lstArr.squeeze()
 *             except ValueError:
*/
      }
      __Pyx_XDECREF(__pyx_t_19); __pyx_t_19 = 0;
      __Pyx_XDECREF(__pyx_t_20); __pyx_t_20 = 0;
      __Pyx_XDECREF(__pyx_t_21); __pyx_t_21 = 0;
      goto __pyx_L63_try_end;
      __pyx_L56_error:;
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 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_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;

      /* "netCDF4/_netCDF4.pyx":7285
 *             try:
 *                 data[tuple(ind)] = lstArr.squeeze()
 *             except ValueError:             # <<<<<<<<<<<<<<
 *                 data[tuple(ind)] = lstArr
 * 
*/
      __pyx_t_22 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_ValueError))));
      if (__pyx_t_22) {
        __Pyx_AddTraceback("netCDF4._netCDF4._Variable.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_4, &__pyx_t_7) < 0) __PYX_ERR(0, 7285, __pyx_L58_except_error)
        __Pyx_XGOTREF(__pyx_t_3);
        __Pyx_XGOTREF(__pyx_t_4);
        __Pyx_XGOTREF(__pyx_t_7);

        /* "netCDF4/_netCDF4.pyx":7286
 *                 data[tuple(ind)] = lstArr.squeeze()
 *             except ValueError:
 *                 data[tuple(ind)] = lstArr             # <<<<<<<<<<<<<<
 * 
 *         # Remove extra singleton dimensions.
*/
        __pyx_t_6 = __Pyx_PySequence_Tuple(__pyx_v_ind); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7286, __pyx_L58_except_error)
        __Pyx_GOTREF(__pyx_t_6);
        if (unlikely((PyObject_SetItem(__pyx_v_data, __pyx_t_6, __pyx_v_lstArr) < 0))) __PYX_ERR(0, 7286, __pyx_L58_except_error)
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        goto __pyx_L57_exception_handled;
      }
      goto __pyx_L58_except_error;

      /* "netCDF4/_netCDF4.pyx":7283
 *             # case the array shapes won't conform. If so, a ValueError will
 *             # result, and no squeeze will be done.
 *             try:             # <<<<<<<<<<<<<<
 *                 data[tuple(ind)] = lstArr.squeeze()
 *             except ValueError:
*/
      __pyx_L58_except_error:;
      __Pyx_XGIVEREF(__pyx_t_19);
      __Pyx_XGIVEREF(__pyx_t_20);
      __Pyx_XGIVEREF(__pyx_t_21);
      __Pyx_ExceptionReset(__pyx_t_19, __pyx_t_20, __pyx_t_21);
      goto __pyx_L1_error;
      __pyx_L57_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_19);
      __Pyx_XGIVEREF(__pyx_t_20);
      __Pyx_XGIVEREF(__pyx_t_21);
      __Pyx_ExceptionReset(__pyx_t_19, __pyx_t_20, __pyx_t_21);
      __pyx_L63_try_end:;
    }

    /* "netCDF4/_netCDF4.pyx":7225
 *         # Number of variables making up the MFVariable.Variable.
 *         nv = len(self._recLen)
 *         for (start,count,stride,ind) in zip(strt, cnt, strd, put_ind):             # <<<<<<<<<<<<<<
 *             # make sure count=-1 becomes count=1
 *             count = [abs(cnt) for cnt in count]
*/
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":7289
 * 
 *         # Remove extra singleton dimensions.
 *         data = data[tuple(squeeze)]             # <<<<<<<<<<<<<<
 * 
 *         # if no masked elements, return numpy array.
*/
  __pyx_t_1 = __Pyx_PySequence_Tuple(__pyx_v_squeeze); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7289, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_v_data, __pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7289, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF_SET(__pyx_v_data, __pyx_t_7);
  __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":7292
 * 
 *         # if no masked elements, return numpy array.
 *         if ma.isMA(data) and not data.mask.any():             # <<<<<<<<<<<<<<
 *             data = data.filled()
 * 
*/
  __pyx_t_1 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_ma); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 7292, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_isMA); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7292, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_5 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(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_5 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_v_data};
    __pyx_t_7 = __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_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7292, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
  }
  __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 7292, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (__pyx_t_12) {
  } else {
    __pyx_t_11 = __pyx_t_12;
    goto __pyx_L68_bool_binop_done;
  }
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_mstate_global->__pyx_n_u_mask); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7292, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_5 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_7 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_any, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7292, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
  }
  __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 7292, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_23 = (!__pyx_t_12);
  __pyx_t_11 = __pyx_t_23;
  __pyx_L68_bool_binop_done:;
  if (__pyx_t_11) {

    /* "netCDF4/_netCDF4.pyx":7293
 *         # if no masked elements, return numpy array.
 *         if ma.isMA(data) and not data.mask.any():
 *             data = data.filled()             # <<<<<<<<<<<<<<
 * 
 *         return data
*/
    __pyx_t_1 = __pyx_v_data;
    __Pyx_INCREF(__pyx_t_1);
    __pyx_t_5 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_1, NULL};
      __pyx_t_7 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_filled, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7293, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
    }
    __Pyx_DECREF_SET(__pyx_v_data, __pyx_t_7);
    __pyx_t_7 = 0;

    /* "netCDF4/_netCDF4.pyx":7292
 * 
 *         # if no masked elements, return numpy array.
 *         if ma.isMA(data) and not data.mask.any():             # <<<<<<<<<<<<<<
 *             data = data.filled()
 * 
*/
  }

  /* "netCDF4/_netCDF4.pyx":7295
 *             data = data.filled()
 * 
 *         return data             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_data);
  __pyx_r = __pyx_v_data;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":7194
 *         for v in self._recVar:
 *             v.set_always_mask(val)
 *     def __getitem__(self, elem):             # <<<<<<<<<<<<<<
 *         """Get records from a concatenated set of variables."""
 * 
*/

  /* 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_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_18);
  __Pyx_AddTraceback("netCDF4._netCDF4._Variable.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_start);
  __Pyx_XDECREF(__pyx_v_count);
  __Pyx_XDECREF(__pyx_v_stride);
  __Pyx_XDECREF(__pyx_v_put_ind);
  __Pyx_XDECREF(__pyx_v_datashape);
  __Pyx_XDECREF(__pyx_v_data);
  __Pyx_XDECREF(__pyx_v_squeeze);
  __Pyx_XDECREF(__pyx_v_i);
  __Pyx_XDECREF(__pyx_v_n);
  __Pyx_XDECREF(__pyx_v_strt);
  __Pyx_XDECREF(__pyx_v_cnt);
  __Pyx_XDECREF(__pyx_v_strd);
  __Pyx_XDECREF(__pyx_v_ind);
  __Pyx_XDECREF(__pyx_v_sta);
  __Pyx_XDECREF(__pyx_v_step);
  __Pyx_XDECREF(__pyx_v_stop);
  __Pyx_XDECREF(__pyx_v_idx);
  __Pyx_XDECREF(__pyx_v_vid);
  __Pyx_XDECREF(__pyx_v_k);
  __Pyx_XDECREF(__pyx_v_lst);
  __Pyx_XDECREF(__pyx_v_newSlice);
  __Pyx_XDECREF(__pyx_v_s);
  __Pyx_XDECREF(__pyx_v_lstArr);
  __Pyx_XDECREF(__pyx_v_dat);
  __Pyx_XDECREF(__pyx_v_fill_value);
  __Pyx_XDECREF(__pyx_9genexpr23__pyx_v_cnt);
  __Pyx_XDECREF(__pyx_9genexpr24__pyx_v_i);
  __Pyx_XDECREF(__pyx_9genexpr24__pyx_v_numv);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":7334
 *     """
 * 
 *     def __init__(self, time, units=None, calendar=None):             # <<<<<<<<<<<<<<
 *         """
 *         **`__init__(self, time, units=None, calendar=None)`**
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_6MFTime_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_7netCDF4_8_netCDF4_6MFTime___init__, "\n        **`__init__(self, time, units=None, calendar=None)`**\n\n        Create a time Variable with units consistent across a multifile\n        dataset.\n\n        **`time`**: Time variable from a `MFDataset`.\n\n        **`units`**: Time units, for example, `'days since 1979-01-01'`. If `None`,\n        use the units from the master variable.\n\n        **`calendar`**: Calendar overload to use across all files, for example,\n        `'standard'` or `'gregorian'`. If `None`, check that the calendar attribute\n        is present on each variable and values are unique across files raising a\n        `ValueError` otherwise.\n        ");
static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_6MFTime_1__init__ = {"__init__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_6MFTime_1__init__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_6MFTime___init__};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_6MFTime_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;
  PyObject *__pyx_v_time = 0;
  PyObject *__pyx_v_units = 0;
  PyObject *__pyx_v_calendar = 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("__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_self,&__pyx_mstate_global->__pyx_n_u_time,&__pyx_mstate_global->__pyx_n_u_units,&__pyx_mstate_global->__pyx_n_u_calendar,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 7334, __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(0, 7334, __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(0, 7334, __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(0, 7334, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 7334, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_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(0, 7334, __pyx_L3_error)
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None));
      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("__init__", 0, 2, 4, i); __PYX_ERR(0, 7334, __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(0, 7334, __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(0, 7334, __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(0, 7334, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 7334, __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 *)Py_None));
    }
    __pyx_v_self = values[0];
    __pyx_v_time = values[1];
    __pyx_v_units = values[2];
    __pyx_v_calendar = values[3];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 4, __pyx_nargs); __PYX_ERR(0, 7334, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4.MFTime.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_6MFTime___init__(__pyx_self, __pyx_v_self, __pyx_v_time, __pyx_v_units, __pyx_v_calendar);

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6MFTime___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_time, PyObject *__pyx_v_units, PyObject *__pyx_v_calendar) {
  PyObject *__pyx_v_datetime = NULL;
  PyObject *__pyx_v_name = NULL;
  PyObject *__pyx_v_value = NULL;
  PyObject *__pyx_v_calendars = NULL;
  PyObject *__pyx_v_idx = NULL;
  PyObject *__pyx_v_t = NULL;
  PyObject *__pyx_v_msg = NULL;
  PyObject *__pyx_v_ref_date = NULL;
  PyObject *__pyx_v_ref_num = NULL;
  PyObject *__pyx_v_i0 = NULL;
  PyObject *__pyx_v_i1 = NULL;
  PyObject *__pyx_v_i = NULL;
  PyObject *__pyx_v_v = NULL;
  PyObject *__pyx_v_n = NULL;
  PyObject *__pyx_v_num = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  int __pyx_t_9;
  PyObject *(*__pyx_t_10)(PyObject *);
  int __pyx_t_11;
  PyObject *__pyx_t_12 = NULL;
  size_t __pyx_t_13;
  PyObject *__pyx_t_14 = NULL;
  PyObject *__pyx_t_15 = NULL;
  PyObject *__pyx_t_16 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);
  __Pyx_INCREF(__pyx_v_calendar);

  /* "netCDF4/_netCDF4.pyx":7351
 *         `ValueError` otherwise.
 *         """
 *         import datetime             # <<<<<<<<<<<<<<
 *         self.__time = time
 * 
*/
  __pyx_t_2 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_datetime, 0, 0, NULL, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7351, __pyx_L1_error)
  __pyx_t_1 = __pyx_t_2;
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_datetime = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":7352
 *         """
 *         import datetime
 *         self.__time = time             # <<<<<<<<<<<<<<
 * 
 *         # copy attributes from master time variable.
*/
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_MFTime__time, __pyx_v_time) < (0)) __PYX_ERR(0, 7352, __pyx_L1_error)

  /* "netCDF4/_netCDF4.pyx":7355
 * 
 *         # copy attributes from master time variable.
 *         for name, value in time.__dict__.items():             # <<<<<<<<<<<<<<
 *             self.__dict__[name] = value
 * 
*/
  __pyx_t_3 = 0;
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_time, __pyx_mstate_global->__pyx_n_u_dict); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7355, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (unlikely(__pyx_t_6 == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "items");
    __PYX_ERR(0, 7355, __pyx_L1_error)
  }
  __pyx_t_7 = __Pyx_dict_iterator(__pyx_t_6, 0, __pyx_mstate_global->__pyx_n_u_items, (&__pyx_t_4), (&__pyx_t_5)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7355, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_XDECREF(__pyx_t_1);
  __pyx_t_1 = __pyx_t_7;
  __pyx_t_7 = 0;
  while (1) {
    __pyx_t_8 = __Pyx_dict_iter_next(__pyx_t_1, __pyx_t_4, &__pyx_t_3, &__pyx_t_7, &__pyx_t_6, NULL, __pyx_t_5);
    if (unlikely(__pyx_t_8 == 0)) break;
    if (unlikely(__pyx_t_8 == -1)) __PYX_ERR(0, 7355, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_7);
    __pyx_t_7 = 0;
    __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_6);
    __pyx_t_6 = 0;

    /* "netCDF4/_netCDF4.pyx":7356
 *         # copy attributes from master time variable.
 *         for name, value in time.__dict__.items():
 *             self.__dict__[name] = value             # <<<<<<<<<<<<<<
 * 
 *         # Make sure calendar attribute present in all files if no default calendar
*/
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_dict); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7356, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    if (unlikely((PyObject_SetItem(__pyx_t_6, __pyx_v_name, __pyx_v_value) < 0))) __PYX_ERR(0, 7356, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":7360
 *         # Make sure calendar attribute present in all files if no default calendar
 *         # is provided. Also assert this value is the same across files.
 *         if calendar is None:             # <<<<<<<<<<<<<<
 *             calendars = [None] * len(self._recVar)
 *             for idx, t in enumerate(self._recVar):
*/
  __pyx_t_9 = (__pyx_v_calendar == Py_None);
  if (__pyx_t_9) {

    /* "netCDF4/_netCDF4.pyx":7361
 *         # is provided. Also assert this value is the same across files.
 *         if calendar is None:
 *             calendars = [None] * len(self._recVar)             # <<<<<<<<<<<<<<
 *             for idx, t in enumerate(self._recVar):
 *                 if not hasattr(t, 'calendar'):
*/
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_recVar); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7361, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_4 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 7361, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = PyList_New(1 * ((__pyx_t_4<0) ? 0:__pyx_t_4)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7361, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    { Py_ssize_t __pyx_temp;
      for (__pyx_temp=0; __pyx_temp < __pyx_t_4; __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(0, 7361, __pyx_L1_error);
      }
    }
    __pyx_v_calendars = __pyx_t_1;
    __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":7362
 *         if calendar is None:
 *             calendars = [None] * len(self._recVar)
 *             for idx, t in enumerate(self._recVar):             # <<<<<<<<<<<<<<
 *                 if not hasattr(t, 'calendar'):
 *                     msg = 'MFTime requires that the time variable in all files ' \
*/
    __Pyx_INCREF(__pyx_mstate_global->__pyx_int_0);
    __pyx_t_1 = __pyx_mstate_global->__pyx_int_0;
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_recVar); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7362, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    if (likely(PyList_CheckExact(__pyx_t_6)) || PyTuple_CheckExact(__pyx_t_6)) {
      __pyx_t_7 = __pyx_t_6; __Pyx_INCREF(__pyx_t_7);
      __pyx_t_4 = 0;
      __pyx_t_10 = NULL;
    } else {
      __pyx_t_4 = -1; __pyx_t_7 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7362, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_10 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_7); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 7362, __pyx_L1_error)
    }
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    for (;;) {
      if (likely(!__pyx_t_10)) {
        if (likely(PyList_CheckExact(__pyx_t_7))) {
          {
            Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_7);
            #if !CYTHON_ASSUME_SAFE_SIZE
            if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 7362, __pyx_L1_error)
            #endif
            if (__pyx_t_4 >= __pyx_temp) break;
          }
          __pyx_t_6 = __Pyx_PyList_GetItemRefFast(__pyx_t_7, __pyx_t_4, __Pyx_ReferenceSharing_OwnStrongReference);
          ++__pyx_t_4;
        } else {
          {
            Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_7);
            #if !CYTHON_ASSUME_SAFE_SIZE
            if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 7362, __pyx_L1_error)
            #endif
            if (__pyx_t_4 >= __pyx_temp) break;
          }
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_6 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_7, __pyx_t_4));
          #else
          __pyx_t_6 = __Pyx_PySequence_ITEM(__pyx_t_7, __pyx_t_4);
          #endif
          ++__pyx_t_4;
        }
        if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7362, __pyx_L1_error)
      } else {
        __pyx_t_6 = __pyx_t_10(__pyx_t_7);
        if (unlikely(!__pyx_t_6)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 7362, __pyx_L1_error)
            PyErr_Clear();
          }
          break;
        }
      }
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_XDECREF_SET(__pyx_v_t, __pyx_t_6);
      __pyx_t_6 = 0;
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_XDECREF_SET(__pyx_v_idx, __pyx_t_1);
      __pyx_t_6 = __Pyx_PyLong_AddObjC(__pyx_t_1, __pyx_mstate_global->__pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7362, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_1);
      __pyx_t_1 = __pyx_t_6;
      __pyx_t_6 = 0;

      /* "netCDF4/_netCDF4.pyx":7363
 *             calendars = [None] * len(self._recVar)
 *             for idx, t in enumerate(self._recVar):
 *                 if not hasattr(t, 'calendar'):             # <<<<<<<<<<<<<<
 *                     msg = 'MFTime requires that the time variable in all files ' \
 *                           'have a calendar attribute if no default calendar is provided.'
*/
      __pyx_t_9 = __Pyx_HasAttr(__pyx_v_t, __pyx_mstate_global->__pyx_n_u_calendar); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(0, 7363, __pyx_L1_error)
      __pyx_t_11 = (!__pyx_t_9);
      if (unlikely(__pyx_t_11)) {

        /* "netCDF4/_netCDF4.pyx":7364
 *             for idx, t in enumerate(self._recVar):
 *                 if not hasattr(t, 'calendar'):
 *                     msg = 'MFTime requires that the time variable in all files ' \             # <<<<<<<<<<<<<<
 *                           'have a calendar attribute if no default calendar is provided.'
 *                     raise ValueError(msg)
*/
        __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u_MFTime_requires_that_the_time_va);
        __pyx_v_msg = __pyx_mstate_global->__pyx_kp_u_MFTime_requires_that_the_time_va;

        /* "netCDF4/_netCDF4.pyx":7366
 *                     msg = 'MFTime requires that the time variable in all files ' \
 *                           'have a calendar attribute if no default calendar is provided.'
 *                     raise ValueError(msg)             # <<<<<<<<<<<<<<
 *                 else:
 *                     calendars[idx] = t.calendar
*/
        __pyx_t_12 = NULL;
        __pyx_t_13 = 1;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_12, __pyx_v_msg};
          __pyx_t_6 = __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_12); __pyx_t_12 = 0;
          if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7366, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
        }
        __Pyx_Raise(__pyx_t_6, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __PYX_ERR(0, 7366, __pyx_L1_error)

        /* "netCDF4/_netCDF4.pyx":7363
 *             calendars = [None] * len(self._recVar)
 *             for idx, t in enumerate(self._recVar):
 *                 if not hasattr(t, 'calendar'):             # <<<<<<<<<<<<<<
 *                     msg = 'MFTime requires that the time variable in all files ' \
 *                           'have a calendar attribute if no default calendar is provided.'
*/
      }

      /* "netCDF4/_netCDF4.pyx":7368
 *                     raise ValueError(msg)
 *                 else:
 *                     calendars[idx] = t.calendar             # <<<<<<<<<<<<<<
 *             calendars = set(calendars)
 *             if len(calendars) > 1:
*/
      /*else*/ {
        __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_t, __pyx_mstate_global->__pyx_n_u_calendar); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7368, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        if (unlikely((PyObject_SetItem(__pyx_v_calendars, __pyx_v_idx, __pyx_t_6) < 0))) __PYX_ERR(0, 7368, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      }

      /* "netCDF4/_netCDF4.pyx":7362
 *         if calendar is None:
 *             calendars = [None] * len(self._recVar)
 *             for idx, t in enumerate(self._recVar):             # <<<<<<<<<<<<<<
 *                 if not hasattr(t, 'calendar'):
 *                     msg = 'MFTime requires that the time variable in all files ' \
*/
    }
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":7369
 *                 else:
 *                     calendars[idx] = t.calendar
 *             calendars = set(calendars)             # <<<<<<<<<<<<<<
 *             if len(calendars) > 1:
 *                 msg = 'MFTime requires that the same time calendar is ' \
*/
    __pyx_t_1 = PySet_New(__pyx_v_calendars); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7369, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_calendars, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "netCDF4/_netCDF4.pyx":7370
 *                     calendars[idx] = t.calendar
 *             calendars = set(calendars)
 *             if len(calendars) > 1:             # <<<<<<<<<<<<<<
 *                 msg = 'MFTime requires that the same time calendar is ' \
 *                       'used by all files if no default calendar is provided.'
*/
    __pyx_t_4 = PyObject_Length(__pyx_v_calendars); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 7370, __pyx_L1_error)
    __pyx_t_11 = (__pyx_t_4 > 1);
    if (unlikely(__pyx_t_11)) {

      /* "netCDF4/_netCDF4.pyx":7371
 *             calendars = set(calendars)
 *             if len(calendars) > 1:
 *                 msg = 'MFTime requires that the same time calendar is ' \             # <<<<<<<<<<<<<<
 *                       'used by all files if no default calendar is provided.'
 *                 raise ValueError(msg)
*/
      __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u_MFTime_requires_that_the_same_ti);
      __pyx_v_msg = __pyx_mstate_global->__pyx_kp_u_MFTime_requires_that_the_same_ti;

      /* "netCDF4/_netCDF4.pyx":7373
 *                 msg = 'MFTime requires that the same time calendar is ' \
 *                       'used by all files if no default calendar is provided.'
 *                 raise ValueError(msg)             # <<<<<<<<<<<<<<
 *             else:
 *                 calendar = list(calendars)[0]
*/
      __pyx_t_7 = NULL;
      __pyx_t_13 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_v_msg};
        __pyx_t_1 = __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_7); __pyx_t_7 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7373, __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(0, 7373, __pyx_L1_error)

      /* "netCDF4/_netCDF4.pyx":7370
 *                     calendars[idx] = t.calendar
 *             calendars = set(calendars)
 *             if len(calendars) > 1:             # <<<<<<<<<<<<<<
 *                 msg = 'MFTime requires that the same time calendar is ' \
 *                       'used by all files if no default calendar is provided.'
*/
    }

    /* "netCDF4/_netCDF4.pyx":7375
 *                 raise ValueError(msg)
 *             else:
 *                 calendar = list(calendars)[0]             # <<<<<<<<<<<<<<
 * 
 *         # Set calendar using the default or the unique calendar value across all files.
*/
    /*else*/ {
      __pyx_t_1 = PySequence_List(__pyx_v_calendars); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7375, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_7 = __Pyx_GetItemInt_List(__pyx_t_1, 0, long, 1, __Pyx_PyLong_From_long, 1, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7375, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF_SET(__pyx_v_calendar, __pyx_t_7);
      __pyx_t_7 = 0;
    }

    /* "netCDF4/_netCDF4.pyx":7360
 *         # Make sure calendar attribute present in all files if no default calendar
 *         # is provided. Also assert this value is the same across files.
 *         if calendar is None:             # <<<<<<<<<<<<<<
 *             calendars = [None] * len(self._recVar)
 *             for idx, t in enumerate(self._recVar):
*/
  }

  /* "netCDF4/_netCDF4.pyx":7378
 * 
 *         # Set calendar using the default or the unique calendar value across all files.
 *         self.calendar = calendar             # <<<<<<<<<<<<<<
 * 
 *         # Override units if units is specified.
*/
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_calendar, __pyx_v_calendar) < (0)) __PYX_ERR(0, 7378, __pyx_L1_error)

  /* "netCDF4/_netCDF4.pyx":7381
 * 
 *         # Override units if units is specified.
 *         self.units = units or time.units             # <<<<<<<<<<<<<<
 * 
 *         # Reference date to compute the difference between different time units.
*/
  __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_v_units); if (unlikely((__pyx_t_11 < 0))) __PYX_ERR(0, 7381, __pyx_L1_error)
  if (!__pyx_t_11) {
  } else {
    __Pyx_INCREF(__pyx_v_units);
    __pyx_t_7 = __pyx_v_units;
    goto __pyx_L11_bool_binop_done;
  }
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_time, __pyx_mstate_global->__pyx_n_u_units); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7381, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_7 = __pyx_t_1;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_L11_bool_binop_done:;
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_units, __pyx_t_7) < (0)) __PYX_ERR(0, 7381, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":7384
 * 
 *         # Reference date to compute the difference between different time units.
 *         ref_date = datetime.datetime(1900,1,1)             # <<<<<<<<<<<<<<
 *         ref_num = date2num(ref_date, self.units, self.calendar)
 * 
*/
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_datetime, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7384, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_mstate_global->__pyx_tuple[13], NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7384, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_v_ref_date = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":7385
 *         # Reference date to compute the difference between different time units.
 *         ref_date = datetime.datetime(1900,1,1)
 *         ref_num = date2num(ref_date, self.units, self.calendar)             # <<<<<<<<<<<<<<
 * 
 *         # Create delta vector: delta = ref_num(ref_date) - num(ref_date)
*/
  __pyx_t_7 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_date2num); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7385, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_units); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 7385, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_calendar); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 7385, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __pyx_t_13 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
    assert(__pyx_t_7);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_6);
    __Pyx_INCREF(__pyx_t_7);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_6, __pyx__function);
    __pyx_t_13 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[4] = {__pyx_t_7, __pyx_v_ref_date, __pyx_t_12, __pyx_t_14};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_6, __pyx_callargs+__pyx_t_13, (4-__pyx_t_13) | (__pyx_t_13*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7385, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_v_ref_num = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":7389
 *         # Create delta vector: delta = ref_num(ref_date) - num(ref_date)
 *         # So that ref_num(date) = num(date) + delta
 *         self.__delta = numpy.empty(len(self), time.dtype)             # <<<<<<<<<<<<<<
 * 
 *         i0 = 0; i1 = 0
*/
  __pyx_t_6 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_14, __pyx_mstate_global->__pyx_n_u_numpy); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 7389, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_mstate_global->__pyx_n_u_empty); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 7389, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  __pyx_t_4 = PyObject_Length(__pyx_v_self); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 7389, __pyx_L1_error)
  __pyx_t_14 = PyLong_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 7389, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_time, __pyx_mstate_global->__pyx_n_u_dtype); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7389, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_13 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_12))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_12);
    assert(__pyx_t_6);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_12);
    __Pyx_INCREF(__pyx_t_6);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_12, __pyx__function);
    __pyx_t_13 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_t_14, __pyx_t_7};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_12, __pyx_callargs+__pyx_t_13, (3-__pyx_t_13) | (__pyx_t_13*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7389, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_MFTime__delta, __pyx_t_1) < (0)) __PYX_ERR(0, 7389, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":7391
 *         self.__delta = numpy.empty(len(self), time.dtype)
 * 
 *         i0 = 0; i1 = 0             # <<<<<<<<<<<<<<
 *         for i,v in enumerate(self._recVar):
 *             n = self._recLen[i] # Length of time vector.
*/
  __Pyx_INCREF(__pyx_mstate_global->__pyx_int_0);
  __pyx_v_i0 = __pyx_mstate_global->__pyx_int_0;
  __Pyx_INCREF(__pyx_mstate_global->__pyx_int_0);
  __pyx_v_i1 = __pyx_mstate_global->__pyx_int_0;

  /* "netCDF4/_netCDF4.pyx":7392
 * 
 *         i0 = 0; i1 = 0
 *         for i,v in enumerate(self._recVar):             # <<<<<<<<<<<<<<
 *             n = self._recLen[i] # Length of time vector.
 *             num = date2num(ref_date, v.units, self.calendar)
*/
  __Pyx_INCREF(__pyx_mstate_global->__pyx_int_0);
  __pyx_t_1 = __pyx_mstate_global->__pyx_int_0;
  __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_recVar); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 7392, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  if (likely(PyList_CheckExact(__pyx_t_12)) || PyTuple_CheckExact(__pyx_t_12)) {
    __pyx_t_7 = __pyx_t_12; __Pyx_INCREF(__pyx_t_7);
    __pyx_t_4 = 0;
    __pyx_t_10 = NULL;
  } else {
    __pyx_t_4 = -1; __pyx_t_7 = PyObject_GetIter(__pyx_t_12); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7392, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_10 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_7); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 7392, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  for (;;) {
    if (likely(!__pyx_t_10)) {
      if (likely(PyList_CheckExact(__pyx_t_7))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_7);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 7392, __pyx_L1_error)
          #endif
          if (__pyx_t_4 >= __pyx_temp) break;
        }
        __pyx_t_12 = __Pyx_PyList_GetItemRefFast(__pyx_t_7, __pyx_t_4, __Pyx_ReferenceSharing_OwnStrongReference);
        ++__pyx_t_4;
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_7);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 7392, __pyx_L1_error)
          #endif
          if (__pyx_t_4 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_12 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_7, __pyx_t_4));
        #else
        __pyx_t_12 = __Pyx_PySequence_ITEM(__pyx_t_7, __pyx_t_4);
        #endif
        ++__pyx_t_4;
      }
      if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 7392, __pyx_L1_error)
    } else {
      __pyx_t_12 = __pyx_t_10(__pyx_t_7);
      if (unlikely(!__pyx_t_12)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 7392, __pyx_L1_error)
          PyErr_Clear();
        }
        break;
      }
    }
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_XDECREF_SET(__pyx_v_v, __pyx_t_12);
    __pyx_t_12 = 0;
    __Pyx_INCREF(__pyx_t_1);
    __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_1);
    __pyx_t_12 = __Pyx_PyLong_AddObjC(__pyx_t_1, __pyx_mstate_global->__pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 7392, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_1);
    __pyx_t_1 = __pyx_t_12;
    __pyx_t_12 = 0;

    /* "netCDF4/_netCDF4.pyx":7393
 *         i0 = 0; i1 = 0
 *         for i,v in enumerate(self._recVar):
 *             n = self._recLen[i] # Length of time vector.             # <<<<<<<<<<<<<<
 *             num = date2num(ref_date, v.units, self.calendar)
 *             i1 += n
*/
    __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_recLen); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 7393, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_14 = __Pyx_PyObject_GetItem(__pyx_t_12, __pyx_v_i); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 7393, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __Pyx_XDECREF_SET(__pyx_v_n, __pyx_t_14);
    __pyx_t_14 = 0;

    /* "netCDF4/_netCDF4.pyx":7394
 *         for i,v in enumerate(self._recVar):
 *             n = self._recLen[i] # Length of time vector.
 *             num = date2num(ref_date, v.units, self.calendar)             # <<<<<<<<<<<<<<
 *             i1 += n
 *             self.__delta[i0:i1] = ref_num - num
*/
    __pyx_t_12 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_date2num); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7394, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_v_v, __pyx_mstate_global->__pyx_n_u_units); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 7394, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_15);
    __pyx_t_16 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_calendar); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 7394, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_16);
    __pyx_t_13 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_6);
      assert(__pyx_t_12);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_12);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_6, __pyx__function);
      __pyx_t_13 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_12, __pyx_v_ref_date, __pyx_t_15, __pyx_t_16};
      __pyx_t_14 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_6, __pyx_callargs+__pyx_t_13, (4-__pyx_t_13) | (__pyx_t_13*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
      __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 7394, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_14);
    }
    __Pyx_XDECREF_SET(__pyx_v_num, __pyx_t_14);
    __pyx_t_14 = 0;

    /* "netCDF4/_netCDF4.pyx":7395
 *             n = self._recLen[i] # Length of time vector.
 *             num = date2num(ref_date, v.units, self.calendar)
 *             i1 += n             # <<<<<<<<<<<<<<
 *             self.__delta[i0:i1] = ref_num - num
 *             i0 += n
*/
    __pyx_t_14 = PyNumber_InPlaceAdd(__pyx_v_i1, __pyx_v_n); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 7395, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    __Pyx_DECREF_SET(__pyx_v_i1, __pyx_t_14);
    __pyx_t_14 = 0;

    /* "netCDF4/_netCDF4.pyx":7396
 *             num = date2num(ref_date, v.units, self.calendar)
 *             i1 += n
 *             self.__delta[i0:i1] = ref_num - num             # <<<<<<<<<<<<<<
 *             i0 += n
 * 
*/
    __pyx_t_14 = PyNumber_Subtract(__pyx_v_ref_num, __pyx_v_num); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 7396, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_MFTime__delta); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7396, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    if (__Pyx_PyObject_SetSlice(__pyx_t_6, __pyx_t_14, 0, 0, &__pyx_v_i0, &__pyx_v_i1, NULL, 0, 0, 1) < (0)) __PYX_ERR(0, 7396, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;

    /* "netCDF4/_netCDF4.pyx":7397
 *             i1 += n
 *             self.__delta[i0:i1] = ref_num - num
 *             i0 += n             # <<<<<<<<<<<<<<
 * 
 * 
*/
    __pyx_t_14 = PyNumber_InPlaceAdd(__pyx_v_i0, __pyx_v_n); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 7397, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    __Pyx_DECREF_SET(__pyx_v_i0, __pyx_t_14);
    __pyx_t_14 = 0;

    /* "netCDF4/_netCDF4.pyx":7392
 * 
 *         i0 = 0; i1 = 0
 *         for i,v in enumerate(self._recVar):             # <<<<<<<<<<<<<<
 *             n = self._recLen[i] # Length of time vector.
 *             num = date2num(ref_date, v.units, self.calendar)
*/
  }
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "netCDF4/_netCDF4.pyx":7334
 *     """
 * 
 *     def __init__(self, time, units=None, calendar=None):             # <<<<<<<<<<<<<<
 *         """
 *         **`__init__(self, time, units=None, calendar=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_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_XDECREF(__pyx_t_15);
  __Pyx_XDECREF(__pyx_t_16);
  __Pyx_AddTraceback("netCDF4._netCDF4.MFTime.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_datetime);
  __Pyx_XDECREF(__pyx_v_name);
  __Pyx_XDECREF(__pyx_v_value);
  __Pyx_XDECREF(__pyx_v_calendars);
  __Pyx_XDECREF(__pyx_v_idx);
  __Pyx_XDECREF(__pyx_v_t);
  __Pyx_XDECREF(__pyx_v_msg);
  __Pyx_XDECREF(__pyx_v_ref_date);
  __Pyx_XDECREF(__pyx_v_ref_num);
  __Pyx_XDECREF(__pyx_v_i0);
  __Pyx_XDECREF(__pyx_v_i1);
  __Pyx_XDECREF(__pyx_v_i);
  __Pyx_XDECREF(__pyx_v_v);
  __Pyx_XDECREF(__pyx_v_n);
  __Pyx_XDECREF(__pyx_v_num);
  __Pyx_XDECREF(__pyx_v_calendar);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "netCDF4/_netCDF4.pyx":7400
 * 
 * 
 *     def __getitem__(self, elem):             # <<<<<<<<<<<<<<
 *         return self.__time[elem] + self.__delta[elem]
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_6MFTime_3__getitem__(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_7netCDF4_8_netCDF4_6MFTime_3__getitem__ = {"__getitem__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_6MFTime_3__getitem__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_6MFTime_3__getitem__(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_elem = 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("__getitem__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 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,&__pyx_mstate_global->__pyx_n_u_elem,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 7400, __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(0, 7400, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 7400, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__getitem__", 0) < (0)) __PYX_ERR(0, 7400, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__getitem__", 1, 2, 2, i); __PYX_ERR(0, 7400, __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(0, 7400, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 7400, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
    __pyx_v_elem = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__getitem__", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 7400, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4.MFTime.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_6MFTime_2__getitem__(__pyx_self, __pyx_v_self, __pyx_v_elem);

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

static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6MFTime_2__getitem__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_elem) {
  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("__getitem__", 0);

  /* "netCDF4/_netCDF4.pyx":7401
 * 
 *     def __getitem__(self, elem):
 *         return self.__time[elem] + self.__delta[elem]             # <<<<<<<<<<<<<<
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_MFTime__time); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7401, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_v_elem); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7401, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_MFTime__delta); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7401, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_v_elem); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7401, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyNumber_Add(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7401, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "netCDF4/_netCDF4.pyx":7400
 * 
 * 
 *     def __getitem__(self, elem):             # <<<<<<<<<<<<<<
 *         return self.__time[elem] + self.__delta[elem]
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("netCDF4._netCDF4.MFTime.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":4
 *     int __Pyx_CheckUnpickleChecksum(long, long, long, long, const char*) except -1
 *     int __Pyx_UpdateUnpickledDict(object, object, Py_ssize_t) except -1
 * def __pyx_unpickle_Dimension(__pyx_type, long __pyx_checksum, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_result
 *     __Pyx_CheckUnpickleChecksum(__pyx_checksum, 0x0e20e8c, 0x951215d, 0xe8305e7, b'_data_model, _dimid, _grp, _grpid, _name')
*/

/* Python wrapper */
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_38__pyx_unpickle_Dimension(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_7netCDF4_8_netCDF4_38__pyx_unpickle_Dimension = {"__pyx_unpickle_Dimension", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_38__pyx_unpickle_Dimension, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7netCDF4_8_netCDF4_38__pyx_unpickle_Dimension(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___pyx_type = 0;
  long __pyx_v___pyx_checksum;
  PyObject *__pyx_v___pyx_state = 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("__pyx_unpickle_Dimension (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_type,&__pyx_mstate_global->__pyx_n_u_pyx_checksum,&__pyx_mstate_global->__pyx_n_u_pyx_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(3, 4, __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(3, 4, __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(3, 4, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(3, 4, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__pyx_unpickle_Dimension", 0) < (0)) __PYX_ERR(3, 4, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 3; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Dimension", 1, 3, 3, i); __PYX_ERR(3, 4, __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(3, 4, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(3, 4, __pyx_L3_error)
      values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(3, 4, __pyx_L3_error)
    }
    __pyx_v___pyx_type = values[0];
    __pyx_v___pyx_checksum = __Pyx_PyLong_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(3, 4, __pyx_L3_error)
    __pyx_v___pyx_state = ((PyObject*)values[2]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Dimension", 1, 3, 3, __pyx_nargs); __PYX_ERR(3, 4, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("netCDF4._netCDF4.__pyx_unpickle_Dimension", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v___pyx_state), (&PyTuple_Type), 1, "__pyx_state", 1))) __PYX_ERR(3, 4, __pyx_L1_error)
  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_37__pyx_unpickle_Dimension(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);

  /* 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_7netCDF4_8_netCDF4_37__pyx_unpickle_Dimension(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_v___pyx_result = 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("__pyx_unpickle_Dimension", 0);

  /* "(tree fragment)":6
 * def __pyx_unpickle_Dimension(__pyx_type, long __pyx_checksum, tuple __pyx_state):
 *     cdef object __pyx_result
 *     __Pyx_CheckUnpickleChecksum(__pyx_checksum, 0x0e20e8c, 0x951215d, 0xe8305e7, b'_data_model, _dimid, _grp, _grpid, _name')             # <<<<<<<<<<<<<<
 *     __pyx_result = Dimension.__new__(__pyx_type)
 *     if __pyx_state is not None:
*/
  __pyx_t_1 = __Pyx_CheckUnpickleChecksum(__pyx_v___pyx_checksum, 0x0e20e8c, 0x951215d, 0xe8305e7, __pyx_k_data_model__dimid__grp__grpid); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(3, 6, __pyx_L1_error)

  /* "(tree fragment)":7
 *     cdef object __pyx_result
 *     __Pyx_CheckUnpickleChecksum(__pyx_checksum, 0x0e20e8c, 0x951215d, 0xe8305e7, b'_data_model, _dimid, _grp, _grpid, _name')
 *     __pyx_result = Dimension.__new__(__pyx_type)             # <<<<<<<<<<<<<<
 *     if __pyx_state is not None:
 *         __pyx_unpickle_Dimension__set_state(<Dimension> __pyx_result, __pyx_state)
*/
  __pyx_t_3 = ((PyObject *)__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Dimension);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_4 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v___pyx_type};
    __pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_new, __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(3, 7, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  __pyx_v___pyx_result = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "(tree fragment)":8
 *     __Pyx_CheckUnpickleChecksum(__pyx_checksum, 0x0e20e8c, 0x951215d, 0xe8305e7, b'_data_model, _dimid, _grp, _grpid, _name')
 *     __pyx_result = Dimension.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_Dimension__set_state(<Dimension> __pyx_result, __pyx_state)
 *     return __pyx_result
*/
  __pyx_t_5 = (__pyx_v___pyx_state != ((PyObject*)Py_None));
  if (__pyx_t_5) {

    /* "(tree fragment)":9
 *     __pyx_result = Dimension.__new__(__pyx_type)
 *     if __pyx_state is not None:
 *         __pyx_unpickle_Dimension__set_state(<Dimension> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
 *     return __pyx_result
 * cdef __pyx_unpickle_Dimension__set_state(Dimension __pyx_result, __pyx_state: tuple):
*/
    if (unlikely(__pyx_v___pyx_state == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "cannot pass None into a C function argument that is declared 'not None'");
      __PYX_ERR(3, 9, __pyx_L1_error)
    }
    __pyx_t_2 = __pyx_f_7netCDF4_8_netCDF4___pyx_unpickle_Dimension__set_state(((struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *)__pyx_v___pyx_result), __pyx_v___pyx_state); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 9, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "(tree fragment)":8
 *     __Pyx_CheckUnpickleChecksum(__pyx_checksum, 0x0e20e8c, 0x951215d, 0xe8305e7, b'_data_model, _dimid, _grp, _grpid, _name')
 *     __pyx_result = Dimension.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_Dimension__set_state(<Dimension> __pyx_result, __pyx_state)
 *     return __pyx_result
*/
  }

  /* "(tree fragment)":10
 *     if __pyx_state is not None:
 *         __pyx_unpickle_Dimension__set_state(<Dimension> __pyx_result, __pyx_state)
 *     return __pyx_result             # <<<<<<<<<<<<<<
 * cdef __pyx_unpickle_Dimension__set_state(Dimension __pyx_result, __pyx_state: tuple):
 *     __pyx_result._data_model = __pyx_state[0]; __pyx_result._dimid = __pyx_state[1]; __pyx_result._grp = __pyx_state[2]; __pyx_result._grpid = __pyx_state[3]; __pyx_result._name = __pyx_state[4]
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v___pyx_result);
  __pyx_r = __pyx_v___pyx_result;
  goto __pyx_L0;

  /* "(tree fragment)":4
 *     int __Pyx_CheckUnpickleChecksum(long, long, long, long, const char*) except -1
 *     int __Pyx_UpdateUnpickledDict(object, object, Py_ssize_t) except -1
 * def __pyx_unpickle_Dimension(__pyx_type, long __pyx_checksum, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_result
 *     __Pyx_CheckUnpickleChecksum(__pyx_checksum, 0x0e20e8c, 0x951215d, 0xe8305e7, b'_data_model, _dimid, _grp, _grpid, _name')
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("netCDF4._netCDF4.__pyx_unpickle_Dimension", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v___pyx_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":11
 *         __pyx_unpickle_Dimension__set_state(<Dimension> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_Dimension__set_state(Dimension __pyx_result, __pyx_state: tuple):             # <<<<<<<<<<<<<<
 *     __pyx_result._data_model = __pyx_state[0]; __pyx_result._dimid = __pyx_state[1]; __pyx_result._grp = __pyx_state[2]; __pyx_result._grpid = __pyx_state[3]; __pyx_result._name = __pyx_state[4]
 *     __Pyx_UpdateUnpickledDict(__pyx_result, __pyx_state, 5)
*/

static PyObject *__pyx_f_7netCDF4_8_netCDF4___pyx_unpickle_Dimension__set_state(struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
  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("__pyx_unpickle_Dimension__set_state", 0);

  /* "(tree fragment)":12
 *     return __pyx_result
 * cdef __pyx_unpickle_Dimension__set_state(Dimension __pyx_result, __pyx_state: tuple):
 *     __pyx_result._data_model = __pyx_state[0]; __pyx_result._dimid = __pyx_state[1]; __pyx_result._grp = __pyx_state[2]; __pyx_result._grpid = __pyx_state[3]; __pyx_result._name = __pyx_state[4]             # <<<<<<<<<<<<<<
 *     __Pyx_UpdateUnpickledDict(__pyx_result, __pyx_state, 5)
*/
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->_data_model);
  __Pyx_DECREF(__pyx_v___pyx_result->_data_model);
  __pyx_v___pyx_result->_data_model = __pyx_t_1;
  __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyLong_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v___pyx_result->_dimid = __pyx_t_2;
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->_grp);
  __Pyx_DECREF(__pyx_v___pyx_result->_grp);
  __pyx_v___pyx_result->_grp = __pyx_t_1;
  __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 3, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyLong_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v___pyx_result->_grpid = __pyx_t_2;
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 4, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->_name);
  __Pyx_DECREF(__pyx_v___pyx_result->_name);
  __pyx_v___pyx_result->_name = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "(tree fragment)":13
 * cdef __pyx_unpickle_Dimension__set_state(Dimension __pyx_result, __pyx_state: tuple):
 *     __pyx_result._data_model = __pyx_state[0]; __pyx_result._dimid = __pyx_state[1]; __pyx_result._grp = __pyx_state[2]; __pyx_result._grpid = __pyx_state[3]; __pyx_result._name = __pyx_state[4]
 *     __Pyx_UpdateUnpickledDict(__pyx_result, __pyx_state, 5)             # <<<<<<<<<<<<<<
*/
  __pyx_t_2 = __Pyx_UpdateUnpickledDict(((PyObject *)__pyx_v___pyx_result), __pyx_v___pyx_state, 5); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(3, 13, __pyx_L1_error)

  /* "(tree fragment)":11
 *         __pyx_unpickle_Dimension__set_state(<Dimension> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_Dimension__set_state(Dimension __pyx_result, __pyx_state: tuple):             # <<<<<<<<<<<<<<
 *     __pyx_result._data_model = __pyx_state[0]; __pyx_result._dimid = __pyx_state[1]; __pyx_result._grp = __pyx_state[2]; __pyx_result._grpid = __pyx_state[3]; __pyx_result._name = __pyx_state[4]
 *     __Pyx_UpdateUnpickledDict(__pyx_result, __pyx_state, 5)
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("netCDF4._netCDF4.__pyx_unpickle_Dimension__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* #### Code section: module_exttypes ### */

static PyObject *__pyx_tp_new_7netCDF4_8_netCDF4__MemBuf(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  o = __Pyx_AllocateExtensionType(t, 0);
  if (unlikely(!o)) return 0;
  return o;
}

static void __pyx_tp_dealloc_7netCDF4_8_netCDF4__MemBuf(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_7netCDF4_8_netCDF4__MemBuf) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_7netCDF4_8_netCDF4_7_MemBuf_5__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_7netCDF4_8_netCDF4__MemBuf[] = {
  {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7_MemBuf_7__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7_MemBuf_9__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
#if !CYTHON_COMPILING_IN_LIMITED_API

static PyBufferProcs __pyx_tp_as_buffer__MemBuf = {
  __pyx_pw_7netCDF4_8_netCDF4_7_MemBuf_1__getbuffer__, /*bf_getbuffer*/
  __pyx_pw_7netCDF4_8_netCDF4_7_MemBuf_3__releasebuffer__, /*bf_releasebuffer*/
};
#endif
static PyType_Slot __pyx_type_7netCDF4_8_netCDF4__MemBuf_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7netCDF4_8_netCDF4__MemBuf},
  #if defined(Py_bf_getbuffer)
  {Py_bf_getbuffer, (void *)__pyx_pw_7netCDF4_8_netCDF4_7_MemBuf_1__getbuffer__},
  #endif
  #if defined(Py_bf_releasebuffer)
  {Py_bf_releasebuffer, (void *)__pyx_pw_7netCDF4_8_netCDF4_7_MemBuf_3__releasebuffer__},
  #endif
  {Py_tp_methods, (void *)__pyx_methods_7netCDF4_8_netCDF4__MemBuf},
  {Py_tp_new, (void *)__pyx_tp_new_7netCDF4_8_netCDF4__MemBuf},
  {0, 0},
};
static PyType_Spec __pyx_type_7netCDF4_8_netCDF4__MemBuf_spec = {
  "netCDF4._netCDF4._MemBuf",
  sizeof(struct __pyx_obj_7netCDF4_8_netCDF4__MemBuf),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE,
  __pyx_type_7netCDF4_8_netCDF4__MemBuf_slots,
};
#else

static PyBufferProcs __pyx_tp_as_buffer__MemBuf = {
  __pyx_pw_7netCDF4_8_netCDF4_7_MemBuf_1__getbuffer__, /*bf_getbuffer*/
  __pyx_pw_7netCDF4_8_netCDF4_7_MemBuf_3__releasebuffer__, /*bf_releasebuffer*/
};

static PyTypeObject __pyx_type_7netCDF4_8_netCDF4__MemBuf = {
  PyVarObject_HEAD_INIT(0, 0)
  "netCDF4._netCDF4.""_MemBuf", /*tp_name*/
  sizeof(struct __pyx_obj_7netCDF4_8_netCDF4__MemBuf), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7netCDF4_8_netCDF4__MemBuf, /*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__MemBuf, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*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_7netCDF4_8_netCDF4__MemBuf, /*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_7netCDF4_8_netCDF4__MemBuf, /*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_7netCDF4_8_netCDF4_Dataset(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *p;
  PyObject *o;
  o = __Pyx_AllocateExtensionType(t, 0);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)o);
  p->_inmemory = Py_None; Py_INCREF(Py_None);
  p->groups = Py_None; Py_INCREF(Py_None);
  p->dimensions = Py_None; Py_INCREF(Py_None);
  p->variables = Py_None; Py_INCREF(Py_None);
  p->disk_format = Py_None; Py_INCREF(Py_None);
  p->path = Py_None; Py_INCREF(Py_None);
  p->parent = Py_None; Py_INCREF(Py_None);
  p->file_format = Py_None; Py_INCREF(Py_None);
  p->data_model = Py_None; Py_INCREF(Py_None);
  p->cmptypes = Py_None; Py_INCREF(Py_None);
  p->vltypes = Py_None; Py_INCREF(Py_None);
  p->enumtypes = Py_None; Py_INCREF(Py_None);
  p->__pyx___orthogonal_indexing__ = Py_None; Py_INCREF(Py_None);
  p->keepweakref = Py_None; Py_INCREF(Py_None);
  p->_ncstring_attrs__ = Py_None; Py_INCREF(Py_None);
  p->auto_complex = Py_None; Py_INCREF(Py_None);
  p->_buffer.obj = NULL;
  return o;
}

static void __pyx_tp_dealloc_7netCDF4_8_netCDF4_Dataset(PyObject *o) {
  struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *p = (struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)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_7netCDF4_8_netCDF4_Dataset) {
      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_7netCDF4_8_netCDF4_7Dataset_23__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  Py_CLEAR(p->_inmemory);
  Py_CLEAR(p->groups);
  Py_CLEAR(p->dimensions);
  Py_CLEAR(p->variables);
  Py_CLEAR(p->disk_format);
  Py_CLEAR(p->path);
  Py_CLEAR(p->parent);
  Py_CLEAR(p->file_format);
  Py_CLEAR(p->data_model);
  Py_CLEAR(p->cmptypes);
  Py_CLEAR(p->vltypes);
  Py_CLEAR(p->enumtypes);
  Py_CLEAR(p->__pyx___orthogonal_indexing__);
  Py_CLEAR(p->keepweakref);
  Py_CLEAR(p->_ncstring_attrs__);
  Py_CLEAR(p->auto_complex);
  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_7netCDF4_8_netCDF4_Dataset(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *p = (struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)o;
  {
    e = __Pyx_call_type_traverse(o, 1, v, a);
    if (e) return e;
  }
  if (p->_inmemory) {
    e = (*v)(p->_inmemory, a); if (e) return e;
  }
  if (p->groups) {
    e = (*v)(p->groups, a); if (e) return e;
  }
  if (p->dimensions) {
    e = (*v)(p->dimensions, a); if (e) return e;
  }
  if (p->variables) {
    e = (*v)(p->variables, a); if (e) return e;
  }
  if (p->disk_format) {
    e = (*v)(p->disk_format, a); if (e) return e;
  }
  if (p->path) {
    e = (*v)(p->path, a); if (e) return e;
  }
  if (p->parent) {
    e = (*v)(p->parent, a); if (e) return e;
  }
  if (p->file_format) {
    e = (*v)(p->file_format, a); if (e) return e;
  }
  if (p->data_model) {
    e = (*v)(p->data_model, a); if (e) return e;
  }
  if (p->cmptypes) {
    e = (*v)(p->cmptypes, a); if (e) return e;
  }
  if (p->vltypes) {
    e = (*v)(p->vltypes, a); if (e) return e;
  }
  if (p->enumtypes) {
    e = (*v)(p->enumtypes, a); if (e) return e;
  }
  if (p->__pyx___orthogonal_indexing__) {
    e = (*v)(p->__pyx___orthogonal_indexing__, a); if (e) return e;
  }
  if (p->keepweakref) {
    e = (*v)(p->keepweakref, a); if (e) return e;
  }
  if (p->_ncstring_attrs__) {
    e = (*v)(p->_ncstring_attrs__, a); if (e) return e;
  }
  if (p->auto_complex) {
    e = (*v)(p->auto_complex, a); if (e) return e;
  }
  if (p->_buffer.obj) {
    e = (*v)(p->_buffer.obj, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_7netCDF4_8_netCDF4_Dataset(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *p = (struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)o;
  tmp = ((PyObject*)p->_inmemory);
  p->_inmemory = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->groups);
  p->groups = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->dimensions);
  p->dimensions = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->variables);
  p->variables = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->disk_format);
  p->disk_format = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->path);
  p->path = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->parent);
  p->parent = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->file_format);
  p->file_format = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->data_model);
  p->data_model = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->cmptypes);
  p->cmptypes = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->vltypes);
  p->vltypes = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->enumtypes);
  p->enumtypes = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx___orthogonal_indexing__);
  p->__pyx___orthogonal_indexing__ = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->keepweakref);
  p->keepweakref = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_ncstring_attrs__);
  p->_ncstring_attrs__ = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->auto_complex);
  p->auto_complex = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  Py_CLEAR(p->_buffer.obj);
  return 0;
}

static PyObject *__pyx_sq_item_7netCDF4_8_netCDF4_Dataset(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 PyObject *__pyx_tp_getattro_7netCDF4_8_netCDF4_Dataset(PyObject *o, PyObject *n) {
  PyObject *v = PyObject_GenericGetAttr(o, n);
  if (!v && PyErr_ExceptionMatches(PyExc_AttributeError)) {
    PyErr_Clear();
    v = __pyx_pw_7netCDF4_8_netCDF4_7Dataset_69__getattr__(o, n);
  }
  return v;
}

static int __pyx_tp_setattro_7netCDF4_8_netCDF4_Dataset(PyObject *o, PyObject *n, PyObject *v) {
  if (v) {
    return __pyx_pw_7netCDF4_8_netCDF4_7Dataset_67__setattr__(o, n, v);
  }
  else {
    return __pyx_pw_7netCDF4_8_netCDF4_7Dataset_63__delattr__(o, n);
  }
}

static PyObject *__pyx_getprop_7netCDF4_8_netCDF4_7Dataset_name(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7netCDF4_8_netCDF4_7Dataset_4name_1__get__(o);
}

static int __pyx_setprop_7netCDF4_8_netCDF4_7Dataset_name(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7netCDF4_8_netCDF4_7Dataset_4name_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_7netCDF4_8_netCDF4_7Dataset__grpid(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7netCDF4_8_netCDF4_7Dataset_6_grpid_1__get__(o);
}

static int __pyx_setprop_7netCDF4_8_netCDF4_7Dataset__grpid(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7netCDF4_8_netCDF4_7Dataset_6_grpid_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_7netCDF4_8_netCDF4_7Dataset__isopen(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7netCDF4_8_netCDF4_7Dataset_7_isopen_1__get__(o);
}

static int __pyx_setprop_7netCDF4_8_netCDF4_7Dataset__isopen(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7netCDF4_8_netCDF4_7Dataset_7_isopen_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_7netCDF4_8_netCDF4_7Dataset_groups(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7netCDF4_8_netCDF4_7Dataset_6groups_1__get__(o);
}

static int __pyx_setprop_7netCDF4_8_netCDF4_7Dataset_groups(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7netCDF4_8_netCDF4_7Dataset_6groups_3__set__(o, v);
  }
  else {
    return __pyx_pw_7netCDF4_8_netCDF4_7Dataset_6groups_5__del__(o);
  }
}

static PyObject *__pyx_getprop_7netCDF4_8_netCDF4_7Dataset_dimensions(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7netCDF4_8_netCDF4_7Dataset_10dimensions_1__get__(o);
}

static int __pyx_setprop_7netCDF4_8_netCDF4_7Dataset_dimensions(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7netCDF4_8_netCDF4_7Dataset_10dimensions_3__set__(o, v);
  }
  else {
    return __pyx_pw_7netCDF4_8_netCDF4_7Dataset_10dimensions_5__del__(o);
  }
}

static PyObject *__pyx_getprop_7netCDF4_8_netCDF4_7Dataset_variables(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7netCDF4_8_netCDF4_7Dataset_9variables_1__get__(o);
}

static int __pyx_setprop_7netCDF4_8_netCDF4_7Dataset_variables(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7netCDF4_8_netCDF4_7Dataset_9variables_3__set__(o, v);
  }
  else {
    return __pyx_pw_7netCDF4_8_netCDF4_7Dataset_9variables_5__del__(o);
  }
}

static PyObject *__pyx_getprop_7netCDF4_8_netCDF4_7Dataset_disk_format(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7netCDF4_8_netCDF4_7Dataset_11disk_format_1__get__(o);
}

static int __pyx_setprop_7netCDF4_8_netCDF4_7Dataset_disk_format(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7netCDF4_8_netCDF4_7Dataset_11disk_format_3__set__(o, v);
  }
  else {
    return __pyx_pw_7netCDF4_8_netCDF4_7Dataset_11disk_format_5__del__(o);
  }
}

static PyObject *__pyx_getprop_7netCDF4_8_netCDF4_7Dataset_path(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7netCDF4_8_netCDF4_7Dataset_4path_1__get__(o);
}

static int __pyx_setprop_7netCDF4_8_netCDF4_7Dataset_path(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7netCDF4_8_netCDF4_7Dataset_4path_3__set__(o, v);
  }
  else {
    return __pyx_pw_7netCDF4_8_netCDF4_7Dataset_4path_5__del__(o);
  }
}

static PyObject *__pyx_getprop_7netCDF4_8_netCDF4_7Dataset_parent(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7netCDF4_8_netCDF4_7Dataset_6parent_1__get__(o);
}

static int __pyx_setprop_7netCDF4_8_netCDF4_7Dataset_parent(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7netCDF4_8_netCDF4_7Dataset_6parent_3__set__(o, v);
  }
  else {
    return __pyx_pw_7netCDF4_8_netCDF4_7Dataset_6parent_5__del__(o);
  }
}

static PyObject *__pyx_getprop_7netCDF4_8_netCDF4_7Dataset_file_format(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7netCDF4_8_netCDF4_7Dataset_11file_format_1__get__(o);
}

static int __pyx_setprop_7netCDF4_8_netCDF4_7Dataset_file_format(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7netCDF4_8_netCDF4_7Dataset_11file_format_3__set__(o, v);
  }
  else {
    return __pyx_pw_7netCDF4_8_netCDF4_7Dataset_11file_format_5__del__(o);
  }
}

static PyObject *__pyx_getprop_7netCDF4_8_netCDF4_7Dataset_data_model(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7netCDF4_8_netCDF4_7Dataset_10data_model_1__get__(o);
}

static int __pyx_setprop_7netCDF4_8_netCDF4_7Dataset_data_model(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7netCDF4_8_netCDF4_7Dataset_10data_model_3__set__(o, v);
  }
  else {
    return __pyx_pw_7netCDF4_8_netCDF4_7Dataset_10data_model_5__del__(o);
  }
}

static PyObject *__pyx_getprop_7netCDF4_8_netCDF4_7Dataset_cmptypes(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7netCDF4_8_netCDF4_7Dataset_8cmptypes_1__get__(o);
}

static int __pyx_setprop_7netCDF4_8_netCDF4_7Dataset_cmptypes(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7netCDF4_8_netCDF4_7Dataset_8cmptypes_3__set__(o, v);
  }
  else {
    return __pyx_pw_7netCDF4_8_netCDF4_7Dataset_8cmptypes_5__del__(o);
  }
}

static PyObject *__pyx_getprop_7netCDF4_8_netCDF4_7Dataset_vltypes(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7netCDF4_8_netCDF4_7Dataset_7vltypes_1__get__(o);
}

static int __pyx_setprop_7netCDF4_8_netCDF4_7Dataset_vltypes(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7netCDF4_8_netCDF4_7Dataset_7vltypes_3__set__(o, v);
  }
  else {
    return __pyx_pw_7netCDF4_8_netCDF4_7Dataset_7vltypes_5__del__(o);
  }
}

static PyObject *__pyx_getprop_7netCDF4_8_netCDF4_7Dataset_enumtypes(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7netCDF4_8_netCDF4_7Dataset_9enumtypes_1__get__(o);
}

static int __pyx_setprop_7netCDF4_8_netCDF4_7Dataset_enumtypes(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7netCDF4_8_netCDF4_7Dataset_9enumtypes_3__set__(o, v);
  }
  else {
    return __pyx_pw_7netCDF4_8_netCDF4_7Dataset_9enumtypes_5__del__(o);
  }
}

static PyObject *__pyx_getprop_7netCDF4_8_netCDF4_7Dataset___orthogonal_indexing__(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7netCDF4_8_netCDF4_7Dataset_23__orthogonal_indexing___1__get__(o);
}

static int __pyx_setprop_7netCDF4_8_netCDF4_7Dataset___orthogonal_indexing__(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7netCDF4_8_netCDF4_7Dataset_23__orthogonal_indexing___3__set__(o, v);
  }
  else {
    return __pyx_pw_7netCDF4_8_netCDF4_7Dataset_23__orthogonal_indexing___5__del__(o);
  }
}

static PyObject *__pyx_getprop_7netCDF4_8_netCDF4_7Dataset_keepweakref(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7netCDF4_8_netCDF4_7Dataset_11keepweakref_1__get__(o);
}

static int __pyx_setprop_7netCDF4_8_netCDF4_7Dataset_keepweakref(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7netCDF4_8_netCDF4_7Dataset_11keepweakref_3__set__(o, v);
  }
  else {
    return __pyx_pw_7netCDF4_8_netCDF4_7Dataset_11keepweakref_5__del__(o);
  }
}

static PyObject *__pyx_getprop_7netCDF4_8_netCDF4_7Dataset__ncstring_attrs__(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7netCDF4_8_netCDF4_7Dataset_17_ncstring_attrs___1__get__(o);
}

static int __pyx_setprop_7netCDF4_8_netCDF4_7Dataset__ncstring_attrs__(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7netCDF4_8_netCDF4_7Dataset_17_ncstring_attrs___3__set__(o, v);
  }
  else {
    return __pyx_pw_7netCDF4_8_netCDF4_7Dataset_17_ncstring_attrs___5__del__(o);
  }
}

static PyObject *__pyx_getprop_7netCDF4_8_netCDF4_7Dataset_auto_complex(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7netCDF4_8_netCDF4_7Dataset_12auto_complex_1__get__(o);
}

static int __pyx_setprop_7netCDF4_8_netCDF4_7Dataset_auto_complex(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7netCDF4_8_netCDF4_7Dataset_12auto_complex_3__set__(o, v);
  }
  else {
    return __pyx_pw_7netCDF4_8_netCDF4_7Dataset_12auto_complex_5__del__(o);
  }
}

static PyMethodDef __pyx_methods_7netCDF4_8_netCDF4_Dataset[] = {
  {"__enter__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_3__enter__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__exit__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_5__exit__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"filepath", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_9filepath, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_7Dataset_8filepath},
  {"_close", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_15_close, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"_close_mem", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_17_close_mem, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"close", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_19close, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_7Dataset_18close},
  {"isopen", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_21isopen, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_7Dataset_20isopen},
  {"__reduce__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_25__reduce__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"sync", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_27sync, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_7Dataset_26sync},
  {"_redef", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_29_redef, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"_enddef", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_31_enddef, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"set_fill_on", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_33set_fill_on, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_7Dataset_32set_fill_on},
  {"set_fill_off", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_35set_fill_off, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_7Dataset_34set_fill_off},
  {"createDimension", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_37createDimension, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_7Dataset_36createDimension},
  {"renameDimension", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_39renameDimension, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_7Dataset_38renameDimension},
  {"createCompoundType", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_41createCompoundType, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_7Dataset_40createCompoundType},
  {"createVLType", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_43createVLType, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_7Dataset_42createVLType},
  {"createEnumType", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_45createEnumType, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_7Dataset_44createEnumType},
  {"createVariable", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_47createVariable, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_7Dataset_46createVariable},
  {"renameVariable", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_49renameVariable, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_7Dataset_48renameVariable},
  {"createGroup", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_51createGroup, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_7Dataset_50createGroup},
  {"ncattrs", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_53ncattrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_7Dataset_52ncattrs},
  {"setncattr", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_55setncattr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_7Dataset_54setncattr},
  {"setncattr_string", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_57setncattr_string, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_7Dataset_56setncattr_string},
  {"setncatts", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_59setncatts, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_7Dataset_58setncatts},
  {"getncattr", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_61getncattr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_7Dataset_60getncattr},
  {"delncattr", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_65delncattr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_7Dataset_64delncattr},
  {"__getattr__", (PyCFunction)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_69__getattr__, METH_O|METH_COEXIST, 0},
  {"renameAttribute", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_71renameAttribute, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_7Dataset_70renameAttribute},
  {"renameGroup", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_73renameGroup, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_7Dataset_72renameGroup},
  {"set_auto_chartostring", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_75set_auto_chartostring, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_7Dataset_74set_auto_chartostring},
  {"set_auto_maskandscale", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_77set_auto_maskandscale, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_7Dataset_76set_auto_maskandscale},
  {"set_auto_mask", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_79set_auto_mask, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_7Dataset_78set_auto_mask},
  {"set_auto_scale", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_81set_auto_scale, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_7Dataset_80set_auto_scale},
  {"set_always_mask", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_83set_always_mask, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_7Dataset_82set_always_mask},
  {"set_ncstring_attrs", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_85set_ncstring_attrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_7Dataset_84set_ncstring_attrs},
  {"get_variables_by_attributes", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_87get_variables_by_attributes, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_7Dataset_86get_variables_by_attributes},
  {"_getname", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_89_getname, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"fromcdl", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_91fromcdl, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_7Dataset_90fromcdl},
  {"tocdl", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_93tocdl, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_7Dataset_92tocdl},
  {"has_blosc_filter", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_95has_blosc_filter, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_7Dataset_94has_blosc_filter},
  {"has_zstd_filter", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_97has_zstd_filter, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_7Dataset_96has_zstd_filter},
  {"has_bzip2_filter", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_99has_bzip2_filter, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_7Dataset_98has_bzip2_filter},
  {"has_szip_filter", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_101has_szip_filter, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_7Dataset_100has_szip_filter},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_7netCDF4_8_netCDF4_Dataset[] = {
  {"name", __pyx_getprop_7netCDF4_8_netCDF4_7Dataset_name, __pyx_setprop_7netCDF4_8_netCDF4_7Dataset_name, PyDoc_STR("string name of Group instance"), 0},
  {"_grpid", __pyx_getprop_7netCDF4_8_netCDF4_7Dataset__grpid, __pyx_setprop_7netCDF4_8_netCDF4_7Dataset__grpid, 0, 0},
  {"_isopen", __pyx_getprop_7netCDF4_8_netCDF4_7Dataset__isopen, __pyx_setprop_7netCDF4_8_netCDF4_7Dataset__isopen, 0, 0},
  {"groups", __pyx_getprop_7netCDF4_8_netCDF4_7Dataset_groups, __pyx_setprop_7netCDF4_8_netCDF4_7Dataset_groups, 0, 0},
  {"dimensions", __pyx_getprop_7netCDF4_8_netCDF4_7Dataset_dimensions, __pyx_setprop_7netCDF4_8_netCDF4_7Dataset_dimensions, 0, 0},
  {"variables", __pyx_getprop_7netCDF4_8_netCDF4_7Dataset_variables, __pyx_setprop_7netCDF4_8_netCDF4_7Dataset_variables, 0, 0},
  {"disk_format", __pyx_getprop_7netCDF4_8_netCDF4_7Dataset_disk_format, __pyx_setprop_7netCDF4_8_netCDF4_7Dataset_disk_format, 0, 0},
  {"path", __pyx_getprop_7netCDF4_8_netCDF4_7Dataset_path, __pyx_setprop_7netCDF4_8_netCDF4_7Dataset_path, 0, 0},
  {"parent", __pyx_getprop_7netCDF4_8_netCDF4_7Dataset_parent, __pyx_setprop_7netCDF4_8_netCDF4_7Dataset_parent, 0, 0},
  {"file_format", __pyx_getprop_7netCDF4_8_netCDF4_7Dataset_file_format, __pyx_setprop_7netCDF4_8_netCDF4_7Dataset_file_format, 0, 0},
  {"data_model", __pyx_getprop_7netCDF4_8_netCDF4_7Dataset_data_model, __pyx_setprop_7netCDF4_8_netCDF4_7Dataset_data_model, 0, 0},
  {"cmptypes", __pyx_getprop_7netCDF4_8_netCDF4_7Dataset_cmptypes, __pyx_setprop_7netCDF4_8_netCDF4_7Dataset_cmptypes, 0, 0},
  {"vltypes", __pyx_getprop_7netCDF4_8_netCDF4_7Dataset_vltypes, __pyx_setprop_7netCDF4_8_netCDF4_7Dataset_vltypes, 0, 0},
  {"enumtypes", __pyx_getprop_7netCDF4_8_netCDF4_7Dataset_enumtypes, __pyx_setprop_7netCDF4_8_netCDF4_7Dataset_enumtypes, 0, 0},
  {"__orthogonal_indexing__", __pyx_getprop_7netCDF4_8_netCDF4_7Dataset___orthogonal_indexing__, __pyx_setprop_7netCDF4_8_netCDF4_7Dataset___orthogonal_indexing__, 0, 0},
  {"keepweakref", __pyx_getprop_7netCDF4_8_netCDF4_7Dataset_keepweakref, __pyx_setprop_7netCDF4_8_netCDF4_7Dataset_keepweakref, 0, 0},
  {"_ncstring_attrs__", __pyx_getprop_7netCDF4_8_netCDF4_7Dataset__ncstring_attrs__, __pyx_setprop_7netCDF4_8_netCDF4_7Dataset__ncstring_attrs__, 0, 0},
  {"auto_complex", __pyx_getprop_7netCDF4_8_netCDF4_7Dataset_auto_complex, __pyx_setprop_7netCDF4_8_netCDF4_7Dataset_auto_complex, 0, 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyMemberDef __pyx_type_7netCDF4_8_netCDF4_Dataset_members[] = {
  #if !CYTHON_USE_TYPE_SLOTS
  {"__weaklistoffset__", T_PYSSIZET, offsetof(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset, __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/netCDF4/_netCDF4.pyx:2292:16: : __weakref__ is unsupported in the Limited API when running on Python <3.9."
#elif defined(_MSC_VER)
#pragma message("src/netCDF4/_netCDF4.pyx:2292:16: : __weakref__ is unsupported in the Limited API when running on Python <3.9.")
#endif
#endif
static PyType_Slot __pyx_type_7netCDF4_8_netCDF4_Dataset_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7netCDF4_8_netCDF4_Dataset},
  {Py_tp_repr, (void *)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_11__repr__},
  {Py_sq_item, (void *)__pyx_sq_item_7netCDF4_8_netCDF4_Dataset},
  {Py_mp_subscript, (void *)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_7__getitem__},
  {Py_tp_str, (void *)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_13__str__},
  {Py_tp_getattro, (void *)__pyx_tp_getattro_7netCDF4_8_netCDF4_Dataset},
  {Py_tp_setattro, (void *)__pyx_tp_setattro_7netCDF4_8_netCDF4_Dataset},
  {Py_tp_doc, (void *)PyDoc_STR("\nA netCDF `Dataset` is a collection of dimensions, groups, variables and\nattributes. Together they describe the meaning of data and relations among\ndata fields stored in a netCDF file. See `Dataset.__init__` for more\ndetails.\n\nA list of attribute names corresponding to global netCDF attributes\ndefined for the `Dataset` can be obtained with the\n`Dataset.ncattrs` method.\nThese attributes can be created by assigning to an attribute of the\n`Dataset` instance. A dictionary containing all the netCDF attribute\nname/value pairs is provided by the `__dict__` attribute of a\n`Dataset` instance.\n\nThe following class variables are read-only and should not be\nmodified by the user.\n\n**`dimensions`**: The `dimensions` dictionary maps the names of\ndimensions defined for the `Group` or `Dataset` to instances of the\n`Dimension` class.\n\n**`variables`**: The `variables` dictionary maps the names of variables\ndefined for this `Dataset` or `Group` to instances of the\n`Variable` class.\n\n**`groups`**: The groups dictionary maps the names of groups created for\nthis `Dataset` or `Group` to instances of the `Group` class (the\n`Dataset` class is simply a special case of the `Group` class which\ndescribes the root group in the netCDF4 file).\n\n**`cmptypes`**: The `cmptypes` dictionary maps the names of\ncompound types defined for the `Group` or `Dataset` to instances of the\n`CompoundType` class.\n\n**`vltypes`**: The `vltypes` dictionary maps the names of\nvariable-length types defined for the `Group` or `Dataset` to instances\nof the `VLType` class.\n\n**`enumtypes`**: The `enumtypes` dictionary maps the names of\nEnum types defined for the `Group` or `Dataset` to instances\nof the `EnumType` class.\n\n**`data_model`**: `data_model` describes the netCDF\ndata model version, one of `NETCDF3_CLASSIC`, `NETCDF4`,\n`NETCDF4_CLASSIC`, `NETCDF3_64BIT_OFFSET` or `NETCDF3_64BIT_DATA`.\n\n**`file_format`**: same as `data_model`, retained for backwards compatibility.\n\n**`di""sk_format`**: `disk_format` describes the underlying\nfile format, one of `NETCDF3`, `HDF5`, `HDF4`,\n`PNETCDF`, `DAP2`, `DAP4` or `UNDEFINED`. Only available if using\nnetcdf C library version >= 4.3.1, otherwise will always return\n`UNDEFINED`.\n\n**`parent`**: `parent` is a reference to the parent\n`Group` instance. `None` for the root group or `Dataset`\ninstance.\n\n**`path`**: `path` shows the location of the `Group` in\nthe `Dataset` in a unix directory format (the names of groups in the\nhierarchy separated by backslashes). A `Dataset` instance is the root\ngroup, so the path is simply `'/'`.\n\n**`keepweakref`**: If `True`, child Dimension and Variables objects only keep weak\nreferences to the parent Dataset or Group.\n\n**`_ncstring_attrs__`**: If `True`, all text attributes will be written as variable-length\nstrings.\n    ")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_7netCDF4_8_netCDF4_Dataset},
  {Py_tp_clear, (void *)__pyx_tp_clear_7netCDF4_8_netCDF4_Dataset},
  {Py_tp_methods, (void *)__pyx_methods_7netCDF4_8_netCDF4_Dataset},
  {Py_tp_getset, (void *)__pyx_getsets_7netCDF4_8_netCDF4_Dataset},
  {Py_tp_init, (void *)__pyx_pw_7netCDF4_8_netCDF4_7Dataset_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_7netCDF4_8_netCDF4_Dataset},
  {Py_tp_members, (void*)__pyx_type_7netCDF4_8_netCDF4_Dataset_members},
  {0, 0},
};
static PyType_Spec __pyx_type_7netCDF4_8_netCDF4_Dataset_spec = {
  "netCDF4._netCDF4.Dataset",
  sizeof(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset),
  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_7netCDF4_8_netCDF4_Dataset_slots,
};
#else

static PySequenceMethods __pyx_tp_as_sequence_Dataset = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  __pyx_sq_item_7netCDF4_8_netCDF4_Dataset, /*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_Dataset = {
  0, /*mp_length*/
  __pyx_pw_7netCDF4_8_netCDF4_7Dataset_7__getitem__, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyTypeObject __pyx_type_7netCDF4_8_netCDF4_Dataset = {
  PyVarObject_HEAD_INIT(0, 0)
  "netCDF4._netCDF4.""Dataset", /*tp_name*/
  sizeof(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7netCDF4_8_netCDF4_Dataset, /*tp_dealloc*/
  0, /*tp_vectorcall_offset*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  __pyx_pw_7netCDF4_8_netCDF4_7Dataset_11__repr__, /*tp_repr*/
  0, /*tp_as_number*/
  &__pyx_tp_as_sequence_Dataset, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_Dataset, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  __pyx_pw_7netCDF4_8_netCDF4_7Dataset_13__str__, /*tp_str*/
  __pyx_tp_getattro_7netCDF4_8_netCDF4_Dataset, /*tp_getattro*/
  __pyx_tp_setattro_7netCDF4_8_netCDF4_Dataset, /*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("\nA netCDF `Dataset` is a collection of dimensions, groups, variables and\nattributes. Together they describe the meaning of data and relations among\ndata fields stored in a netCDF file. See `Dataset.__init__` for more\ndetails.\n\nA list of attribute names corresponding to global netCDF attributes\ndefined for the `Dataset` can be obtained with the\n`Dataset.ncattrs` method.\nThese attributes can be created by assigning to an attribute of the\n`Dataset` instance. A dictionary containing all the netCDF attribute\nname/value pairs is provided by the `__dict__` attribute of a\n`Dataset` instance.\n\nThe following class variables are read-only and should not be\nmodified by the user.\n\n**`dimensions`**: The `dimensions` dictionary maps the names of\ndimensions defined for the `Group` or `Dataset` to instances of the\n`Dimension` class.\n\n**`variables`**: The `variables` dictionary maps the names of variables\ndefined for this `Dataset` or `Group` to instances of the\n`Variable` class.\n\n**`groups`**: The groups dictionary maps the names of groups created for\nthis `Dataset` or `Group` to instances of the `Group` class (the\n`Dataset` class is simply a special case of the `Group` class which\ndescribes the root group in the netCDF4 file).\n\n**`cmptypes`**: The `cmptypes` dictionary maps the names of\ncompound types defined for the `Group` or `Dataset` to instances of the\n`CompoundType` class.\n\n**`vltypes`**: The `vltypes` dictionary maps the names of\nvariable-length types defined for the `Group` or `Dataset` to instances\nof the `VLType` class.\n\n**`enumtypes`**: The `enumtypes` dictionary maps the names of\nEnum types defined for the `Group` or `Dataset` to instances\nof the `EnumType` class.\n\n**`data_model`**: `data_model` describes the netCDF\ndata model version, one of `NETCDF3_CLASSIC`, `NETCDF4`,\n`NETCDF4_CLASSIC`, `NETCDF3_64BIT_OFFSET` or `NETCDF3_64BIT_DATA`.\n\n**`file_format`**: same as `data_model`, retained for backwards compatibility.\n\n**`di""sk_format`**: `disk_format` describes the underlying\nfile format, one of `NETCDF3`, `HDF5`, `HDF4`,\n`PNETCDF`, `DAP2`, `DAP4` or `UNDEFINED`. Only available if using\nnetcdf C library version >= 4.3.1, otherwise will always return\n`UNDEFINED`.\n\n**`parent`**: `parent` is a reference to the parent\n`Group` instance. `None` for the root group or `Dataset`\ninstance.\n\n**`path`**: `path` shows the location of the `Group` in\nthe `Dataset` in a unix directory format (the names of groups in the\nhierarchy separated by backslashes). A `Dataset` instance is the root\ngroup, so the path is simply `'/'`.\n\n**`keepweakref`**: If `True`, child Dimension and Variables objects only keep weak\nreferences to the parent Dataset or Group.\n\n**`_ncstring_attrs__`**: If `True`, all text attributes will be written as variable-length\nstrings.\n    "), /*tp_doc*/
  __pyx_tp_traverse_7netCDF4_8_netCDF4_Dataset, /*tp_traverse*/
  __pyx_tp_clear_7netCDF4_8_netCDF4_Dataset, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_7netCDF4_8_netCDF4_Dataset, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_7netCDF4_8_netCDF4_Dataset, /*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_7netCDF4_8_netCDF4_7Dataset_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7netCDF4_8_netCDF4_Dataset, /*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_7netCDF4_8_netCDF4_Group[] = {
  {"close", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_5Group_3close, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_5Group_2close},
  {0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7netCDF4_8_netCDF4_Group_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7netCDF4_8_netCDF4_Dataset},
  {Py_tp_doc, (void *)PyDoc_STR("\nGroups define a hierarchical namespace within a netCDF file. They are\nanalogous to directories in a unix filesystem. Each `Group` behaves like\na `Dataset` within a Dataset, and can contain it's own variables,\ndimensions and attributes (and other Groups). See `Group.__init__`\nfor more details.\n\n`Group` inherits from `Dataset`, so all the\n`Dataset` class methods and variables are available\nto a `Group` instance (except the `close` method).\n\nAdditional read-only class variables:\n\n**`name`**: String describing the group name.\n    ")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_7netCDF4_8_netCDF4_Dataset},
  {Py_tp_clear, (void *)__pyx_tp_clear_7netCDF4_8_netCDF4_Dataset},
  {Py_tp_methods, (void *)__pyx_methods_7netCDF4_8_netCDF4_Group},
  {Py_tp_init, (void *)__pyx_pw_7netCDF4_8_netCDF4_5Group_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_7netCDF4_8_netCDF4_Dataset},
  {0, 0},
};
static PyType_Spec __pyx_type_7netCDF4_8_netCDF4_Group_spec = {
  "netCDF4._netCDF4.Group",
  sizeof(struct __pyx_obj_7netCDF4_8_netCDF4_Group),
  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_7netCDF4_8_netCDF4_Group_slots,
};
#else

static PyTypeObject __pyx_type_7netCDF4_8_netCDF4_Group = {
  PyVarObject_HEAD_INIT(0, 0)
  "netCDF4._netCDF4.""Group", /*tp_name*/
  sizeof(struct __pyx_obj_7netCDF4_8_netCDF4_Group), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7netCDF4_8_netCDF4_Dataset, /*tp_dealloc*/
  0, /*tp_vectorcall_offset*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  #if CYTHON_COMPILING_IN_PYPY || 0
  __pyx_pw_7netCDF4_8_netCDF4_7Dataset_11__repr__, /*tp_repr*/
  #else
  0, /*tp_repr*/
  #endif
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  #if CYTHON_COMPILING_IN_PYPY || 0
  __pyx_pw_7netCDF4_8_netCDF4_7Dataset_13__str__, /*tp_str*/
  #else
  0, /*tp_str*/
  #endif
  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("\nGroups define a hierarchical namespace within a netCDF file. They are\nanalogous to directories in a unix filesystem. Each `Group` behaves like\na `Dataset` within a Dataset, and can contain it's own variables,\ndimensions and attributes (and other Groups). See `Group.__init__`\nfor more details.\n\n`Group` inherits from `Dataset`, so all the\n`Dataset` class methods and variables are available\nto a `Group` instance (except the `close` method).\n\nAdditional read-only class variables:\n\n**`name`**: String describing the group name.\n    "), /*tp_doc*/
  __pyx_tp_traverse_7netCDF4_8_netCDF4_Dataset, /*tp_traverse*/
  __pyx_tp_clear_7netCDF4_8_netCDF4_Dataset, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_7netCDF4_8_netCDF4_Group, /*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
  __pyx_pw_7netCDF4_8_netCDF4_5Group_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7netCDF4_8_netCDF4_Dataset, /*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_7netCDF4_8_netCDF4_Dimension(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *p;
  PyObject *o;
  o = __Pyx_AllocateExtensionType(t, 0);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *)o);
  p->_data_model = Py_None; Py_INCREF(Py_None);
  p->_name = Py_None; Py_INCREF(Py_None);
  p->_grp = Py_None; Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_7netCDF4_8_netCDF4_Dimension(PyObject *o) {
  struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *p = (struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *)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_7netCDF4_8_netCDF4_Dimension) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->_data_model);
  Py_CLEAR(p->_name);
  Py_CLEAR(p->_grp);
  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_7netCDF4_8_netCDF4_Dimension(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *p = (struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *)o;
  {
    e = __Pyx_call_type_traverse(o, 1, v, a);
    if (e) return e;
  }
  if (p->_data_model) {
    e = (*v)(p->_data_model, a); if (e) return e;
  }
  if (p->_name) {
    e = (*v)(p->_name, a); if (e) return e;
  }
  if (p->_grp) {
    e = (*v)(p->_grp, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_7netCDF4_8_netCDF4_Dimension(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *p = (struct __pyx_obj_7netCDF4_8_netCDF4_Dimension *)o;
  tmp = ((PyObject*)p->_data_model);
  p->_data_model = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_name);
  p->_name = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_grp);
  p->_grp = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_7netCDF4_8_netCDF4_9Dimension_name(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7netCDF4_8_netCDF4_9Dimension_4name_1__get__(o);
}

static int __pyx_setprop_7netCDF4_8_netCDF4_9Dimension_name(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7netCDF4_8_netCDF4_9Dimension_4name_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_7netCDF4_8_netCDF4_9Dimension_size(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7netCDF4_8_netCDF4_9Dimension_4size_1__get__(o);
}

static int __pyx_setprop_7netCDF4_8_netCDF4_9Dimension_size(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7netCDF4_8_netCDF4_9Dimension_4size_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_7netCDF4_8_netCDF4_9Dimension__dimid(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7netCDF4_8_netCDF4_9Dimension_6_dimid_1__get__(o);
}

static int __pyx_setprop_7netCDF4_8_netCDF4_9Dimension__dimid(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7netCDF4_8_netCDF4_9Dimension_6_dimid_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_7netCDF4_8_netCDF4_9Dimension__grpid(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7netCDF4_8_netCDF4_9Dimension_6_grpid_1__get__(o);
}

static int __pyx_setprop_7netCDF4_8_netCDF4_9Dimension__grpid(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7netCDF4_8_netCDF4_9Dimension_6_grpid_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_7netCDF4_8_netCDF4_9Dimension__data_model(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7netCDF4_8_netCDF4_9Dimension_11_data_model_1__get__(o);
}

static int __pyx_setprop_7netCDF4_8_netCDF4_9Dimension__data_model(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7netCDF4_8_netCDF4_9Dimension_11_data_model_3__set__(o, v);
  }
  else {
    return __pyx_pw_7netCDF4_8_netCDF4_9Dimension_11_data_model_5__del__(o);
  }
}

static PyObject *__pyx_getprop_7netCDF4_8_netCDF4_9Dimension__name(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7netCDF4_8_netCDF4_9Dimension_5_name_1__get__(o);
}

static int __pyx_setprop_7netCDF4_8_netCDF4_9Dimension__name(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7netCDF4_8_netCDF4_9Dimension_5_name_3__set__(o, v);
  }
  else {
    return __pyx_pw_7netCDF4_8_netCDF4_9Dimension_5_name_5__del__(o);
  }
}

static PyObject *__pyx_getprop_7netCDF4_8_netCDF4_9Dimension__grp(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7netCDF4_8_netCDF4_9Dimension_4_grp_1__get__(o);
}

static int __pyx_setprop_7netCDF4_8_netCDF4_9Dimension__grp(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7netCDF4_8_netCDF4_9Dimension_4_grp_3__set__(o, v);
  }
  else {
    return __pyx_pw_7netCDF4_8_netCDF4_9Dimension_4_grp_5__del__(o);
  }
}

static PyMethodDef __pyx_methods_7netCDF4_8_netCDF4_Dimension[] = {
  {"_getname", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_9Dimension_3_getname, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"group", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_9Dimension_11group, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_9Dimension_10group},
  {"isunlimited", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_9Dimension_13isunlimited, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_9Dimension_12isunlimited},
  {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_9Dimension_15__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_9Dimension_17__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_7netCDF4_8_netCDF4_Dimension[] = {
  {"name", __pyx_getprop_7netCDF4_8_netCDF4_9Dimension_name, __pyx_setprop_7netCDF4_8_netCDF4_9Dimension_name, PyDoc_STR("string name of Dimension instance"), 0},
  {"size", __pyx_getprop_7netCDF4_8_netCDF4_9Dimension_size, __pyx_setprop_7netCDF4_8_netCDF4_9Dimension_size, PyDoc_STR("current size of Dimension (calls `len` on Dimension instance)"), 0},
  {"_dimid", __pyx_getprop_7netCDF4_8_netCDF4_9Dimension__dimid, __pyx_setprop_7netCDF4_8_netCDF4_9Dimension__dimid, 0, 0},
  {"_grpid", __pyx_getprop_7netCDF4_8_netCDF4_9Dimension__grpid, __pyx_setprop_7netCDF4_8_netCDF4_9Dimension__grpid, 0, 0},
  {"_data_model", __pyx_getprop_7netCDF4_8_netCDF4_9Dimension__data_model, __pyx_setprop_7netCDF4_8_netCDF4_9Dimension__data_model, 0, 0},
  {"_name", __pyx_getprop_7netCDF4_8_netCDF4_9Dimension__name, __pyx_setprop_7netCDF4_8_netCDF4_9Dimension__name, 0, 0},
  {"_grp", __pyx_getprop_7netCDF4_8_netCDF4_9Dimension__grp, __pyx_setprop_7netCDF4_8_netCDF4_9Dimension__grp, 0, 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7netCDF4_8_netCDF4_Dimension_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7netCDF4_8_netCDF4_Dimension},
  {Py_tp_repr, (void *)__pyx_pw_7netCDF4_8_netCDF4_9Dimension_5__repr__},
  {Py_sq_length, (void *)__pyx_pw_7netCDF4_8_netCDF4_9Dimension_9__len__},
  {Py_mp_length, (void *)__pyx_pw_7netCDF4_8_netCDF4_9Dimension_9__len__},
  {Py_tp_str, (void *)__pyx_pw_7netCDF4_8_netCDF4_9Dimension_7__str__},
  {Py_tp_doc, (void *)PyDoc_STR("\nA netCDF `Dimension` is used to describe the coordinates of a `Variable`.\nSee `Dimension.__init__` for more details.\n\nThe current maximum size of a `Dimension` instance can be obtained by\ncalling the python `len` function on the `Dimension` instance. The\n`Dimension.isunlimited` method of a `Dimension` instance can be used to\ndetermine if the dimension is unlimited.\n\nRead-only class variables:\n\n**`name`**: String name, used when creating a `Variable` with\n`Dataset.createVariable`.\n\n**`size`**: Current `Dimension` size (same as `len(d)`, where `d` is a\n`Dimension` instance).\n    ")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_7netCDF4_8_netCDF4_Dimension},
  {Py_tp_clear, (void *)__pyx_tp_clear_7netCDF4_8_netCDF4_Dimension},
  {Py_tp_methods, (void *)__pyx_methods_7netCDF4_8_netCDF4_Dimension},
  {Py_tp_getset, (void *)__pyx_getsets_7netCDF4_8_netCDF4_Dimension},
  {Py_tp_init, (void *)__pyx_pw_7netCDF4_8_netCDF4_9Dimension_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_7netCDF4_8_netCDF4_Dimension},
  {0, 0},
};
static PyType_Spec __pyx_type_7netCDF4_8_netCDF4_Dimension_spec = {
  "netCDF4._netCDF4.Dimension",
  sizeof(struct __pyx_obj_7netCDF4_8_netCDF4_Dimension),
  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_7netCDF4_8_netCDF4_Dimension_slots,
};
#else

static PySequenceMethods __pyx_tp_as_sequence_Dimension = {
  __pyx_pw_7netCDF4_8_netCDF4_9Dimension_9__len__, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*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_Dimension = {
  __pyx_pw_7netCDF4_8_netCDF4_9Dimension_9__len__, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyTypeObject __pyx_type_7netCDF4_8_netCDF4_Dimension = {
  PyVarObject_HEAD_INIT(0, 0)
  "netCDF4._netCDF4.""Dimension", /*tp_name*/
  sizeof(struct __pyx_obj_7netCDF4_8_netCDF4_Dimension), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7netCDF4_8_netCDF4_Dimension, /*tp_dealloc*/
  0, /*tp_vectorcall_offset*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  __pyx_pw_7netCDF4_8_netCDF4_9Dimension_5__repr__, /*tp_repr*/
  0, /*tp_as_number*/
  &__pyx_tp_as_sequence_Dimension, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_Dimension, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  __pyx_pw_7netCDF4_8_netCDF4_9Dimension_7__str__, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  PyDoc_STR("\nA netCDF `Dimension` is used to describe the coordinates of a `Variable`.\nSee `Dimension.__init__` for more details.\n\nThe current maximum size of a `Dimension` instance can be obtained by\ncalling the python `len` function on the `Dimension` instance. The\n`Dimension.isunlimited` method of a `Dimension` instance can be used to\ndetermine if the dimension is unlimited.\n\nRead-only class variables:\n\n**`name`**: String name, used when creating a `Variable` with\n`Dataset.createVariable`.\n\n**`size`**: Current `Dimension` size (same as `len(d)`, where `d` is a\n`Dimension` instance).\n    "), /*tp_doc*/
  __pyx_tp_traverse_7netCDF4_8_netCDF4_Dimension, /*tp_traverse*/
  __pyx_tp_clear_7netCDF4_8_netCDF4_Dimension, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_7netCDF4_8_netCDF4_Dimension, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_7netCDF4_8_netCDF4_Dimension, /*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_7netCDF4_8_netCDF4_9Dimension_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7netCDF4_8_netCDF4_Dimension, /*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_7netCDF4_8_netCDF4_Variable(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_7netCDF4_8_netCDF4_Variable *p;
  PyObject *o;
  o = __Pyx_AllocateExtensionType(t, 0);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)o);
  p->_name = Py_None; Py_INCREF(Py_None);
  p->ndim = Py_None; Py_INCREF(Py_None);
  p->dtype = Py_None; Py_INCREF(Py_None);
  p->mask = Py_None; Py_INCREF(Py_None);
  p->scale = Py_None; Py_INCREF(Py_None);
  p->always_mask = Py_None; Py_INCREF(Py_None);
  p->chartostring = Py_None; Py_INCREF(Py_None);
  p->_isprimitive = Py_None; Py_INCREF(Py_None);
  p->_iscompound = Py_None; Py_INCREF(Py_None);
  p->_isvlen = Py_None; Py_INCREF(Py_None);
  p->_isenum = Py_None; Py_INCREF(Py_None);
  p->_grp = Py_None; Py_INCREF(Py_None);
  p->_cmptype = Py_None; Py_INCREF(Py_None);
  p->_vltype = Py_None; Py_INCREF(Py_None);
  p->_enumtype = Py_None; Py_INCREF(Py_None);
  p->__pyx___orthogonal_indexing__ = Py_None; Py_INCREF(Py_None);
  p->_has_lsd = Py_None; Py_INCREF(Py_None);
  p->_use_get_vars = Py_None; Py_INCREF(Py_None);
  p->_ncstring_attrs__ = Py_None; Py_INCREF(Py_None);
  p->auto_complex = Py_None; Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_7netCDF4_8_netCDF4_Variable(PyObject *o) {
  struct __pyx_obj_7netCDF4_8_netCDF4_Variable *p = (struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)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_7netCDF4_8_netCDF4_Variable) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->_name);
  Py_CLEAR(p->ndim);
  Py_CLEAR(p->dtype);
  Py_CLEAR(p->mask);
  Py_CLEAR(p->scale);
  Py_CLEAR(p->always_mask);
  Py_CLEAR(p->chartostring);
  Py_CLEAR(p->_isprimitive);
  Py_CLEAR(p->_iscompound);
  Py_CLEAR(p->_isvlen);
  Py_CLEAR(p->_isenum);
  Py_CLEAR(p->_grp);
  Py_CLEAR(p->_cmptype);
  Py_CLEAR(p->_vltype);
  Py_CLEAR(p->_enumtype);
  Py_CLEAR(p->__pyx___orthogonal_indexing__);
  Py_CLEAR(p->_has_lsd);
  Py_CLEAR(p->_use_get_vars);
  Py_CLEAR(p->_ncstring_attrs__);
  Py_CLEAR(p->auto_complex);
  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_7netCDF4_8_netCDF4_Variable(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_7netCDF4_8_netCDF4_Variable *p = (struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)o;
  {
    e = __Pyx_call_type_traverse(o, 1, v, a);
    if (e) return e;
  }
  if (p->_name) {
    e = (*v)(p->_name, a); if (e) return e;
  }
  if (p->ndim) {
    e = (*v)(p->ndim, a); if (e) return e;
  }
  if (p->dtype) {
    e = (*v)(p->dtype, a); if (e) return e;
  }
  if (p->mask) {
    e = (*v)(p->mask, a); if (e) return e;
  }
  if (p->scale) {
    e = (*v)(p->scale, a); if (e) return e;
  }
  if (p->always_mask) {
    e = (*v)(p->always_mask, a); if (e) return e;
  }
  if (p->chartostring) {
    e = (*v)(p->chartostring, a); if (e) return e;
  }
  if (p->_isprimitive) {
    e = (*v)(p->_isprimitive, a); if (e) return e;
  }
  if (p->_iscompound) {
    e = (*v)(p->_iscompound, a); if (e) return e;
  }
  if (p->_isvlen) {
    e = (*v)(p->_isvlen, a); if (e) return e;
  }
  if (p->_isenum) {
    e = (*v)(p->_isenum, a); if (e) return e;
  }
  if (p->_grp) {
    e = (*v)(p->_grp, a); if (e) return e;
  }
  if (p->_cmptype) {
    e = (*v)(p->_cmptype, a); if (e) return e;
  }
  if (p->_vltype) {
    e = (*v)(p->_vltype, a); if (e) return e;
  }
  if (p->_enumtype) {
    e = (*v)(p->_enumtype, a); if (e) return e;
  }
  if (p->__pyx___orthogonal_indexing__) {
    e = (*v)(p->__pyx___orthogonal_indexing__, a); if (e) return e;
  }
  if (p->_has_lsd) {
    e = (*v)(p->_has_lsd, a); if (e) return e;
  }
  if (p->_use_get_vars) {
    e = (*v)(p->_use_get_vars, a); if (e) return e;
  }
  if (p->_ncstring_attrs__) {
    e = (*v)(p->_ncstring_attrs__, a); if (e) return e;
  }
  if (p->auto_complex) {
    e = (*v)(p->auto_complex, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_7netCDF4_8_netCDF4_Variable(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_7netCDF4_8_netCDF4_Variable *p = (struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)o;
  tmp = ((PyObject*)p->_name);
  p->_name = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->ndim);
  p->ndim = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->dtype);
  p->dtype = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->mask);
  p->mask = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->scale);
  p->scale = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->always_mask);
  p->always_mask = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->chartostring);
  p->chartostring = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_isprimitive);
  p->_isprimitive = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_iscompound);
  p->_iscompound = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_isvlen);
  p->_isvlen = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_isenum);
  p->_isenum = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_grp);
  p->_grp = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_cmptype);
  p->_cmptype = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_vltype);
  p->_vltype = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_enumtype);
  p->_enumtype = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx___orthogonal_indexing__);
  p->__pyx___orthogonal_indexing__ = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_has_lsd);
  p->_has_lsd = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_use_get_vars);
  p->_use_get_vars = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_ncstring_attrs__);
  p->_ncstring_attrs__ = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->auto_complex);
  p->auto_complex = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_sq_item_7netCDF4_8_netCDF4_Variable(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_7netCDF4_8_netCDF4_Variable(PyObject *o, PyObject *i, PyObject *v) {
  if (v) {
    return __pyx_pw_7netCDF4_8_netCDF4_8Variable_61__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_tp_getattro_7netCDF4_8_netCDF4_Variable(PyObject *o, PyObject *n) {
  PyObject *v = PyObject_GenericGetAttr(o, n);
  if (!v && PyErr_ExceptionMatches(PyExc_AttributeError)) {
    PyErr_Clear();
    v = __pyx_pw_7netCDF4_8_netCDF4_8Variable_47__getattr__(o, n);
  }
  return v;
}

static int __pyx_tp_setattro_7netCDF4_8_netCDF4_Variable(PyObject *o, PyObject *n, PyObject *v) {
  if (v) {
    return __pyx_pw_7netCDF4_8_netCDF4_8Variable_45__setattr__(o, n, v);
  }
  else {
    return __pyx_pw_7netCDF4_8_netCDF4_8Variable_43__delattr__(o, n);
  }
}

static PyObject *__pyx_getprop_7netCDF4_8_netCDF4_8Variable_name(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7netCDF4_8_netCDF4_8Variable_4name_1__get__(o);
}

static int __pyx_setprop_7netCDF4_8_netCDF4_8Variable_name(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7netCDF4_8_netCDF4_8Variable_4name_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_7netCDF4_8_netCDF4_8Variable_datatype(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7netCDF4_8_netCDF4_8Variable_8datatype_1__get__(o);
}

static PyObject *__pyx_getprop_7netCDF4_8_netCDF4_8Variable_shape(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7netCDF4_8_netCDF4_8Variable_5shape_1__get__(o);
}

static int __pyx_setprop_7netCDF4_8_netCDF4_8Variable_shape(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7netCDF4_8_netCDF4_8Variable_5shape_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_7netCDF4_8_netCDF4_8Variable_size(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7netCDF4_8_netCDF4_8Variable_4size_1__get__(o);
}

static PyObject *__pyx_getprop_7netCDF4_8_netCDF4_8Variable_dimensions(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7netCDF4_8_netCDF4_8Variable_10dimensions_1__get__(o);
}

static int __pyx_setprop_7netCDF4_8_netCDF4_8Variable_dimensions(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7netCDF4_8_netCDF4_8Variable_10dimensions_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_7netCDF4_8_netCDF4_8Variable__varid(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7netCDF4_8_netCDF4_8Variable_6_varid_1__get__(o);
}

static int __pyx_setprop_7netCDF4_8_netCDF4_8Variable__varid(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7netCDF4_8_netCDF4_8Variable_6_varid_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_7netCDF4_8_netCDF4_8Variable__grpid(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7netCDF4_8_netCDF4_8Variable_6_grpid_1__get__(o);
}

static int __pyx_setprop_7netCDF4_8_netCDF4_8Variable__grpid(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7netCDF4_8_netCDF4_8Variable_6_grpid_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_7netCDF4_8_netCDF4_8Variable__nunlimdim(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7netCDF4_8_netCDF4_8Variable_10_nunlimdim_1__get__(o);
}

static int __pyx_setprop_7netCDF4_8_netCDF4_8Variable__nunlimdim(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7netCDF4_8_netCDF4_8Variable_10_nunlimdim_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_7netCDF4_8_netCDF4_8Variable__name(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7netCDF4_8_netCDF4_8Variable_5_name_1__get__(o);
}

static int __pyx_setprop_7netCDF4_8_netCDF4_8Variable__name(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7netCDF4_8_netCDF4_8Variable_5_name_3__set__(o, v);
  }
  else {
    return __pyx_pw_7netCDF4_8_netCDF4_8Variable_5_name_5__del__(o);
  }
}

static PyObject *__pyx_getprop_7netCDF4_8_netCDF4_8Variable_ndim(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7netCDF4_8_netCDF4_8Variable_4ndim_1__get__(o);
}

static int __pyx_setprop_7netCDF4_8_netCDF4_8Variable_ndim(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7netCDF4_8_netCDF4_8Variable_4ndim_3__set__(o, v);
  }
  else {
    return __pyx_pw_7netCDF4_8_netCDF4_8Variable_4ndim_5__del__(o);
  }
}

static PyObject *__pyx_getprop_7netCDF4_8_netCDF4_8Variable_dtype(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7netCDF4_8_netCDF4_8Variable_5dtype_1__get__(o);
}

static int __pyx_setprop_7netCDF4_8_netCDF4_8Variable_dtype(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7netCDF4_8_netCDF4_8Variable_5dtype_3__set__(o, v);
  }
  else {
    return __pyx_pw_7netCDF4_8_netCDF4_8Variable_5dtype_5__del__(o);
  }
}

static PyObject *__pyx_getprop_7netCDF4_8_netCDF4_8Variable_mask(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7netCDF4_8_netCDF4_8Variable_4mask_1__get__(o);
}

static int __pyx_setprop_7netCDF4_8_netCDF4_8Variable_mask(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7netCDF4_8_netCDF4_8Variable_4mask_3__set__(o, v);
  }
  else {
    return __pyx_pw_7netCDF4_8_netCDF4_8Variable_4mask_5__del__(o);
  }
}

static PyObject *__pyx_getprop_7netCDF4_8_netCDF4_8Variable_scale(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7netCDF4_8_netCDF4_8Variable_5scale_1__get__(o);
}

static int __pyx_setprop_7netCDF4_8_netCDF4_8Variable_scale(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7netCDF4_8_netCDF4_8Variable_5scale_3__set__(o, v);
  }
  else {
    return __pyx_pw_7netCDF4_8_netCDF4_8Variable_5scale_5__del__(o);
  }
}

static PyObject *__pyx_getprop_7netCDF4_8_netCDF4_8Variable_always_mask(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7netCDF4_8_netCDF4_8Variable_11always_mask_1__get__(o);
}

static int __pyx_setprop_7netCDF4_8_netCDF4_8Variable_always_mask(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7netCDF4_8_netCDF4_8Variable_11always_mask_3__set__(o, v);
  }
  else {
    return __pyx_pw_7netCDF4_8_netCDF4_8Variable_11always_mask_5__del__(o);
  }
}

static PyObject *__pyx_getprop_7netCDF4_8_netCDF4_8Variable_chartostring(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7netCDF4_8_netCDF4_8Variable_12chartostring_1__get__(o);
}

static int __pyx_setprop_7netCDF4_8_netCDF4_8Variable_chartostring(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7netCDF4_8_netCDF4_8Variable_12chartostring_3__set__(o, v);
  }
  else {
    return __pyx_pw_7netCDF4_8_netCDF4_8Variable_12chartostring_5__del__(o);
  }
}

static PyObject *__pyx_getprop_7netCDF4_8_netCDF4_8Variable__isprimitive(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7netCDF4_8_netCDF4_8Variable_12_isprimitive_1__get__(o);
}

static int __pyx_setprop_7netCDF4_8_netCDF4_8Variable__isprimitive(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7netCDF4_8_netCDF4_8Variable_12_isprimitive_3__set__(o, v);
  }
  else {
    return __pyx_pw_7netCDF4_8_netCDF4_8Variable_12_isprimitive_5__del__(o);
  }
}

static PyObject *__pyx_getprop_7netCDF4_8_netCDF4_8Variable__iscompound(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7netCDF4_8_netCDF4_8Variable_11_iscompound_1__get__(o);
}

static int __pyx_setprop_7netCDF4_8_netCDF4_8Variable__iscompound(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7netCDF4_8_netCDF4_8Variable_11_iscompound_3__set__(o, v);
  }
  else {
    return __pyx_pw_7netCDF4_8_netCDF4_8Variable_11_iscompound_5__del__(o);
  }
}

static PyObject *__pyx_getprop_7netCDF4_8_netCDF4_8Variable__isvlen(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7netCDF4_8_netCDF4_8Variable_7_isvlen_1__get__(o);
}

static int __pyx_setprop_7netCDF4_8_netCDF4_8Variable__isvlen(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7netCDF4_8_netCDF4_8Variable_7_isvlen_3__set__(o, v);
  }
  else {
    return __pyx_pw_7netCDF4_8_netCDF4_8Variable_7_isvlen_5__del__(o);
  }
}

static PyObject *__pyx_getprop_7netCDF4_8_netCDF4_8Variable__isenum(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7netCDF4_8_netCDF4_8Variable_7_isenum_1__get__(o);
}

static int __pyx_setprop_7netCDF4_8_netCDF4_8Variable__isenum(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7netCDF4_8_netCDF4_8Variable_7_isenum_3__set__(o, v);
  }
  else {
    return __pyx_pw_7netCDF4_8_netCDF4_8Variable_7_isenum_5__del__(o);
  }
}

static PyObject *__pyx_getprop_7netCDF4_8_netCDF4_8Variable__grp(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7netCDF4_8_netCDF4_8Variable_4_grp_1__get__(o);
}

static int __pyx_setprop_7netCDF4_8_netCDF4_8Variable__grp(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7netCDF4_8_netCDF4_8Variable_4_grp_3__set__(o, v);
  }
  else {
    return __pyx_pw_7netCDF4_8_netCDF4_8Variable_4_grp_5__del__(o);
  }
}

static PyObject *__pyx_getprop_7netCDF4_8_netCDF4_8Variable__cmptype(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7netCDF4_8_netCDF4_8Variable_8_cmptype_1__get__(o);
}

static int __pyx_setprop_7netCDF4_8_netCDF4_8Variable__cmptype(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7netCDF4_8_netCDF4_8Variable_8_cmptype_3__set__(o, v);
  }
  else {
    return __pyx_pw_7netCDF4_8_netCDF4_8Variable_8_cmptype_5__del__(o);
  }
}

static PyObject *__pyx_getprop_7netCDF4_8_netCDF4_8Variable__vltype(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7netCDF4_8_netCDF4_8Variable_7_vltype_1__get__(o);
}

static int __pyx_setprop_7netCDF4_8_netCDF4_8Variable__vltype(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7netCDF4_8_netCDF4_8Variable_7_vltype_3__set__(o, v);
  }
  else {
    return __pyx_pw_7netCDF4_8_netCDF4_8Variable_7_vltype_5__del__(o);
  }
}

static PyObject *__pyx_getprop_7netCDF4_8_netCDF4_8Variable__enumtype(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7netCDF4_8_netCDF4_8Variable_9_enumtype_1__get__(o);
}

static int __pyx_setprop_7netCDF4_8_netCDF4_8Variable__enumtype(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7netCDF4_8_netCDF4_8Variable_9_enumtype_3__set__(o, v);
  }
  else {
    return __pyx_pw_7netCDF4_8_netCDF4_8Variable_9_enumtype_5__del__(o);
  }
}

static PyObject *__pyx_getprop_7netCDF4_8_netCDF4_8Variable___orthogonal_indexing__(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7netCDF4_8_netCDF4_8Variable_23__orthogonal_indexing___1__get__(o);
}

static int __pyx_setprop_7netCDF4_8_netCDF4_8Variable___orthogonal_indexing__(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7netCDF4_8_netCDF4_8Variable_23__orthogonal_indexing___3__set__(o, v);
  }
  else {
    return __pyx_pw_7netCDF4_8_netCDF4_8Variable_23__orthogonal_indexing___5__del__(o);
  }
}

static PyObject *__pyx_getprop_7netCDF4_8_netCDF4_8Variable__has_lsd(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7netCDF4_8_netCDF4_8Variable_8_has_lsd_1__get__(o);
}

static int __pyx_setprop_7netCDF4_8_netCDF4_8Variable__has_lsd(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7netCDF4_8_netCDF4_8Variable_8_has_lsd_3__set__(o, v);
  }
  else {
    return __pyx_pw_7netCDF4_8_netCDF4_8Variable_8_has_lsd_5__del__(o);
  }
}

static PyObject *__pyx_getprop_7netCDF4_8_netCDF4_8Variable__use_get_vars(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7netCDF4_8_netCDF4_8Variable_13_use_get_vars_1__get__(o);
}

static int __pyx_setprop_7netCDF4_8_netCDF4_8Variable__use_get_vars(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7netCDF4_8_netCDF4_8Variable_13_use_get_vars_3__set__(o, v);
  }
  else {
    return __pyx_pw_7netCDF4_8_netCDF4_8Variable_13_use_get_vars_5__del__(o);
  }
}

static PyObject *__pyx_getprop_7netCDF4_8_netCDF4_8Variable__ncstring_attrs__(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7netCDF4_8_netCDF4_8Variable_17_ncstring_attrs___1__get__(o);
}

static int __pyx_setprop_7netCDF4_8_netCDF4_8Variable__ncstring_attrs__(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7netCDF4_8_netCDF4_8Variable_17_ncstring_attrs___3__set__(o, v);
  }
  else {
    return __pyx_pw_7netCDF4_8_netCDF4_8Variable_17_ncstring_attrs___5__del__(o);
  }
}

static PyObject *__pyx_getprop_7netCDF4_8_netCDF4_8Variable_auto_complex(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7netCDF4_8_netCDF4_8Variable_12auto_complex_1__get__(o);
}

static int __pyx_setprop_7netCDF4_8_netCDF4_8Variable_auto_complex(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7netCDF4_8_netCDF4_8Variable_12auto_complex_3__set__(o, v);
  }
  else {
    return __pyx_pw_7netCDF4_8_netCDF4_8Variable_12auto_complex_5__del__(o);
  }
}

static PyMethodDef __pyx_methods_7netCDF4_8_netCDF4_Variable[] = {
  {"_fix_complex_numbers", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_8Variable_3_fix_complex_numbers, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__array__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_8Variable_5__array__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"_getdims", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_8Variable_11_getdims, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"_getname", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_8Variable_13_getname, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"group", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_8Variable_15group, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_8Variable_14group},
  {"get_fill_value", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_8Variable_17get_fill_value, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_8Variable_16get_fill_value},
  {"ncattrs", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_8Variable_19ncattrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_8Variable_18ncattrs},
  {"setncattr", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_8Variable_21setncattr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_8Variable_20setncattr},
  {"setncattr_string", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_8Variable_23setncattr_string, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_8Variable_22setncattr_string},
  {"setncatts", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_8Variable_25setncatts, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_8Variable_24setncatts},
  {"getncattr", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_8Variable_27getncattr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_8Variable_26getncattr},
  {"delncattr", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_8Variable_29delncattr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_8Variable_28delncattr},
  {"filters", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_8Variable_31filters, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_8Variable_30filters},
  {"quantization", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_8Variable_33quantization, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_8Variable_32quantization},
  {"endian", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_8Variable_35endian, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_8Variable_34endian},
  {"chunking", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_8Variable_37chunking, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_8Variable_36chunking},
  {"get_var_chunk_cache", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_8Variable_39get_var_chunk_cache, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_8Variable_38get_var_chunk_cache},
  {"set_var_chunk_cache", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_8Variable_41set_var_chunk_cache, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_8Variable_40set_var_chunk_cache},
  {"__getattr__", (PyCFunction)__pyx_pw_7netCDF4_8_netCDF4_8Variable_47__getattr__, METH_O|METH_COEXIST, 0},
  {"renameAttribute", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_8Variable_49renameAttribute, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_8Variable_48renameAttribute},
  {"_toma", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_8Variable_53_toma, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"_pack", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_8Variable_55_pack, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"_assign_vlen", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_8Variable_57_assign_vlen, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_8Variable_56_assign_vlen},
  {"_check_safecast", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_8Variable_59_check_safecast, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"assignValue", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_8Variable_65assignValue, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_8Variable_64assignValue},
  {"getValue", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_8Variable_67getValue, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_8Variable_66getValue},
  {"set_auto_chartostring", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_8Variable_69set_auto_chartostring, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_8Variable_68set_auto_chartostring},
  {"use_nc_get_vars", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_8Variable_71use_nc_get_vars, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_8Variable_70use_nc_get_vars},
  {"set_auto_maskandscale", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_8Variable_73set_auto_maskandscale, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_8Variable_72set_auto_maskandscale},
  {"set_auto_scale", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_8Variable_75set_auto_scale, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_8Variable_74set_auto_scale},
  {"set_auto_mask", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_8Variable_77set_auto_mask, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_8Variable_76set_auto_mask},
  {"set_always_mask", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_8Variable_79set_always_mask, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_8Variable_78set_always_mask},
  {"set_ncstring_attrs", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_8Variable_81set_ncstring_attrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_8Variable_80set_ncstring_attrs},
  {"_put", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_8Variable_83_put, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_8Variable_82_put},
  {"_get", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_8Variable_85_get, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_8Variable_84_get},
  {"set_collective", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_8Variable_87set_collective, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_8Variable_86set_collective},
  {"get_dims", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_8Variable_89get_dims, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_8Variable_88get_dims},
  {"__reduce__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_8Variable_91__reduce__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_7netCDF4_8_netCDF4_Variable[] = {
  {"name", __pyx_getprop_7netCDF4_8_netCDF4_8Variable_name, __pyx_setprop_7netCDF4_8_netCDF4_8Variable_name, PyDoc_STR("string name of Variable instance"), 0},
  {"datatype", __pyx_getprop_7netCDF4_8_netCDF4_8Variable_datatype, 0, PyDoc_STR("numpy data type (for primitive data types) or\n        VLType/CompoundType/EnumType instance\n        (for compound, vlen  or enum data types)"), 0},
  {"shape", __pyx_getprop_7netCDF4_8_netCDF4_8Variable_shape, __pyx_setprop_7netCDF4_8_netCDF4_8Variable_shape, PyDoc_STR("find current sizes of all variable dimensions"), 0},
  {"size", __pyx_getprop_7netCDF4_8_netCDF4_8Variable_size, 0, PyDoc_STR("Return the number of stored elements."), 0},
  {"dimensions", __pyx_getprop_7netCDF4_8_netCDF4_8Variable_dimensions, __pyx_setprop_7netCDF4_8_netCDF4_8Variable_dimensions, PyDoc_STR("get variables's dimension names"), 0},
  {"_varid", __pyx_getprop_7netCDF4_8_netCDF4_8Variable__varid, __pyx_setprop_7netCDF4_8_netCDF4_8Variable__varid, 0, 0},
  {"_grpid", __pyx_getprop_7netCDF4_8_netCDF4_8Variable__grpid, __pyx_setprop_7netCDF4_8_netCDF4_8Variable__grpid, 0, 0},
  {"_nunlimdim", __pyx_getprop_7netCDF4_8_netCDF4_8Variable__nunlimdim, __pyx_setprop_7netCDF4_8_netCDF4_8Variable__nunlimdim, 0, 0},
  {"_name", __pyx_getprop_7netCDF4_8_netCDF4_8Variable__name, __pyx_setprop_7netCDF4_8_netCDF4_8Variable__name, 0, 0},
  {"ndim", __pyx_getprop_7netCDF4_8_netCDF4_8Variable_ndim, __pyx_setprop_7netCDF4_8_netCDF4_8Variable_ndim, 0, 0},
  {"dtype", __pyx_getprop_7netCDF4_8_netCDF4_8Variable_dtype, __pyx_setprop_7netCDF4_8_netCDF4_8Variable_dtype, 0, 0},
  {"mask", __pyx_getprop_7netCDF4_8_netCDF4_8Variable_mask, __pyx_setprop_7netCDF4_8_netCDF4_8Variable_mask, 0, 0},
  {"scale", __pyx_getprop_7netCDF4_8_netCDF4_8Variable_scale, __pyx_setprop_7netCDF4_8_netCDF4_8Variable_scale, 0, 0},
  {"always_mask", __pyx_getprop_7netCDF4_8_netCDF4_8Variable_always_mask, __pyx_setprop_7netCDF4_8_netCDF4_8Variable_always_mask, 0, 0},
  {"chartostring", __pyx_getprop_7netCDF4_8_netCDF4_8Variable_chartostring, __pyx_setprop_7netCDF4_8_netCDF4_8Variable_chartostring, 0, 0},
  {"_isprimitive", __pyx_getprop_7netCDF4_8_netCDF4_8Variable__isprimitive, __pyx_setprop_7netCDF4_8_netCDF4_8Variable__isprimitive, 0, 0},
  {"_iscompound", __pyx_getprop_7netCDF4_8_netCDF4_8Variable__iscompound, __pyx_setprop_7netCDF4_8_netCDF4_8Variable__iscompound, 0, 0},
  {"_isvlen", __pyx_getprop_7netCDF4_8_netCDF4_8Variable__isvlen, __pyx_setprop_7netCDF4_8_netCDF4_8Variable__isvlen, 0, 0},
  {"_isenum", __pyx_getprop_7netCDF4_8_netCDF4_8Variable__isenum, __pyx_setprop_7netCDF4_8_netCDF4_8Variable__isenum, 0, 0},
  {"_grp", __pyx_getprop_7netCDF4_8_netCDF4_8Variable__grp, __pyx_setprop_7netCDF4_8_netCDF4_8Variable__grp, 0, 0},
  {"_cmptype", __pyx_getprop_7netCDF4_8_netCDF4_8Variable__cmptype, __pyx_setprop_7netCDF4_8_netCDF4_8Variable__cmptype, 0, 0},
  {"_vltype", __pyx_getprop_7netCDF4_8_netCDF4_8Variable__vltype, __pyx_setprop_7netCDF4_8_netCDF4_8Variable__vltype, 0, 0},
  {"_enumtype", __pyx_getprop_7netCDF4_8_netCDF4_8Variable__enumtype, __pyx_setprop_7netCDF4_8_netCDF4_8Variable__enumtype, 0, 0},
  {"__orthogonal_indexing__", __pyx_getprop_7netCDF4_8_netCDF4_8Variable___orthogonal_indexing__, __pyx_setprop_7netCDF4_8_netCDF4_8Variable___orthogonal_indexing__, 0, 0},
  {"_has_lsd", __pyx_getprop_7netCDF4_8_netCDF4_8Variable__has_lsd, __pyx_setprop_7netCDF4_8_netCDF4_8Variable__has_lsd, 0, 0},
  {"_use_get_vars", __pyx_getprop_7netCDF4_8_netCDF4_8Variable__use_get_vars, __pyx_setprop_7netCDF4_8_netCDF4_8Variable__use_get_vars, 0, 0},
  {"_ncstring_attrs__", __pyx_getprop_7netCDF4_8_netCDF4_8Variable__ncstring_attrs__, __pyx_setprop_7netCDF4_8_netCDF4_8Variable__ncstring_attrs__, 0, 0},
  {"auto_complex", __pyx_getprop_7netCDF4_8_netCDF4_8Variable_auto_complex, __pyx_setprop_7netCDF4_8_netCDF4_8Variable_auto_complex, 0, 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7netCDF4_8_netCDF4_Variable_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7netCDF4_8_netCDF4_Variable},
  {Py_tp_repr, (void *)__pyx_pw_7netCDF4_8_netCDF4_8Variable_7__repr__},
  {Py_sq_length, (void *)__pyx_pw_7netCDF4_8_netCDF4_8Variable_63__len__},
  {Py_sq_item, (void *)__pyx_sq_item_7netCDF4_8_netCDF4_Variable},
  {Py_mp_length, (void *)__pyx_pw_7netCDF4_8_netCDF4_8Variable_63__len__},
  {Py_mp_subscript, (void *)__pyx_pw_7netCDF4_8_netCDF4_8Variable_51__getitem__},
  {Py_mp_ass_subscript, (void *)__pyx_mp_ass_subscript_7netCDF4_8_netCDF4_Variable},
  {Py_tp_str, (void *)__pyx_pw_7netCDF4_8_netCDF4_8Variable_9__str__},
  {Py_tp_getattro, (void *)__pyx_tp_getattro_7netCDF4_8_netCDF4_Variable},
  {Py_tp_setattro, (void *)__pyx_tp_setattro_7netCDF4_8_netCDF4_Variable},
  {Py_tp_doc, (void *)PyDoc_STR("\nA netCDF `Variable` is used to read and write netCDF data.  They are\nanalogous to numpy array objects. See `Variable.__init__` for more\ndetails.\n\nA list of attribute names corresponding to netCDF attributes defined for\nthe variable can be obtained with the `Variable.ncattrs` method. These\nattributes can be created by assigning to an attribute of the\n`Variable` instance. A dictionary containing all the netCDF attribute\nname/value pairs is provided by the `__dict__` attribute of a\n`Variable` instance.\n\nThe following class variables are read-only:\n\n**`dimensions`**: A tuple containing the names of the\ndimensions associated with this variable.\n\n**`dtype`**: A numpy dtype object describing the\nvariable's data type.\n\n**`ndim`**: The number of variable dimensions.\n\n**`shape`**: A tuple with the current shape (length of all dimensions).\n\n**`scale`**: If True, `scale_factor` and `add_offset` are\napplied, and signed integer data is automatically converted to\nunsigned integer data if the `_Unsigned` attribute is set to \"true\" or \"True\".\nDefault is `True`, can be reset using `Variable.set_auto_scale` and\n`Variable.set_auto_maskandscale` methods.\n\n**`mask`**: If True, data is automatically converted to/from masked\narrays when missing values or fill values are present. Default is `True`, can be\nreset using `Variable.set_auto_mask` and `Variable.set_auto_maskandscale`\nmethods. Only relevant for Variables with primitive or enum types (ignored\nfor compound and vlen Variables).\n\n**`chartostring`**: If True, data is automatically converted to/from character\narrays to string arrays when the `_Encoding` variable attribute is set.\nDefault is `True`, can be reset using\n`Variable.set_auto_chartostring` method.\n\n**`least_significant_digit`**: Describes the power of ten of the\nsmallest decimal place in the data the contains a reliable value.  Data is\ntruncated to this decimal place when it is assigned to the `Variable`\ninstance. If `None`, the"" data is not truncated.\n\n**`significant_digits`**: New in version 1.6.0. Describes the number of significant\ndigits in the data the contains a reliable value.  Data is\ntruncated to retain this number of significant digits when it is assigned to the\n`Variable` instance. If `None`, the data is not truncated.\nOnly available with netcdf-c >= 4.9.0,\nand only works with `NETCDF4` or `NETCDF4_CLASSIC` formatted files.\nThe number of significant digits used in the quantization of variable data can be\nobtained using the `Variable.significant_digits` method. Default `None` -\nno quantization done.\n\n**`quantize_mode`**: New in version 1.6.0. Controls\nthe quantization algorithm (default 'BitGroom', 'BitRound' and\n'GranularBitRound' also available).  The 'GranularBitRound'\nalgorithm may result in better compression for typical geophysical datasets.\nIgnored if `significant_digits` not specified. If 'BitRound' is used, then\n`significant_digits` is interpreted as binary (not decimal) digits.\n\n**`__orthogonal_indexing__`**: Always `True`.  Indicates to client code\nthat the object supports 'orthogonal indexing', which means that slices\nthat are 1d arrays or lists slice along each dimension independently.  This\nbehavior is similar to Fortran or Matlab, but different than numpy.\n\n**`datatype`**: numpy data type (for primitive data types) or VLType/CompoundType\n instance (for compound or vlen data types).\n\n**`name`**: String name.\n\n**`size`**: The number of stored elements.\n    ")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_7netCDF4_8_netCDF4_Variable},
  {Py_tp_clear, (void *)__pyx_tp_clear_7netCDF4_8_netCDF4_Variable},
  {Py_tp_methods, (void *)__pyx_methods_7netCDF4_8_netCDF4_Variable},
  {Py_tp_getset, (void *)__pyx_getsets_7netCDF4_8_netCDF4_Variable},
  {Py_tp_init, (void *)__pyx_pw_7netCDF4_8_netCDF4_8Variable_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_7netCDF4_8_netCDF4_Variable},
  {0, 0},
};
static PyType_Spec __pyx_type_7netCDF4_8_netCDF4_Variable_spec = {
  "netCDF4._netCDF4.Variable",
  sizeof(struct __pyx_obj_7netCDF4_8_netCDF4_Variable),
  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_7netCDF4_8_netCDF4_Variable_slots,
};
#else

static PySequenceMethods __pyx_tp_as_sequence_Variable = {
  __pyx_pw_7netCDF4_8_netCDF4_8Variable_63__len__, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  __pyx_sq_item_7netCDF4_8_netCDF4_Variable, /*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_Variable = {
  __pyx_pw_7netCDF4_8_netCDF4_8Variable_63__len__, /*mp_length*/
  __pyx_pw_7netCDF4_8_netCDF4_8Variable_51__getitem__, /*mp_subscript*/
  __pyx_mp_ass_subscript_7netCDF4_8_netCDF4_Variable, /*mp_ass_subscript*/
};

static PyTypeObject __pyx_type_7netCDF4_8_netCDF4_Variable = {
  PyVarObject_HEAD_INIT(0, 0)
  "netCDF4._netCDF4.""Variable", /*tp_name*/
  sizeof(struct __pyx_obj_7netCDF4_8_netCDF4_Variable), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7netCDF4_8_netCDF4_Variable, /*tp_dealloc*/
  0, /*tp_vectorcall_offset*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  __pyx_pw_7netCDF4_8_netCDF4_8Variable_7__repr__, /*tp_repr*/
  0, /*tp_as_number*/
  &__pyx_tp_as_sequence_Variable, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_Variable, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  __pyx_pw_7netCDF4_8_netCDF4_8Variable_9__str__, /*tp_str*/
  __pyx_tp_getattro_7netCDF4_8_netCDF4_Variable, /*tp_getattro*/
  __pyx_tp_setattro_7netCDF4_8_netCDF4_Variable, /*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("\nA netCDF `Variable` is used to read and write netCDF data.  They are\nanalogous to numpy array objects. See `Variable.__init__` for more\ndetails.\n\nA list of attribute names corresponding to netCDF attributes defined for\nthe variable can be obtained with the `Variable.ncattrs` method. These\nattributes can be created by assigning to an attribute of the\n`Variable` instance. A dictionary containing all the netCDF attribute\nname/value pairs is provided by the `__dict__` attribute of a\n`Variable` instance.\n\nThe following class variables are read-only:\n\n**`dimensions`**: A tuple containing the names of the\ndimensions associated with this variable.\n\n**`dtype`**: A numpy dtype object describing the\nvariable's data type.\n\n**`ndim`**: The number of variable dimensions.\n\n**`shape`**: A tuple with the current shape (length of all dimensions).\n\n**`scale`**: If True, `scale_factor` and `add_offset` are\napplied, and signed integer data is automatically converted to\nunsigned integer data if the `_Unsigned` attribute is set to \"true\" or \"True\".\nDefault is `True`, can be reset using `Variable.set_auto_scale` and\n`Variable.set_auto_maskandscale` methods.\n\n**`mask`**: If True, data is automatically converted to/from masked\narrays when missing values or fill values are present. Default is `True`, can be\nreset using `Variable.set_auto_mask` and `Variable.set_auto_maskandscale`\nmethods. Only relevant for Variables with primitive or enum types (ignored\nfor compound and vlen Variables).\n\n**`chartostring`**: If True, data is automatically converted to/from character\narrays to string arrays when the `_Encoding` variable attribute is set.\nDefault is `True`, can be reset using\n`Variable.set_auto_chartostring` method.\n\n**`least_significant_digit`**: Describes the power of ten of the\nsmallest decimal place in the data the contains a reliable value.  Data is\ntruncated to this decimal place when it is assigned to the `Variable`\ninstance. If `None`, the"" data is not truncated.\n\n**`significant_digits`**: New in version 1.6.0. Describes the number of significant\ndigits in the data the contains a reliable value.  Data is\ntruncated to retain this number of significant digits when it is assigned to the\n`Variable` instance. If `None`, the data is not truncated.\nOnly available with netcdf-c >= 4.9.0,\nand only works with `NETCDF4` or `NETCDF4_CLASSIC` formatted files.\nThe number of significant digits used in the quantization of variable data can be\nobtained using the `Variable.significant_digits` method. Default `None` -\nno quantization done.\n\n**`quantize_mode`**: New in version 1.6.0. Controls\nthe quantization algorithm (default 'BitGroom', 'BitRound' and\n'GranularBitRound' also available).  The 'GranularBitRound'\nalgorithm may result in better compression for typical geophysical datasets.\nIgnored if `significant_digits` not specified. If 'BitRound' is used, then\n`significant_digits` is interpreted as binary (not decimal) digits.\n\n**`__orthogonal_indexing__`**: Always `True`.  Indicates to client code\nthat the object supports 'orthogonal indexing', which means that slices\nthat are 1d arrays or lists slice along each dimension independently.  This\nbehavior is similar to Fortran or Matlab, but different than numpy.\n\n**`datatype`**: numpy data type (for primitive data types) or VLType/CompoundType\n instance (for compound or vlen data types).\n\n**`name`**: String name.\n\n**`size`**: The number of stored elements.\n    "), /*tp_doc*/
  __pyx_tp_traverse_7netCDF4_8_netCDF4_Variable, /*tp_traverse*/
  __pyx_tp_clear_7netCDF4_8_netCDF4_Variable, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_7netCDF4_8_netCDF4_Variable, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_7netCDF4_8_netCDF4_Variable, /*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_7netCDF4_8_netCDF4_8Variable_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7netCDF4_8_netCDF4_Variable, /*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_7netCDF4_8_netCDF4_CompoundType(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_7netCDF4_8_netCDF4_CompoundType *p;
  PyObject *o;
  o = __Pyx_AllocateExtensionType(t, 0);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_7netCDF4_8_netCDF4_CompoundType *)o);
  p->dtype = Py_None; Py_INCREF(Py_None);
  p->dtype_view = Py_None; Py_INCREF(Py_None);
  p->name = Py_None; Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_7netCDF4_8_netCDF4_CompoundType(PyObject *o) {
  struct __pyx_obj_7netCDF4_8_netCDF4_CompoundType *p = (struct __pyx_obj_7netCDF4_8_netCDF4_CompoundType *)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_7netCDF4_8_netCDF4_CompoundType) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->dtype);
  Py_CLEAR(p->dtype_view);
  Py_CLEAR(p->name);
  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_7netCDF4_8_netCDF4_CompoundType(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_7netCDF4_8_netCDF4_CompoundType *p = (struct __pyx_obj_7netCDF4_8_netCDF4_CompoundType *)o;
  {
    e = __Pyx_call_type_traverse(o, 1, v, a);
    if (e) return e;
  }
  if (p->dtype) {
    e = (*v)(p->dtype, a); if (e) return e;
  }
  if (p->dtype_view) {
    e = (*v)(p->dtype_view, a); if (e) return e;
  }
  if (p->name) {
    e = (*v)(p->name, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_7netCDF4_8_netCDF4_CompoundType(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_7netCDF4_8_netCDF4_CompoundType *p = (struct __pyx_obj_7netCDF4_8_netCDF4_CompoundType *)o;
  tmp = ((PyObject*)p->dtype);
  p->dtype = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->dtype_view);
  p->dtype_view = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->name);
  p->name = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_7netCDF4_8_netCDF4_12CompoundType__nc_type(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7netCDF4_8_netCDF4_12CompoundType_8_nc_type_1__get__(o);
}

static int __pyx_setprop_7netCDF4_8_netCDF4_12CompoundType__nc_type(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7netCDF4_8_netCDF4_12CompoundType_8_nc_type_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_7netCDF4_8_netCDF4_12CompoundType_dtype(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7netCDF4_8_netCDF4_12CompoundType_5dtype_1__get__(o);
}

static int __pyx_setprop_7netCDF4_8_netCDF4_12CompoundType_dtype(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7netCDF4_8_netCDF4_12CompoundType_5dtype_3__set__(o, v);
  }
  else {
    return __pyx_pw_7netCDF4_8_netCDF4_12CompoundType_5dtype_5__del__(o);
  }
}

static PyObject *__pyx_getprop_7netCDF4_8_netCDF4_12CompoundType_dtype_view(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7netCDF4_8_netCDF4_12CompoundType_10dtype_view_1__get__(o);
}

static int __pyx_setprop_7netCDF4_8_netCDF4_12CompoundType_dtype_view(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7netCDF4_8_netCDF4_12CompoundType_10dtype_view_3__set__(o, v);
  }
  else {
    return __pyx_pw_7netCDF4_8_netCDF4_12CompoundType_10dtype_view_5__del__(o);
  }
}

static PyObject *__pyx_getprop_7netCDF4_8_netCDF4_12CompoundType_name(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7netCDF4_8_netCDF4_12CompoundType_4name_1__get__(o);
}

static int __pyx_setprop_7netCDF4_8_netCDF4_12CompoundType_name(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7netCDF4_8_netCDF4_12CompoundType_4name_3__set__(o, v);
  }
  else {
    return __pyx_pw_7netCDF4_8_netCDF4_12CompoundType_4name_5__del__(o);
  }
}

static PyMethodDef __pyx_methods_7netCDF4_8_netCDF4_CompoundType[] = {
  {"__reduce__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_12CompoundType_7__reduce__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_7netCDF4_8_netCDF4_CompoundType[] = {
  {"_nc_type", __pyx_getprop_7netCDF4_8_netCDF4_12CompoundType__nc_type, __pyx_setprop_7netCDF4_8_netCDF4_12CompoundType__nc_type, 0, 0},
  {"dtype", __pyx_getprop_7netCDF4_8_netCDF4_12CompoundType_dtype, __pyx_setprop_7netCDF4_8_netCDF4_12CompoundType_dtype, 0, 0},
  {"dtype_view", __pyx_getprop_7netCDF4_8_netCDF4_12CompoundType_dtype_view, __pyx_setprop_7netCDF4_8_netCDF4_12CompoundType_dtype_view, 0, 0},
  {"name", __pyx_getprop_7netCDF4_8_netCDF4_12CompoundType_name, __pyx_setprop_7netCDF4_8_netCDF4_12CompoundType_name, 0, 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7netCDF4_8_netCDF4_CompoundType_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7netCDF4_8_netCDF4_CompoundType},
  {Py_tp_repr, (void *)__pyx_pw_7netCDF4_8_netCDF4_12CompoundType_3__repr__},
  {Py_tp_str, (void *)__pyx_pw_7netCDF4_8_netCDF4_12CompoundType_5__str__},
  {Py_tp_doc, (void *)PyDoc_STR("\nA `CompoundType` instance is used to describe a compound data\ntype, and can be passed to the the `Dataset.createVariable` method of\na `Dataset` or `Group` instance.\nCompound data types map to numpy structured arrays.\nSee `CompoundType.__init__` for more details.\n\nThe instance variables `dtype` and `name` should not be modified by\nthe user.\n    ")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_7netCDF4_8_netCDF4_CompoundType},
  {Py_tp_clear, (void *)__pyx_tp_clear_7netCDF4_8_netCDF4_CompoundType},
  {Py_tp_methods, (void *)__pyx_methods_7netCDF4_8_netCDF4_CompoundType},
  {Py_tp_getset, (void *)__pyx_getsets_7netCDF4_8_netCDF4_CompoundType},
  {Py_tp_init, (void *)__pyx_pw_7netCDF4_8_netCDF4_12CompoundType_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_7netCDF4_8_netCDF4_CompoundType},
  {0, 0},
};
static PyType_Spec __pyx_type_7netCDF4_8_netCDF4_CompoundType_spec = {
  "netCDF4._netCDF4.CompoundType",
  sizeof(struct __pyx_obj_7netCDF4_8_netCDF4_CompoundType),
  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_7netCDF4_8_netCDF4_CompoundType_slots,
};
#else

static PyTypeObject __pyx_type_7netCDF4_8_netCDF4_CompoundType = {
  PyVarObject_HEAD_INIT(0, 0)
  "netCDF4._netCDF4.""CompoundType", /*tp_name*/
  sizeof(struct __pyx_obj_7netCDF4_8_netCDF4_CompoundType), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7netCDF4_8_netCDF4_CompoundType, /*tp_dealloc*/
  0, /*tp_vectorcall_offset*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  __pyx_pw_7netCDF4_8_netCDF4_12CompoundType_3__repr__, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  __pyx_pw_7netCDF4_8_netCDF4_12CompoundType_5__str__, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  PyDoc_STR("\nA `CompoundType` instance is used to describe a compound data\ntype, and can be passed to the the `Dataset.createVariable` method of\na `Dataset` or `Group` instance.\nCompound data types map to numpy structured arrays.\nSee `CompoundType.__init__` for more details.\n\nThe instance variables `dtype` and `name` should not be modified by\nthe user.\n    "), /*tp_doc*/
  __pyx_tp_traverse_7netCDF4_8_netCDF4_CompoundType, /*tp_traverse*/
  __pyx_tp_clear_7netCDF4_8_netCDF4_CompoundType, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_7netCDF4_8_netCDF4_CompoundType, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_7netCDF4_8_netCDF4_CompoundType, /*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_7netCDF4_8_netCDF4_12CompoundType_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7netCDF4_8_netCDF4_CompoundType, /*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_7netCDF4_8_netCDF4_VLType(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_7netCDF4_8_netCDF4_VLType *p;
  PyObject *o;
  o = __Pyx_AllocateExtensionType(t, 0);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_7netCDF4_8_netCDF4_VLType *)o);
  p->dtype = Py_None; Py_INCREF(Py_None);
  p->name = Py_None; Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_7netCDF4_8_netCDF4_VLType(PyObject *o) {
  struct __pyx_obj_7netCDF4_8_netCDF4_VLType *p = (struct __pyx_obj_7netCDF4_8_netCDF4_VLType *)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_7netCDF4_8_netCDF4_VLType) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->dtype);
  Py_CLEAR(p->name);
  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_7netCDF4_8_netCDF4_VLType(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_7netCDF4_8_netCDF4_VLType *p = (struct __pyx_obj_7netCDF4_8_netCDF4_VLType *)o;
  {
    e = __Pyx_call_type_traverse(o, 1, v, a);
    if (e) return e;
  }
  if (p->dtype) {
    e = (*v)(p->dtype, a); if (e) return e;
  }
  if (p->name) {
    e = (*v)(p->name, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_7netCDF4_8_netCDF4_VLType(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_7netCDF4_8_netCDF4_VLType *p = (struct __pyx_obj_7netCDF4_8_netCDF4_VLType *)o;
  tmp = ((PyObject*)p->dtype);
  p->dtype = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->name);
  p->name = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_7netCDF4_8_netCDF4_6VLType__nc_type(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7netCDF4_8_netCDF4_6VLType_8_nc_type_1__get__(o);
}

static int __pyx_setprop_7netCDF4_8_netCDF4_6VLType__nc_type(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7netCDF4_8_netCDF4_6VLType_8_nc_type_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_7netCDF4_8_netCDF4_6VLType_dtype(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7netCDF4_8_netCDF4_6VLType_5dtype_1__get__(o);
}

static int __pyx_setprop_7netCDF4_8_netCDF4_6VLType_dtype(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7netCDF4_8_netCDF4_6VLType_5dtype_3__set__(o, v);
  }
  else {
    return __pyx_pw_7netCDF4_8_netCDF4_6VLType_5dtype_5__del__(o);
  }
}

static PyObject *__pyx_getprop_7netCDF4_8_netCDF4_6VLType_name(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7netCDF4_8_netCDF4_6VLType_4name_1__get__(o);
}

static int __pyx_setprop_7netCDF4_8_netCDF4_6VLType_name(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7netCDF4_8_netCDF4_6VLType_4name_3__set__(o, v);
  }
  else {
    return __pyx_pw_7netCDF4_8_netCDF4_6VLType_4name_5__del__(o);
  }
}

static PyMethodDef __pyx_methods_7netCDF4_8_netCDF4_VLType[] = {
  {"__reduce__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_6VLType_7__reduce__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_7netCDF4_8_netCDF4_VLType[] = {
  {"_nc_type", __pyx_getprop_7netCDF4_8_netCDF4_6VLType__nc_type, __pyx_setprop_7netCDF4_8_netCDF4_6VLType__nc_type, 0, 0},
  {"dtype", __pyx_getprop_7netCDF4_8_netCDF4_6VLType_dtype, __pyx_setprop_7netCDF4_8_netCDF4_6VLType_dtype, 0, 0},
  {"name", __pyx_getprop_7netCDF4_8_netCDF4_6VLType_name, __pyx_setprop_7netCDF4_8_netCDF4_6VLType_name, 0, 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7netCDF4_8_netCDF4_VLType_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7netCDF4_8_netCDF4_VLType},
  {Py_tp_repr, (void *)__pyx_pw_7netCDF4_8_netCDF4_6VLType_3__repr__},
  {Py_tp_str, (void *)__pyx_pw_7netCDF4_8_netCDF4_6VLType_5__str__},
  {Py_tp_doc, (void *)PyDoc_STR("\nA `VLType` instance is used to describe a variable length (VLEN) data\ntype, and can be passed to the the `Dataset.createVariable` method of\na `Dataset` or `Group` instance. See\n`VLType.__init__` for more details.\n\nThe instance variables `dtype` and `name` should not be modified by\nthe user.\n    ")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_7netCDF4_8_netCDF4_VLType},
  {Py_tp_clear, (void *)__pyx_tp_clear_7netCDF4_8_netCDF4_VLType},
  {Py_tp_methods, (void *)__pyx_methods_7netCDF4_8_netCDF4_VLType},
  {Py_tp_getset, (void *)__pyx_getsets_7netCDF4_8_netCDF4_VLType},
  {Py_tp_init, (void *)__pyx_pw_7netCDF4_8_netCDF4_6VLType_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_7netCDF4_8_netCDF4_VLType},
  {0, 0},
};
static PyType_Spec __pyx_type_7netCDF4_8_netCDF4_VLType_spec = {
  "netCDF4._netCDF4.VLType",
  sizeof(struct __pyx_obj_7netCDF4_8_netCDF4_VLType),
  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_7netCDF4_8_netCDF4_VLType_slots,
};
#else

static PyTypeObject __pyx_type_7netCDF4_8_netCDF4_VLType = {
  PyVarObject_HEAD_INIT(0, 0)
  "netCDF4._netCDF4.""VLType", /*tp_name*/
  sizeof(struct __pyx_obj_7netCDF4_8_netCDF4_VLType), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7netCDF4_8_netCDF4_VLType, /*tp_dealloc*/
  0, /*tp_vectorcall_offset*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  __pyx_pw_7netCDF4_8_netCDF4_6VLType_3__repr__, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  __pyx_pw_7netCDF4_8_netCDF4_6VLType_5__str__, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  PyDoc_STR("\nA `VLType` instance is used to describe a variable length (VLEN) data\ntype, and can be passed to the the `Dataset.createVariable` method of\na `Dataset` or `Group` instance. See\n`VLType.__init__` for more details.\n\nThe instance variables `dtype` and `name` should not be modified by\nthe user.\n    "), /*tp_doc*/
  __pyx_tp_traverse_7netCDF4_8_netCDF4_VLType, /*tp_traverse*/
  __pyx_tp_clear_7netCDF4_8_netCDF4_VLType, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_7netCDF4_8_netCDF4_VLType, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_7netCDF4_8_netCDF4_VLType, /*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_7netCDF4_8_netCDF4_6VLType_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7netCDF4_8_netCDF4_VLType, /*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_7netCDF4_8_netCDF4_EnumType(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_7netCDF4_8_netCDF4_EnumType *p;
  PyObject *o;
  o = __Pyx_AllocateExtensionType(t, 0);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_7netCDF4_8_netCDF4_EnumType *)o);
  p->dtype = Py_None; Py_INCREF(Py_None);
  p->name = Py_None; Py_INCREF(Py_None);
  p->enum_dict = Py_None; Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_7netCDF4_8_netCDF4_EnumType(PyObject *o) {
  struct __pyx_obj_7netCDF4_8_netCDF4_EnumType *p = (struct __pyx_obj_7netCDF4_8_netCDF4_EnumType *)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_7netCDF4_8_netCDF4_EnumType) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->dtype);
  Py_CLEAR(p->name);
  Py_CLEAR(p->enum_dict);
  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_7netCDF4_8_netCDF4_EnumType(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_7netCDF4_8_netCDF4_EnumType *p = (struct __pyx_obj_7netCDF4_8_netCDF4_EnumType *)o;
  {
    e = __Pyx_call_type_traverse(o, 1, v, a);
    if (e) return e;
  }
  if (p->dtype) {
    e = (*v)(p->dtype, a); if (e) return e;
  }
  if (p->name) {
    e = (*v)(p->name, a); if (e) return e;
  }
  if (p->enum_dict) {
    e = (*v)(p->enum_dict, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_7netCDF4_8_netCDF4_EnumType(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_7netCDF4_8_netCDF4_EnumType *p = (struct __pyx_obj_7netCDF4_8_netCDF4_EnumType *)o;
  tmp = ((PyObject*)p->dtype);
  p->dtype = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->name);
  p->name = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->enum_dict);
  p->enum_dict = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_7netCDF4_8_netCDF4_8EnumType__nc_type(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7netCDF4_8_netCDF4_8EnumType_8_nc_type_1__get__(o);
}

static int __pyx_setprop_7netCDF4_8_netCDF4_8EnumType__nc_type(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7netCDF4_8_netCDF4_8EnumType_8_nc_type_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_7netCDF4_8_netCDF4_8EnumType_dtype(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7netCDF4_8_netCDF4_8EnumType_5dtype_1__get__(o);
}

static int __pyx_setprop_7netCDF4_8_netCDF4_8EnumType_dtype(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7netCDF4_8_netCDF4_8EnumType_5dtype_3__set__(o, v);
  }
  else {
    return __pyx_pw_7netCDF4_8_netCDF4_8EnumType_5dtype_5__del__(o);
  }
}

static PyObject *__pyx_getprop_7netCDF4_8_netCDF4_8EnumType_name(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7netCDF4_8_netCDF4_8EnumType_4name_1__get__(o);
}

static int __pyx_setprop_7netCDF4_8_netCDF4_8EnumType_name(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7netCDF4_8_netCDF4_8EnumType_4name_3__set__(o, v);
  }
  else {
    return __pyx_pw_7netCDF4_8_netCDF4_8EnumType_4name_5__del__(o);
  }
}

static PyObject *__pyx_getprop_7netCDF4_8_netCDF4_8EnumType_enum_dict(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7netCDF4_8_netCDF4_8EnumType_9enum_dict_1__get__(o);
}

static int __pyx_setprop_7netCDF4_8_netCDF4_8EnumType_enum_dict(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7netCDF4_8_netCDF4_8EnumType_9enum_dict_3__set__(o, v);
  }
  else {
    return __pyx_pw_7netCDF4_8_netCDF4_8EnumType_9enum_dict_5__del__(o);
  }
}

static PyMethodDef __pyx_methods_7netCDF4_8_netCDF4_EnumType[] = {
  {"__reduce__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7netCDF4_8_netCDF4_8EnumType_7__reduce__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_7netCDF4_8_netCDF4_EnumType[] = {
  {"_nc_type", __pyx_getprop_7netCDF4_8_netCDF4_8EnumType__nc_type, __pyx_setprop_7netCDF4_8_netCDF4_8EnumType__nc_type, 0, 0},
  {"dtype", __pyx_getprop_7netCDF4_8_netCDF4_8EnumType_dtype, __pyx_setprop_7netCDF4_8_netCDF4_8EnumType_dtype, 0, 0},
  {"name", __pyx_getprop_7netCDF4_8_netCDF4_8EnumType_name, __pyx_setprop_7netCDF4_8_netCDF4_8EnumType_name, 0, 0},
  {"enum_dict", __pyx_getprop_7netCDF4_8_netCDF4_8EnumType_enum_dict, __pyx_setprop_7netCDF4_8_netCDF4_8EnumType_enum_dict, 0, 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7netCDF4_8_netCDF4_EnumType_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7netCDF4_8_netCDF4_EnumType},
  {Py_tp_repr, (void *)__pyx_pw_7netCDF4_8_netCDF4_8EnumType_3__repr__},
  {Py_tp_str, (void *)__pyx_pw_7netCDF4_8_netCDF4_8EnumType_5__str__},
  {Py_tp_doc, (void *)PyDoc_STR("\nA `EnumType` instance is used to describe an Enum data\ntype, and can be passed to the the `Dataset.createVariable` method of\na `Dataset` or `Group` instance. See\n`EnumType.__init__` for more details.\n\nThe instance variables `dtype`, `name` and `enum_dict` should not be modified by\nthe user.\n    ")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_7netCDF4_8_netCDF4_EnumType},
  {Py_tp_clear, (void *)__pyx_tp_clear_7netCDF4_8_netCDF4_EnumType},
  {Py_tp_methods, (void *)__pyx_methods_7netCDF4_8_netCDF4_EnumType},
  {Py_tp_getset, (void *)__pyx_getsets_7netCDF4_8_netCDF4_EnumType},
  {Py_tp_init, (void *)__pyx_pw_7netCDF4_8_netCDF4_8EnumType_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_7netCDF4_8_netCDF4_EnumType},
  {0, 0},
};
static PyType_Spec __pyx_type_7netCDF4_8_netCDF4_EnumType_spec = {
  "netCDF4._netCDF4.EnumType",
  sizeof(struct __pyx_obj_7netCDF4_8_netCDF4_EnumType),
  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_7netCDF4_8_netCDF4_EnumType_slots,
};
#else

static PyTypeObject __pyx_type_7netCDF4_8_netCDF4_EnumType = {
  PyVarObject_HEAD_INIT(0, 0)
  "netCDF4._netCDF4.""EnumType", /*tp_name*/
  sizeof(struct __pyx_obj_7netCDF4_8_netCDF4_EnumType), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7netCDF4_8_netCDF4_EnumType, /*tp_dealloc*/
  0, /*tp_vectorcall_offset*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  __pyx_pw_7netCDF4_8_netCDF4_8EnumType_3__repr__, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  __pyx_pw_7netCDF4_8_netCDF4_8EnumType_5__str__, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  PyDoc_STR("\nA `EnumType` instance is used to describe an Enum data\ntype, and can be passed to the the `Dataset.createVariable` method of\na `Dataset` or `Group` instance. See\n`EnumType.__init__` for more details.\n\nThe instance variables `dtype`, `name` and `enum_dict` should not be modified by\nthe user.\n    "), /*tp_doc*/
  __pyx_tp_traverse_7netCDF4_8_netCDF4_EnumType, /*tp_traverse*/
  __pyx_tp_clear_7netCDF4_8_netCDF4_EnumType, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_7netCDF4_8_netCDF4_EnumType, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_7netCDF4_8_netCDF4_EnumType, /*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_7netCDF4_8_netCDF4_8EnumType_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7netCDF4_8_netCDF4_EnumType, /*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_7netCDF4_8_netCDF4___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_7netCDF4_8_netCDF4___pyx_defaults(PyObject *o) {
  struct __pyx_defaults *p = (struct __pyx_defaults *)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_7netCDF4_8_netCDF4___pyx_defaults) {
      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_7netCDF4_8_netCDF4___pyx_defaults(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_defaults *p = (struct __pyx_defaults *)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_7netCDF4_8_netCDF4___pyx_defaults(PyObject *o) {
  PyObject* tmp;
  struct __pyx_defaults *p = (struct __pyx_defaults *)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_7netCDF4_8_netCDF4___pyx_defaults_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7netCDF4_8_netCDF4___pyx_defaults},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_7netCDF4_8_netCDF4___pyx_defaults},
  {Py_tp_clear, (void *)__pyx_tp_clear_7netCDF4_8_netCDF4___pyx_defaults},
  {Py_tp_new, (void *)__pyx_tp_new_7netCDF4_8_netCDF4___pyx_defaults},
  {0, 0},
};
static PyType_Spec __pyx_type_7netCDF4_8_netCDF4___pyx_defaults_spec = {
  "netCDF4._netCDF4.__pyx_defaults",
  sizeof(struct __pyx_defaults),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC,
  __pyx_type_7netCDF4_8_netCDF4___pyx_defaults_slots,
};
#else

static PyTypeObject __pyx_type_7netCDF4_8_netCDF4___pyx_defaults = {
  PyVarObject_HEAD_INIT(0, 0)
  "netCDF4._netCDF4.""__pyx_defaults", /*tp_name*/
  sizeof(struct __pyx_defaults), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7netCDF4_8_netCDF4___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|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_7netCDF4_8_netCDF4___pyx_defaults, /*tp_traverse*/
  __pyx_tp_clear_7netCDF4_8_netCDF4___pyx_defaults, /*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_7netCDF4_8_netCDF4___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_7netCDF4_8_netCDF4___pyx_scope_struct__genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  #if CYTHON_USE_FREELISTS
  if (likely((int)(__pyx_mstate_global->__pyx_freecount_7netCDF4_8_netCDF4___pyx_scope_struct__genexpr > 0) & __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(t, __pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct__genexpr, sizeof(struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct__genexpr))))
  {
    o = (PyObject*)__pyx_mstate_global->__pyx_freelist_7netCDF4_8_netCDF4___pyx_scope_struct__genexpr[--__pyx_mstate_global->__pyx_freecount_7netCDF4_8_netCDF4___pyx_scope_struct__genexpr];
    #if CYTHON_USE_TYPE_SPECS
    Py_DECREF(Py_TYPE(o));
    #endif
    memset(o, 0, sizeof(struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct__genexpr));
    #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_7netCDF4_8_netCDF4___pyx_scope_struct__genexpr(PyObject *o) {
  struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct__genexpr *p = (struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct__genexpr *)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_7netCDF4_8_netCDF4___pyx_scope_struct__genexpr) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_genexpr_arg_0);
  Py_CLEAR(p->__pyx_v_k);
  Py_CLEAR(p->__pyx_v_v);
  #if CYTHON_USE_FREELISTS
  if (likely((int)(__pyx_mstate_global->__pyx_freecount_7netCDF4_8_netCDF4___pyx_scope_struct__genexpr < 8) & __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(Py_TYPE(o), __pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct__genexpr, sizeof(struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct__genexpr))))
  {
    __pyx_mstate_global->__pyx_freelist_7netCDF4_8_netCDF4___pyx_scope_struct__genexpr[__pyx_mstate_global->__pyx_freecount_7netCDF4_8_netCDF4___pyx_scope_struct__genexpr++] = ((struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct__genexpr *)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_7netCDF4_8_netCDF4___pyx_scope_struct__genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct__genexpr *p = (struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct__genexpr *)o;
  {
    e = __Pyx_call_type_traverse(o, 1, v, a);
    if (e) return e;
  }
  if (p->__pyx_genexpr_arg_0) {
    e = (*v)(p->__pyx_genexpr_arg_0, a); if (e) return e;
  }
  if (p->__pyx_v_k) {
    e = (*v)(p->__pyx_v_k, a); if (e) return e;
  }
  if (p->__pyx_v_v) {
    e = (*v)(p->__pyx_v_v, a); if (e) return e;
  }
  return 0;
}
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct__genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7netCDF4_8_netCDF4___pyx_scope_struct__genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_7netCDF4_8_netCDF4___pyx_scope_struct__genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_7netCDF4_8_netCDF4___pyx_scope_struct__genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct__genexpr_spec = {
  "netCDF4._netCDF4.__pyx_scope_struct__genexpr",
  sizeof(struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct__genexpr),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC,
  __pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct__genexpr_slots,
};
#else

static PyTypeObject __pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct__genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "netCDF4._netCDF4.""__pyx_scope_struct__genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct__genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7netCDF4_8_netCDF4___pyx_scope_struct__genexpr, /*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_7netCDF4_8_netCDF4___pyx_scope_struct__genexpr, /*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_7netCDF4_8_netCDF4___pyx_scope_struct__genexpr, /*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_7netCDF4_8_netCDF4___pyx_scope_struct_1___pyx_f_7netCDF4_8_netCDF4__get_vars(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  #if CYTHON_USE_FREELISTS
  if (likely((int)(__pyx_mstate_global->__pyx_freecount_7netCDF4_8_netCDF4___pyx_scope_struct_1___pyx_f_7netCDF4_8_netCDF4__get_vars > 0) & __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(t, __pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_1___pyx_f_7netCDF4_8_netCDF4__get_vars, sizeof(struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_1___pyx_f_7netCDF4_8_netCDF4__get_vars))))
  {
    o = (PyObject*)__pyx_mstate_global->__pyx_freelist_7netCDF4_8_netCDF4___pyx_scope_struct_1___pyx_f_7netCDF4_8_netCDF4__get_vars[--__pyx_mstate_global->__pyx_freecount_7netCDF4_8_netCDF4___pyx_scope_struct_1___pyx_f_7netCDF4_8_netCDF4__get_vars];
    #if CYTHON_USE_TYPE_SPECS
    Py_DECREF(Py_TYPE(o));
    #endif
    memset(o, 0, sizeof(struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_1___pyx_f_7netCDF4_8_netCDF4__get_vars));
    #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_7netCDF4_8_netCDF4___pyx_scope_struct_1___pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *o) {
  struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_1___pyx_f_7netCDF4_8_netCDF4__get_vars *p = (struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_1___pyx_f_7netCDF4_8_netCDF4__get_vars *)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_7netCDF4_8_netCDF4___pyx_scope_struct_1___pyx_f_7netCDF4_8_netCDF4__get_vars) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_group);
  #if CYTHON_USE_FREELISTS
  if (likely((int)(__pyx_mstate_global->__pyx_freecount_7netCDF4_8_netCDF4___pyx_scope_struct_1___pyx_f_7netCDF4_8_netCDF4__get_vars < 8) & __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(Py_TYPE(o), __pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_1___pyx_f_7netCDF4_8_netCDF4__get_vars, sizeof(struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_1___pyx_f_7netCDF4_8_netCDF4__get_vars))))
  {
    __pyx_mstate_global->__pyx_freelist_7netCDF4_8_netCDF4___pyx_scope_struct_1___pyx_f_7netCDF4_8_netCDF4__get_vars[__pyx_mstate_global->__pyx_freecount_7netCDF4_8_netCDF4___pyx_scope_struct_1___pyx_f_7netCDF4_8_netCDF4__get_vars++] = ((struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_1___pyx_f_7netCDF4_8_netCDF4__get_vars *)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_7netCDF4_8_netCDF4___pyx_scope_struct_1___pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_1___pyx_f_7netCDF4_8_netCDF4__get_vars *p = (struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_1___pyx_f_7netCDF4_8_netCDF4__get_vars *)o;
  {
    e = __Pyx_call_type_traverse(o, 1, v, a);
    if (e) return e;
  }
  if (p->__pyx_v_group) {
    e = (*v)(p->__pyx_v_group, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_7netCDF4_8_netCDF4___pyx_scope_struct_1___pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_1___pyx_f_7netCDF4_8_netCDF4__get_vars *p = (struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_1___pyx_f_7netCDF4_8_netCDF4__get_vars *)o;
  tmp = ((PyObject*)p->__pyx_v_group);
  p->__pyx_v_group = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_1___pyx_f_7netCDF4_8_netCDF4__get_vars_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7netCDF4_8_netCDF4___pyx_scope_struct_1___pyx_f_7netCDF4_8_netCDF4__get_vars},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_7netCDF4_8_netCDF4___pyx_scope_struct_1___pyx_f_7netCDF4_8_netCDF4__get_vars},
  {Py_tp_clear, (void *)__pyx_tp_clear_7netCDF4_8_netCDF4___pyx_scope_struct_1___pyx_f_7netCDF4_8_netCDF4__get_vars},
  {Py_tp_new, (void *)__pyx_tp_new_7netCDF4_8_netCDF4___pyx_scope_struct_1___pyx_f_7netCDF4_8_netCDF4__get_vars},
  {0, 0},
};
static PyType_Spec __pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_1___pyx_f_7netCDF4_8_netCDF4__get_vars_spec = {
  "netCDF4._netCDF4.__pyx_scope_struct_1___pyx_f_7netCDF4_8_netCDF4__get_vars",
  sizeof(struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_1___pyx_f_7netCDF4_8_netCDF4__get_vars),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC,
  __pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_1___pyx_f_7netCDF4_8_netCDF4__get_vars_slots,
};
#else

static PyTypeObject __pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_1___pyx_f_7netCDF4_8_netCDF4__get_vars = {
  PyVarObject_HEAD_INIT(0, 0)
  "netCDF4._netCDF4.""__pyx_scope_struct_1___pyx_f_7netCDF4_8_netCDF4__get_vars", /*tp_name*/
  sizeof(struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_1___pyx_f_7netCDF4_8_netCDF4__get_vars), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7netCDF4_8_netCDF4___pyx_scope_struct_1___pyx_f_7netCDF4_8_netCDF4__get_vars, /*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_7netCDF4_8_netCDF4___pyx_scope_struct_1___pyx_f_7netCDF4_8_netCDF4__get_vars, /*tp_traverse*/
  __pyx_tp_clear_7netCDF4_8_netCDF4___pyx_scope_struct_1___pyx_f_7netCDF4_8_netCDF4__get_vars, /*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_7netCDF4_8_netCDF4___pyx_scope_struct_1___pyx_f_7netCDF4_8_netCDF4__get_vars, /*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_7netCDF4_8_netCDF4___pyx_scope_struct_2_genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  #if CYTHON_USE_FREELISTS
  if (likely((int)(__pyx_mstate_global->__pyx_freecount_7netCDF4_8_netCDF4___pyx_scope_struct_2_genexpr > 0) & __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(t, __pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_2_genexpr, sizeof(struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_2_genexpr))))
  {
    o = (PyObject*)__pyx_mstate_global->__pyx_freelist_7netCDF4_8_netCDF4___pyx_scope_struct_2_genexpr[--__pyx_mstate_global->__pyx_freecount_7netCDF4_8_netCDF4___pyx_scope_struct_2_genexpr];
    #if CYTHON_USE_TYPE_SPECS
    Py_DECREF(Py_TYPE(o));
    #endif
    memset(o, 0, sizeof(struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_2_genexpr));
    #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_7netCDF4_8_netCDF4___pyx_scope_struct_2_genexpr(PyObject *o) {
  struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_2_genexpr *p = (struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_2_genexpr *)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_7netCDF4_8_netCDF4___pyx_scope_struct_2_genexpr) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_outer_scope);
  Py_CLEAR(p->__pyx_genexpr_arg_0);
  Py_CLEAR(p->__pyx_v_d);
  Py_CLEAR(p->__pyx_t_0);
  #if CYTHON_USE_FREELISTS
  if (likely((int)(__pyx_mstate_global->__pyx_freecount_7netCDF4_8_netCDF4___pyx_scope_struct_2_genexpr < 8) & __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(Py_TYPE(o), __pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_2_genexpr, sizeof(struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_2_genexpr))))
  {
    __pyx_mstate_global->__pyx_freelist_7netCDF4_8_netCDF4___pyx_scope_struct_2_genexpr[__pyx_mstate_global->__pyx_freecount_7netCDF4_8_netCDF4___pyx_scope_struct_2_genexpr++] = ((struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_2_genexpr *)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_7netCDF4_8_netCDF4___pyx_scope_struct_2_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_2_genexpr *p = (struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_2_genexpr *)o;
  {
    e = __Pyx_call_type_traverse(o, 1, v, a);
    if (e) return e;
  }
  if (p->__pyx_outer_scope) {
    e = (*v)(((PyObject *)p->__pyx_outer_scope), a); if (e) return e;
  }
  if (p->__pyx_genexpr_arg_0) {
    e = (*v)(p->__pyx_genexpr_arg_0, a); if (e) return e;
  }
  if (p->__pyx_v_d) {
    e = (*v)(p->__pyx_v_d, a); if (e) return e;
  }
  if (p->__pyx_t_0) {
    e = (*v)(p->__pyx_t_0, a); if (e) return e;
  }
  return 0;
}
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_2_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7netCDF4_8_netCDF4___pyx_scope_struct_2_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_7netCDF4_8_netCDF4___pyx_scope_struct_2_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_7netCDF4_8_netCDF4___pyx_scope_struct_2_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_2_genexpr_spec = {
  "netCDF4._netCDF4.__pyx_scope_struct_2_genexpr",
  sizeof(struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_2_genexpr),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC,
  __pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_2_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_2_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "netCDF4._netCDF4.""__pyx_scope_struct_2_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_2_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7netCDF4_8_netCDF4___pyx_scope_struct_2_genexpr, /*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_7netCDF4_8_netCDF4___pyx_scope_struct_2_genexpr, /*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_7netCDF4_8_netCDF4___pyx_scope_struct_2_genexpr, /*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_7netCDF4_8_netCDF4___pyx_scope_struct_3___str__(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  #if CYTHON_USE_FREELISTS
  if (likely((int)(__pyx_mstate_global->__pyx_freecount_7netCDF4_8_netCDF4___pyx_scope_struct_3___str__ > 0) & __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(t, __pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_3___str__, sizeof(struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_3___str__))))
  {
    o = (PyObject*)__pyx_mstate_global->__pyx_freelist_7netCDF4_8_netCDF4___pyx_scope_struct_3___str__[--__pyx_mstate_global->__pyx_freecount_7netCDF4_8_netCDF4___pyx_scope_struct_3___str__];
    #if CYTHON_USE_TYPE_SPECS
    Py_DECREF(Py_TYPE(o));
    #endif
    memset(o, 0, sizeof(struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_3___str__));
    #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_7netCDF4_8_netCDF4___pyx_scope_struct_3___str__(PyObject *o) {
  struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_3___str__ *p = (struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_3___str__ *)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_7netCDF4_8_netCDF4___pyx_scope_struct_3___str__) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_self);
  #if CYTHON_USE_FREELISTS
  if (likely((int)(__pyx_mstate_global->__pyx_freecount_7netCDF4_8_netCDF4___pyx_scope_struct_3___str__ < 8) & __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(Py_TYPE(o), __pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_3___str__, sizeof(struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_3___str__))))
  {
    __pyx_mstate_global->__pyx_freelist_7netCDF4_8_netCDF4___pyx_scope_struct_3___str__[__pyx_mstate_global->__pyx_freecount_7netCDF4_8_netCDF4___pyx_scope_struct_3___str__++] = ((struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_3___str__ *)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_7netCDF4_8_netCDF4___pyx_scope_struct_3___str__(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_3___str__ *p = (struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_3___str__ *)o;
  {
    e = __Pyx_call_type_traverse(o, 1, v, a);
    if (e) return e;
  }
  if (p->__pyx_v_self) {
    e = (*v)(((PyObject *)p->__pyx_v_self), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_7netCDF4_8_netCDF4___pyx_scope_struct_3___str__(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_3___str__ *p = (struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_3___str__ *)o;
  tmp = ((PyObject*)p->__pyx_v_self);
  p->__pyx_v_self = ((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_3___str___slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7netCDF4_8_netCDF4___pyx_scope_struct_3___str__},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_7netCDF4_8_netCDF4___pyx_scope_struct_3___str__},
  {Py_tp_clear, (void *)__pyx_tp_clear_7netCDF4_8_netCDF4___pyx_scope_struct_3___str__},
  {Py_tp_new, (void *)__pyx_tp_new_7netCDF4_8_netCDF4___pyx_scope_struct_3___str__},
  {0, 0},
};
static PyType_Spec __pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_3___str___spec = {
  "netCDF4._netCDF4.__pyx_scope_struct_3___str__",
  sizeof(struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_3___str__),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC,
  __pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_3___str___slots,
};
#else

static PyTypeObject __pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_3___str__ = {
  PyVarObject_HEAD_INIT(0, 0)
  "netCDF4._netCDF4.""__pyx_scope_struct_3___str__", /*tp_name*/
  sizeof(struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_3___str__), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7netCDF4_8_netCDF4___pyx_scope_struct_3___str__, /*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_7netCDF4_8_netCDF4___pyx_scope_struct_3___str__, /*tp_traverse*/
  __pyx_tp_clear_7netCDF4_8_netCDF4___pyx_scope_struct_3___str__, /*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_7netCDF4_8_netCDF4___pyx_scope_struct_3___str__, /*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_7netCDF4_8_netCDF4___pyx_scope_struct_4_genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  #if CYTHON_USE_FREELISTS
  if (likely((int)(__pyx_mstate_global->__pyx_freecount_7netCDF4_8_netCDF4___pyx_scope_struct_4_genexpr > 0) & __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(t, __pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_4_genexpr, sizeof(struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_4_genexpr))))
  {
    o = (PyObject*)__pyx_mstate_global->__pyx_freelist_7netCDF4_8_netCDF4___pyx_scope_struct_4_genexpr[--__pyx_mstate_global->__pyx_freecount_7netCDF4_8_netCDF4___pyx_scope_struct_4_genexpr];
    #if CYTHON_USE_TYPE_SPECS
    Py_DECREF(Py_TYPE(o));
    #endif
    memset(o, 0, sizeof(struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_4_genexpr));
    #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_7netCDF4_8_netCDF4___pyx_scope_struct_4_genexpr(PyObject *o) {
  struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_4_genexpr *p = (struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_4_genexpr *)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_7netCDF4_8_netCDF4___pyx_scope_struct_4_genexpr) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_outer_scope);
  Py_CLEAR(p->__pyx_genexpr_arg_0);
  Py_CLEAR(p->__pyx_v_dimname);
  Py_CLEAR(p->__pyx_t_0);
  #if CYTHON_USE_FREELISTS
  if (likely((int)(__pyx_mstate_global->__pyx_freecount_7netCDF4_8_netCDF4___pyx_scope_struct_4_genexpr < 8) & __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(Py_TYPE(o), __pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_4_genexpr, sizeof(struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_4_genexpr))))
  {
    __pyx_mstate_global->__pyx_freelist_7netCDF4_8_netCDF4___pyx_scope_struct_4_genexpr[__pyx_mstate_global->__pyx_freecount_7netCDF4_8_netCDF4___pyx_scope_struct_4_genexpr++] = ((struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_4_genexpr *)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_7netCDF4_8_netCDF4___pyx_scope_struct_4_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_4_genexpr *p = (struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_4_genexpr *)o;
  {
    e = __Pyx_call_type_traverse(o, 1, v, a);
    if (e) return e;
  }
  if (p->__pyx_outer_scope) {
    e = (*v)(((PyObject *)p->__pyx_outer_scope), a); if (e) return e;
  }
  if (p->__pyx_genexpr_arg_0) {
    e = (*v)(p->__pyx_genexpr_arg_0, a); if (e) return e;
  }
  if (p->__pyx_v_dimname) {
    e = (*v)(p->__pyx_v_dimname, a); if (e) return e;
  }
  if (p->__pyx_t_0) {
    e = (*v)(p->__pyx_t_0, a); if (e) return e;
  }
  return 0;
}
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_4_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7netCDF4_8_netCDF4___pyx_scope_struct_4_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_7netCDF4_8_netCDF4___pyx_scope_struct_4_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_7netCDF4_8_netCDF4___pyx_scope_struct_4_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_4_genexpr_spec = {
  "netCDF4._netCDF4.__pyx_scope_struct_4_genexpr",
  sizeof(struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_4_genexpr),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC,
  __pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_4_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_4_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "netCDF4._netCDF4.""__pyx_scope_struct_4_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_4_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7netCDF4_8_netCDF4___pyx_scope_struct_4_genexpr, /*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_7netCDF4_8_netCDF4___pyx_scope_struct_4_genexpr, /*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_7netCDF4_8_netCDF4___pyx_scope_struct_4_genexpr, /*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_7netCDF4_8_netCDF4___pyx_scope_struct_5_genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  #if CYTHON_USE_FREELISTS
  if (likely((int)(__pyx_mstate_global->__pyx_freecount_7netCDF4_8_netCDF4___pyx_scope_struct_5_genexpr > 0) & __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(t, __pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_5_genexpr, sizeof(struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_5_genexpr))))
  {
    o = (PyObject*)__pyx_mstate_global->__pyx_freelist_7netCDF4_8_netCDF4___pyx_scope_struct_5_genexpr[--__pyx_mstate_global->__pyx_freecount_7netCDF4_8_netCDF4___pyx_scope_struct_5_genexpr];
    #if CYTHON_USE_TYPE_SPECS
    Py_DECREF(Py_TYPE(o));
    #endif
    memset(o, 0, sizeof(struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_5_genexpr));
    #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_7netCDF4_8_netCDF4___pyx_scope_struct_5_genexpr(PyObject *o) {
  struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_5_genexpr *p = (struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_5_genexpr *)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_7netCDF4_8_netCDF4___pyx_scope_struct_5_genexpr) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_genexpr_arg_0);
  Py_CLEAR(p->__pyx_v_grpname);
  Py_CLEAR(p->__pyx_t_0);
  #if CYTHON_USE_FREELISTS
  if (likely((int)(__pyx_mstate_global->__pyx_freecount_7netCDF4_8_netCDF4___pyx_scope_struct_5_genexpr < 8) & __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(Py_TYPE(o), __pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_5_genexpr, sizeof(struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_5_genexpr))))
  {
    __pyx_mstate_global->__pyx_freelist_7netCDF4_8_netCDF4___pyx_scope_struct_5_genexpr[__pyx_mstate_global->__pyx_freecount_7netCDF4_8_netCDF4___pyx_scope_struct_5_genexpr++] = ((struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_5_genexpr *)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_7netCDF4_8_netCDF4___pyx_scope_struct_5_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_5_genexpr *p = (struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_5_genexpr *)o;
  {
    e = __Pyx_call_type_traverse(o, 1, v, a);
    if (e) return e;
  }
  if (p->__pyx_genexpr_arg_0) {
    e = (*v)(p->__pyx_genexpr_arg_0, a); if (e) return e;
  }
  if (p->__pyx_v_grpname) {
    e = (*v)(p->__pyx_v_grpname, a); if (e) return e;
  }
  if (p->__pyx_t_0) {
    e = (*v)(p->__pyx_t_0, a); if (e) return e;
  }
  return 0;
}
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_5_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7netCDF4_8_netCDF4___pyx_scope_struct_5_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_7netCDF4_8_netCDF4___pyx_scope_struct_5_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_7netCDF4_8_netCDF4___pyx_scope_struct_5_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_5_genexpr_spec = {
  "netCDF4._netCDF4.__pyx_scope_struct_5_genexpr",
  sizeof(struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_5_genexpr),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC,
  __pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_5_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_5_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "netCDF4._netCDF4.""__pyx_scope_struct_5_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_5_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7netCDF4_8_netCDF4___pyx_scope_struct_5_genexpr, /*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_7netCDF4_8_netCDF4___pyx_scope_struct_5_genexpr, /*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_7netCDF4_8_netCDF4___pyx_scope_struct_5_genexpr, /*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_7netCDF4_8_netCDF4___pyx_scope_struct_6_createVariable(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  #if CYTHON_USE_FREELISTS
  if (likely((int)(__pyx_mstate_global->__pyx_freecount_7netCDF4_8_netCDF4___pyx_scope_struct_6_createVariable > 0) & __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(t, __pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_6_createVariable, sizeof(struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_6_createVariable))))
  {
    o = (PyObject*)__pyx_mstate_global->__pyx_freelist_7netCDF4_8_netCDF4___pyx_scope_struct_6_createVariable[--__pyx_mstate_global->__pyx_freecount_7netCDF4_8_netCDF4___pyx_scope_struct_6_createVariable];
    #if CYTHON_USE_TYPE_SPECS
    Py_DECREF(Py_TYPE(o));
    #endif
    memset(o, 0, sizeof(struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_6_createVariable));
    #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_7netCDF4_8_netCDF4___pyx_scope_struct_6_createVariable(PyObject *o) {
  struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_6_createVariable *p = (struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_6_createVariable *)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_7netCDF4_8_netCDF4___pyx_scope_struct_6_createVariable) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_group);
  #if CYTHON_USE_FREELISTS
  if (likely((int)(__pyx_mstate_global->__pyx_freecount_7netCDF4_8_netCDF4___pyx_scope_struct_6_createVariable < 8) & __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(Py_TYPE(o), __pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_6_createVariable, sizeof(struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_6_createVariable))))
  {
    __pyx_mstate_global->__pyx_freelist_7netCDF4_8_netCDF4___pyx_scope_struct_6_createVariable[__pyx_mstate_global->__pyx_freecount_7netCDF4_8_netCDF4___pyx_scope_struct_6_createVariable++] = ((struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_6_createVariable *)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_7netCDF4_8_netCDF4___pyx_scope_struct_6_createVariable(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_6_createVariable *p = (struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_6_createVariable *)o;
  {
    e = __Pyx_call_type_traverse(o, 1, v, a);
    if (e) return e;
  }
  if (p->__pyx_v_group) {
    e = (*v)(p->__pyx_v_group, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_7netCDF4_8_netCDF4___pyx_scope_struct_6_createVariable(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_6_createVariable *p = (struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_6_createVariable *)o;
  tmp = ((PyObject*)p->__pyx_v_group);
  p->__pyx_v_group = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_6_createVariable_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7netCDF4_8_netCDF4___pyx_scope_struct_6_createVariable},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_7netCDF4_8_netCDF4___pyx_scope_struct_6_createVariable},
  {Py_tp_clear, (void *)__pyx_tp_clear_7netCDF4_8_netCDF4___pyx_scope_struct_6_createVariable},
  {Py_tp_new, (void *)__pyx_tp_new_7netCDF4_8_netCDF4___pyx_scope_struct_6_createVariable},
  {0, 0},
};
static PyType_Spec __pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_6_createVariable_spec = {
  "netCDF4._netCDF4.__pyx_scope_struct_6_createVariable",
  sizeof(struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_6_createVariable),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC,
  __pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_6_createVariable_slots,
};
#else

static PyTypeObject __pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_6_createVariable = {
  PyVarObject_HEAD_INIT(0, 0)
  "netCDF4._netCDF4.""__pyx_scope_struct_6_createVariable", /*tp_name*/
  sizeof(struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_6_createVariable), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7netCDF4_8_netCDF4___pyx_scope_struct_6_createVariable, /*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_7netCDF4_8_netCDF4___pyx_scope_struct_6_createVariable, /*tp_traverse*/
  __pyx_tp_clear_7netCDF4_8_netCDF4___pyx_scope_struct_6_createVariable, /*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_7netCDF4_8_netCDF4___pyx_scope_struct_6_createVariable, /*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_7netCDF4_8_netCDF4___pyx_scope_struct_7_genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  #if CYTHON_USE_FREELISTS
  if (likely((int)(__pyx_mstate_global->__pyx_freecount_7netCDF4_8_netCDF4___pyx_scope_struct_7_genexpr > 0) & __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(t, __pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_7_genexpr, sizeof(struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_7_genexpr))))
  {
    o = (PyObject*)__pyx_mstate_global->__pyx_freelist_7netCDF4_8_netCDF4___pyx_scope_struct_7_genexpr[--__pyx_mstate_global->__pyx_freecount_7netCDF4_8_netCDF4___pyx_scope_struct_7_genexpr];
    #if CYTHON_USE_TYPE_SPECS
    Py_DECREF(Py_TYPE(o));
    #endif
    memset(o, 0, sizeof(struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_7_genexpr));
    #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_7netCDF4_8_netCDF4___pyx_scope_struct_7_genexpr(PyObject *o) {
  struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_7_genexpr *p = (struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_7_genexpr *)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_7netCDF4_8_netCDF4___pyx_scope_struct_7_genexpr) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_outer_scope);
  Py_CLEAR(p->__pyx_genexpr_arg_0);
  Py_CLEAR(p->__pyx_v_d);
  Py_CLEAR(p->__pyx_t_0);
  #if CYTHON_USE_FREELISTS
  if (likely((int)(__pyx_mstate_global->__pyx_freecount_7netCDF4_8_netCDF4___pyx_scope_struct_7_genexpr < 8) & __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(Py_TYPE(o), __pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_7_genexpr, sizeof(struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_7_genexpr))))
  {
    __pyx_mstate_global->__pyx_freelist_7netCDF4_8_netCDF4___pyx_scope_struct_7_genexpr[__pyx_mstate_global->__pyx_freecount_7netCDF4_8_netCDF4___pyx_scope_struct_7_genexpr++] = ((struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_7_genexpr *)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_7netCDF4_8_netCDF4___pyx_scope_struct_7_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_7_genexpr *p = (struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_7_genexpr *)o;
  {
    e = __Pyx_call_type_traverse(o, 1, v, a);
    if (e) return e;
  }
  if (p->__pyx_outer_scope) {
    e = (*v)(((PyObject *)p->__pyx_outer_scope), a); if (e) return e;
  }
  if (p->__pyx_genexpr_arg_0) {
    e = (*v)(p->__pyx_genexpr_arg_0, a); if (e) return e;
  }
  if (p->__pyx_v_d) {
    e = (*v)(p->__pyx_v_d, a); if (e) return e;
  }
  if (p->__pyx_t_0) {
    e = (*v)(p->__pyx_t_0, a); if (e) return e;
  }
  return 0;
}
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_7_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7netCDF4_8_netCDF4___pyx_scope_struct_7_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_7netCDF4_8_netCDF4___pyx_scope_struct_7_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_7netCDF4_8_netCDF4___pyx_scope_struct_7_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_7_genexpr_spec = {
  "netCDF4._netCDF4.__pyx_scope_struct_7_genexpr",
  sizeof(struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_7_genexpr),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC,
  __pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_7_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_7_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "netCDF4._netCDF4.""__pyx_scope_struct_7_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_7_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7netCDF4_8_netCDF4___pyx_scope_struct_7_genexpr, /*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_7netCDF4_8_netCDF4___pyx_scope_struct_7_genexpr, /*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_7netCDF4_8_netCDF4___pyx_scope_struct_7_genexpr, /*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_7netCDF4_8_netCDF4___pyx_scope_struct_8_genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  #if CYTHON_USE_FREELISTS
  if (likely((int)(__pyx_mstate_global->__pyx_freecount_7netCDF4_8_netCDF4___pyx_scope_struct_8_genexpr > 0) & __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(t, __pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_8_genexpr, sizeof(struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_8_genexpr))))
  {
    o = (PyObject*)__pyx_mstate_global->__pyx_freelist_7netCDF4_8_netCDF4___pyx_scope_struct_8_genexpr[--__pyx_mstate_global->__pyx_freecount_7netCDF4_8_netCDF4___pyx_scope_struct_8_genexpr];
    #if CYTHON_USE_TYPE_SPECS
    Py_DECREF(Py_TYPE(o));
    #endif
    memset(o, 0, sizeof(struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_8_genexpr));
    #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_7netCDF4_8_netCDF4___pyx_scope_struct_8_genexpr(PyObject *o) {
  struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_8_genexpr *p = (struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_8_genexpr *)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_7netCDF4_8_netCDF4___pyx_scope_struct_8_genexpr) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_genexpr_arg_0);
  Py_CLEAR(p->__pyx_v_dimname);
  Py_CLEAR(p->__pyx_t_0);
  #if CYTHON_USE_FREELISTS
  if (likely((int)(__pyx_mstate_global->__pyx_freecount_7netCDF4_8_netCDF4___pyx_scope_struct_8_genexpr < 8) & __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(Py_TYPE(o), __pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_8_genexpr, sizeof(struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_8_genexpr))))
  {
    __pyx_mstate_global->__pyx_freelist_7netCDF4_8_netCDF4___pyx_scope_struct_8_genexpr[__pyx_mstate_global->__pyx_freecount_7netCDF4_8_netCDF4___pyx_scope_struct_8_genexpr++] = ((struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_8_genexpr *)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_7netCDF4_8_netCDF4___pyx_scope_struct_8_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_8_genexpr *p = (struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_8_genexpr *)o;
  {
    e = __Pyx_call_type_traverse(o, 1, v, a);
    if (e) return e;
  }
  if (p->__pyx_genexpr_arg_0) {
    e = (*v)(p->__pyx_genexpr_arg_0, a); if (e) return e;
  }
  if (p->__pyx_v_dimname) {
    e = (*v)(p->__pyx_v_dimname, a); if (e) return e;
  }
  if (p->__pyx_t_0) {
    e = (*v)(p->__pyx_t_0, a); if (e) return e;
  }
  return 0;
}
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_8_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7netCDF4_8_netCDF4___pyx_scope_struct_8_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_7netCDF4_8_netCDF4___pyx_scope_struct_8_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_7netCDF4_8_netCDF4___pyx_scope_struct_8_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_8_genexpr_spec = {
  "netCDF4._netCDF4.__pyx_scope_struct_8_genexpr",
  sizeof(struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_8_genexpr),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC,
  __pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_8_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_8_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "netCDF4._netCDF4.""__pyx_scope_struct_8_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_8_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7netCDF4_8_netCDF4___pyx_scope_struct_8_genexpr, /*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_7netCDF4_8_netCDF4___pyx_scope_struct_8_genexpr, /*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_7netCDF4_8_netCDF4___pyx_scope_struct_8_genexpr, /*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_7netCDF4_8_netCDF4___pyx_scope_struct_9_get_dims(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  #if CYTHON_USE_FREELISTS
  if (likely((int)(__pyx_mstate_global->__pyx_freecount_7netCDF4_8_netCDF4___pyx_scope_struct_9_get_dims > 0) & __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(t, __pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_9_get_dims, sizeof(struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_9_get_dims))))
  {
    o = (PyObject*)__pyx_mstate_global->__pyx_freelist_7netCDF4_8_netCDF4___pyx_scope_struct_9_get_dims[--__pyx_mstate_global->__pyx_freecount_7netCDF4_8_netCDF4___pyx_scope_struct_9_get_dims];
    #if CYTHON_USE_TYPE_SPECS
    Py_DECREF(Py_TYPE(o));
    #endif
    memset(o, 0, sizeof(struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_9_get_dims));
    #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_7netCDF4_8_netCDF4___pyx_scope_struct_9_get_dims(PyObject *o) {
  struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_9_get_dims *p = (struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_9_get_dims *)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_7netCDF4_8_netCDF4___pyx_scope_struct_9_get_dims) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_self);
  #if CYTHON_USE_FREELISTS
  if (likely((int)(__pyx_mstate_global->__pyx_freecount_7netCDF4_8_netCDF4___pyx_scope_struct_9_get_dims < 8) & __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(Py_TYPE(o), __pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_9_get_dims, sizeof(struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_9_get_dims))))
  {
    __pyx_mstate_global->__pyx_freelist_7netCDF4_8_netCDF4___pyx_scope_struct_9_get_dims[__pyx_mstate_global->__pyx_freecount_7netCDF4_8_netCDF4___pyx_scope_struct_9_get_dims++] = ((struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_9_get_dims *)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_7netCDF4_8_netCDF4___pyx_scope_struct_9_get_dims(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_9_get_dims *p = (struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_9_get_dims *)o;
  {
    e = __Pyx_call_type_traverse(o, 1, v, a);
    if (e) return e;
  }
  if (p->__pyx_v_self) {
    e = (*v)(((PyObject *)p->__pyx_v_self), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_7netCDF4_8_netCDF4___pyx_scope_struct_9_get_dims(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_9_get_dims *p = (struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_9_get_dims *)o;
  tmp = ((PyObject*)p->__pyx_v_self);
  p->__pyx_v_self = ((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_9_get_dims_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7netCDF4_8_netCDF4___pyx_scope_struct_9_get_dims},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_7netCDF4_8_netCDF4___pyx_scope_struct_9_get_dims},
  {Py_tp_clear, (void *)__pyx_tp_clear_7netCDF4_8_netCDF4___pyx_scope_struct_9_get_dims},
  {Py_tp_new, (void *)__pyx_tp_new_7netCDF4_8_netCDF4___pyx_scope_struct_9_get_dims},
  {0, 0},
};
static PyType_Spec __pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_9_get_dims_spec = {
  "netCDF4._netCDF4.__pyx_scope_struct_9_get_dims",
  sizeof(struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_9_get_dims),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC,
  __pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_9_get_dims_slots,
};
#else

static PyTypeObject __pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_9_get_dims = {
  PyVarObject_HEAD_INIT(0, 0)
  "netCDF4._netCDF4.""__pyx_scope_struct_9_get_dims", /*tp_name*/
  sizeof(struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_9_get_dims), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7netCDF4_8_netCDF4___pyx_scope_struct_9_get_dims, /*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_7netCDF4_8_netCDF4___pyx_scope_struct_9_get_dims, /*tp_traverse*/
  __pyx_tp_clear_7netCDF4_8_netCDF4___pyx_scope_struct_9_get_dims, /*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_7netCDF4_8_netCDF4___pyx_scope_struct_9_get_dims, /*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_7netCDF4_8_netCDF4___pyx_scope_struct_10_genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  #if CYTHON_USE_FREELISTS
  if (likely((int)(__pyx_mstate_global->__pyx_freecount_7netCDF4_8_netCDF4___pyx_scope_struct_10_genexpr > 0) & __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(t, __pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_10_genexpr, sizeof(struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_10_genexpr))))
  {
    o = (PyObject*)__pyx_mstate_global->__pyx_freelist_7netCDF4_8_netCDF4___pyx_scope_struct_10_genexpr[--__pyx_mstate_global->__pyx_freecount_7netCDF4_8_netCDF4___pyx_scope_struct_10_genexpr];
    #if CYTHON_USE_TYPE_SPECS
    Py_DECREF(Py_TYPE(o));
    #endif
    memset(o, 0, sizeof(struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_10_genexpr));
    #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_7netCDF4_8_netCDF4___pyx_scope_struct_10_genexpr(PyObject *o) {
  struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_10_genexpr *p = (struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_10_genexpr *)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_7netCDF4_8_netCDF4___pyx_scope_struct_10_genexpr) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_outer_scope);
  Py_CLEAR(p->__pyx_genexpr_arg_0);
  Py_CLEAR(p->__pyx_v_dim);
  Py_CLEAR(p->__pyx_t_0);
  #if CYTHON_USE_FREELISTS
  if (likely((int)(__pyx_mstate_global->__pyx_freecount_7netCDF4_8_netCDF4___pyx_scope_struct_10_genexpr < 8) & __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(Py_TYPE(o), __pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_10_genexpr, sizeof(struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_10_genexpr))))
  {
    __pyx_mstate_global->__pyx_freelist_7netCDF4_8_netCDF4___pyx_scope_struct_10_genexpr[__pyx_mstate_global->__pyx_freecount_7netCDF4_8_netCDF4___pyx_scope_struct_10_genexpr++] = ((struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_10_genexpr *)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_7netCDF4_8_netCDF4___pyx_scope_struct_10_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_10_genexpr *p = (struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_10_genexpr *)o;
  {
    e = __Pyx_call_type_traverse(o, 1, v, a);
    if (e) return e;
  }
  if (p->__pyx_outer_scope) {
    e = (*v)(((PyObject *)p->__pyx_outer_scope), a); if (e) return e;
  }
  if (p->__pyx_genexpr_arg_0) {
    e = (*v)(p->__pyx_genexpr_arg_0, a); if (e) return e;
  }
  if (p->__pyx_v_dim) {
    e = (*v)(p->__pyx_v_dim, a); if (e) return e;
  }
  if (p->__pyx_t_0) {
    e = (*v)(p->__pyx_t_0, a); if (e) return e;
  }
  return 0;
}
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_10_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7netCDF4_8_netCDF4___pyx_scope_struct_10_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_7netCDF4_8_netCDF4___pyx_scope_struct_10_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_7netCDF4_8_netCDF4___pyx_scope_struct_10_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_10_genexpr_spec = {
  "netCDF4._netCDF4.__pyx_scope_struct_10_genexpr",
  sizeof(struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_10_genexpr),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC,
  __pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_10_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_10_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "netCDF4._netCDF4.""__pyx_scope_struct_10_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_10_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7netCDF4_8_netCDF4___pyx_scope_struct_10_genexpr, /*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_7netCDF4_8_netCDF4___pyx_scope_struct_10_genexpr, /*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_7netCDF4_8_netCDF4___pyx_scope_struct_10_genexpr, /*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_7netCDF4_8_netCDF4___pyx_scope_struct_11_genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  #if CYTHON_USE_FREELISTS
  if (likely((int)(__pyx_mstate_global->__pyx_freecount_7netCDF4_8_netCDF4___pyx_scope_struct_11_genexpr > 0) & __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(t, __pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_11_genexpr, sizeof(struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_11_genexpr))))
  {
    o = (PyObject*)__pyx_mstate_global->__pyx_freelist_7netCDF4_8_netCDF4___pyx_scope_struct_11_genexpr[--__pyx_mstate_global->__pyx_freecount_7netCDF4_8_netCDF4___pyx_scope_struct_11_genexpr];
    #if CYTHON_USE_TYPE_SPECS
    Py_DECREF(Py_TYPE(o));
    #endif
    memset(o, 0, sizeof(struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_11_genexpr));
    #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_7netCDF4_8_netCDF4___pyx_scope_struct_11_genexpr(PyObject *o) {
  struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_11_genexpr *p = (struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_11_genexpr *)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_7netCDF4_8_netCDF4___pyx_scope_struct_11_genexpr) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_genexpr_arg_0);
  Py_CLEAR(p->__pyx_v_dimname);
  Py_CLEAR(p->__pyx_t_0);
  #if CYTHON_USE_FREELISTS
  if (likely((int)(__pyx_mstate_global->__pyx_freecount_7netCDF4_8_netCDF4___pyx_scope_struct_11_genexpr < 8) & __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(Py_TYPE(o), __pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_11_genexpr, sizeof(struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_11_genexpr))))
  {
    __pyx_mstate_global->__pyx_freelist_7netCDF4_8_netCDF4___pyx_scope_struct_11_genexpr[__pyx_mstate_global->__pyx_freecount_7netCDF4_8_netCDF4___pyx_scope_struct_11_genexpr++] = ((struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_11_genexpr *)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_7netCDF4_8_netCDF4___pyx_scope_struct_11_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_11_genexpr *p = (struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_11_genexpr *)o;
  {
    e = __Pyx_call_type_traverse(o, 1, v, a);
    if (e) return e;
  }
  if (p->__pyx_genexpr_arg_0) {
    e = (*v)(p->__pyx_genexpr_arg_0, a); if (e) return e;
  }
  if (p->__pyx_v_dimname) {
    e = (*v)(p->__pyx_v_dimname, a); if (e) return e;
  }
  if (p->__pyx_t_0) {
    e = (*v)(p->__pyx_t_0, a); if (e) return e;
  }
  return 0;
}
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_11_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7netCDF4_8_netCDF4___pyx_scope_struct_11_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_7netCDF4_8_netCDF4___pyx_scope_struct_11_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_7netCDF4_8_netCDF4___pyx_scope_struct_11_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_11_genexpr_spec = {
  "netCDF4._netCDF4.__pyx_scope_struct_11_genexpr",
  sizeof(struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_11_genexpr),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC,
  __pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_11_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_11_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "netCDF4._netCDF4.""__pyx_scope_struct_11_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_11_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7netCDF4_8_netCDF4___pyx_scope_struct_11_genexpr, /*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_7netCDF4_8_netCDF4___pyx_scope_struct_11_genexpr, /*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_7netCDF4_8_netCDF4___pyx_scope_struct_11_genexpr, /*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_7netCDF4_8_netCDF4___pyx_scope_struct_12_genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  #if CYTHON_USE_FREELISTS
  if (likely((int)(__pyx_mstate_global->__pyx_freecount_7netCDF4_8_netCDF4___pyx_scope_struct_12_genexpr > 0) & __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(t, __pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_12_genexpr, sizeof(struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_12_genexpr))))
  {
    o = (PyObject*)__pyx_mstate_global->__pyx_freelist_7netCDF4_8_netCDF4___pyx_scope_struct_12_genexpr[--__pyx_mstate_global->__pyx_freecount_7netCDF4_8_netCDF4___pyx_scope_struct_12_genexpr];
    #if CYTHON_USE_TYPE_SPECS
    Py_DECREF(Py_TYPE(o));
    #endif
    memset(o, 0, sizeof(struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_12_genexpr));
    #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_7netCDF4_8_netCDF4___pyx_scope_struct_12_genexpr(PyObject *o) {
  struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_12_genexpr *p = (struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_12_genexpr *)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_7netCDF4_8_netCDF4___pyx_scope_struct_12_genexpr) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_genexpr_arg_0);
  Py_CLEAR(p->__pyx_v_varname);
  Py_CLEAR(p->__pyx_t_0);
  #if CYTHON_USE_FREELISTS
  if (likely((int)(__pyx_mstate_global->__pyx_freecount_7netCDF4_8_netCDF4___pyx_scope_struct_12_genexpr < 8) & __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(Py_TYPE(o), __pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_12_genexpr, sizeof(struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_12_genexpr))))
  {
    __pyx_mstate_global->__pyx_freelist_7netCDF4_8_netCDF4___pyx_scope_struct_12_genexpr[__pyx_mstate_global->__pyx_freecount_7netCDF4_8_netCDF4___pyx_scope_struct_12_genexpr++] = ((struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_12_genexpr *)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_7netCDF4_8_netCDF4___pyx_scope_struct_12_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_12_genexpr *p = (struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_12_genexpr *)o;
  {
    e = __Pyx_call_type_traverse(o, 1, v, a);
    if (e) return e;
  }
  if (p->__pyx_genexpr_arg_0) {
    e = (*v)(p->__pyx_genexpr_arg_0, a); if (e) return e;
  }
  if (p->__pyx_v_varname) {
    e = (*v)(p->__pyx_v_varname, a); if (e) return e;
  }
  if (p->__pyx_t_0) {
    e = (*v)(p->__pyx_t_0, a); if (e) return e;
  }
  return 0;
}
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_12_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7netCDF4_8_netCDF4___pyx_scope_struct_12_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_7netCDF4_8_netCDF4___pyx_scope_struct_12_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_7netCDF4_8_netCDF4___pyx_scope_struct_12_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_12_genexpr_spec = {
  "netCDF4._netCDF4.__pyx_scope_struct_12_genexpr",
  sizeof(struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_12_genexpr),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC,
  __pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_12_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_12_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "netCDF4._netCDF4.""__pyx_scope_struct_12_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_12_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7netCDF4_8_netCDF4___pyx_scope_struct_12_genexpr, /*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_7netCDF4_8_netCDF4___pyx_scope_struct_12_genexpr, /*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_7netCDF4_8_netCDF4___pyx_scope_struct_12_genexpr, /*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_7netCDF4_8_netCDF4___pyx_scope_struct_13_genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  #if CYTHON_USE_FREELISTS
  if (likely((int)(__pyx_mstate_global->__pyx_freecount_7netCDF4_8_netCDF4___pyx_scope_struct_13_genexpr > 0) & __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(t, __pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_13_genexpr, sizeof(struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_13_genexpr))))
  {
    o = (PyObject*)__pyx_mstate_global->__pyx_freelist_7netCDF4_8_netCDF4___pyx_scope_struct_13_genexpr[--__pyx_mstate_global->__pyx_freecount_7netCDF4_8_netCDF4___pyx_scope_struct_13_genexpr];
    #if CYTHON_USE_TYPE_SPECS
    Py_DECREF(Py_TYPE(o));
    #endif
    memset(o, 0, sizeof(struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_13_genexpr));
    #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_7netCDF4_8_netCDF4___pyx_scope_struct_13_genexpr(PyObject *o) {
  struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_13_genexpr *p = (struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_13_genexpr *)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_7netCDF4_8_netCDF4___pyx_scope_struct_13_genexpr) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_genexpr_arg_0);
  Py_CLEAR(p->__pyx_v_dimname);
  Py_CLEAR(p->__pyx_t_0);
  #if CYTHON_USE_FREELISTS
  if (likely((int)(__pyx_mstate_global->__pyx_freecount_7netCDF4_8_netCDF4___pyx_scope_struct_13_genexpr < 8) & __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(Py_TYPE(o), __pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_13_genexpr, sizeof(struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_13_genexpr))))
  {
    __pyx_mstate_global->__pyx_freelist_7netCDF4_8_netCDF4___pyx_scope_struct_13_genexpr[__pyx_mstate_global->__pyx_freecount_7netCDF4_8_netCDF4___pyx_scope_struct_13_genexpr++] = ((struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_13_genexpr *)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_7netCDF4_8_netCDF4___pyx_scope_struct_13_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_13_genexpr *p = (struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_13_genexpr *)o;
  {
    e = __Pyx_call_type_traverse(o, 1, v, a);
    if (e) return e;
  }
  if (p->__pyx_genexpr_arg_0) {
    e = (*v)(p->__pyx_genexpr_arg_0, a); if (e) return e;
  }
  if (p->__pyx_v_dimname) {
    e = (*v)(p->__pyx_v_dimname, a); if (e) return e;
  }
  if (p->__pyx_t_0) {
    e = (*v)(p->__pyx_t_0, a); if (e) return e;
  }
  return 0;
}
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_13_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7netCDF4_8_netCDF4___pyx_scope_struct_13_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_7netCDF4_8_netCDF4___pyx_scope_struct_13_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_7netCDF4_8_netCDF4___pyx_scope_struct_13_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_13_genexpr_spec = {
  "netCDF4._netCDF4.__pyx_scope_struct_13_genexpr",
  sizeof(struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_13_genexpr),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC,
  __pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_13_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_13_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "netCDF4._netCDF4.""__pyx_scope_struct_13_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_7netCDF4_8_netCDF4___pyx_scope_struct_13_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7netCDF4_8_netCDF4___pyx_scope_struct_13_genexpr, /*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_7netCDF4_8_netCDF4___pyx_scope_struct_13_genexpr, /*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_7netCDF4_8_netCDF4___pyx_scope_struct_13_genexpr, /*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 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_7genexpr__pyx_v_7netCDF4_8_netCDF4_k = Py_None; Py_INCREF(Py_None);
  __pyx_7genexpr__pyx_v_7netCDF4_8_netCDF4_v = Py_None; Py_INCREF(Py_None);
  __pyx_8genexpr1__pyx_v_7netCDF4_8_netCDF4_k = Py_None; Py_INCREF(Py_None);
  __pyx_8genexpr1__pyx_v_7netCDF4_8_netCDF4_v = 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);
  __Pyx_RefNannySetupContext("__Pyx_modinit_function_export_code", 0);
  /*--- Function export code ---*/
  __Pyx_RefNannyFinishContext();
  return 0;
}

static int __Pyx_modinit_type_init_code(__pyx_mstatetype *__pyx_mstate) {
  __Pyx_RefNannyDeclarations
  CYTHON_UNUSED_VAR(__pyx_mstate);
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__Pyx_modinit_type_init_code", 0);
  /*--- Type init code ---*/
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4__MemBuf = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7netCDF4_8_netCDF4__MemBuf_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4__MemBuf)) __PYX_ERR(2, 16, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4__MemBuf->tp_as_buffer = &__pyx_tp_as_buffer__MemBuf;
  #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_7netCDF4_8_netCDF4__MemBuf_spec, __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4__MemBuf) < (0)) __PYX_ERR(2, 16, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4__MemBuf = &__pyx_type_7netCDF4_8_netCDF4__MemBuf;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4__MemBuf) < (0)) __PYX_ERR(2, 16, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4__MemBuf);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4__MemBuf->tp_dictoffset && __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4__MemBuf->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4__MemBuf->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_MemBuf, (PyObject *) __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4__MemBuf) < (0)) __PYX_ERR(2, 16, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4__MemBuf) < (0)) __PYX_ERR(2, 16, __pyx_L1_error)
  __pyx_t_1 = PyImport_ImportModule("numpy"); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 376, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4_ndarray = __Pyx_ImportType_3_2_3(__pyx_t_1, "numpy", "ndarray",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(PyArrayObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyArrayObject),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(PyArrayObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyArrayObject),
  #else
  sizeof(PyArrayObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyArrayObject),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_3); if (!__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4_ndarray) __PYX_ERR(4, 376, __pyx_L1_error)
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4_Dataset = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7netCDF4_8_netCDF4_Dataset_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4_Dataset)) __PYX_ERR(0, 2222, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7netCDF4_8_netCDF4_Dataset_spec, __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4_Dataset) < (0)) __PYX_ERR(0, 2222, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4_Dataset = &__pyx_type_7netCDF4_8_netCDF4_Dataset;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4_Dataset) < (0)) __PYX_ERR(0, 2222, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4_Dataset);
  #endif
  #if CYTHON_UPDATE_DESCRIPTOR_DOC
  {
    PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4_Dataset, "__init__"); if (unlikely(!wrapper)) __PYX_ERR(0, 2222, __pyx_L1_error)
    if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) {
      __pyx_wrapperbase_7netCDF4_8_netCDF4_7Dataset___init__ = *((PyWrapperDescrObject *)wrapper)->d_base;
      __pyx_wrapperbase_7netCDF4_8_netCDF4_7Dataset___init__.doc = __pyx_doc_7netCDF4_8_netCDF4_7Dataset___init__;
      ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_7netCDF4_8_netCDF4_7Dataset___init__;
    }
  }
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_Dataset, (PyObject *) __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4_Dataset) < (0)) __PYX_ERR(0, 2222, __pyx_L1_error)
  #if CYTHON_USE_TYPE_SLOTS
  if (__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4_Dataset->tp_weaklistoffset == 0) __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4_Dataset->tp_weaklistoffset = offsetof(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset, __weakref__);
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_2 = PyTuple_Pack(1, (PyObject *)__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Dataset); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3597, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4_Group = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7netCDF4_8_netCDF4_Group_spec, __pyx_t_2);
  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (unlikely(!__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4_Group)) __PYX_ERR(0, 3597, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7netCDF4_8_netCDF4_Group_spec, __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4_Group) < (0)) __PYX_ERR(0, 3597, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4_Group = &__pyx_type_7netCDF4_8_netCDF4_Group;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Group->tp_base = __pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Dataset;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4_Group) < (0)) __PYX_ERR(0, 3597, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4_Group);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4_Group->tp_dictoffset && __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4_Group->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4_Group->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  #if CYTHON_UPDATE_DESCRIPTOR_DOC
  {
    PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4_Group, "__init__"); if (unlikely(!wrapper)) __PYX_ERR(0, 3597, __pyx_L1_error)
    if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) {
      __pyx_wrapperbase_7netCDF4_8_netCDF4_5Group___init__ = *((PyWrapperDescrObject *)wrapper)->d_base;
      __pyx_wrapperbase_7netCDF4_8_netCDF4_5Group___init__.doc = __pyx_doc_7netCDF4_8_netCDF4_5Group___init__;
      ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_7netCDF4_8_netCDF4_5Group___init__;
    }
  }
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_Group, (PyObject *) __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4_Group) < (0)) __PYX_ERR(0, 3597, __pyx_L1_error)
  #if CYTHON_USE_TYPE_SLOTS
  if (__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4_Group->tp_weaklistoffset == 0) __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4_Group->tp_weaklistoffset = offsetof(struct __pyx_obj_7netCDF4_8_netCDF4_Group, __pyx_base.__weakref__);
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4_Dimension = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7netCDF4_8_netCDF4_Dimension_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4_Dimension)) __PYX_ERR(0, 3678, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7netCDF4_8_netCDF4_Dimension_spec, __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4_Dimension) < (0)) __PYX_ERR(0, 3678, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4_Dimension = &__pyx_type_7netCDF4_8_netCDF4_Dimension;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4_Dimension) < (0)) __PYX_ERR(0, 3678, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4_Dimension);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4_Dimension->tp_dictoffset && __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4_Dimension->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4_Dimension->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  #if CYTHON_UPDATE_DESCRIPTOR_DOC
  {
    PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4_Dimension, "__init__"); if (unlikely(!wrapper)) __PYX_ERR(0, 3678, __pyx_L1_error)
    if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) {
      __pyx_wrapperbase_7netCDF4_8_netCDF4_9Dimension___init__ = *((PyWrapperDescrObject *)wrapper)->d_base;
      __pyx_wrapperbase_7netCDF4_8_netCDF4_9Dimension___init__.doc = __pyx_doc_7netCDF4_8_netCDF4_9Dimension___init__;
      ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_7netCDF4_8_netCDF4_9Dimension___init__;
    }
  }
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_Dimension_2, (PyObject *) __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4_Dimension) < (0)) __PYX_ERR(0, 3678, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4_Dimension) < (0)) __PYX_ERR(0, 3678, __pyx_L1_error)
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4_Variable = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7netCDF4_8_netCDF4_Variable_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4_Variable)) __PYX_ERR(0, 3832, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7netCDF4_8_netCDF4_Variable_spec, __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4_Variable) < (0)) __PYX_ERR(0, 3832, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4_Variable = &__pyx_type_7netCDF4_8_netCDF4_Variable;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4_Variable) < (0)) __PYX_ERR(0, 3832, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4_Variable);
  #endif
  #if CYTHON_UPDATE_DESCRIPTOR_DOC
  {
    PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4_Variable, "__init__"); if (unlikely(!wrapper)) __PYX_ERR(0, 3832, __pyx_L1_error)
    if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) {
      __pyx_wrapperbase_7netCDF4_8_netCDF4_8Variable___init__ = *((PyWrapperDescrObject *)wrapper)->d_base;
      __pyx_wrapperbase_7netCDF4_8_netCDF4_8Variable___init__.doc = __pyx_doc_7netCDF4_8_netCDF4_8Variable___init__;
      ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_7netCDF4_8_netCDF4_8Variable___init__;
    }
  }
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_Variable_2, (PyObject *) __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4_Variable) < (0)) __PYX_ERR(0, 3832, __pyx_L1_error)
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4_CompoundType = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7netCDF4_8_netCDF4_CompoundType_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4_CompoundType)) __PYX_ERR(0, 6181, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7netCDF4_8_netCDF4_CompoundType_spec, __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4_CompoundType) < (0)) __PYX_ERR(0, 6181, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4_CompoundType = &__pyx_type_7netCDF4_8_netCDF4_CompoundType;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4_CompoundType) < (0)) __PYX_ERR(0, 6181, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4_CompoundType);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4_CompoundType->tp_dictoffset && __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4_CompoundType->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4_CompoundType->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  #if CYTHON_UPDATE_DESCRIPTOR_DOC
  {
    PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4_CompoundType, "__init__"); if (unlikely(!wrapper)) __PYX_ERR(0, 6181, __pyx_L1_error)
    if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) {
      __pyx_wrapperbase_7netCDF4_8_netCDF4_12CompoundType___init__ = *((PyWrapperDescrObject *)wrapper)->d_base;
      __pyx_wrapperbase_7netCDF4_8_netCDF4_12CompoundType___init__.doc = __pyx_doc_7netCDF4_8_netCDF4_12CompoundType___init__;
      ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_7netCDF4_8_netCDF4_12CompoundType___init__;
    }
  }
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_CompoundType, (PyObject *) __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4_CompoundType) < (0)) __PYX_ERR(0, 6181, __pyx_L1_error)
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4_VLType = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7netCDF4_8_netCDF4_VLType_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4_VLType)) __PYX_ERR(0, 6493, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7netCDF4_8_netCDF4_VLType_spec, __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4_VLType) < (0)) __PYX_ERR(0, 6493, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4_VLType = &__pyx_type_7netCDF4_8_netCDF4_VLType;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4_VLType) < (0)) __PYX_ERR(0, 6493, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4_VLType);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4_VLType->tp_dictoffset && __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4_VLType->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4_VLType->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  #if CYTHON_UPDATE_DESCRIPTOR_DOC
  {
    PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4_VLType, "__init__"); if (unlikely(!wrapper)) __PYX_ERR(0, 6493, __pyx_L1_error)
    if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) {
      __pyx_wrapperbase_7netCDF4_8_netCDF4_6VLType___init__ = *((PyWrapperDescrObject *)wrapper)->d_base;
      __pyx_wrapperbase_7netCDF4_8_netCDF4_6VLType___init__.doc = __pyx_doc_7netCDF4_8_netCDF4_6VLType___init__;
      ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_7netCDF4_8_netCDF4_6VLType___init__;
    }
  }
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_VLType, (PyObject *) __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4_VLType) < (0)) __PYX_ERR(0, 6493, __pyx_L1_error)
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4_EnumType = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7netCDF4_8_netCDF4_EnumType_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4_EnumType)) __PYX_ERR(0, 6605, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7netCDF4_8_netCDF4_EnumType_spec, __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4_EnumType) < (0)) __PYX_ERR(0, 6605, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4_EnumType = &__pyx_type_7netCDF4_8_netCDF4_EnumType;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4_EnumType) < (0)) __PYX_ERR(0, 6605, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4_EnumType);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4_EnumType->tp_dictoffset && __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4_EnumType->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4_EnumType->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  #if CYTHON_UPDATE_DESCRIPTOR_DOC
  {
    PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4_EnumType, "__init__"); if (unlikely(!wrapper)) __PYX_ERR(0, 6605, __pyx_L1_error)
    if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) {
      __pyx_wrapperbase_7netCDF4_8_netCDF4_8EnumType___init__ = *((PyWrapperDescrObject *)wrapper)->d_base;
      __pyx_wrapperbase_7netCDF4_8_netCDF4_8EnumType___init__.doc = __pyx_doc_7netCDF4_8_netCDF4_8EnumType___init__;
      ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_7netCDF4_8_netCDF4_8EnumType___init__;
    }
  }
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_EnumType, (PyObject *) __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4_EnumType) < (0)) __PYX_ERR(0, 6605, __pyx_L1_error)
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_defaults = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7netCDF4_8_netCDF4___pyx_defaults_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_defaults)) __PYX_ERR(0, 2149, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7netCDF4_8_netCDF4___pyx_defaults_spec, __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_defaults) < (0)) __PYX_ERR(0, 2149, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_defaults = &__pyx_type_7netCDF4_8_netCDF4___pyx_defaults;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_defaults) < (0)) __PYX_ERR(0, 2149, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_defaults);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_defaults->tp_dictoffset && __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_defaults->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_defaults->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct__genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct__genexpr_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct__genexpr)) __PYX_ERR(0, 1561, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct__genexpr_spec, __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct__genexpr) < (0)) __PYX_ERR(0, 1561, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct__genexpr = &__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct__genexpr;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct__genexpr) < (0)) __PYX_ERR(0, 1561, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct__genexpr);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct__genexpr->tp_dictoffset && __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct__genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct__genexpr->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_1___pyx_f_7netCDF4_8_netCDF4__get_vars = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_1___pyx_f_7netCDF4_8_netCDF4__get_vars_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_1___pyx_f_7netCDF4_8_netCDF4__get_vars)) __PYX_ERR(0, 2021, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_1___pyx_f_7netCDF4_8_netCDF4__get_vars_spec, __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_1___pyx_f_7netCDF4_8_netCDF4__get_vars) < (0)) __PYX_ERR(0, 2021, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_1___pyx_f_7netCDF4_8_netCDF4__get_vars = &__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_1___pyx_f_7netCDF4_8_netCDF4__get_vars;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_1___pyx_f_7netCDF4_8_netCDF4__get_vars) < (0)) __PYX_ERR(0, 2021, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_1___pyx_f_7netCDF4_8_netCDF4__get_vars);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_1___pyx_f_7netCDF4_8_netCDF4__get_vars->tp_dictoffset && __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_1___pyx_f_7netCDF4_8_netCDF4__get_vars->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_1___pyx_f_7netCDF4_8_netCDF4__get_vars->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_2_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_2_genexpr_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_2_genexpr)) __PYX_ERR(0, 2133, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_2_genexpr_spec, __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_2_genexpr) < (0)) __PYX_ERR(0, 2133, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_2_genexpr = &__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_2_genexpr;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_2_genexpr) < (0)) __PYX_ERR(0, 2133, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_2_genexpr);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_2_genexpr->tp_dictoffset && __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_2_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_2_genexpr->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_3___str__ = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_3___str___spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_3___str__)) __PYX_ERR(0, 2609, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_3___str___spec, __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_3___str__) < (0)) __PYX_ERR(0, 2609, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_3___str__ = &__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_3___str__;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_3___str__) < (0)) __PYX_ERR(0, 2609, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_3___str__);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_3___str__->tp_dictoffset && __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_3___str__->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_3___str__->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_4_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_4_genexpr_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_4_genexpr)) __PYX_ERR(0, 2611, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_4_genexpr_spec, __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_4_genexpr) < (0)) __PYX_ERR(0, 2611, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_4_genexpr = &__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_4_genexpr;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_4_genexpr) < (0)) __PYX_ERR(0, 2611, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_4_genexpr);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_4_genexpr->tp_dictoffset && __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_4_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_4_genexpr->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_5_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_5_genexpr_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_5_genexpr)) __PYX_ERR(0, 2617, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_5_genexpr_spec, __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_5_genexpr) < (0)) __PYX_ERR(0, 2617, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_5_genexpr = &__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_5_genexpr;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_5_genexpr) < (0)) __PYX_ERR(0, 2617, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_5_genexpr);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_5_genexpr->tp_dictoffset && __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_5_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_5_genexpr->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_6_createVariable = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_6_createVariable_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_6_createVariable)) __PYX_ERR(0, 2828, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_6_createVariable_spec, __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_6_createVariable) < (0)) __PYX_ERR(0, 2828, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_6_createVariable = &__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_6_createVariable;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_6_createVariable) < (0)) __PYX_ERR(0, 2828, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_6_createVariable);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_6_createVariable->tp_dictoffset && __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_6_createVariable->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_6_createVariable->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_7_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_7_genexpr_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_7_genexpr)) __PYX_ERR(0, 3005, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_7_genexpr_spec, __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_7_genexpr) < (0)) __PYX_ERR(0, 3005, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_7_genexpr = &__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_7_genexpr;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_7_genexpr) < (0)) __PYX_ERR(0, 3005, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_7_genexpr);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_7_genexpr->tp_dictoffset && __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_7_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_7_genexpr->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_8_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_8_genexpr_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_8_genexpr)) __PYX_ERR(0, 4532, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_8_genexpr_spec, __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_8_genexpr) < (0)) __PYX_ERR(0, 4532, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_8_genexpr = &__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_8_genexpr;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_8_genexpr) < (0)) __PYX_ERR(0, 4532, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_8_genexpr);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_8_genexpr->tp_dictoffset && __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_8_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_8_genexpr->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_9_get_dims = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_9_get_dims_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_9_get_dims)) __PYX_ERR(0, 6166, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_9_get_dims_spec, __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_9_get_dims) < (0)) __PYX_ERR(0, 6166, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_9_get_dims = &__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_9_get_dims;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_9_get_dims) < (0)) __PYX_ERR(0, 6166, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_9_get_dims);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_9_get_dims->tp_dictoffset && __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_9_get_dims->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_9_get_dims->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_10_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_10_genexpr_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_10_genexpr)) __PYX_ERR(0, 6173, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_10_genexpr_spec, __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_10_genexpr) < (0)) __PYX_ERR(0, 6173, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_10_genexpr = &__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_10_genexpr;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_10_genexpr) < (0)) __PYX_ERR(0, 6173, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_10_genexpr);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_10_genexpr->tp_dictoffset && __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_10_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_10_genexpr->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_11_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_11_genexpr_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_11_genexpr)) __PYX_ERR(0, 7094, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_11_genexpr_spec, __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_11_genexpr) < (0)) __PYX_ERR(0, 7094, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_11_genexpr = &__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_11_genexpr;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_11_genexpr) < (0)) __PYX_ERR(0, 7094, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_11_genexpr);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_11_genexpr->tp_dictoffset && __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_11_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_11_genexpr->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_12_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_12_genexpr_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_12_genexpr)) __PYX_ERR(0, 7095, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_12_genexpr_spec, __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_12_genexpr) < (0)) __PYX_ERR(0, 7095, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_12_genexpr = &__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_12_genexpr;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_12_genexpr) < (0)) __PYX_ERR(0, 7095, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_12_genexpr);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_12_genexpr->tp_dictoffset && __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_12_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_12_genexpr->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_13_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_13_genexpr_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_13_genexpr)) __PYX_ERR(0, 7159, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_13_genexpr_spec, __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_13_genexpr) < (0)) __PYX_ERR(0, 7159, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_13_genexpr = &__pyx_type_7netCDF4_8_netCDF4___pyx_scope_struct_13_genexpr;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_13_genexpr) < (0)) __PYX_ERR(0, 7159, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_13_genexpr);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_13_genexpr->tp_dictoffset && __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_13_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7netCDF4_8_netCDF4___pyx_scope_struct_13_genexpr->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_RefNannyFinishContext();
  return 0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_RefNannyFinishContext();
  return -1;
}

static int __Pyx_modinit_type_import_code(__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_import_code", 0);
  /*--- Type import code ---*/
  __pyx_t_1 = PyImport_ImportModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 9, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_mstate->__pyx_ptype_7cpython_4type_type = __Pyx_ImportType_3_2_3(__pyx_t_1, __Pyx_BUILTIN_MODULE_NAME, "type",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(PyTypeObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyTypeObject),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  0, 0,
  #else
  sizeof(PyHeapTypeObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyHeapTypeObject),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_3); if (!__pyx_mstate->__pyx_ptype_7cpython_4type_type) __PYX_ERR(5, 9, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyImport_ImportModule("numpy"); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 228, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_mstate->__pyx_ptype_5numpy_dtype = __Pyx_ImportType_3_2_3(__pyx_t_1, "numpy", "dtype",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(PyArray_Descr), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyArray_Descr),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(PyArray_Descr), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyArray_Descr),
  #else
  sizeof(PyArray_Descr), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyArray_Descr),
  #endif
  __Pyx_ImportType_CheckSize_Ignore_3_2_3); if (!__pyx_mstate->__pyx_ptype_5numpy_dtype) __PYX_ERR(1, 228, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_5numpy_flatiter = __Pyx_ImportType_3_2_3(__pyx_t_1, "numpy", "flatiter",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(PyArrayIterObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyArrayIterObject),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(PyArrayIterObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyArrayIterObject),
  #else
  sizeof(PyArrayIterObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyArrayIterObject),
  #endif
  __Pyx_ImportType_CheckSize_Ignore_3_2_3); if (!__pyx_mstate->__pyx_ptype_5numpy_flatiter) __PYX_ERR(1, 273, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_5numpy_broadcast = __Pyx_ImportType_3_2_3(__pyx_t_1, "numpy", "broadcast",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(PyArrayMultiIterObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyArrayMultiIterObject),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(PyArrayMultiIterObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyArrayMultiIterObject),
  #else
  sizeof(PyArrayMultiIterObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyArrayMultiIterObject),
  #endif
  __Pyx_ImportType_CheckSize_Ignore_3_2_3); if (!__pyx_mstate->__pyx_ptype_5numpy_broadcast) __PYX_ERR(1, 277, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_5numpy_ndarray = __Pyx_ImportType_3_2_3(__pyx_t_1, "numpy", "ndarray",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(PyArrayObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyArrayObject),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(PyArrayObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyArrayObject),
  #else
  sizeof(PyArrayObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyArrayObject),
  #endif
  __Pyx_ImportType_CheckSize_Ignore_3_2_3); if (!__pyx_mstate->__pyx_ptype_5numpy_ndarray) __PYX_ERR(1, 316, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_5numpy_generic = __Pyx_ImportType_3_2_3(__pyx_t_1, "numpy", "generic",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyObject),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyObject),
  #else
  sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyObject),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_3); if (!__pyx_mstate->__pyx_ptype_5numpy_generic) __PYX_ERR(1, 825, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_5numpy_number = __Pyx_ImportType_3_2_3(__pyx_t_1, "numpy", "number",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyObject),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyObject),
  #else
  sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyObject),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_3); if (!__pyx_mstate->__pyx_ptype_5numpy_number) __PYX_ERR(1, 827, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_5numpy_integer = __Pyx_ImportType_3_2_3(__pyx_t_1, "numpy", "integer",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyObject),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyObject),
  #else
  sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyObject),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_3); if (!__pyx_mstate->__pyx_ptype_5numpy_integer) __PYX_ERR(1, 829, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_5numpy_signedinteger = __Pyx_ImportType_3_2_3(__pyx_t_1, "numpy", "signedinteger",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyObject),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyObject),
  #else
  sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyObject),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_3); if (!__pyx_mstate->__pyx_ptype_5numpy_signedinteger) __PYX_ERR(1, 831, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_5numpy_unsignedinteger = __Pyx_ImportType_3_2_3(__pyx_t_1, "numpy", "unsignedinteger",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyObject),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyObject),
  #else
  sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyObject),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_3); if (!__pyx_mstate->__pyx_ptype_5numpy_unsignedinteger) __PYX_ERR(1, 833, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_5numpy_inexact = __Pyx_ImportType_3_2_3(__pyx_t_1, "numpy", "inexact",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyObject),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyObject),
  #else
  sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyObject),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_3); if (!__pyx_mstate->__pyx_ptype_5numpy_inexact) __PYX_ERR(1, 835, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_5numpy_floating = __Pyx_ImportType_3_2_3(__pyx_t_1, "numpy", "floating",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyObject),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyObject),
  #else
  sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyObject),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_3); if (!__pyx_mstate->__pyx_ptype_5numpy_floating) __PYX_ERR(1, 837, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_5numpy_complexfloating = __Pyx_ImportType_3_2_3(__pyx_t_1, "numpy", "complexfloating",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyObject),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyObject),
  #else
  sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyObject),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_3); if (!__pyx_mstate->__pyx_ptype_5numpy_complexfloating) __PYX_ERR(1, 839, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_5numpy_flexible = __Pyx_ImportType_3_2_3(__pyx_t_1, "numpy", "flexible",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyObject),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyObject),
  #else
  sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyObject),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_3); if (!__pyx_mstate->__pyx_ptype_5numpy_flexible) __PYX_ERR(1, 841, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_5numpy_character = __Pyx_ImportType_3_2_3(__pyx_t_1, "numpy", "character",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyObject),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyObject),
  #else
  sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyObject),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_3); if (!__pyx_mstate->__pyx_ptype_5numpy_character) __PYX_ERR(1, 843, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_5numpy_ufunc = __Pyx_ImportType_3_2_3(__pyx_t_1, "numpy", "ufunc",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(PyUFuncObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyUFuncObject),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(PyUFuncObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyUFuncObject),
  #else
  sizeof(PyUFuncObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyUFuncObject),
  #endif
  __Pyx_ImportType_CheckSize_Ignore_3_2_3); if (!__pyx_mstate->__pyx_ptype_5numpy_ufunc) __PYX_ERR(1, 907, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyImport_ImportModule("mpi4py.MPI"); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 44, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Datatype = __Pyx_ImportType_3_2_3(__pyx_t_1, "mpi4py.MPI", "Datatype",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct PyMPIDatatypeObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(struct PyMPIDatatypeObject),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct PyMPIDatatypeObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(struct PyMPIDatatypeObject),
  #else
  sizeof(struct PyMPIDatatypeObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(struct PyMPIDatatypeObject),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_3); if (!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Datatype) __PYX_ERR(6, 44, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Status = __Pyx_ImportType_3_2_3(__pyx_t_1, "mpi4py.MPI", "Status",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct PyMPIStatusObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(struct PyMPIStatusObject),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct PyMPIStatusObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(struct PyMPIStatusObject),
  #else
  sizeof(struct PyMPIStatusObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(struct PyMPIStatusObject),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_3); if (!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Status) __PYX_ERR(6, 52, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Request = __Pyx_ImportType_3_2_3(__pyx_t_1, "mpi4py.MPI", "Request",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct PyMPIRequestObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(struct PyMPIRequestObject),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct PyMPIRequestObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(struct PyMPIRequestObject),
  #else
  sizeof(struct PyMPIRequestObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(struct PyMPIRequestObject),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_3); if (!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Request) __PYX_ERR(6, 60, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Prequest = __Pyx_ImportType_3_2_3(__pyx_t_1, "mpi4py.MPI", "Prequest",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct PyMPIPrequestObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(struct PyMPIPrequestObject),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct PyMPIPrequestObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(struct PyMPIPrequestObject),
  #else
  sizeof(struct PyMPIPrequestObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(struct PyMPIPrequestObject),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_3); if (!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Prequest) __PYX_ERR(6, 69, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Grequest = __Pyx_ImportType_3_2_3(__pyx_t_1, "mpi4py.MPI", "Grequest",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct PyMPIGrequestObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(struct PyMPIGrequestObject),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct PyMPIGrequestObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(struct PyMPIGrequestObject),
  #else
  sizeof(struct PyMPIGrequestObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(struct PyMPIGrequestObject),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_3); if (!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Grequest) __PYX_ERR(6, 75, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Message = __Pyx_ImportType_3_2_3(__pyx_t_1, "mpi4py.MPI", "Message",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct PyMPIMessageObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(struct PyMPIMessageObject),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct PyMPIMessageObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(struct PyMPIMessageObject),
  #else
  sizeof(struct PyMPIMessageObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(struct PyMPIMessageObject),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_3); if (!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Message) __PYX_ERR(6, 81, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Op = __Pyx_ImportType_3_2_3(__pyx_t_1, "mpi4py.MPI", "Op",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct PyMPIOpObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(struct PyMPIOpObject),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct PyMPIOpObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(struct PyMPIOpObject),
  #else
  sizeof(struct PyMPIOpObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(struct PyMPIOpObject),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_3); if (!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Op) __PYX_ERR(6, 90, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Group = __Pyx_ImportType_3_2_3(__pyx_t_1, "mpi4py.MPI", "Group",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct PyMPIGroupObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(struct PyMPIGroupObject),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct PyMPIGroupObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(struct PyMPIGroupObject),
  #else
  sizeof(struct PyMPIGroupObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(struct PyMPIGroupObject),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_3); if (!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Group) __PYX_ERR(6, 98, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Info = __Pyx_ImportType_3_2_3(__pyx_t_1, "mpi4py.MPI", "Info",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct PyMPIInfoObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(struct PyMPIInfoObject),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct PyMPIInfoObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(struct PyMPIInfoObject),
  #else
  sizeof(struct PyMPIInfoObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(struct PyMPIInfoObject),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_3); if (!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Info) __PYX_ERR(6, 106, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Errhandler = __Pyx_ImportType_3_2_3(__pyx_t_1, "mpi4py.MPI", "Errhandler",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct PyMPIErrhandlerObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(struct PyMPIErrhandlerObject),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct PyMPIErrhandlerObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(struct PyMPIErrhandlerObject),
  #else
  sizeof(struct PyMPIErrhandlerObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(struct PyMPIErrhandlerObject),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_3); if (!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Errhandler) __PYX_ERR(6, 114, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Session = __Pyx_ImportType_3_2_3(__pyx_t_1, "mpi4py.MPI", "Session",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct PyMPISessionObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(struct PyMPISessionObject),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct PyMPISessionObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(struct PyMPISessionObject),
  #else
  sizeof(struct PyMPISessionObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(struct PyMPISessionObject),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_3); if (!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Session) __PYX_ERR(6, 122, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Comm = __Pyx_ImportType_3_2_3(__pyx_t_1, "mpi4py.MPI", "Comm",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct PyMPICommObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(struct PyMPICommObject),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct PyMPICommObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(struct PyMPICommObject),
  #else
  sizeof(struct PyMPICommObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(struct PyMPICommObject),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_3); if (!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Comm) __PYX_ERR(6, 130, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Intracomm = __Pyx_ImportType_3_2_3(__pyx_t_1, "mpi4py.MPI", "Intracomm",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct PyMPIIntracommObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(struct PyMPIIntracommObject),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct PyMPIIntracommObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(struct PyMPIIntracommObject),
  #else
  sizeof(struct PyMPIIntracommObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(struct PyMPIIntracommObject),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_3); if (!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Intracomm) __PYX_ERR(6, 138, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Topocomm = __Pyx_ImportType_3_2_3(__pyx_t_1, "mpi4py.MPI", "Topocomm",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct PyMPITopocommObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(struct PyMPITopocommObject),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct PyMPITopocommObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(struct PyMPITopocommObject),
  #else
  sizeof(struct PyMPITopocommObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(struct PyMPITopocommObject),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_3); if (!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Topocomm) __PYX_ERR(6, 144, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Cartcomm = __Pyx_ImportType_3_2_3(__pyx_t_1, "mpi4py.MPI", "Cartcomm",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct PyMPICartcommObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(struct PyMPICartcommObject),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct PyMPICartcommObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(struct PyMPICartcommObject),
  #else
  sizeof(struct PyMPICartcommObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(struct PyMPICartcommObject),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_3); if (!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Cartcomm) __PYX_ERR(6, 150, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Graphcomm = __Pyx_ImportType_3_2_3(__pyx_t_1, "mpi4py.MPI", "Graphcomm",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct PyMPIGraphcommObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(struct PyMPIGraphcommObject),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct PyMPIGraphcommObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(struct PyMPIGraphcommObject),
  #else
  sizeof(struct PyMPIGraphcommObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(struct PyMPIGraphcommObject),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_3); if (!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Graphcomm) __PYX_ERR(6, 156, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Distgraphcomm = __Pyx_ImportType_3_2_3(__pyx_t_1, "mpi4py.MPI", "Distgraphcomm",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct PyMPIDistgraphcommObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(struct PyMPIDistgraphcommObject),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct PyMPIDistgraphcommObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(struct PyMPIDistgraphcommObject),
  #else
  sizeof(struct PyMPIDistgraphcommObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(struct PyMPIDistgraphcommObject),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_3); if (!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Distgraphcomm) __PYX_ERR(6, 162, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Intercomm = __Pyx_ImportType_3_2_3(__pyx_t_1, "mpi4py.MPI", "Intercomm",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct PyMPIIntercommObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(struct PyMPIIntercommObject),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct PyMPIIntercommObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(struct PyMPIIntercommObject),
  #else
  sizeof(struct PyMPIIntercommObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(struct PyMPIIntercommObject),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_3); if (!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Intercomm) __PYX_ERR(6, 168, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Win = __Pyx_ImportType_3_2_3(__pyx_t_1, "mpi4py.MPI", "Win",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct PyMPIWinObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(struct PyMPIWinObject),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct PyMPIWinObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(struct PyMPIWinObject),
  #else
  sizeof(struct PyMPIWinObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(struct PyMPIWinObject),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_3); if (!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_Win) __PYX_ERR(6, 174, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_6mpi4py_3MPI_File = __Pyx_ImportType_3_2_3(__pyx_t_1, "mpi4py.MPI", "File",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct PyMPIFileObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(struct PyMPIFileObject),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct PyMPIFileObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(struct PyMPIFileObject),
  #else
  sizeof(struct PyMPIFileObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(struct PyMPIFileObject),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_3); if (!__pyx_mstate->__pyx_ptype_6mpi4py_3MPI_File) __PYX_ERR(6, 183, __pyx_L1_error)
  __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_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__netCDF4(PyObject* module); /*proto*/
static PyModuleDef_Slot __pyx_moduledef_slots[] = {
  {Py_mod_create, (void*)__pyx_pymod_create},
  {Py_mod_exec, (void*)__pyx_pymod_exec__netCDF4},
  #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,
      "_netCDF4",
      __pyx_k_Version_1_7_2_Introduction_netcd, /* 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 */
      NULL /* m_free */
    #else
      NULL, /* m_traverse */
      NULL, /* m_clear */
      NULL /* 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__netCDF4(void) CYTHON_SMALL_CODE; /*proto*/
__Pyx_PyMODINIT_FUNC PyInit__netCDF4(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__netCDF4(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;
  Py_ssize_t __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  size_t __pyx_t_9;
  char *__pyx_t_10;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_t_12;
  PyObject *__pyx_t_13 = NULL;
  Py_ssize_t __pyx_t_14;
  int __pyx_t_15;
  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 '_netCDF4' 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 "_netCDF4" 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_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__netCDF4", 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_netCDF4___netCDF4) {
    if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_name_4, __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, "netCDF4._netCDF4")) {
      if (unlikely((PyDict_SetItemString(modules, "netCDF4._netCDF4", __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);
  (void)__Pyx_modinit_function_export_code(__pyx_mstate);
  if (unlikely((__Pyx_modinit_type_init_code(__pyx_mstate) < 0))) __PYX_ERR(0, 1, __pyx_L1_error)
  if (unlikely((__Pyx_modinit_type_import_code(__pyx_mstate) < 0))) __PYX_ERR(0, 1, __pyx_L1_error)
  (void)__Pyx_modinit_variable_import_code(__pyx_mstate);
  (void)__Pyx_modinit_function_import_code(__pyx_mstate);
  /*--- Execution code ---*/

  /* "netCDF4/_netCDF4.pyx":1269
 * 
 * # pure python utilities
 * from .utils import (_StartCountStride, _quantize, _find_dim, _walk_grps,             # <<<<<<<<<<<<<<
 *                     _out_array_shape, _sortbylist, _tostr, _safecast, _is_int)
 * import sys
*/
  {
    PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_StartCountStride,__pyx_mstate_global->__pyx_n_u_quantize,__pyx_mstate_global->__pyx_n_u_find_dim,__pyx_mstate_global->__pyx_n_u_walk_grps,__pyx_mstate_global->__pyx_n_u_out_array_shape,__pyx_mstate_global->__pyx_n_u_sortbylist,__pyx_mstate_global->__pyx_n_u_tostr,__pyx_mstate_global->__pyx_n_u_safecast,__pyx_mstate_global->__pyx_n_u_is_int};
    __pyx_t_1 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_utils, __pyx_imported_names, 9, __pyx_mstate_global->__pyx_kp_u_netCDF4_utils, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1269, __pyx_L1_error)
  }
  __pyx_t_2 = __pyx_t_1;
  __Pyx_GOTREF(__pyx_t_2);
  {
    PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_StartCountStride,__pyx_mstate_global->__pyx_n_u_quantize,__pyx_mstate_global->__pyx_n_u_find_dim,__pyx_mstate_global->__pyx_n_u_walk_grps,__pyx_mstate_global->__pyx_n_u_out_array_shape,__pyx_mstate_global->__pyx_n_u_sortbylist,__pyx_mstate_global->__pyx_n_u_tostr,__pyx_mstate_global->__pyx_n_u_safecast,__pyx_mstate_global->__pyx_n_u_is_int};
    for (__pyx_t_3=0; __pyx_t_3 < 9; __pyx_t_3++) {
      __pyx_t_4 = __Pyx_ImportFrom(__pyx_t_2, __pyx_imported_names[__pyx_t_3]); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1269, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_imported_names[__pyx_t_3], __pyx_t_4) < (0)) __PYX_ERR(0, 1269, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":1271
 * from .utils import (_StartCountStride, _quantize, _find_dim, _walk_grps,
 *                     _out_array_shape, _sortbylist, _tostr, _safecast, _is_int)
 * import sys             # <<<<<<<<<<<<<<
 * import functools
 * from typing import Union
*/
  __pyx_t_1 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_sys, 0, 0, NULL, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1271, __pyx_L1_error)
  __pyx_t_2 = __pyx_t_1;
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_sys, __pyx_t_2) < (0)) __PYX_ERR(0, 1271, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":1272
 *                     _out_array_shape, _sortbylist, _tostr, _safecast, _is_int)
 * import sys
 * import functools             # <<<<<<<<<<<<<<
 * from typing import Union
 * 
*/
  __pyx_t_1 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_functools, 0, 0, NULL, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1272, __pyx_L1_error)
  __pyx_t_2 = __pyx_t_1;
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_functools, __pyx_t_2) < (0)) __PYX_ERR(0, 1272, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":1273
 * import sys
 * import functools
 * from typing import Union             # <<<<<<<<<<<<<<
 * 
 * __version__ = "1.7.2"
*/
  {
    PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_Union};
    __pyx_t_1 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_typing, __pyx_imported_names, 1, NULL, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1273, __pyx_L1_error)
  }
  __pyx_t_2 = __pyx_t_1;
  __Pyx_GOTREF(__pyx_t_2);
  {
    PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_Union};
    __pyx_t_3 = 0; {
      __pyx_t_4 = __Pyx_ImportFrom(__pyx_t_2, __pyx_imported_names[__pyx_t_3]); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1273, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_imported_names[__pyx_t_3], __pyx_t_4) < (0)) __PYX_ERR(0, 1273, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":1275
 * from typing import Union
 * 
 * __version__ = "1.7.2"             # <<<<<<<<<<<<<<
 * 
 * # Initialize numpy
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_version_2, __pyx_mstate_global->__pyx_kp_u_1_7_2) < (0)) __PYX_ERR(0, 1275, __pyx_L1_error)

  /* "netCDF4/_netCDF4.pyx":1278
 * 
 * # Initialize numpy
 * import posixpath             # <<<<<<<<<<<<<<
 * from cftime import date2num, num2date, date2index
 * import numpy
*/
  __pyx_t_1 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_posixpath, 0, 0, NULL, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1278, __pyx_L1_error)
  __pyx_t_2 = __pyx_t_1;
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_posixpath, __pyx_t_2) < (0)) __PYX_ERR(0, 1278, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":1279
 * # Initialize numpy
 * import posixpath
 * from cftime import date2num, num2date, date2index             # <<<<<<<<<<<<<<
 * import numpy
 * cimport numpy
*/
  {
    PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_date2num,__pyx_mstate_global->__pyx_n_u_num2date,__pyx_mstate_global->__pyx_n_u_date2index};
    __pyx_t_1 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_cftime, __pyx_imported_names, 3, NULL, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1279, __pyx_L1_error)
  }
  __pyx_t_2 = __pyx_t_1;
  __Pyx_GOTREF(__pyx_t_2);
  {
    PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_date2num,__pyx_mstate_global->__pyx_n_u_num2date,__pyx_mstate_global->__pyx_n_u_date2index};
    for (__pyx_t_3=0; __pyx_t_3 < 3; __pyx_t_3++) {
      __pyx_t_4 = __Pyx_ImportFrom(__pyx_t_2, __pyx_imported_names[__pyx_t_3]); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1279, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_imported_names[__pyx_t_3], __pyx_t_4) < (0)) __PYX_ERR(0, 1279, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":1280
 * import posixpath
 * from cftime import date2num, num2date, date2index
 * import numpy             # <<<<<<<<<<<<<<
 * cimport numpy
 * import weakref
*/
  __pyx_t_1 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_numpy, 0, 0, NULL, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1280, __pyx_L1_error)
  __pyx_t_2 = __pyx_t_1;
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_numpy, __pyx_t_2) < (0)) __PYX_ERR(0, 1280, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":1282
 * import numpy
 * cimport numpy
 * import weakref             # <<<<<<<<<<<<<<
 * import warnings
 * import subprocess
*/
  __pyx_t_1 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_weakref, 0, 0, NULL, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1282, __pyx_L1_error)
  __pyx_t_2 = __pyx_t_1;
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_weakref, __pyx_t_2) < (0)) __PYX_ERR(0, 1282, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":1283
 * cimport numpy
 * import weakref
 * import warnings             # <<<<<<<<<<<<<<
 * import subprocess
 * import pathlib
*/
  __pyx_t_1 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_warnings, 0, 0, NULL, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1283, __pyx_L1_error)
  __pyx_t_2 = __pyx_t_1;
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_warnings, __pyx_t_2) < (0)) __PYX_ERR(0, 1283, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":1284
 * import weakref
 * import warnings
 * import subprocess             # <<<<<<<<<<<<<<
 * import pathlib
 * import os
*/
  __pyx_t_1 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_subprocess, 0, 0, NULL, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1284, __pyx_L1_error)
  __pyx_t_2 = __pyx_t_1;
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_subprocess, __pyx_t_2) < (0)) __PYX_ERR(0, 1284, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":1285
 * import warnings
 * import subprocess
 * import pathlib             # <<<<<<<<<<<<<<
 * import os
 * from glob import glob
*/
  __pyx_t_1 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_pathlib, 0, 0, NULL, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1285, __pyx_L1_error)
  __pyx_t_2 = __pyx_t_1;
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_pathlib, __pyx_t_2) < (0)) __PYX_ERR(0, 1285, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":1286
 * import subprocess
 * import pathlib
 * import os             # <<<<<<<<<<<<<<
 * from glob import glob
 * from numpy import ma
*/
  __pyx_t_1 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_os, 0, 0, NULL, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1286, __pyx_L1_error)
  __pyx_t_2 = __pyx_t_1;
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_os, __pyx_t_2) < (0)) __PYX_ERR(0, 1286, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":1287
 * import pathlib
 * import os
 * from glob import glob             # <<<<<<<<<<<<<<
 * from numpy import ma
 * from libc.string cimport memcpy, memset
*/
  {
    PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_glob};
    __pyx_t_1 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_glob, __pyx_imported_names, 1, NULL, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1287, __pyx_L1_error)
  }
  __pyx_t_2 = __pyx_t_1;
  __Pyx_GOTREF(__pyx_t_2);
  {
    PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_glob};
    __pyx_t_3 = 0; {
      __pyx_t_4 = __Pyx_ImportFrom(__pyx_t_2, __pyx_imported_names[__pyx_t_3]); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1287, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_imported_names[__pyx_t_3], __pyx_t_4) < (0)) __PYX_ERR(0, 1287, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":1288
 * import os
 * from glob import glob
 * from numpy import ma             # <<<<<<<<<<<<<<
 * from libc.string cimport memcpy, memset
 * from libc.stdlib cimport malloc, free
*/
  {
    PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_ma};
    __pyx_t_1 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_numpy, __pyx_imported_names, 1, NULL, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1288, __pyx_L1_error)
  }
  __pyx_t_2 = __pyx_t_1;
  __Pyx_GOTREF(__pyx_t_2);
  {
    PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_ma};
    __pyx_t_3 = 0; {
      __pyx_t_4 = __Pyx_ImportFrom(__pyx_t_2, __pyx_imported_names[__pyx_t_3]); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1288, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_imported_names[__pyx_t_3], __pyx_t_4) < (0)) __PYX_ERR(0, 1288, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":1291
 * from libc.string cimport memcpy, memset
 * from libc.stdlib cimport malloc, free
 * numpy.import_array()             # <<<<<<<<<<<<<<
 * include "membuf.pyx"
 * include "netCDF4.pxi"
*/
  __pyx_t_5 = __pyx_f_5numpy_import_array(); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 1291, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.memory cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_7_MemBuf_7__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_MemBuf___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[11])); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_2) < (0)) __PYX_ERR(3, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self.memory cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.memory cannot be converted to a Python object for pickling"
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_7_MemBuf_9__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_MemBuf___setstate_cython, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[12])); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_2) < (0)) __PYX_ERR(3, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":1295
 * include "netCDF4.pxi"
 * 
 * __has_rename_grp__ = HAS_RENAME_GRP             # <<<<<<<<<<<<<<
 * __has_nc_inq_path__ = HAS_NC_INQ_PATH
 * __has_nc_inq_format_extended__ = HAS_NC_INQ_FORMAT_EXTENDED
*/
  __pyx_t_2 = __Pyx_PyLong_From___pyx_anon_enum(HAS_RENAME_GRP); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1295, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_has_rename_grp, __pyx_t_2) < (0)) __PYX_ERR(0, 1295, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":1296
 * 
 * __has_rename_grp__ = HAS_RENAME_GRP
 * __has_nc_inq_path__ = HAS_NC_INQ_PATH             # <<<<<<<<<<<<<<
 * __has_nc_inq_format_extended__ = HAS_NC_INQ_FORMAT_EXTENDED
 * __has_cdf5_format__ = HAS_CDF5_FORMAT
*/
  __pyx_t_2 = __Pyx_PyLong_From___pyx_anon_enum(HAS_NC_INQ_PATH); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1296, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_has_nc_inq_path, __pyx_t_2) < (0)) __PYX_ERR(0, 1296, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":1297
 * __has_rename_grp__ = HAS_RENAME_GRP
 * __has_nc_inq_path__ = HAS_NC_INQ_PATH
 * __has_nc_inq_format_extended__ = HAS_NC_INQ_FORMAT_EXTENDED             # <<<<<<<<<<<<<<
 * __has_cdf5_format__ = HAS_CDF5_FORMAT
 * __has_nc_open_mem__ = HAS_NC_OPEN_MEM
*/
  __pyx_t_2 = __Pyx_PyLong_From___pyx_anon_enum(HAS_NC_INQ_FORMAT_EXTENDED); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1297, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_has_nc_inq_format_extended, __pyx_t_2) < (0)) __PYX_ERR(0, 1297, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":1298
 * __has_nc_inq_path__ = HAS_NC_INQ_PATH
 * __has_nc_inq_format_extended__ = HAS_NC_INQ_FORMAT_EXTENDED
 * __has_cdf5_format__ = HAS_CDF5_FORMAT             # <<<<<<<<<<<<<<
 * __has_nc_open_mem__ = HAS_NC_OPEN_MEM
 * __has_nc_create_mem__ = HAS_NC_CREATE_MEM
*/
  __pyx_t_2 = __Pyx_PyLong_From___pyx_anon_enum(HAS_CDF5_FORMAT); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1298, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_has_cdf5_format, __pyx_t_2) < (0)) __PYX_ERR(0, 1298, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":1299
 * __has_nc_inq_format_extended__ = HAS_NC_INQ_FORMAT_EXTENDED
 * __has_cdf5_format__ = HAS_CDF5_FORMAT
 * __has_nc_open_mem__ = HAS_NC_OPEN_MEM             # <<<<<<<<<<<<<<
 * __has_nc_create_mem__ = HAS_NC_CREATE_MEM
 * __has_parallel4_support__ = HAS_PARALLEL4_SUPPORT
*/
  __pyx_t_2 = __Pyx_PyLong_From___pyx_anon_enum(HAS_NC_OPEN_MEM); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1299, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_has_nc_open_mem, __pyx_t_2) < (0)) __PYX_ERR(0, 1299, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":1300
 * __has_cdf5_format__ = HAS_CDF5_FORMAT
 * __has_nc_open_mem__ = HAS_NC_OPEN_MEM
 * __has_nc_create_mem__ = HAS_NC_CREATE_MEM             # <<<<<<<<<<<<<<
 * __has_parallel4_support__ = HAS_PARALLEL4_SUPPORT
 * __has_pnetcdf_support__ = HAS_PNETCDF_SUPPORT
*/
  __pyx_t_2 = __Pyx_PyLong_From___pyx_anon_enum(HAS_NC_CREATE_MEM); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1300, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_has_nc_create_mem, __pyx_t_2) < (0)) __PYX_ERR(0, 1300, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":1301
 * __has_nc_open_mem__ = HAS_NC_OPEN_MEM
 * __has_nc_create_mem__ = HAS_NC_CREATE_MEM
 * __has_parallel4_support__ = HAS_PARALLEL4_SUPPORT             # <<<<<<<<<<<<<<
 * __has_pnetcdf_support__ = HAS_PNETCDF_SUPPORT
 * __has_parallel_support__ = HAS_PARALLEL_SUPPORT
*/
  __pyx_t_2 = __Pyx_PyLong_From___pyx_anon_enum(HAS_PARALLEL4_SUPPORT); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1301, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_has_parallel4_support, __pyx_t_2) < (0)) __PYX_ERR(0, 1301, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":1302
 * __has_nc_create_mem__ = HAS_NC_CREATE_MEM
 * __has_parallel4_support__ = HAS_PARALLEL4_SUPPORT
 * __has_pnetcdf_support__ = HAS_PNETCDF_SUPPORT             # <<<<<<<<<<<<<<
 * __has_parallel_support__ = HAS_PARALLEL_SUPPORT
 * __has_quantization_support__ = HAS_QUANTIZATION_SUPPORT
*/
  __pyx_t_2 = __Pyx_PyLong_From___pyx_anon_enum(HAS_PNETCDF_SUPPORT); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1302, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_has_pnetcdf_support, __pyx_t_2) < (0)) __PYX_ERR(0, 1302, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":1303
 * __has_parallel4_support__ = HAS_PARALLEL4_SUPPORT
 * __has_pnetcdf_support__ = HAS_PNETCDF_SUPPORT
 * __has_parallel_support__ = HAS_PARALLEL_SUPPORT             # <<<<<<<<<<<<<<
 * __has_quantization_support__ = HAS_QUANTIZATION_SUPPORT
 * __has_zstandard_support__ = HAS_ZSTANDARD_SUPPORT
*/
  __pyx_t_2 = __Pyx_PyLong_From___pyx_anon_enum(HAS_PARALLEL_SUPPORT); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1303, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_has_parallel_support, __pyx_t_2) < (0)) __PYX_ERR(0, 1303, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":1304
 * __has_pnetcdf_support__ = HAS_PNETCDF_SUPPORT
 * __has_parallel_support__ = HAS_PARALLEL_SUPPORT
 * __has_quantization_support__ = HAS_QUANTIZATION_SUPPORT             # <<<<<<<<<<<<<<
 * __has_zstandard_support__ = HAS_ZSTANDARD_SUPPORT
 * __has_bzip2_support__ = HAS_BZIP2_SUPPORT
*/
  __pyx_t_2 = __Pyx_PyLong_From___pyx_anon_enum(HAS_QUANTIZATION_SUPPORT); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1304, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_has_quantization_support, __pyx_t_2) < (0)) __PYX_ERR(0, 1304, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":1305
 * __has_parallel_support__ = HAS_PARALLEL_SUPPORT
 * __has_quantization_support__ = HAS_QUANTIZATION_SUPPORT
 * __has_zstandard_support__ = HAS_ZSTANDARD_SUPPORT             # <<<<<<<<<<<<<<
 * __has_bzip2_support__ = HAS_BZIP2_SUPPORT
 * __has_blosc_support__ = HAS_BLOSC_SUPPORT
*/
  __pyx_t_2 = __Pyx_PyLong_From___pyx_anon_enum(HAS_ZSTANDARD_SUPPORT); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_has_zstandard_support, __pyx_t_2) < (0)) __PYX_ERR(0, 1305, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":1306
 * __has_quantization_support__ = HAS_QUANTIZATION_SUPPORT
 * __has_zstandard_support__ = HAS_ZSTANDARD_SUPPORT
 * __has_bzip2_support__ = HAS_BZIP2_SUPPORT             # <<<<<<<<<<<<<<
 * __has_blosc_support__ = HAS_BLOSC_SUPPORT
 * __has_szip_support__ = HAS_SZIP_SUPPORT
*/
  __pyx_t_2 = __Pyx_PyLong_From___pyx_anon_enum(HAS_BZIP2_SUPPORT); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1306, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_has_bzip2_support, __pyx_t_2) < (0)) __PYX_ERR(0, 1306, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":1307
 * __has_zstandard_support__ = HAS_ZSTANDARD_SUPPORT
 * __has_bzip2_support__ = HAS_BZIP2_SUPPORT
 * __has_blosc_support__ = HAS_BLOSC_SUPPORT             # <<<<<<<<<<<<<<
 * __has_szip_support__ = HAS_SZIP_SUPPORT
 * __has_set_alignment__ = HAS_SET_ALIGNMENT
*/
  __pyx_t_2 = __Pyx_PyLong_From___pyx_anon_enum(HAS_BLOSC_SUPPORT); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1307, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_has_blosc_support, __pyx_t_2) < (0)) __PYX_ERR(0, 1307, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":1308
 * __has_bzip2_support__ = HAS_BZIP2_SUPPORT
 * __has_blosc_support__ = HAS_BLOSC_SUPPORT
 * __has_szip_support__ = HAS_SZIP_SUPPORT             # <<<<<<<<<<<<<<
 * __has_set_alignment__ = HAS_SET_ALIGNMENT
 * __has_ncfilter__ = HAS_NCFILTER
*/
  __pyx_t_2 = __Pyx_PyLong_From___pyx_anon_enum(HAS_SZIP_SUPPORT); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1308, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_has_szip_support, __pyx_t_2) < (0)) __PYX_ERR(0, 1308, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":1309
 * __has_blosc_support__ = HAS_BLOSC_SUPPORT
 * __has_szip_support__ = HAS_SZIP_SUPPORT
 * __has_set_alignment__ = HAS_SET_ALIGNMENT             # <<<<<<<<<<<<<<
 * __has_ncfilter__ = HAS_NCFILTER
 * __has_nc_rc_set__ = HAS_NCRCSET
*/
  __pyx_t_2 = __Pyx_PyLong_From___pyx_anon_enum(HAS_SET_ALIGNMENT); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1309, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_has_set_alignment, __pyx_t_2) < (0)) __PYX_ERR(0, 1309, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":1310
 * __has_szip_support__ = HAS_SZIP_SUPPORT
 * __has_set_alignment__ = HAS_SET_ALIGNMENT
 * __has_ncfilter__ = HAS_NCFILTER             # <<<<<<<<<<<<<<
 * __has_nc_rc_set__ = HAS_NCRCSET
 * 
*/
  __pyx_t_2 = __Pyx_PyLong_From___pyx_anon_enum(HAS_NCFILTER); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1310, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_has_ncfilter, __pyx_t_2) < (0)) __PYX_ERR(0, 1310, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":1311
 * __has_set_alignment__ = HAS_SET_ALIGNMENT
 * __has_ncfilter__ = HAS_NCFILTER
 * __has_nc_rc_set__ = HAS_NCRCSET             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_t_2 = __Pyx_PyLong_From___pyx_anon_enum(HAS_NCRCSET); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1311, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_has_nc_rc_set, __pyx_t_2) < (0)) __PYX_ERR(0, 1311, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "netCDF4/_netCDF4.pyx":1316
 * # set path to SSL certificates (issue #1246)
 * # available starting in version 4.9.1
 * if __has_nc_rc_set__:             # <<<<<<<<<<<<<<
 *     import certifi
 *     if nc_rc_set("HTTP.SSL.CAINFO", _strencode(certifi.where())) != 0:
*/
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_has_nc_rc_set); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1316, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 1316, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__pyx_t_6) {

    /* "netCDF4/_netCDF4.pyx":1317
 * # available starting in version 4.9.1
 * if __has_nc_rc_set__:
 *     import certifi             # <<<<<<<<<<<<<<
 *     if nc_rc_set("HTTP.SSL.CAINFO", _strencode(certifi.where())) != 0:
 *         raise RuntimeError('error setting path to SSL certificates')
*/
    __pyx_t_1 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_certifi, 0, 0, NULL, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1317, __pyx_L1_error)
    __pyx_t_2 = __pyx_t_1;
    __Pyx_GOTREF(__pyx_t_2);
    if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_certifi, __pyx_t_2) < (0)) __PYX_ERR(0, 1317, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "netCDF4/_netCDF4.pyx":1318
 * if __has_nc_rc_set__:
 *     import certifi
 *     if nc_rc_set("HTTP.SSL.CAINFO", _strencode(certifi.where())) != 0:             # <<<<<<<<<<<<<<
 *         raise RuntimeError('error setting path to SSL certificates')
 * 
*/
    __pyx_t_4 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_certifi); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1318, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_where); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1318, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_9 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
      __pyx_t_2 = __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_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1318, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __pyx_t_8 = __pyx_f_7netCDF4_8_netCDF4__strencode(__pyx_t_2, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1318, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_10 = __Pyx_PyObject_AsWritableString(__pyx_t_8); if (unlikely((!__pyx_t_10) && PyErr_Occurred())) __PYX_ERR(0, 1318, __pyx_L1_error)
    __pyx_t_6 = (nc_rc_set(((char *)"HTTP.SSL.CAINFO"), __pyx_t_10) != 0);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    if (unlikely(__pyx_t_6)) {

      /* "netCDF4/_netCDF4.pyx":1319
 *     import certifi
 *     if nc_rc_set("HTTP.SSL.CAINFO", _strencode(certifi.where())) != 0:
 *         raise RuntimeError('error setting path to SSL certificates')             # <<<<<<<<<<<<<<
 * 
 * def rc_get(key):
*/
      __pyx_t_2 = NULL;
      __pyx_t_9 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_error_setting_path_to_SSL_certif};
        __pyx_t_8 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_RuntimeError)), __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (__pyx_t_9*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1319, __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(0, 1319, __pyx_L1_error)

      /* "netCDF4/_netCDF4.pyx":1318
 * if __has_nc_rc_set__:
 *     import certifi
 *     if nc_rc_set("HTTP.SSL.CAINFO", _strencode(certifi.where())) != 0:             # <<<<<<<<<<<<<<
 *         raise RuntimeError('error setting path to SSL certificates')
 * 
*/
    }

    /* "netCDF4/_netCDF4.pyx":1316
 * # set path to SSL certificates (issue #1246)
 * # available starting in version 4.9.1
 * if __has_nc_rc_set__:             # <<<<<<<<<<<<<<
 *     import certifi
 *     if nc_rc_set("HTTP.SSL.CAINFO", _strencode(certifi.where())) != 0:
*/
  }

  /* "netCDF4/_netCDF4.pyx":1321
 *         raise RuntimeError('error setting path to SSL certificates')
 * 
 * def rc_get(key):             # <<<<<<<<<<<<<<
 *     """
 * **```rc_get(key)```**
*/
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_1rc_get, 0, __pyx_mstate_global->__pyx_n_u_rc_get, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[13])); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1321, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_8);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_rc_get, __pyx_t_8) < (0)) __PYX_ERR(0, 1321, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "netCDF4/_netCDF4.pyx":1345
 *         )
 * 
 * def rc_set(key, value):             # <<<<<<<<<<<<<<
 *     """
 * **```rc_set(key, value)```**
*/
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_3rc_set, 0, __pyx_mstate_global->__pyx_n_u_rc_set, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[14])); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1345, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_8);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_rc_set, __pyx_t_8) < (0)) __PYX_ERR(0, 1345, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "netCDF4/_netCDF4.pyx":1372
 * 
 * # check for required version of netcdf-4 and hdf5.
 * def _gethdf5libversion():             # <<<<<<<<<<<<<<
 *     cdef unsigned int majorvers, minorvers, releasevers
 *     cdef herr_t ierr
*/
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_5_gethdf5libversion, 0, __pyx_mstate_global->__pyx_n_u_gethdf5libversion, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[15])); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1372, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_8);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_gethdf5libversion, __pyx_t_8) < (0)) __PYX_ERR(0, 1372, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "netCDF4/_netCDF4.pyx":1381
 *     return '%d.%d.%d' % (majorvers,minorvers,releasevers)
 * 
 * def getlibversion():             # <<<<<<<<<<<<<<
 *     """
 * **```getlibversion()```**
*/
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_7getlibversion, 0, __pyx_mstate_global->__pyx_n_u_getlibversion, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[16])); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1381, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_8);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_getlibversion, __pyx_t_8) < (0)) __PYX_ERR(0, 1381, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "netCDF4/_netCDF4.pyx":1390
 *     return (<char *>nc_inq_libvers()).decode('ascii')
 * 
 * def get_chunk_cache():             # <<<<<<<<<<<<<<
 *     """
 * **```get_chunk_cache()```**
*/
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_9get_chunk_cache, 0, __pyx_mstate_global->__pyx_n_u_get_chunk_cache, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[17])); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1390, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_8);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_get_chunk_cache, __pyx_t_8) < (0)) __PYX_ERR(0, 1390, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "netCDF4/_netCDF4.pyx":1406
 *     return (size,nelems,preemption)
 * 
 * def set_chunk_cache(size=None,nelems=None,preemption=None):             # <<<<<<<<<<<<<<
 *     """
 * **```set_chunk_cache(size=None,nelems=None,preemption=None)```**
*/
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_11set_chunk_cache, 0, __pyx_mstate_global->__pyx_n_u_set_chunk_cache, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[18])); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1406, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_8);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_8, __pyx_mstate_global->__pyx_tuple[14]);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_set_chunk_cache, __pyx_t_8) < (0)) __PYX_ERR(0, 1406, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "netCDF4/_netCDF4.pyx":1435
 * 
 * 
 * def get_alignment():             # <<<<<<<<<<<<<<
 *     """**```get_alignment()```**
 * 
*/
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_13get_alignment, 0, __pyx_mstate_global->__pyx_n_u_get_alignment, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[19])); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1435, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_8);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_get_alignment, __pyx_t_8) < (0)) __PYX_ERR(0, 1435, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "netCDF4/_netCDF4.pyx":1459
 * 
 * 
 * def set_alignment(threshold, alignment):             # <<<<<<<<<<<<<<
 *     """**```set_alignment(threshold,alignment)```**
 * 
*/
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_15set_alignment, 0, __pyx_mstate_global->__pyx_n_u_set_alignment_2, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[20])); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1459, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_8);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_set_alignment_2, __pyx_t_8) < (0)) __PYX_ERR(0, 1459, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "netCDF4/_netCDF4.pyx":1482
 * 
 * 
 * __netcdf4libversion__ = getlibversion().split()[0]             # <<<<<<<<<<<<<<
 * __hdf5libversion__ = _gethdf5libversion()
 * _needsworkaround_issue485 = __netcdf4libversion__ < "4.4.0" or \
*/
  __pyx_t_7 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_getlibversion); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1482, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_9 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_7, NULL};
    __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_11, __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_11); __pyx_t_11 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1482, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
  }
  __pyx_t_2 = __pyx_t_4;
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_9 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_8 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_split, __pyx_callargs+__pyx_t_9, (1-__pyx_t_9) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1482, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
  }
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_8, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1482, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_netcdf4libversion, __pyx_t_4) < (0)) __PYX_ERR(0, 1482, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "netCDF4/_netCDF4.pyx":1483
 * 
 * __netcdf4libversion__ = getlibversion().split()[0]
 * __hdf5libversion__ = _gethdf5libversion()             # <<<<<<<<<<<<<<
 * _needsworkaround_issue485 = __netcdf4libversion__ < "4.4.0" or \
 *                (__netcdf4libversion__.startswith("4.4.0") and \
*/
  __pyx_t_8 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_gethdf5libversion); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1483, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_9 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_8, NULL};
    __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_2, __pyx_callargs+__pyx_t_9, (1-__pyx_t_9) | (__pyx_t_9*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1483, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
  }
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_hdf5libversion, __pyx_t_4) < (0)) __PYX_ERR(0, 1483, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "netCDF4/_netCDF4.pyx":1484
 * __netcdf4libversion__ = getlibversion().split()[0]
 * __hdf5libversion__ = _gethdf5libversion()
 * _needsworkaround_issue485 = __netcdf4libversion__ < "4.4.0" or \             # <<<<<<<<<<<<<<
 *                (__netcdf4libversion__.startswith("4.4.0") and \
 *                 "-development" in __netcdf4libversion__)
*/
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_netcdf4libversion); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1484, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_8 = PyObject_RichCompare(__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_4_4_0, Py_LT); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1484, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 1484, __pyx_L1_error)
  if (!__pyx_t_6) {
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  } else {
    __Pyx_INCREF(__pyx_t_8);
    __pyx_t_4 = __pyx_t_8;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    goto __pyx_L4_bool_binop_done;
  }

  /* "netCDF4/_netCDF4.pyx":1485
 * __hdf5libversion__ = _gethdf5libversion()
 * _needsworkaround_issue485 = __netcdf4libversion__ < "4.4.0" or \
 *                (__netcdf4libversion__.startswith("4.4.0") and \             # <<<<<<<<<<<<<<
 *                 "-development" in __netcdf4libversion__)
 * 
*/
  __pyx_t_2 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_netcdf4libversion); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1485, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_startswith); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1485, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_9 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_4_4_0};
    __pyx_t_8 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (__pyx_t_9*__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_8)) __PYX_ERR(0, 1485, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
  }
  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 1485, __pyx_L1_error)
  if (__pyx_t_6) {
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  } else {
    __Pyx_INCREF(__pyx_t_8);
    __pyx_t_4 = __pyx_t_8;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    goto __pyx_L4_bool_binop_done;
  }

  /* "netCDF4/_netCDF4.pyx":1486
 * _needsworkaround_issue485 = __netcdf4libversion__ < "4.4.0" or \
 *                (__netcdf4libversion__.startswith("4.4.0") and \
 *                 "-development" in __netcdf4libversion__)             # <<<<<<<<<<<<<<
 * 
 * # issue warning for hdf5 1.10 (issue #549)
*/
  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_netcdf4libversion); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1486, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_6 = (__Pyx_PySequence_ContainsTF(__pyx_mstate_global->__pyx_kp_u_development, __pyx_t_8, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 1486, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyBool_FromLong(__pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1486, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_4 = __pyx_t_8;
  __pyx_t_8 = 0;
  __pyx_L4_bool_binop_done:;
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_needsworkaround_issue485, __pyx_t_4) < (0)) __PYX_ERR(0, 1484, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "netCDF4/_netCDF4.pyx":1489
 * 
 * # issue warning for hdf5 1.10 (issue #549)
 * if __netcdf4libversion__[0:5] < "4.4.1" and\             # <<<<<<<<<<<<<<
 *    __hdf5libversion__.startswith("1.10"):
 *     msg = """
*/
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_netcdf4libversion); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1489, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_8 = __Pyx_PyObject_GetSlice(__pyx_t_4, 0, 5, NULL, NULL, &__pyx_mstate_global->__pyx_slice[6], 1, 1, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1489, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyObject_RichCompare(__pyx_t_8, __pyx_mstate_global->__pyx_kp_u_4_4_1, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1489, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 1489, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_12) {
  } else {
    __pyx_t_6 = __pyx_t_12;
    goto __pyx_L8_bool_binop_done;
  }

  /* "netCDF4/_netCDF4.pyx":1490
 * # issue warning for hdf5 1.10 (issue #549)
 * if __netcdf4libversion__[0:5] < "4.4.1" and\
 *    __hdf5libversion__.startswith("1.10"):             # <<<<<<<<<<<<<<
 *     msg = """
 * WARNING: Backwards incompatible files will be created with HDF5 1.10.x
*/
  __pyx_t_8 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_hdf5libversion); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1490, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_startswith); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1490, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_9 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_mstate_global->__pyx_kp_u_1_10};
    __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_2, __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (__pyx_t_9*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1490, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
  }
  __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 1490, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_6 = __pyx_t_12;
  __pyx_L8_bool_binop_done:;

  /* "netCDF4/_netCDF4.pyx":1489
 * 
 * # issue warning for hdf5 1.10 (issue #549)
 * if __netcdf4libversion__[0:5] < "4.4.1" and\             # <<<<<<<<<<<<<<
 *    __hdf5libversion__.startswith("1.10"):
 *     msg = """
*/
  if (__pyx_t_6) {

    /* "netCDF4/_netCDF4.pyx":1491
 * if __netcdf4libversion__[0:5] < "4.4.1" and\
 *    __hdf5libversion__.startswith("1.10"):
 *     msg = """             # <<<<<<<<<<<<<<
 * WARNING: Backwards incompatible files will be created with HDF5 1.10.x
 * and netCDF < 4.4.1. Upgrading to netCDF4 >= 4.4.1 or downgrading to
*/
    if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_msg, __pyx_mstate_global->__pyx_kp_u_WARNING_Backwards_incompatible) < (0)) __PYX_ERR(0, 1491, __pyx_L1_error)

    /* "netCDF4/_netCDF4.pyx":1496
 * to HDF5 version 1.8.x is highly recommended
 * (see https://github.com/Unidata/netcdf-c/issues/250)."""
 *     warnings.warn(msg)             # <<<<<<<<<<<<<<
 * 
 * 
*/
    __pyx_t_2 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_warnings); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1496, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_warn); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1496, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_msg); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1496, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_9 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_8};
      __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (__pyx_t_9*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1496, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "netCDF4/_netCDF4.pyx":1489
 * 
 * # issue warning for hdf5 1.10 (issue #549)
 * if __netcdf4libversion__[0:5] < "4.4.1" and\             # <<<<<<<<<<<<<<
 *    __hdf5libversion__.startswith("1.10"):
 *     msg = """
*/
  }

  /* "netCDF4/_netCDF4.pyx":1499
 * 
 * 
 * class NetCDF4MissingFeatureException(Exception):             # <<<<<<<<<<<<<<
 *     """Custom exception when trying to use features missing from the linked netCDF library"""
 *     def __init__(self, feature: str, version: str):
*/
  __pyx_t_4 = PyTuple_Pack(1, ((PyObject *)(((PyTypeObject*)PyExc_Exception)))); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1499, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_7 = __Pyx_PEP560_update_bases(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1499, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_CalculateMetaclass(NULL, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1499, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_2 = __Pyx_Py3MetaclassPrepare(__pyx_t_8, __pyx_t_7, __pyx_mstate_global->__pyx_n_u_NetCDF4MissingFeatureException, __pyx_mstate_global->__pyx_n_u_NetCDF4MissingFeatureException, (PyObject *) NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_kp_u_Custom_exception_when_trying_to); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1499, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__pyx_t_7 != __pyx_t_4) {
    if (unlikely((PyDict_SetItemString(__pyx_t_2, "__orig_bases__", __pyx_t_4) < 0))) __PYX_ERR(0, 1499, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1499, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);

  /* "netCDF4/_netCDF4.pyx":1501
 * class NetCDF4MissingFeatureException(Exception):
 *     """Custom exception when trying to use features missing from the linked netCDF library"""
 *     def __init__(self, feature: str, version: str):             # <<<<<<<<<<<<<<
 *         super().__init__(
 *             f"{feature} requires netCDF lib >= {version} (using {__netcdf4libversion__}). "
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1501, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_feature, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(0, 1501, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_version, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(0, 1501, __pyx_L1_error)
  __pyx_t_13 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_30NetCDF4MissingFeatureException_1__init__, 0, __pyx_mstate_global->__pyx_n_u_NetCDF4MissingFeatureException_2, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[21])); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1501, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_13);
  #endif
  PyList_Append(__pyx_t_4, __pyx_t_13);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_13, __pyx_t_11);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_init, __pyx_t_13) < (0)) __PYX_ERR(0, 1501, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;

  /* "netCDF4/_netCDF4.pyx":1499
 * 
 * 
 * class NetCDF4MissingFeatureException(Exception):             # <<<<<<<<<<<<<<
 *     """Custom exception when trying to use features missing from the linked netCDF library"""
 *     def __init__(self, feature: str, version: str):
*/
  __pyx_t_13 = __Pyx_Py3ClassCreate(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_NetCDF4MissingFeatureException, __pyx_t_7, __pyx_t_2, NULL, 0, 0); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1499, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_13);
  #endif
  if (__Pyx_CyFunction_InitClassCell(__pyx_t_4, __pyx_t_13) < (0)) __PYX_ERR(0, 1499, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_NetCDF4MissingFeatureException, __pyx_t_13) < (0)) __PYX_ERR(0, 1499, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":1510
 * 
 * # numpy data type <--> netCDF 4 data type mapping.
 * _nptonctype  = {'S1' : NC_CHAR,             # <<<<<<<<<<<<<<
 *                 'i1' : NC_BYTE,
 *                 'u1' : NC_UBYTE,
*/
  __pyx_t_7 = __Pyx_PyDict_NewPresized(11); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1510, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_PyLong_From___pyx_anon_enum(NC_CHAR); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1510, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_S1, __pyx_t_8) < (0)) __PYX_ERR(0, 1510, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "netCDF4/_netCDF4.pyx":1511
 * # numpy data type <--> netCDF 4 data type mapping.
 * _nptonctype  = {'S1' : NC_CHAR,
 *                 'i1' : NC_BYTE,             # <<<<<<<<<<<<<<
 *                 'u1' : NC_UBYTE,
 *                 'i2' : NC_SHORT,
*/
  __pyx_t_8 = __Pyx_PyLong_From___pyx_anon_enum(NC_BYTE); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1511, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_i1, __pyx_t_8) < (0)) __PYX_ERR(0, 1510, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "netCDF4/_netCDF4.pyx":1512
 * _nptonctype  = {'S1' : NC_CHAR,
 *                 'i1' : NC_BYTE,
 *                 'u1' : NC_UBYTE,             # <<<<<<<<<<<<<<
 *                 'i2' : NC_SHORT,
 *                 'u2' : NC_USHORT,
*/
  __pyx_t_8 = __Pyx_PyLong_From___pyx_anon_enum(NC_UBYTE); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1512, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_u1, __pyx_t_8) < (0)) __PYX_ERR(0, 1510, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "netCDF4/_netCDF4.pyx":1513
 *                 'i1' : NC_BYTE,
 *                 'u1' : NC_UBYTE,
 *                 'i2' : NC_SHORT,             # <<<<<<<<<<<<<<
 *                 'u2' : NC_USHORT,
 *                 'i4' : NC_INT,
*/
  __pyx_t_8 = __Pyx_PyLong_From___pyx_anon_enum(NC_SHORT); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1513, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_i2, __pyx_t_8) < (0)) __PYX_ERR(0, 1510, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "netCDF4/_netCDF4.pyx":1514
 *                 'u1' : NC_UBYTE,
 *                 'i2' : NC_SHORT,
 *                 'u2' : NC_USHORT,             # <<<<<<<<<<<<<<
 *                 'i4' : NC_INT,
 *                 'u4' : NC_UINT,
*/
  __pyx_t_8 = __Pyx_PyLong_From___pyx_anon_enum(NC_USHORT); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1514, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_u2, __pyx_t_8) < (0)) __PYX_ERR(0, 1510, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "netCDF4/_netCDF4.pyx":1515
 *                 'i2' : NC_SHORT,
 *                 'u2' : NC_USHORT,
 *                 'i4' : NC_INT,             # <<<<<<<<<<<<<<
 *                 'u4' : NC_UINT,
 *                 'i8' : NC_INT64,
*/
  __pyx_t_8 = __Pyx_PyLong_From___pyx_anon_enum(NC_INT); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1515, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_i4, __pyx_t_8) < (0)) __PYX_ERR(0, 1510, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "netCDF4/_netCDF4.pyx":1516
 *                 'u2' : NC_USHORT,
 *                 'i4' : NC_INT,
 *                 'u4' : NC_UINT,             # <<<<<<<<<<<<<<
 *                 'i8' : NC_INT64,
 *                 'u8' : NC_UINT64,
*/
  __pyx_t_8 = __Pyx_PyLong_From___pyx_anon_enum(NC_UINT); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1516, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_u4, __pyx_t_8) < (0)) __PYX_ERR(0, 1510, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "netCDF4/_netCDF4.pyx":1517
 *                 'i4' : NC_INT,
 *                 'u4' : NC_UINT,
 *                 'i8' : NC_INT64,             # <<<<<<<<<<<<<<
 *                 'u8' : NC_UINT64,
 *                 'f4' : NC_FLOAT,
*/
  __pyx_t_8 = __Pyx_PyLong_From___pyx_anon_enum(NC_INT64); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1517, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_i8, __pyx_t_8) < (0)) __PYX_ERR(0, 1510, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "netCDF4/_netCDF4.pyx":1518
 *                 'u4' : NC_UINT,
 *                 'i8' : NC_INT64,
 *                 'u8' : NC_UINT64,             # <<<<<<<<<<<<<<
 *                 'f4' : NC_FLOAT,
 *                 'f8' : NC_DOUBLE}
*/
  __pyx_t_8 = __Pyx_PyLong_From___pyx_anon_enum(NC_UINT64); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1518, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_u8, __pyx_t_8) < (0)) __PYX_ERR(0, 1510, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "netCDF4/_netCDF4.pyx":1519
 *                 'i8' : NC_INT64,
 *                 'u8' : NC_UINT64,
 *                 'f4' : NC_FLOAT,             # <<<<<<<<<<<<<<
 *                 'f8' : NC_DOUBLE}
 * 
*/
  __pyx_t_8 = __Pyx_PyLong_From___pyx_anon_enum(NC_FLOAT); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1519, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_f4, __pyx_t_8) < (0)) __PYX_ERR(0, 1510, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "netCDF4/_netCDF4.pyx":1520
 *                 'u8' : NC_UINT64,
 *                 'f4' : NC_FLOAT,
 *                 'f8' : NC_DOUBLE}             # <<<<<<<<<<<<<<
 * 
 * # just integer types.
*/
  __pyx_t_8 = __Pyx_PyLong_From___pyx_anon_enum(NC_DOUBLE); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1520, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_f8, __pyx_t_8) < (0)) __PYX_ERR(0, 1510, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_nptonctype, __pyx_t_7) < (0)) __PYX_ERR(0, 1510, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":1523
 * 
 * # just integer types.
 * _intnptonctype  = {'i1' : NC_BYTE,             # <<<<<<<<<<<<<<
 *                    'u1' : NC_UBYTE,
 *                    'i2' : NC_SHORT,
*/
  __pyx_t_7 = __Pyx_PyDict_NewPresized(8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1523, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_PyLong_From___pyx_anon_enum(NC_BYTE); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1523, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_i1, __pyx_t_8) < (0)) __PYX_ERR(0, 1523, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "netCDF4/_netCDF4.pyx":1524
 * # just integer types.
 * _intnptonctype  = {'i1' : NC_BYTE,
 *                    'u1' : NC_UBYTE,             # <<<<<<<<<<<<<<
 *                    'i2' : NC_SHORT,
 *                    'u2' : NC_USHORT,
*/
  __pyx_t_8 = __Pyx_PyLong_From___pyx_anon_enum(NC_UBYTE); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1524, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_u1, __pyx_t_8) < (0)) __PYX_ERR(0, 1523, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "netCDF4/_netCDF4.pyx":1525
 * _intnptonctype  = {'i1' : NC_BYTE,
 *                    'u1' : NC_UBYTE,
 *                    'i2' : NC_SHORT,             # <<<<<<<<<<<<<<
 *                    'u2' : NC_USHORT,
 *                    'i4' : NC_INT,
*/
  __pyx_t_8 = __Pyx_PyLong_From___pyx_anon_enum(NC_SHORT); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1525, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_i2, __pyx_t_8) < (0)) __PYX_ERR(0, 1523, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "netCDF4/_netCDF4.pyx":1526
 *                    'u1' : NC_UBYTE,
 *                    'i2' : NC_SHORT,
 *                    'u2' : NC_USHORT,             # <<<<<<<<<<<<<<
 *                    'i4' : NC_INT,
 *                    'u4' : NC_UINT,
*/
  __pyx_t_8 = __Pyx_PyLong_From___pyx_anon_enum(NC_USHORT); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1526, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_u2, __pyx_t_8) < (0)) __PYX_ERR(0, 1523, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "netCDF4/_netCDF4.pyx":1527
 *                    'i2' : NC_SHORT,
 *                    'u2' : NC_USHORT,
 *                    'i4' : NC_INT,             # <<<<<<<<<<<<<<
 *                    'u4' : NC_UINT,
 *                    'i8' : NC_INT64,
*/
  __pyx_t_8 = __Pyx_PyLong_From___pyx_anon_enum(NC_INT); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1527, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_i4, __pyx_t_8) < (0)) __PYX_ERR(0, 1523, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "netCDF4/_netCDF4.pyx":1528
 *                    'u2' : NC_USHORT,
 *                    'i4' : NC_INT,
 *                    'u4' : NC_UINT,             # <<<<<<<<<<<<<<
 *                    'i8' : NC_INT64,
 *                    'u8' : NC_UINT64}
*/
  __pyx_t_8 = __Pyx_PyLong_From___pyx_anon_enum(NC_UINT); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1528, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_u4, __pyx_t_8) < (0)) __PYX_ERR(0, 1523, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "netCDF4/_netCDF4.pyx":1529
 *                    'i4' : NC_INT,
 *                    'u4' : NC_UINT,
 *                    'i8' : NC_INT64,             # <<<<<<<<<<<<<<
 *                    'u8' : NC_UINT64}
 * 
*/
  __pyx_t_8 = __Pyx_PyLong_From___pyx_anon_enum(NC_INT64); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1529, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_i8, __pyx_t_8) < (0)) __PYX_ERR(0, 1523, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "netCDF4/_netCDF4.pyx":1530
 *                    'u4' : NC_UINT,
 *                    'i8' : NC_INT64,
 *                    'u8' : NC_UINT64}             # <<<<<<<<<<<<<<
 * 
 * _complex_types = {
*/
  __pyx_t_8 = __Pyx_PyLong_From___pyx_anon_enum(NC_UINT64); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1530, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_u8, __pyx_t_8) < (0)) __PYX_ERR(0, 1523, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_intnptonctype, __pyx_t_7) < (0)) __PYX_ERR(0, 1523, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":1533
 * 
 * _complex_types = {
 *     "c16": PFNC_DOUBLE_COMPLEX,             # <<<<<<<<<<<<<<
 *     "c8": PFNC_FLOAT_COMPLEX,
 * }
*/
  __pyx_t_7 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1533, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_PyLong_From___pyx_anon_enum(PFNC_DOUBLE_COMPLEX); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1533, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_c16, __pyx_t_8) < (0)) __PYX_ERR(0, 1533, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "netCDF4/_netCDF4.pyx":1534
 * _complex_types = {
 *     "c16": PFNC_DOUBLE_COMPLEX,
 *     "c8": PFNC_FLOAT_COMPLEX,             # <<<<<<<<<<<<<<
 * }
 * 
*/
  __pyx_t_8 = __Pyx_PyLong_From___pyx_anon_enum(PFNC_FLOAT_COMPLEX); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1534, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_c8, __pyx_t_8) < (0)) __PYX_ERR(0, 1533, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_complex_types, __pyx_t_7) < (0)) __PYX_ERR(0, 1532, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":1538
 * 
 * # create dictionary mapping string identifiers to netcdf format codes
 * _format_dict  = {'NETCDF3_CLASSIC' : NC_FORMAT_CLASSIC,             # <<<<<<<<<<<<<<
 *                  'NETCDF4_CLASSIC' : NC_FORMAT_NETCDF4_CLASSIC,
 *                  'NETCDF4'         : NC_FORMAT_NETCDF4}
*/
  __pyx_t_7 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1538, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_PyLong_From___pyx_anon_enum(NC_FORMAT_CLASSIC); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1538, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_NETCDF3_CLASSIC, __pyx_t_8) < (0)) __PYX_ERR(0, 1538, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "netCDF4/_netCDF4.pyx":1539
 * # create dictionary mapping string identifiers to netcdf format codes
 * _format_dict  = {'NETCDF3_CLASSIC' : NC_FORMAT_CLASSIC,
 *                  'NETCDF4_CLASSIC' : NC_FORMAT_NETCDF4_CLASSIC,             # <<<<<<<<<<<<<<
 *                  'NETCDF4'         : NC_FORMAT_NETCDF4}
 * # create dictionary mapping string identifiers to netcdf create format codes
*/
  __pyx_t_8 = __Pyx_PyLong_From___pyx_anon_enum(NC_FORMAT_NETCDF4_CLASSIC); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1539, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_NETCDF4_CLASSIC, __pyx_t_8) < (0)) __PYX_ERR(0, 1538, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "netCDF4/_netCDF4.pyx":1540
 * _format_dict  = {'NETCDF3_CLASSIC' : NC_FORMAT_CLASSIC,
 *                  'NETCDF4_CLASSIC' : NC_FORMAT_NETCDF4_CLASSIC,
 *                  'NETCDF4'         : NC_FORMAT_NETCDF4}             # <<<<<<<<<<<<<<
 * # create dictionary mapping string identifiers to netcdf create format codes
 * _cmode_dict  = {'NETCDF3_CLASSIC' : NC_CLASSIC_MODEL,
*/
  __pyx_t_8 = __Pyx_PyLong_From___pyx_anon_enum(NC_FORMAT_NETCDF4); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1540, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_NETCDF4, __pyx_t_8) < (0)) __PYX_ERR(0, 1538, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_format_dict, __pyx_t_7) < (0)) __PYX_ERR(0, 1538, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":1542
 *                  'NETCDF4'         : NC_FORMAT_NETCDF4}
 * # create dictionary mapping string identifiers to netcdf create format codes
 * _cmode_dict  = {'NETCDF3_CLASSIC' : NC_CLASSIC_MODEL,             # <<<<<<<<<<<<<<
 *                 'NETCDF4_CLASSIC' : NC_CLASSIC_MODEL | NC_NETCDF4,
 *                 'NETCDF4'         : NC_NETCDF4}
*/
  __pyx_t_7 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1542, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_PyLong_From___pyx_anon_enum(NC_CLASSIC_MODEL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1542, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_NETCDF3_CLASSIC, __pyx_t_8) < (0)) __PYX_ERR(0, 1542, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "netCDF4/_netCDF4.pyx":1543
 * # create dictionary mapping string identifiers to netcdf create format codes
 * _cmode_dict  = {'NETCDF3_CLASSIC' : NC_CLASSIC_MODEL,
 *                 'NETCDF4_CLASSIC' : NC_CLASSIC_MODEL | NC_NETCDF4,             # <<<<<<<<<<<<<<
 *                 'NETCDF4'         : NC_NETCDF4}
 * # dicts for blosc, szip compressors.
*/
  __pyx_t_8 = __Pyx_PyLong_From_int((NC_CLASSIC_MODEL | NC_NETCDF4)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1543, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_NETCDF4_CLASSIC, __pyx_t_8) < (0)) __PYX_ERR(0, 1542, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "netCDF4/_netCDF4.pyx":1544
 * _cmode_dict  = {'NETCDF3_CLASSIC' : NC_CLASSIC_MODEL,
 *                 'NETCDF4_CLASSIC' : NC_CLASSIC_MODEL | NC_NETCDF4,
 *                 'NETCDF4'         : NC_NETCDF4}             # <<<<<<<<<<<<<<
 * # dicts for blosc, szip compressors.
 * _blosc_dict={'blosc_lz':0,'blosc_lz4':1,'blosc_lz4hc':2,'blosc_snappy':3,'blosc_zlib':4,'blosc_zstd':5}
*/
  __pyx_t_8 = __Pyx_PyLong_From___pyx_anon_enum(NC_NETCDF4); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1544, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_NETCDF4, __pyx_t_8) < (0)) __PYX_ERR(0, 1542, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_cmode_dict, __pyx_t_7) < (0)) __PYX_ERR(0, 1542, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":1546
 *                 'NETCDF4'         : NC_NETCDF4}
 * # dicts for blosc, szip compressors.
 * _blosc_dict={'blosc_lz':0,'blosc_lz4':1,'blosc_lz4hc':2,'blosc_snappy':3,'blosc_zlib':4,'blosc_zstd':5}             # <<<<<<<<<<<<<<
 * _blosc_dict_inv = {v: k for k, v in _blosc_dict.items()}
 * _szip_dict = {'ec': 4, 'nn': 32}
*/
  __pyx_t_7 = __Pyx_PyDict_NewPresized(6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1546, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (PyDict_SetItem(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_blosc_lz, __pyx_mstate_global->__pyx_int_0) < (0)) __PYX_ERR(0, 1546, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_blosc_lz4, __pyx_mstate_global->__pyx_int_1) < (0)) __PYX_ERR(0, 1546, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_blosc_lz4hc, __pyx_mstate_global->__pyx_int_2) < (0)) __PYX_ERR(0, 1546, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_blosc_snappy, __pyx_mstate_global->__pyx_int_3) < (0)) __PYX_ERR(0, 1546, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_blosc_zlib, __pyx_mstate_global->__pyx_int_4) < (0)) __PYX_ERR(0, 1546, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_blosc_zstd, __pyx_mstate_global->__pyx_int_5) < (0)) __PYX_ERR(0, 1546, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_blosc_dict, __pyx_t_7) < (0)) __PYX_ERR(0, 1546, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":1547
 * # dicts for blosc, szip compressors.
 * _blosc_dict={'blosc_lz':0,'blosc_lz4':1,'blosc_lz4hc':2,'blosc_snappy':3,'blosc_zlib':4,'blosc_zstd':5}
 * _blosc_dict_inv = {v: k for k, v in _blosc_dict.items()}             # <<<<<<<<<<<<<<
 * _szip_dict = {'ec': 4, 'nn': 32}
 * _szip_dict_inv = {v: k for k, v in _szip_dict.items()}
*/
  { /* enter inner scope */
    __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1547, __pyx_L12_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_3 = 0;
    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_blosc_dict); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1547, __pyx_L12_error)
    __Pyx_GOTREF(__pyx_t_2);
    if (unlikely(__pyx_t_2 == Py_None)) {
      PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "items");
      __PYX_ERR(0, 1547, __pyx_L12_error)
    }
    __pyx_t_13 = __Pyx_dict_iterator(__pyx_t_2, 0, __pyx_mstate_global->__pyx_n_u_items, (&__pyx_t_14), (&__pyx_t_5)); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1547, __pyx_L12_error)
    __Pyx_GOTREF(__pyx_t_13);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_8);
    __pyx_t_8 = __pyx_t_13;
    __pyx_t_13 = 0;
    while (1) {
      __pyx_t_15 = __Pyx_dict_iter_next(__pyx_t_8, __pyx_t_14, &__pyx_t_3, &__pyx_t_13, &__pyx_t_2, NULL, __pyx_t_5);
      if (unlikely(__pyx_t_15 == 0)) break;
      if (unlikely(__pyx_t_15 == -1)) __PYX_ERR(0, 1547, __pyx_L12_error)
      __Pyx_GOTREF(__pyx_t_13);
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_XGOTREF(__pyx_7genexpr__pyx_v_7netCDF4_8_netCDF4_k);
      __Pyx_DECREF_SET(__pyx_7genexpr__pyx_v_7netCDF4_8_netCDF4_k, __pyx_t_13);
      __Pyx_GIVEREF(__pyx_t_13);
      __pyx_t_13 = 0;
      __Pyx_XGOTREF(__pyx_7genexpr__pyx_v_7netCDF4_8_netCDF4_v);
      __Pyx_DECREF_SET(__pyx_7genexpr__pyx_v_7netCDF4_8_netCDF4_v, __pyx_t_2);
      __Pyx_GIVEREF(__pyx_t_2);
      __pyx_t_2 = 0;
      if (unlikely(PyDict_SetItem(__pyx_t_7, (PyObject*)__pyx_7genexpr__pyx_v_7netCDF4_8_netCDF4_v, (PyObject*)__pyx_7genexpr__pyx_v_7netCDF4_8_netCDF4_k))) __PYX_ERR(0, 1547, __pyx_L12_error)
    }
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_GOTREF(__pyx_7genexpr__pyx_v_7netCDF4_8_netCDF4_k);
    __Pyx_DECREF_SET(__pyx_7genexpr__pyx_v_7netCDF4_8_netCDF4_k, Py_None);
    __Pyx_GOTREF(__pyx_7genexpr__pyx_v_7netCDF4_8_netCDF4_v);
    __Pyx_DECREF_SET(__pyx_7genexpr__pyx_v_7netCDF4_8_netCDF4_v, Py_None);
    goto __pyx_L15_exit_scope;
    __pyx_L12_error:;
    __Pyx_GOTREF(__pyx_7genexpr__pyx_v_7netCDF4_8_netCDF4_k);
    __Pyx_DECREF_SET(__pyx_7genexpr__pyx_v_7netCDF4_8_netCDF4_k, Py_None);
    __Pyx_GOTREF(__pyx_7genexpr__pyx_v_7netCDF4_8_netCDF4_v);
    __Pyx_DECREF_SET(__pyx_7genexpr__pyx_v_7netCDF4_8_netCDF4_v, Py_None);
    goto __pyx_L1_error;
    __pyx_L15_exit_scope:;
  } /* exit inner scope */
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_blosc_dict_inv, __pyx_t_7) < (0)) __PYX_ERR(0, 1547, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":1548
 * _blosc_dict={'blosc_lz':0,'blosc_lz4':1,'blosc_lz4hc':2,'blosc_snappy':3,'blosc_zlib':4,'blosc_zstd':5}
 * _blosc_dict_inv = {v: k for k, v in _blosc_dict.items()}
 * _szip_dict = {'ec': 4, 'nn': 32}             # <<<<<<<<<<<<<<
 * _szip_dict_inv = {v: k for k, v in _szip_dict.items()}
 * if __has_cdf5_format__:
*/
  __pyx_t_7 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1548, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (PyDict_SetItem(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_ec, __pyx_mstate_global->__pyx_int_4) < (0)) __PYX_ERR(0, 1548, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_nn, __pyx_mstate_global->__pyx_int_32) < (0)) __PYX_ERR(0, 1548, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_szip_dict, __pyx_t_7) < (0)) __PYX_ERR(0, 1548, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":1549
 * _blosc_dict_inv = {v: k for k, v in _blosc_dict.items()}
 * _szip_dict = {'ec': 4, 'nn': 32}
 * _szip_dict_inv = {v: k for k, v in _szip_dict.items()}             # <<<<<<<<<<<<<<
 * if __has_cdf5_format__:
 *     # NETCDF3_64BIT deprecated, saved for compatibility.
*/
  { /* enter inner scope */
    __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1549, __pyx_L18_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_14 = 0;
    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_szip_dict); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1549, __pyx_L18_error)
    __Pyx_GOTREF(__pyx_t_2);
    if (unlikely(__pyx_t_2 == Py_None)) {
      PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "items");
      __PYX_ERR(0, 1549, __pyx_L18_error)
    }
    __pyx_t_13 = __Pyx_dict_iterator(__pyx_t_2, 0, __pyx_mstate_global->__pyx_n_u_items, (&__pyx_t_3), (&__pyx_t_5)); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1549, __pyx_L18_error)
    __Pyx_GOTREF(__pyx_t_13);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_8);
    __pyx_t_8 = __pyx_t_13;
    __pyx_t_13 = 0;
    while (1) {
      __pyx_t_15 = __Pyx_dict_iter_next(__pyx_t_8, __pyx_t_3, &__pyx_t_14, &__pyx_t_13, &__pyx_t_2, NULL, __pyx_t_5);
      if (unlikely(__pyx_t_15 == 0)) break;
      if (unlikely(__pyx_t_15 == -1)) __PYX_ERR(0, 1549, __pyx_L18_error)
      __Pyx_GOTREF(__pyx_t_13);
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_XGOTREF(__pyx_8genexpr1__pyx_v_7netCDF4_8_netCDF4_k);
      __Pyx_DECREF_SET(__pyx_8genexpr1__pyx_v_7netCDF4_8_netCDF4_k, __pyx_t_13);
      __Pyx_GIVEREF(__pyx_t_13);
      __pyx_t_13 = 0;
      __Pyx_XGOTREF(__pyx_8genexpr1__pyx_v_7netCDF4_8_netCDF4_v);
      __Pyx_DECREF_SET(__pyx_8genexpr1__pyx_v_7netCDF4_8_netCDF4_v, __pyx_t_2);
      __Pyx_GIVEREF(__pyx_t_2);
      __pyx_t_2 = 0;
      if (unlikely(PyDict_SetItem(__pyx_t_7, (PyObject*)__pyx_8genexpr1__pyx_v_7netCDF4_8_netCDF4_v, (PyObject*)__pyx_8genexpr1__pyx_v_7netCDF4_8_netCDF4_k))) __PYX_ERR(0, 1549, __pyx_L18_error)
    }
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_GOTREF(__pyx_8genexpr1__pyx_v_7netCDF4_8_netCDF4_k);
    __Pyx_DECREF_SET(__pyx_8genexpr1__pyx_v_7netCDF4_8_netCDF4_k, Py_None);
    __Pyx_GOTREF(__pyx_8genexpr1__pyx_v_7netCDF4_8_netCDF4_v);
    __Pyx_DECREF_SET(__pyx_8genexpr1__pyx_v_7netCDF4_8_netCDF4_v, Py_None);
    goto __pyx_L21_exit_scope;
    __pyx_L18_error:;
    __Pyx_GOTREF(__pyx_8genexpr1__pyx_v_7netCDF4_8_netCDF4_k);
    __Pyx_DECREF_SET(__pyx_8genexpr1__pyx_v_7netCDF4_8_netCDF4_k, Py_None);
    __Pyx_GOTREF(__pyx_8genexpr1__pyx_v_7netCDF4_8_netCDF4_v);
    __Pyx_DECREF_SET(__pyx_8genexpr1__pyx_v_7netCDF4_8_netCDF4_v, Py_None);
    goto __pyx_L1_error;
    __pyx_L21_exit_scope:;
  } /* exit inner scope */
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_szip_dict_inv, __pyx_t_7) < (0)) __PYX_ERR(0, 1549, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":1550
 * _szip_dict = {'ec': 4, 'nn': 32}
 * _szip_dict_inv = {v: k for k, v in _szip_dict.items()}
 * if __has_cdf5_format__:             # <<<<<<<<<<<<<<
 *     # NETCDF3_64BIT deprecated, saved for compatibility.
 *     # use NETCDF3_64BIT_OFFSET instead.
*/
  __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_has_cdf5_format); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1550, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 1550, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (__pyx_t_6) {

    /* "netCDF4/_netCDF4.pyx":1553
 *     # NETCDF3_64BIT deprecated, saved for compatibility.
 *     # use NETCDF3_64BIT_OFFSET instead.
 *     _format_dict['NETCDF3_64BIT_OFFSET'] = NC_FORMAT_64BIT_OFFSET             # <<<<<<<<<<<<<<
 *     _format_dict['NETCDF3_64BIT_DATA'] = NC_FORMAT_64BIT_DATA
 *     _cmode_dict['NETCDF3_64BIT_OFFSET'] = NC_64BIT_OFFSET
*/
    __pyx_t_7 = __Pyx_PyLong_From___pyx_anon_enum(NC_FORMAT_64BIT_OFFSET); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1553, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_format_dict); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1553, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    if (unlikely((PyObject_SetItem(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_NETCDF3_64BIT_OFFSET, __pyx_t_7) < 0))) __PYX_ERR(0, 1553, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

    /* "netCDF4/_netCDF4.pyx":1554
 *     # use NETCDF3_64BIT_OFFSET instead.
 *     _format_dict['NETCDF3_64BIT_OFFSET'] = NC_FORMAT_64BIT_OFFSET
 *     _format_dict['NETCDF3_64BIT_DATA'] = NC_FORMAT_64BIT_DATA             # <<<<<<<<<<<<<<
 *     _cmode_dict['NETCDF3_64BIT_OFFSET'] = NC_64BIT_OFFSET
 *     _cmode_dict['NETCDF3_64BIT_DATA'] = NC_64BIT_DATA
*/
    __pyx_t_7 = __Pyx_PyLong_From___pyx_anon_enum(NC_FORMAT_64BIT_DATA); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1554, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_format_dict); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1554, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    if (unlikely((PyObject_SetItem(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_NETCDF3_64BIT_DATA, __pyx_t_7) < 0))) __PYX_ERR(0, 1554, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

    /* "netCDF4/_netCDF4.pyx":1555
 *     _format_dict['NETCDF3_64BIT_OFFSET'] = NC_FORMAT_64BIT_OFFSET
 *     _format_dict['NETCDF3_64BIT_DATA'] = NC_FORMAT_64BIT_DATA
 *     _cmode_dict['NETCDF3_64BIT_OFFSET'] = NC_64BIT_OFFSET             # <<<<<<<<<<<<<<
 *     _cmode_dict['NETCDF3_64BIT_DATA'] = NC_64BIT_DATA
 * else:
*/
    __pyx_t_7 = __Pyx_PyLong_From___pyx_anon_enum(NC_64BIT_OFFSET); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1555, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_cmode_dict); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1555, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    if (unlikely((PyObject_SetItem(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_NETCDF3_64BIT_OFFSET, __pyx_t_7) < 0))) __PYX_ERR(0, 1555, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

    /* "netCDF4/_netCDF4.pyx":1556
 *     _format_dict['NETCDF3_64BIT_DATA'] = NC_FORMAT_64BIT_DATA
 *     _cmode_dict['NETCDF3_64BIT_OFFSET'] = NC_64BIT_OFFSET
 *     _cmode_dict['NETCDF3_64BIT_DATA'] = NC_64BIT_DATA             # <<<<<<<<<<<<<<
 * else:
 *     _format_dict['NETCDF3_64BIT'] = NC_FORMAT_64BIT
*/
    __pyx_t_7 = __Pyx_PyLong_From___pyx_anon_enum(NC_64BIT_DATA); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1556, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_cmode_dict); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1556, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    if (unlikely((PyObject_SetItem(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_NETCDF3_64BIT_DATA, __pyx_t_7) < 0))) __PYX_ERR(0, 1556, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

    /* "netCDF4/_netCDF4.pyx":1550
 * _szip_dict = {'ec': 4, 'nn': 32}
 * _szip_dict_inv = {v: k for k, v in _szip_dict.items()}
 * if __has_cdf5_format__:             # <<<<<<<<<<<<<<
 *     # NETCDF3_64BIT deprecated, saved for compatibility.
 *     # use NETCDF3_64BIT_OFFSET instead.
*/
    goto __pyx_L22;
  }

  /* "netCDF4/_netCDF4.pyx":1558
 *     _cmode_dict['NETCDF3_64BIT_DATA'] = NC_64BIT_DATA
 * else:
 *     _format_dict['NETCDF3_64BIT'] = NC_FORMAT_64BIT             # <<<<<<<<<<<<<<
 *     _cmode_dict['NETCDF3_64BIT'] = NC_64BIT_OFFSET
 * # invert dictionary mapping
*/
  /*else*/ {
    __pyx_t_7 = __Pyx_PyLong_From___pyx_anon_enum(NC_FORMAT_64BIT); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1558, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_format_dict); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1558, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    if (unlikely((PyObject_SetItem(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_NETCDF3_64BIT, __pyx_t_7) < 0))) __PYX_ERR(0, 1558, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

    /* "netCDF4/_netCDF4.pyx":1559
 * else:
 *     _format_dict['NETCDF3_64BIT'] = NC_FORMAT_64BIT
 *     _cmode_dict['NETCDF3_64BIT'] = NC_64BIT_OFFSET             # <<<<<<<<<<<<<<
 * # invert dictionary mapping
 * _reverse_format_dict = dict((v, k) for k, v in _format_dict.iteritems())
*/
    __pyx_t_7 = __Pyx_PyLong_From___pyx_anon_enum(NC_64BIT_OFFSET); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1559, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_cmode_dict); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1559, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    if (unlikely((PyObject_SetItem(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_NETCDF3_64BIT, __pyx_t_7) < 0))) __PYX_ERR(0, 1559, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  }
  __pyx_L22:;

  /* "netCDF4/_netCDF4.pyx":1561
 *     _cmode_dict['NETCDF3_64BIT'] = NC_64BIT_OFFSET
 * # invert dictionary mapping
 * _reverse_format_dict = dict((v, k) for k, v in _format_dict.iteritems())             # <<<<<<<<<<<<<<
 * # add duplicate entry (NETCDF3_64BIT == NETCDF3_64BIT_OFFSET)
 * if __has_cdf5_format__:
*/
  __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_format_dict); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1561, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __pyx_pf_7netCDF4_8_netCDF4_34genexpr(NULL, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1561, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_Generator_GetInlinedResult(__pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1561, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reverse_format_dict, __pyx_t_7) < (0)) __PYX_ERR(0, 1561, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":1563
 * _reverse_format_dict = dict((v, k) for k, v in _format_dict.iteritems())
 * # add duplicate entry (NETCDF3_64BIT == NETCDF3_64BIT_OFFSET)
 * if __has_cdf5_format__:             # <<<<<<<<<<<<<<
 *     _format_dict['NETCDF3_64BIT'] = NC_FORMAT_64BIT_OFFSET
 *     _cmode_dict['NETCDF3_64BIT'] = NC_64BIT_OFFSET
*/
  __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_has_cdf5_format); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1563, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 1563, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (__pyx_t_6) {

    /* "netCDF4/_netCDF4.pyx":1564
 * # add duplicate entry (NETCDF3_64BIT == NETCDF3_64BIT_OFFSET)
 * if __has_cdf5_format__:
 *     _format_dict['NETCDF3_64BIT'] = NC_FORMAT_64BIT_OFFSET             # <<<<<<<<<<<<<<
 *     _cmode_dict['NETCDF3_64BIT'] = NC_64BIT_OFFSET
 * else:
*/
    __pyx_t_7 = __Pyx_PyLong_From___pyx_anon_enum(NC_FORMAT_64BIT_OFFSET); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1564, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_format_dict); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1564, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    if (unlikely((PyObject_SetItem(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_NETCDF3_64BIT, __pyx_t_7) < 0))) __PYX_ERR(0, 1564, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

    /* "netCDF4/_netCDF4.pyx":1565
 * if __has_cdf5_format__:
 *     _format_dict['NETCDF3_64BIT'] = NC_FORMAT_64BIT_OFFSET
 *     _cmode_dict['NETCDF3_64BIT'] = NC_64BIT_OFFSET             # <<<<<<<<<<<<<<
 * else:
 *     _format_dict['NETCDF3_64BIT_OFFSET'] = NC_FORMAT_64BIT
*/
    __pyx_t_7 = __Pyx_PyLong_From___pyx_anon_enum(NC_64BIT_OFFSET); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1565, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_cmode_dict); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1565, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    if (unlikely((PyObject_SetItem(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_NETCDF3_64BIT, __pyx_t_7) < 0))) __PYX_ERR(0, 1565, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

    /* "netCDF4/_netCDF4.pyx":1563
 * _reverse_format_dict = dict((v, k) for k, v in _format_dict.iteritems())
 * # add duplicate entry (NETCDF3_64BIT == NETCDF3_64BIT_OFFSET)
 * if __has_cdf5_format__:             # <<<<<<<<<<<<<<
 *     _format_dict['NETCDF3_64BIT'] = NC_FORMAT_64BIT_OFFSET
 *     _cmode_dict['NETCDF3_64BIT'] = NC_64BIT_OFFSET
*/
    goto __pyx_L23;
  }

  /* "netCDF4/_netCDF4.pyx":1567
 *     _cmode_dict['NETCDF3_64BIT'] = NC_64BIT_OFFSET
 * else:
 *     _format_dict['NETCDF3_64BIT_OFFSET'] = NC_FORMAT_64BIT             # <<<<<<<<<<<<<<
 *     _cmode_dict['NETCDF3_64BIT_OFFSET'] = NC_64BIT_OFFSET
 * 
*/
  /*else*/ {
    __pyx_t_7 = __Pyx_PyLong_From___pyx_anon_enum(NC_FORMAT_64BIT); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1567, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_format_dict); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1567, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    if (unlikely((PyObject_SetItem(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_NETCDF3_64BIT_OFFSET, __pyx_t_7) < 0))) __PYX_ERR(0, 1567, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

    /* "netCDF4/_netCDF4.pyx":1568
 * else:
 *     _format_dict['NETCDF3_64BIT_OFFSET'] = NC_FORMAT_64BIT
 *     _cmode_dict['NETCDF3_64BIT_OFFSET'] = NC_64BIT_OFFSET             # <<<<<<<<<<<<<<
 * 
 * _parallel_formats = []
*/
    __pyx_t_7 = __Pyx_PyLong_From___pyx_anon_enum(NC_64BIT_OFFSET); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1568, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_cmode_dict); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1568, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    if (unlikely((PyObject_SetItem(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_NETCDF3_64BIT_OFFSET, __pyx_t_7) < 0))) __PYX_ERR(0, 1568, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  }
  __pyx_L23:;

  /* "netCDF4/_netCDF4.pyx":1570
 *     _cmode_dict['NETCDF3_64BIT_OFFSET'] = NC_64BIT_OFFSET
 * 
 * _parallel_formats = []             # <<<<<<<<<<<<<<
 * if __has_parallel4_support__:
 *     _parallel_formats += ['NETCDF4', 'NETCDF4_CLASSIC']
*/
  __pyx_t_7 = PyList_New(0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1570, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_parallel_formats, __pyx_t_7) < (0)) __PYX_ERR(0, 1570, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":1571
 * 
 * _parallel_formats = []
 * if __has_parallel4_support__:             # <<<<<<<<<<<<<<
 *     _parallel_formats += ['NETCDF4', 'NETCDF4_CLASSIC']
 * if __has_pnetcdf_support__:
*/
  __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_has_parallel4_support); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1571, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 1571, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (__pyx_t_6) {

    /* "netCDF4/_netCDF4.pyx":1572
 * _parallel_formats = []
 * if __has_parallel4_support__:
 *     _parallel_formats += ['NETCDF4', 'NETCDF4_CLASSIC']             # <<<<<<<<<<<<<<
 * if __has_pnetcdf_support__:
 *     _parallel_formats += [
*/
    __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_parallel_formats); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1572, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = __Pyx_PyList_Pack(2, __pyx_mstate_global->__pyx_n_u_NETCDF4, __pyx_mstate_global->__pyx_n_u_NETCDF4_CLASSIC); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1572, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1572, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_parallel_formats, __pyx_t_2) < (0)) __PYX_ERR(0, 1572, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "netCDF4/_netCDF4.pyx":1571
 * 
 * _parallel_formats = []
 * if __has_parallel4_support__:             # <<<<<<<<<<<<<<
 *     _parallel_formats += ['NETCDF4', 'NETCDF4_CLASSIC']
 * if __has_pnetcdf_support__:
*/
  }

  /* "netCDF4/_netCDF4.pyx":1573
 * if __has_parallel4_support__:
 *     _parallel_formats += ['NETCDF4', 'NETCDF4_CLASSIC']
 * if __has_pnetcdf_support__:             # <<<<<<<<<<<<<<
 *     _parallel_formats += [
 *         'NETCDF3_CLASSIC',
*/
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_has_pnetcdf_support); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1573, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 1573, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__pyx_t_6) {

    /* "netCDF4/_netCDF4.pyx":1574
 *     _parallel_formats += ['NETCDF4', 'NETCDF4_CLASSIC']
 * if __has_pnetcdf_support__:
 *     _parallel_formats += [             # <<<<<<<<<<<<<<
 *         'NETCDF3_CLASSIC',
 *         'NETCDF3_64BIT_OFFSET',
*/
    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_parallel_formats); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1574, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_8 = __Pyx_PyList_Pack(4, __pyx_mstate_global->__pyx_n_u_NETCDF3_CLASSIC, __pyx_mstate_global->__pyx_n_u_NETCDF3_64BIT_OFFSET, __pyx_mstate_global->__pyx_n_u_NETCDF3_64BIT_DATA, __pyx_mstate_global->__pyx_n_u_NETCDF3_64BIT); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1574, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_7 = PyNumber_InPlaceAdd(__pyx_t_2, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1574, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_parallel_formats, __pyx_t_7) < (0)) __PYX_ERR(0, 1574, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

    /* "netCDF4/_netCDF4.pyx":1573
 * if __has_parallel4_support__:
 *     _parallel_formats += ['NETCDF4', 'NETCDF4_CLASSIC']
 * if __has_pnetcdf_support__:             # <<<<<<<<<<<<<<
 *     _parallel_formats += [
 *         'NETCDF3_CLASSIC',
*/
  }

  /* "netCDF4/_netCDF4.pyx":1584
 * # numbers only applies to complex dimensions
 * default_fillvals = {#'S1':NC_FILL_CHAR,
 *                      'S1':'\0',             # <<<<<<<<<<<<<<
 *                      'i1':NC_FILL_BYTE,
 *                      'u1':NC_FILL_UBYTE,
*/
  __pyx_t_7 = __Pyx_PyDict_NewPresized(13); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1584, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (PyDict_SetItem(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_S1, __pyx_mstate_global->__pyx_kp_u__3) < (0)) __PYX_ERR(0, 1584, __pyx_L1_error)

  /* "netCDF4/_netCDF4.pyx":1585
 * default_fillvals = {#'S1':NC_FILL_CHAR,
 *                      'S1':'\0',
 *                      'i1':NC_FILL_BYTE,             # <<<<<<<<<<<<<<
 *                      'u1':NC_FILL_UBYTE,
 *                      'i2':NC_FILL_SHORT,
*/
  __pyx_t_8 = __Pyx_PyLong_From___pyx_anon_enum(NC_FILL_BYTE); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1585, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_i1, __pyx_t_8) < (0)) __PYX_ERR(0, 1584, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "netCDF4/_netCDF4.pyx":1586
 *                      'S1':'\0',
 *                      'i1':NC_FILL_BYTE,
 *                      'u1':NC_FILL_UBYTE,             # <<<<<<<<<<<<<<
 *                      'i2':NC_FILL_SHORT,
 *                      'u2':NC_FILL_USHORT,
*/
  __pyx_t_8 = __Pyx_PyLong_From___pyx_anon_enum(NC_FILL_UBYTE); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1586, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_u1, __pyx_t_8) < (0)) __PYX_ERR(0, 1584, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "netCDF4/_netCDF4.pyx":1587
 *                      'i1':NC_FILL_BYTE,
 *                      'u1':NC_FILL_UBYTE,
 *                      'i2':NC_FILL_SHORT,             # <<<<<<<<<<<<<<
 *                      'u2':NC_FILL_USHORT,
 *                      'i4':NC_FILL_INT,
*/
  __pyx_t_8 = __Pyx_PyLong_From___pyx_anon_enum(NC_FILL_SHORT); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1587, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_i2, __pyx_t_8) < (0)) __PYX_ERR(0, 1584, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "netCDF4/_netCDF4.pyx":1588
 *                      'u1':NC_FILL_UBYTE,
 *                      'i2':NC_FILL_SHORT,
 *                      'u2':NC_FILL_USHORT,             # <<<<<<<<<<<<<<
 *                      'i4':NC_FILL_INT,
 *                      'u4':NC_FILL_UINT,
*/
  __pyx_t_8 = __Pyx_PyLong_From___pyx_anon_enum(NC_FILL_USHORT); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1588, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_u2, __pyx_t_8) < (0)) __PYX_ERR(0, 1584, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "netCDF4/_netCDF4.pyx":1589
 *                      'i2':NC_FILL_SHORT,
 *                      'u2':NC_FILL_USHORT,
 *                      'i4':NC_FILL_INT,             # <<<<<<<<<<<<<<
 *                      'u4':NC_FILL_UINT,
 *                      'i8':NC_FILL_INT64,
*/
  __pyx_t_8 = __Pyx_PyLong_From_long(NC_FILL_INT); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1589, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_i4, __pyx_t_8) < (0)) __PYX_ERR(0, 1584, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "netCDF4/_netCDF4.pyx":1590
 *                      'u2':NC_FILL_USHORT,
 *                      'i4':NC_FILL_INT,
 *                      'u4':NC_FILL_UINT,             # <<<<<<<<<<<<<<
 *                      'i8':NC_FILL_INT64,
 *                      'u8':NC_FILL_UINT64,
*/
  __pyx_t_8 = __Pyx_PyLong_From_unsigned_long(NC_FILL_UINT); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1590, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_u4, __pyx_t_8) < (0)) __PYX_ERR(0, 1584, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "netCDF4/_netCDF4.pyx":1591
 *                      'i4':NC_FILL_INT,
 *                      'u4':NC_FILL_UINT,
 *                      'i8':NC_FILL_INT64,             # <<<<<<<<<<<<<<
 *                      'u8':NC_FILL_UINT64,
 *                      'f4':NC_FILL_FLOAT,
*/
  __pyx_t_8 = __Pyx_PyLong_From_PY_LONG_LONG(NC_FILL_INT64); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1591, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_i8, __pyx_t_8) < (0)) __PYX_ERR(0, 1584, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "netCDF4/_netCDF4.pyx":1592
 *                      'u4':NC_FILL_UINT,
 *                      'i8':NC_FILL_INT64,
 *                      'u8':NC_FILL_UINT64,             # <<<<<<<<<<<<<<
 *                      'f4':NC_FILL_FLOAT,
 *                      'f8':NC_FILL_DOUBLE,
*/
  __pyx_t_8 = __Pyx_PyLong_From_unsigned_PY_LONG_LONG(NC_FILL_UINT64); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1592, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_u8, __pyx_t_8) < (0)) __PYX_ERR(0, 1584, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "netCDF4/_netCDF4.pyx":1593
 *                      'i8':NC_FILL_INT64,
 *                      'u8':NC_FILL_UINT64,
 *                      'f4':NC_FILL_FLOAT,             # <<<<<<<<<<<<<<
 *                      'f8':NC_FILL_DOUBLE,
 *                      'c8':NC_FILL_FLOAT,
*/
  __pyx_t_8 = PyFloat_FromDouble(NC_FILL_FLOAT); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1593, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_f4, __pyx_t_8) < (0)) __PYX_ERR(0, 1584, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "netCDF4/_netCDF4.pyx":1594
 *                      'u8':NC_FILL_UINT64,
 *                      'f4':NC_FILL_FLOAT,
 *                      'f8':NC_FILL_DOUBLE,             # <<<<<<<<<<<<<<
 *                      'c8':NC_FILL_FLOAT,
 *                      'c16':NC_FILL_DOUBLE,
*/
  __pyx_t_8 = PyFloat_FromDouble(NC_FILL_DOUBLE); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1594, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_f8, __pyx_t_8) < (0)) __PYX_ERR(0, 1584, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "netCDF4/_netCDF4.pyx":1595
 *                      'f4':NC_FILL_FLOAT,
 *                      'f8':NC_FILL_DOUBLE,
 *                      'c8':NC_FILL_FLOAT,             # <<<<<<<<<<<<<<
 *                      'c16':NC_FILL_DOUBLE,
 * }
*/
  __pyx_t_8 = PyFloat_FromDouble(NC_FILL_FLOAT); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1595, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_c8, __pyx_t_8) < (0)) __PYX_ERR(0, 1584, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "netCDF4/_netCDF4.pyx":1596
 *                      'f8':NC_FILL_DOUBLE,
 *                      'c8':NC_FILL_FLOAT,
 *                      'c16':NC_FILL_DOUBLE,             # <<<<<<<<<<<<<<
 * }
 * 
*/
  __pyx_t_8 = PyFloat_FromDouble(NC_FILL_DOUBLE); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1596, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_c16, __pyx_t_8) < (0)) __PYX_ERR(0, 1584, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_default_fillvals, __pyx_t_7) < (0)) __PYX_ERR(0, 1583, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":1600
 * 
 * # logical for native endian type.
 * is_native_little = numpy.dtype('<f4').byteorder == c'='             # <<<<<<<<<<<<<<
 * is_native_big = numpy.dtype('>f4').byteorder == c'='
 * 
*/
  __pyx_t_8 = NULL;
  __pyx_t_9 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_mstate_global->__pyx_kp_u_f4_2};
    __pyx_t_7 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_5numpy_dtype, __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (__pyx_t_9*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1600, __pyx_L1_error)
    __Pyx_GOTREF((PyObject *)__pyx_t_7);
  }
  __pyx_t_8 = __Pyx_PyBool_FromLong((((PyArray_Descr *)__pyx_t_7)->byteorder == '=')); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1600, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF((PyObject *)__pyx_t_7); __pyx_t_7 = 0;
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_is_native_little, __pyx_t_8) < (0)) __PYX_ERR(0, 1600, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "netCDF4/_netCDF4.pyx":1601
 * # logical for native endian type.
 * is_native_little = numpy.dtype('<f4').byteorder == c'='
 * is_native_big = numpy.dtype('>f4').byteorder == c'='             # <<<<<<<<<<<<<<
 * 
 * # hard code these here, instead of importing from netcdf.h
*/
  __pyx_t_7 = NULL;
  __pyx_t_9 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_mstate_global->__pyx_kp_u_f4_3};
    __pyx_t_8 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_5numpy_dtype, __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (__pyx_t_9*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1601, __pyx_L1_error)
    __Pyx_GOTREF((PyObject *)__pyx_t_8);
  }
  __pyx_t_7 = __Pyx_PyBool_FromLong((((PyArray_Descr *)__pyx_t_8)->byteorder == '=')); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1601, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF((PyObject *)__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_is_native_big, __pyx_t_7) < (0)) __PYX_ERR(0, 1601, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":1605
 * # hard code these here, instead of importing from netcdf.h
 * # so it will compile with versions <= 4.2.
 * NC_DISKLESS = 0x0008             # <<<<<<<<<<<<<<
 * # introduced in 4.6.2
 * if __netcdf4libversion__[0:5] >= "4.6.2":
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_NC_DISKLESS, __pyx_mstate_global->__pyx_int_8) < (0)) __PYX_ERR(0, 1605, __pyx_L1_error)

  /* "netCDF4/_netCDF4.pyx":1607
 * NC_DISKLESS = 0x0008
 * # introduced in 4.6.2
 * if __netcdf4libversion__[0:5] >= "4.6.2":             # <<<<<<<<<<<<<<
 *     NC_PERSIST = 0x4000
 * else:  # prior to 4.6.2 this flag doesn't work, so make the same as NC_DISKLESS
*/
  __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_netcdf4libversion); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1607, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_PyObject_GetSlice(__pyx_t_7, 0, 5, NULL, NULL, &__pyx_mstate_global->__pyx_slice[6], 1, 1, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1607, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = PyObject_RichCompare(__pyx_t_8, __pyx_mstate_global->__pyx_kp_u_4_6_2, Py_GE); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1607, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 1607, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (__pyx_t_6) {

    /* "netCDF4/_netCDF4.pyx":1608
 * # introduced in 4.6.2
 * if __netcdf4libversion__[0:5] >= "4.6.2":
 *     NC_PERSIST = 0x4000             # <<<<<<<<<<<<<<
 * else:  # prior to 4.6.2 this flag doesn't work, so make the same as NC_DISKLESS
 *     NC_PERSIST = NC_DISKLESS
*/
    if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_NC_PERSIST, __pyx_mstate_global->__pyx_int_16384) < (0)) __PYX_ERR(0, 1608, __pyx_L1_error)

    /* "netCDF4/_netCDF4.pyx":1607
 * NC_DISKLESS = 0x0008
 * # introduced in 4.6.2
 * if __netcdf4libversion__[0:5] >= "4.6.2":             # <<<<<<<<<<<<<<
 *     NC_PERSIST = 0x4000
 * else:  # prior to 4.6.2 this flag doesn't work, so make the same as NC_DISKLESS
*/
    goto __pyx_L26;
  }

  /* "netCDF4/_netCDF4.pyx":1610
 *     NC_PERSIST = 0x4000
 * else:  # prior to 4.6.2 this flag doesn't work, so make the same as NC_DISKLESS
 *     NC_PERSIST = NC_DISKLESS             # <<<<<<<<<<<<<<
 * 
 * # next two lines do nothing, preserved for backwards compatibility.
*/
  /*else*/ {
    __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_NC_DISKLESS); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1610, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_NC_PERSIST, __pyx_t_7) < (0)) __PYX_ERR(0, 1610, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  }
  __pyx_L26:;

  /* "netCDF4/_netCDF4.pyx":1613
 * 
 * # next two lines do nothing, preserved for backwards compatibility.
 * default_encoding = 'utf-8'             # <<<<<<<<<<<<<<
 * unicode_error = 'replace'
 * 
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_default_encoding, __pyx_mstate_global->__pyx_kp_u_utf_8) < (0)) __PYX_ERR(0, 1613, __pyx_L1_error)

  /* "netCDF4/_netCDF4.pyx":1614
 * # next two lines do nothing, preserved for backwards compatibility.
 * default_encoding = 'utf-8'
 * unicode_error = 'replace'             # <<<<<<<<<<<<<<
 * 
 * _nctonptype = {}
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_unicode_error, __pyx_mstate_global->__pyx_n_u_replace) < (0)) __PYX_ERR(0, 1614, __pyx_L1_error)

  /* "netCDF4/_netCDF4.pyx":1616
 * unicode_error = 'replace'
 * 
 * _nctonptype = {}             # <<<<<<<<<<<<<<
 * for _key,_value in _nptonctype.items():
 *     _nctonptype[_value] = _key
*/
  __pyx_t_7 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1616, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_nctonptype, __pyx_t_7) < (0)) __PYX_ERR(0, 1616, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":1617
 * 
 * _nctonptype = {}
 * for _key,_value in _nptonctype.items():             # <<<<<<<<<<<<<<
 *     _nctonptype[_value] = _key
 * _supportedtypes = _nptonctype.keys()
*/
  __pyx_t_3 = 0;
  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_nptonctype); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1617, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (unlikely(__pyx_t_8 == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "items");
    __PYX_ERR(0, 1617, __pyx_L1_error)
  }
  __pyx_t_2 = __Pyx_dict_iterator(__pyx_t_8, 0, __pyx_mstate_global->__pyx_n_u_items, (&__pyx_t_14), (&__pyx_t_5)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1617, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_XDECREF(__pyx_t_7);
  __pyx_t_7 = __pyx_t_2;
  __pyx_t_2 = 0;
  while (1) {
    __pyx_t_15 = __Pyx_dict_iter_next(__pyx_t_7, __pyx_t_14, &__pyx_t_3, &__pyx_t_2, &__pyx_t_8, NULL, __pyx_t_5);
    if (unlikely(__pyx_t_15 == 0)) break;
    if (unlikely(__pyx_t_15 == -1)) __PYX_ERR(0, 1617, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_GOTREF(__pyx_t_8);
    if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_key_2, __pyx_t_2) < (0)) __PYX_ERR(0, 1617, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_value_2, __pyx_t_8) < (0)) __PYX_ERR(0, 1617, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

    /* "netCDF4/_netCDF4.pyx":1618
 * _nctonptype = {}
 * for _key,_value in _nptonctype.items():
 *     _nctonptype[_value] = _key             # <<<<<<<<<<<<<<
 * _supportedtypes = _nptonctype.keys()
 * # make sure NC_CHAR points to S1
*/
    __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_key_2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1618, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_nctonptype); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1618, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_value_2); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1618, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_13);
    if (unlikely((PyObject_SetItem(__pyx_t_2, __pyx_t_13, __pyx_t_8) < 0))) __PYX_ERR(0, 1618, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  }
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":1619
 * for _key,_value in _nptonctype.items():
 *     _nctonptype[_value] = _key
 * _supportedtypes = _nptonctype.keys()             # <<<<<<<<<<<<<<
 * # make sure NC_CHAR points to S1
 * _nctonptype[NC_CHAR]='S1'
*/
  __pyx_t_8 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_nptonctype); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1619, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_keys); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1619, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  __pyx_t_9 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_8, NULL};
    __pyx_t_7 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_2, __pyx_callargs+__pyx_t_9, (1-__pyx_t_9) | (__pyx_t_9*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1619, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
  }
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_supportedtypes, __pyx_t_7) < (0)) __PYX_ERR(0, 1619, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":1621
 * _supportedtypes = _nptonctype.keys()
 * # make sure NC_CHAR points to S1
 * _nctonptype[NC_CHAR]='S1'             # <<<<<<<<<<<<<<
 * 
 * # Mapping from numpy dtype endian format to what we expect
*/
  __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_nctonptype); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1621, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (unlikely((__Pyx_SetItemInt(__pyx_t_7, NC_CHAR, __pyx_mstate_global->__pyx_n_u_S1, int, 1, __Pyx_PyLong_From___pyx_anon_enum, 0, 1, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference) < 0))) __PYX_ERR(0, 1621, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":1625
 * # Mapping from numpy dtype endian format to what we expect
 * _dtype_endian_lookup = {
 *     "=": "native",             # <<<<<<<<<<<<<<
 *     ">": "big",
 *     "<": "little",
*/
  __pyx_t_7 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1625, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (PyDict_SetItem(__pyx_t_7, __pyx_mstate_global->__pyx_kp_u__21, __pyx_mstate_global->__pyx_n_u_native) < (0)) __PYX_ERR(0, 1625, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_7, __pyx_mstate_global->__pyx_kp_u__6, __pyx_mstate_global->__pyx_n_u_big) < (0)) __PYX_ERR(0, 1625, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_7, __pyx_mstate_global->__pyx_kp_u__5, __pyx_mstate_global->__pyx_n_u_little) < (0)) __PYX_ERR(0, 1625, __pyx_L1_error)

  /* "netCDF4/_netCDF4.pyx":1628
 *     ">": "big",
 *     "<": "little",
 *     "|": None,             # <<<<<<<<<<<<<<
 *     None: None,
 * }
*/
  if (PyDict_SetItem(__pyx_t_7, __pyx_mstate_global->__pyx_kp_u__22, Py_None) < (0)) __PYX_ERR(0, 1625, __pyx_L1_error)

  /* "netCDF4/_netCDF4.pyx":1629
 *     "<": "little",
 *     "|": None,
 *     None: None,             # <<<<<<<<<<<<<<
 * }
 * 
*/
  if (PyDict_SetItem(__pyx_t_7, Py_None, Py_None) < (0)) __PYX_ERR(0, 1625, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_dtype_endian_lookup, __pyx_t_7) < (0)) __PYX_ERR(0, 1624, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":1735
 *             return value_arr
 * 
 * def _set_default_format(object format='NETCDF4'):             # <<<<<<<<<<<<<<
 *     # Private function to set the netCDF file format
 *     cdef int ierr, formatid
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_17_set_default_format, 0, __pyx_mstate_global->__pyx_n_u_set_default_format, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[22])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1735, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_7, __pyx_mstate_global->__pyx_tuple[15]);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_set_default_format, __pyx_t_7) < (0)) __PYX_ERR(0, 1735, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":2149
 * 
 * 
 * def _ensure_nc_success(ierr, err_cls=RuntimeError, filename=None, extra_msg=None):             # <<<<<<<<<<<<<<
 *     # print netcdf error message, raise error.
 *     if ierr == NC_NOERR:
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_19_ensure_nc_success, 0, __pyx_mstate_global->__pyx_n_u_ensure_nc_success, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[23])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2149, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (!__Pyx_CyFunction_InitDefaults(__pyx_t_7, __pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4___pyx_defaults)) __PYX_ERR(0, 2149, __pyx_L1_error)
  __Pyx_INCREF((PyObject *)(((PyTypeObject*)PyExc_RuntimeError)));
  __Pyx_CyFunction_Defaults(struct __pyx_defaults, __pyx_t_7)->arg0 = ((PyObject *)(((PyTypeObject*)PyExc_RuntimeError)));
  __Pyx_GIVEREF((((PyTypeObject*)PyExc_RuntimeError)));
  __Pyx_CyFunction_SetDefaultsGetter(__pyx_t_7, __pyx_pf_7netCDF4_8_netCDF4_39__defaults__);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ensure_nc_success, __pyx_t_7) < (0)) __PYX_ERR(0, 2149, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":2167
 * 
 * 
 * def dtype_is_complex(dtype):             # <<<<<<<<<<<<<<
 *     """Return True if dtype is a complex number"""
 *     return dtype in ("c8", "c16")
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_21dtype_is_complex, 0, __pyx_mstate_global->__pyx_n_u_dtype_is_complex, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[24])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2167, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_dtype_is_complex, __pyx_t_7) < (0)) __PYX_ERR(0, 2167, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":2214
 * 
 * _private_atts = \
 * ('_grpid','_grp','_varid','groups','dimensions','variables','dtype','data_model','disk_format',             # <<<<<<<<<<<<<<
 *  '_nunlimdim','path','parent','ndim','mask','scale','cmptypes','vltypes','enumtypes','_isprimitive',
 *  'file_format','_isvlen','_isenum','_iscompound','_cmptype','_vltype','_enumtype','name',
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_private_atts, __pyx_mstate_global->__pyx_tuple[16]) < (0)) __PYX_ERR(0, 2213, __pyx_L1_error)

  /* "netCDF4/_netCDF4.pyx":2548
 * 
 *     # these allow Dataset objects to be used via a "with" statement.
 *     def __enter__(self):             # <<<<<<<<<<<<<<
 *         return self
 *     def __exit__(self,atype,value,traceback):
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_7Dataset_3__enter__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Dataset___enter, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[25])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2548, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Dataset, __pyx_mstate_global->__pyx_n_u_enter, __pyx_t_7) < (0)) __PYX_ERR(0, 2548, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":2550
 *     def __enter__(self):
 *         return self
 *     def __exit__(self,atype,value,traceback):             # <<<<<<<<<<<<<<
 *         self.close()
 * 
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_7Dataset_5__exit__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Dataset___exit, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[26])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2550, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Dataset, __pyx_mstate_global->__pyx_n_u_exit, __pyx_t_7) < (0)) __PYX_ERR(0, 2550, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":2572
 *             raise IndexError('%s not found in %s' % (lastname,group.path))
 * 
 *     def filepath(self,encoding=None):             # <<<<<<<<<<<<<<
 *         """**`filepath(self,encoding=None)`**
 * 
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_7Dataset_9filepath, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Dataset_filepath, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[27])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2572, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_7, __pyx_mstate_global->__pyx_tuple[17]);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Dataset, __pyx_mstate_global->__pyx_n_u_filepath, __pyx_t_7) < (0)) __PYX_ERR(0, 2572, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":2630
 *         return '\n'.join(ncdump)
 * 
 *     def _close(self, check_err):             # <<<<<<<<<<<<<<
 *         cdef int ierr
 *         with nogil:
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_7Dataset_15_close, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Dataset__close, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[28])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2630, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Dataset, __pyx_mstate_global->__pyx_n_u_close_2, __pyx_t_7) < (0)) __PYX_ERR(0, 2630, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":2645
 *         PyBuffer_Release(&self._buffer)
 * 
 *     def _close_mem(self, check_err):             # <<<<<<<<<<<<<<
 *         cdef int ierr
 *         cdef NC_memio memio
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_7Dataset_17_close_mem, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Dataset__close_mem, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[29])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2645, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Dataset, __pyx_mstate_global->__pyx_n_u_close_mem, __pyx_t_7) < (0)) __PYX_ERR(0, 2645, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":2661
 *         return memview_fromptr(<char *>memio.memory, memio.size)
 * 
 *     def close(self):             # <<<<<<<<<<<<<<
 *         """**`close(self)`**
 * 
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_7Dataset_19close, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Dataset_close, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[30])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2661, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Dataset, __pyx_mstate_global->__pyx_n_u_close, __pyx_t_7) < (0)) __PYX_ERR(0, 2661, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":2671
 *         self._close(True)
 * 
 *     def isopen(self):             # <<<<<<<<<<<<<<
 *         """
 * **`isopen(self)`**
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_7Dataset_21isopen, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Dataset_isopen, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[31])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2671, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Dataset, __pyx_mstate_global->__pyx_n_u_isopen, __pyx_t_7) < (0)) __PYX_ERR(0, 2671, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":2686
 *            self._close(False)
 * 
 *     def __reduce__(self):             # <<<<<<<<<<<<<<
 *         # raise error is user tries to pickle a Dataset object.
 *         raise NotImplementedError('Dataset is not picklable')
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_7Dataset_25__reduce__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Dataset___reduce, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[32])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2686, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Dataset, __pyx_mstate_global->__pyx_n_u_reduce, __pyx_t_7) < (0)) __PYX_ERR(0, 2686, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":2690
 *         raise NotImplementedError('Dataset is not picklable')
 * 
 *     def sync(self):             # <<<<<<<<<<<<<<
 *         """
 * **`sync(self)`**
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_7Dataset_27sync, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Dataset_sync, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[33])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2690, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Dataset, __pyx_mstate_global->__pyx_n_u_sync, __pyx_t_7) < (0)) __PYX_ERR(0, 2690, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":2700
 *         _ensure_nc_success(ierr)
 * 
 *     def _redef(self):             # <<<<<<<<<<<<<<
 *         cdef int ierr
 *         with nogil:
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_7Dataset_29_redef, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Dataset__redef, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[34])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2700, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Dataset, __pyx_mstate_global->__pyx_n_u_redef, __pyx_t_7) < (0)) __PYX_ERR(0, 2700, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":2705
 *             ierr = nc_redef(self._grpid)
 * 
 *     def _enddef(self):             # <<<<<<<<<<<<<<
 *         cdef int ierr
 *         with nogil:
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_7Dataset_31_enddef, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Dataset__enddef, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[35])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2705, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Dataset, __pyx_mstate_global->__pyx_n_u_enddef, __pyx_t_7) < (0)) __PYX_ERR(0, 2705, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":2710
 *             ierr = nc_enddef(self._grpid)
 * 
 *     def set_fill_on(self):             # <<<<<<<<<<<<<<
 *         """
 * **`set_fill_on(self)`**
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_7Dataset_33set_fill_on, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Dataset_set_fill_on, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[36])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2710, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Dataset, __pyx_mstate_global->__pyx_n_u_set_fill_on, __pyx_t_7) < (0)) __PYX_ERR(0, 2710, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":2728
 *         _ensure_nc_success(ierr)
 * 
 *     def set_fill_off(self):             # <<<<<<<<<<<<<<
 *         """
 * **`set_fill_off(self)`**
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_7Dataset_35set_fill_off, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Dataset_set_fill_off, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[37])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2728, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Dataset, __pyx_mstate_global->__pyx_n_u_set_fill_off, __pyx_t_7) < (0)) __PYX_ERR(0, 2728, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":2742
 *         _ensure_nc_success(ierr)
 * 
 *     def createDimension(self, dimname, size=None):             # <<<<<<<<<<<<<<
 *         """
 * **`createDimension(self, dimname, size=None)`**
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_7Dataset_37createDimension, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Dataset_createDimension, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[38])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2742, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_7, __pyx_mstate_global->__pyx_tuple[17]);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Dataset, __pyx_mstate_global->__pyx_n_u_createDimension, __pyx_t_7) < (0)) __PYX_ERR(0, 2742, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":2758
 *         return self.dimensions[dimname]
 * 
 *     def renameDimension(self, oldname, newname):             # <<<<<<<<<<<<<<
 *         """
 * **`renameDimension(self, oldname, newname)`**
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_7Dataset_39renameDimension, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Dataset_renameDimension, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[39])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2758, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Dataset, __pyx_mstate_global->__pyx_n_u_renameDimension, __pyx_t_7) < (0)) __PYX_ERR(0, 2758, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":2784
 *         # looks in the file, so no need to manually update.
 * 
 *     def createCompoundType(self, datatype, datatype_name):             # <<<<<<<<<<<<<<
 *         """
 * **`createCompoundType(self, datatype, datatype_name)`**
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_7Dataset_41createCompoundType, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Dataset_createCompoundType, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[40])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2784, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Dataset, __pyx_mstate_global->__pyx_n_u_createCompoundType, __pyx_t_7) < (0)) __PYX_ERR(0, 2784, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":2802
 *         return self.cmptypes[datatype_name]
 * 
 *     def createVLType(self, datatype, datatype_name):             # <<<<<<<<<<<<<<
 *         """
 * **`createVLType(self, datatype, datatype_name)`**
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_7Dataset_43createVLType, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Dataset_createVLType, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[41])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2802, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Dataset, __pyx_mstate_global->__pyx_n_u_createVLType, __pyx_t_7) < (0)) __PYX_ERR(0, 2802, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":2814
 *         return self.vltypes[datatype_name]
 * 
 *     def createEnumType(self, datatype, datatype_name, enum_dict):             # <<<<<<<<<<<<<<
 *         """
 * **`createEnumType(self, datatype, datatype_name, enum_dict)`**
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_7Dataset_45createEnumType, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Dataset_createEnumType, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[42])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2814, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Dataset, __pyx_mstate_global->__pyx_n_u_createEnumType, __pyx_t_7) < (0)) __PYX_ERR(0, 2814, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":2828
 *         return self.enumtypes[datatype_name]
 * 
 *     def createVariable(self, varname, datatype, dimensions=(),             # <<<<<<<<<<<<<<
 *             compression=None, zlib=False,
 *             complevel=4, shuffle=True,
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_7Dataset_47createVariable, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Dataset_createVariable, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[43])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2828, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_7, __pyx_mstate_global->__pyx_tuple[18]);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Dataset, __pyx_mstate_global->__pyx_n_u_createVariable, __pyx_t_7) < (0)) __PYX_ERR(0, 2828, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":3016
 *         return group.variables[varname]
 * 
 *     def renameVariable(self, oldname, newname):             # <<<<<<<<<<<<<<
 *         """
 * **`renameVariable(self, oldname, newname)`**
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_7Dataset_49renameVariable, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Dataset_renameVariable, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[44])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3016, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Dataset, __pyx_mstate_global->__pyx_n_u_renameVariable, __pyx_t_7) < (0)) __PYX_ERR(0, 3016, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":3040
 *         self.variables[newname] = var
 * 
 *     def createGroup(self, groupname):             # <<<<<<<<<<<<<<
 *         """
 * **`createGroup(self, groupname)`**
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_7Dataset_51createGroup, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Dataset_createGroup, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[45])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3040, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Dataset, __pyx_mstate_global->__pyx_n_u_createGroup, __pyx_t_7) < (0)) __PYX_ERR(0, 3040, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":3070
 *         return group
 * 
 *     def ncattrs(self):             # <<<<<<<<<<<<<<
 *         """
 * **`ncattrs(self)`**
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_7Dataset_53ncattrs, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Dataset_ncattrs, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[46])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3070, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Dataset, __pyx_mstate_global->__pyx_n_u_ncattrs, __pyx_t_7) < (0)) __PYX_ERR(0, 3070, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":3077
 *         return _get_att_names(self._grpid, NC_GLOBAL)
 * 
 *     def setncattr(self,name,value):             # <<<<<<<<<<<<<<
 *         """
 * **`setncattr(self,name,value)`**
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_7Dataset_55setncattr, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Dataset_setncattr, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[47])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3077, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Dataset, __pyx_mstate_global->__pyx_n_u_setncattr, __pyx_t_7) < (0)) __PYX_ERR(0, 3077, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":3090
 *         if self.data_model !=  'NETCDF4': self._enddef()
 * 
 *     def setncattr_string(self,name,value):             # <<<<<<<<<<<<<<
 *         """
 * **`setncattr_string(self,name,value)`**
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_7Dataset_57setncattr_string, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Dataset_setncattr_string, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[48])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3090, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Dataset, __pyx_mstate_global->__pyx_n_u_setncattr_string, __pyx_t_7) < (0)) __PYX_ERR(0, 3090, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":3104
 *         _set_att(self, NC_GLOBAL, name, value, xtype=xtype, force_ncstring=True)
 * 
 *     def setncatts(self,attdict):             # <<<<<<<<<<<<<<
 *         """
 * **`setncatts(self,attdict)`**
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_7Dataset_59setncatts, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Dataset_setncatts, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[49])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3104, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Dataset, __pyx_mstate_global->__pyx_n_u_setncatts, __pyx_t_7) < (0)) __PYX_ERR(0, 3104, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":3117
 *         if self.data_model != 'NETCDF4': self._enddef()
 * 
 *     def getncattr(self,name,encoding='utf-8'):             # <<<<<<<<<<<<<<
 *         """
 * **`getncattr(self,name)`**
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_7Dataset_61getncattr, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Dataset_getncattr, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[50])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3117, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_7, __pyx_mstate_global->__pyx_tuple[19]);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Dataset, __pyx_mstate_global->__pyx_n_u_getncattr, __pyx_t_7) < (0)) __PYX_ERR(0, 3117, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":3137
 *             "'%s' is one of the reserved attributes %s, cannot delete. Use delncattr instead." % (name, tuple(_private_atts)))
 * 
 *     def delncattr(self, name):             # <<<<<<<<<<<<<<
 *         """
 * **`delncattr(self,name,value)`**
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_7Dataset_65delncattr, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Dataset_delncattr, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[51])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3137, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Dataset, __pyx_mstate_global->__pyx_n_u_delncattr, __pyx_t_7) < (0)) __PYX_ERR(0, 3137, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":3184
 *             return self.getncattr(name)
 * 
 *     def renameAttribute(self, oldname, newname):             # <<<<<<<<<<<<<<
 *         """
 * **`renameAttribute(self, oldname, newname)`**
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_7Dataset_71renameAttribute, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Dataset_renameAttribute, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[52])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3184, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Dataset, __pyx_mstate_global->__pyx_n_u_renameAttribute, __pyx_t_7) < (0)) __PYX_ERR(0, 3184, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":3200
 *         _ensure_nc_success(ierr)
 * 
 *     def renameGroup(self, oldname, newname):             # <<<<<<<<<<<<<<
 *         """
 * **`renameGroup(self, oldname, newname)`**
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_7Dataset_73renameGroup, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Dataset_renameGroup, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[53])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3200, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Dataset, __pyx_mstate_global->__pyx_n_u_renameGroup, __pyx_t_7) < (0)) __PYX_ERR(0, 3200, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":3229
 *         self.groups[newname] = grp
 * 
 *     def set_auto_chartostring(self, value):             # <<<<<<<<<<<<<<
 *         """
 * **`set_auto_chartostring(self, True_or_False)`**
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_7Dataset_75set_auto_chartostring, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Dataset_set_auto_chartostring, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[54])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3229, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Dataset, __pyx_mstate_global->__pyx_n_u_set_auto_chartostring, __pyx_t_7) < (0)) __PYX_ERR(0, 3229, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":3257
 *                     var.set_auto_chartostring(value)
 * 
 *     def set_auto_maskandscale(self, value):             # <<<<<<<<<<<<<<
 *         """
 * **`set_auto_maskandscale(self, True_or_False)`**
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_7Dataset_77set_auto_maskandscale, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Dataset_set_auto_maskandscale, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[55])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3257, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Dataset, __pyx_mstate_global->__pyx_n_u_set_auto_maskandscale, __pyx_t_7) < (0)) __PYX_ERR(0, 3257, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":3284
 * 
 * 
 *     def set_auto_mask(self, value):             # <<<<<<<<<<<<<<
 *         """
 * **`set_auto_mask(self, True_or_False)`**
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_7Dataset_79set_auto_mask, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Dataset_set_auto_mask, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[56])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3284, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Dataset, __pyx_mstate_global->__pyx_n_u_set_auto_mask, __pyx_t_7) < (0)) __PYX_ERR(0, 3284, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":3311
 *                     var.set_auto_mask(value)
 * 
 *     def set_auto_scale(self, value):             # <<<<<<<<<<<<<<
 *         """
 * **`set_auto_scale(self, True_or_False)`**
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_7Dataset_81set_auto_scale, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Dataset_set_auto_scale, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[57])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3311, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Dataset, __pyx_mstate_global->__pyx_n_u_set_auto_scale, __pyx_t_7) < (0)) __PYX_ERR(0, 3311, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":3337
 *                     var.set_auto_scale(value)
 * 
 *     def set_always_mask(self, value):             # <<<<<<<<<<<<<<
 *         """
 * **`set_always_mask(self, True_or_False)`**
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_7Dataset_83set_always_mask, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Dataset_set_always_mask, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[58])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3337, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Dataset, __pyx_mstate_global->__pyx_n_u_set_always_mask, __pyx_t_7) < (0)) __PYX_ERR(0, 3337, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":3368
 *                     var.set_always_mask(value)
 * 
 *     def set_ncstring_attrs(self, value):             # <<<<<<<<<<<<<<
 *         """
 * **`set_ncstring_attrs(self, True_or_False)`**
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_7Dataset_85set_ncstring_attrs, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Dataset_set_ncstring_attrs, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[59])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3368, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Dataset, __pyx_mstate_global->__pyx_n_u_set_ncstring_attrs, __pyx_t_7) < (0)) __PYX_ERR(0, 3368, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":3398
 *                 group.set_ncstring_attrs(value) # recurse into subgroups...
 * 
 *     @functools.lru_cache(maxsize=128)             # <<<<<<<<<<<<<<
 *     def get_variables_by_attributes(self, **kwargs):
 *         """
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_7Dataset_87get_variables_by_attributes, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Dataset_get_variables_by_attribu, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[60])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3398, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Dataset, __pyx_mstate_global->__pyx_n_u_get_variables_by_attributes, __pyx_t_7) < (0)) __PYX_ERR(0, 3398, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_2 = NULL;
  __pyx_t_13 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_functools); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3398, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_lru_cache); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 3398, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_9 = 1;
  {
    PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_13, NULL};
    __pyx_t_4 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3398, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_maxsize, __pyx_mstate_global->__pyx_int_128, __pyx_t_4, __pyx_callargs+1, 0) < (0)) __PYX_ERR(0, 3398, __pyx_L1_error)
    __pyx_t_8 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_t_11, __pyx_callargs+__pyx_t_9, (1-__pyx_t_9) | (__pyx_t_9*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_4);
    __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3398, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
  }
  __Pyx_GetNameInClass(__pyx_t_11, (PyObject*)__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Dataset, __pyx_mstate_global->__pyx_n_u_get_variables_by_attributes); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 3398, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_9 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_11};
    __pyx_t_7 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_8, __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (__pyx_t_9*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3398, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
  }
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Dataset, __pyx_mstate_global->__pyx_n_u_get_variables_by_attributes, __pyx_t_7) < (0)) __PYX_ERR(0, 3398, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":3454
 *         return vs
 * 
 *     def _getname(self):             # <<<<<<<<<<<<<<
 *         # private method to get name associated with instance.
 *         cdef int ierr
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_7Dataset_89_getname, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Dataset__getname, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[61])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3454, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Dataset, __pyx_mstate_global->__pyx_n_u_getname, __pyx_t_7) < (0)) __PYX_ERR(0, 3454, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":3470
 *             raise AttributeError("name cannot be altered")
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def fromcdl(cdlfilename,ncfilename=None,mode='a',format='NETCDF4'):
 *         """
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_7Dataset_91fromcdl, __Pyx_CYFUNCTION_STATICMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Dataset_fromcdl, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[62])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3470, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_7, __pyx_mstate_global->__pyx_tuple[20]);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Dataset, __pyx_mstate_global->__pyx_n_u_fromcdl, __pyx_t_7) < (0)) __PYX_ERR(0, 3470, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_8 = NULL;
  __Pyx_GetNameInClass(__pyx_t_11, (PyObject*)__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Dataset, __pyx_mstate_global->__pyx_n_u_fromcdl); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 3470, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_9 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_11};
    __pyx_t_7 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_staticmethod, __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (__pyx_t_9*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3470, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
  }
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Dataset, __pyx_mstate_global->__pyx_n_u_fromcdl, __pyx_t_7) < (0)) __PYX_ERR(0, 3470, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":3509
 *         return Dataset(ncfilename, mode=mode)
 * 
 *     def tocdl(self,coordvars=False,data=False,outfile=None):             # <<<<<<<<<<<<<<
 *         """
 * **`tocdl(self, coordvars=False, data=False, outfile=None)`**
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_7Dataset_93tocdl, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Dataset_tocdl, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[63])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3509, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_7, __pyx_mstate_global->__pyx_tuple[21]);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Dataset, __pyx_mstate_global->__pyx_n_u_tocdl, __pyx_t_7) < (0)) __PYX_ERR(0, 3509, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":3542
 *             f.close()
 * 
 *     def has_blosc_filter(self):             # <<<<<<<<<<<<<<
 *         """**`has_blosc_filter(self)`**
 *         returns True if blosc compression filter is available
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_7Dataset_95has_blosc_filter, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Dataset_has_blosc_filter, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[64])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3542, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Dataset, __pyx_mstate_global->__pyx_n_u_has_blosc_filter, __pyx_t_7) < (0)) __PYX_ERR(0, 3542, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":3554
 *         return ierr == 0
 * 
 *     def has_zstd_filter(self):             # <<<<<<<<<<<<<<
 *         """**`has_zstd_filter(self)`**
 *         returns True if zstd compression filter is available
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_7Dataset_97has_zstd_filter, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Dataset_has_zstd_filter, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[65])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3554, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Dataset, __pyx_mstate_global->__pyx_n_u_has_zstd_filter, __pyx_t_7) < (0)) __PYX_ERR(0, 3554, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":3567
 *         return ierr == 0
 * 
 *     def has_bzip2_filter(self):             # <<<<<<<<<<<<<<
 *         """**`has_bzip2_filter(self)`**
 *         returns True if bzip2 compression filter is available
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_7Dataset_99has_bzip2_filter, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Dataset_has_bzip2_filter, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[66])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3567, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Dataset, __pyx_mstate_global->__pyx_n_u_has_bzip2_filter, __pyx_t_7) < (0)) __PYX_ERR(0, 3567, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":3580
 *         return ierr == 0
 * 
 *     def has_szip_filter(self):             # <<<<<<<<<<<<<<
 *         """**`has_szip_filter(self)`**
 *         returns True if szip compression filter is available
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_7Dataset_101has_szip_filter, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Dataset_has_szip_filter, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[67])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3580, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Dataset, __pyx_mstate_global->__pyx_n_u_has_szip_filter, __pyx_t_7) < (0)) __PYX_ERR(0, 3580, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":3669
 * 
 * 
 *     def close(self):             # <<<<<<<<<<<<<<
 *         """
 * **`close(self)`**
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_5Group_3close, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Group_close, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[68])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3669, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Group, __pyx_mstate_global->__pyx_n_u_close, __pyx_t_7) < (0)) __PYX_ERR(0, 3669, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":3742
 *             _ensure_nc_success(ierr)
 * 
 *     def _getname(self):             # <<<<<<<<<<<<<<
 *         # private method to get name associated with instance.
 *         cdef int err, _grpid
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_9Dimension_3_getname, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Dimension__getname, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[69])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3742, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Dimension, __pyx_mstate_global->__pyx_n_u_getname, __pyx_t_7) < (0)) __PYX_ERR(0, 3742, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":3789
 *         return lengthp
 * 
 *     def group(self):             # <<<<<<<<<<<<<<
 *         """
 * **`group(self)`**
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_9Dimension_11group, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Dimension_group, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[70])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3789, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Dimension, __pyx_mstate_global->__pyx_n_u_group_2, __pyx_t_7) < (0)) __PYX_ERR(0, 3789, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":3796
 *         return self._grp
 * 
 *     def isunlimited(self):             # <<<<<<<<<<<<<<
 *         """
 * **`isunlimited(self)`**
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_9Dimension_13isunlimited, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Dimension_isunlimited, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[71])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3796, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Dimension, __pyx_mstate_global->__pyx_n_u_isunlimited, __pyx_t_7) < (0)) __PYX_ERR(0, 3796, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_9Dimension_15__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Dimension___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[72])); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Dimension, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_7) < (0)) __PYX_ERR(3, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_Dimension, (type(self), 0x0e20e8c, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_Dimension__set_state(self, __pyx_state)
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_9Dimension_17__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Dimension___setstate_cython, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[73])); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 16, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Dimension, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_7) < (0)) __PYX_ERR(3, 16, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":4478
 *             self._use_get_vars = False
 * 
 *     def _fix_complex_numbers(self):             # <<<<<<<<<<<<<<
 *         cdef char name[NC_MAX_NAME + 1]
 *         cdef int complex_typeid, complex_dim_id
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_8Variable_3_fix_complex_numbers, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Variable__fix_complex_numbers, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[74])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4478, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Variable, __pyx_mstate_global->__pyx_n_u_fix_complex_numbers, __pyx_t_7) < (0)) __PYX_ERR(0, 4478, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":4508
 *             )
 * 
 *     def __array__(self):             # <<<<<<<<<<<<<<
 *         # numpy special method that returns a numpy array.
 *         # allows numpy ufuncs to work faster on Variable objects
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_8Variable_5__array__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Variable___array, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[75])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4508, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Variable, __pyx_mstate_global->__pyx_n_u_array_2, __pyx_t_7) < (0)) __PYX_ERR(0, 4508, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":4575
 *         return '\n'.join(ncdump)
 * 
 *     def _getdims(self):             # <<<<<<<<<<<<<<
 *         # Private method to get variables's dimension names
 *         cdef int ierr, dimid
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_8Variable_11_getdims, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Variable__getdims, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[76])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4575, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Variable, __pyx_mstate_global->__pyx_n_u_getdims, __pyx_t_7) < (0)) __PYX_ERR(0, 4575, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":4593
 *         return dimensions
 * 
 *     def _getname(self):             # <<<<<<<<<<<<<<
 *         # Private method to get name associated with instance
 *         cdef int err, _grpid
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_8Variable_13_getname, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Variable__getname, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[77])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4593, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Variable, __pyx_mstate_global->__pyx_n_u_getname, __pyx_t_7) < (0)) __PYX_ERR(0, 4593, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":4650
 * 
 * 
 *     def group(self):             # <<<<<<<<<<<<<<
 *         """
 * **`group(self)`**
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_8Variable_15group, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Variable_group, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[78])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4650, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Variable, __pyx_mstate_global->__pyx_n_u_group_2, __pyx_t_7) < (0)) __PYX_ERR(0, 4650, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":4657
 *         return self._grp
 * 
 *     def get_fill_value(self):             # <<<<<<<<<<<<<<
 *         """
 * **`get_fill_value(self)`**
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_8Variable_17get_fill_value, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Variable_get_fill_value, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[79])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4657, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Variable, __pyx_mstate_global->__pyx_n_u_get_fill_value, __pyx_t_7) < (0)) __PYX_ERR(0, 4657, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":4687
 *                     return None
 * 
 *     def ncattrs(self):             # <<<<<<<<<<<<<<
 *         """
 * **`ncattrs(self)`**
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_8Variable_19ncattrs, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Variable_ncattrs, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[80])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4687, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Variable, __pyx_mstate_global->__pyx_n_u_ncattrs, __pyx_t_7) < (0)) __PYX_ERR(0, 4687, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":4694
 *         return _get_att_names(self._grpid, self._varid)
 * 
 *     def setncattr(self,name,value):             # <<<<<<<<<<<<<<
 *         """
 * **`setncattr(self,name,value)`**
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_8Variable_21setncattr, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Variable_setncattr, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[81])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4694, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Variable, __pyx_mstate_global->__pyx_n_u_setncattr, __pyx_t_7) < (0)) __PYX_ERR(0, 4694, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":4714
 *         if self._grp.data_model != 'NETCDF4': self._grp._enddef()
 * 
 *     def setncattr_string(self,name,value):             # <<<<<<<<<<<<<<
 *         """
 * **`setncattr_string(self,name,value)`**
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_8Variable_23setncattr_string, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Variable_setncattr_string, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[82])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4714, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Variable, __pyx_mstate_global->__pyx_n_u_setncattr_string, __pyx_t_7) < (0)) __PYX_ERR(0, 4714, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":4729
 *         _set_att(self._grp, self._varid, name, value, xtype=xtype, force_ncstring=True)
 * 
 *     def setncatts(self,attdict):             # <<<<<<<<<<<<<<
 *         """
 * **`setncatts(self,attdict)`**
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_8Variable_25setncatts, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Variable_setncatts, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[83])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4729, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Variable, __pyx_mstate_global->__pyx_n_u_setncatts, __pyx_t_7) < (0)) __PYX_ERR(0, 4729, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":4742
 *         if self._grp.data_model != 'NETCDF4': self._grp._enddef()
 * 
 *     def getncattr(self,name,encoding='utf-8'):             # <<<<<<<<<<<<<<
 *         """
 * **`getncattr(self,name)`**
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_8Variable_27getncattr, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Variable_getncattr, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[84])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4742, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_7, __pyx_mstate_global->__pyx_tuple[19]);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Variable, __pyx_mstate_global->__pyx_n_u_getncattr, __pyx_t_7) < (0)) __PYX_ERR(0, 4742, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":4754
 *         return _get_att(self._grp, self._varid, name, encoding=encoding)
 * 
 *     def delncattr(self, name):             # <<<<<<<<<<<<<<
 *         """
 * **`delncattr(self,name,value)`**
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_8Variable_29delncattr, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Variable_delncattr, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[85])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4754, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Variable, __pyx_mstate_global->__pyx_n_u_delncattr, __pyx_t_7) < (0)) __PYX_ERR(0, 4754, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":4770
 *         _ensure_nc_success(ierr)
 * 
 *     def filters(self):             # <<<<<<<<<<<<<<
 *         """
 * **`filters(self)`**
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_8Variable_31filters, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Variable_filters, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[86])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4770, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Variable, __pyx_mstate_global->__pyx_n_u_filters, __pyx_t_7) < (0)) __PYX_ERR(0, 4770, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":4848
 *         return filtdict
 * 
 *     def quantization(self):             # <<<<<<<<<<<<<<
 *         """
 * **`quantization(self)`**
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_8Variable_33quantization, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Variable_quantization, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[87])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4848, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Variable, __pyx_mstate_global->__pyx_n_u_quantization, __pyx_t_7) < (0)) __PYX_ERR(0, 4848, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":4879
 *         return sig_digits, quant_mode
 * 
 *     def endian(self):             # <<<<<<<<<<<<<<
 *         """
 * **`endian(self)`**
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_8Variable_35endian, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Variable_endian, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[88])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4879, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Variable, __pyx_mstate_global->__pyx_n_u_endian, __pyx_t_7) < (0)) __PYX_ERR(0, 4879, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":4897
 *             return 'native'
 * 
 *     def chunking(self):             # <<<<<<<<<<<<<<
 *         """
 * **`chunking(self)`**
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_8Variable_37chunking, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Variable_chunking, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[89])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4897, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Variable, __pyx_mstate_global->__pyx_n_u_chunking, __pyx_t_7) < (0)) __PYX_ERR(0, 4897, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":4922
 *             return chunksizes
 * 
 *     def get_var_chunk_cache(self):             # <<<<<<<<<<<<<<
 *         """
 * **`get_var_chunk_cache(self)`**
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_8Variable_39get_var_chunk_cache, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Variable_get_var_chunk_cache, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[90])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4922, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Variable, __pyx_mstate_global->__pyx_n_u_get_var_chunk_cache, __pyx_t_7) < (0)) __PYX_ERR(0, 4922, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":4939
 *         return (size,nelems,preemption)
 * 
 *     def set_var_chunk_cache(self,size=None,nelems=None,preemption=None):             # <<<<<<<<<<<<<<
 *         """
 * **`set_var_chunk_cache(self,size=None,nelems=None,preemption=None)`**
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_8Variable_41set_var_chunk_cache, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Variable_set_var_chunk_cache, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[91])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4939, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_7, __pyx_mstate_global->__pyx_tuple[14]);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Variable, __pyx_mstate_global->__pyx_n_u_set_var_chunk_cache, __pyx_t_7) < (0)) __PYX_ERR(0, 4939, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":5032
 *             return self.getncattr(name)
 * 
 *     def renameAttribute(self, oldname, newname):             # <<<<<<<<<<<<<<
 *         """
 * **`renameAttribute(self, oldname, newname)`**
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_8Variable_49renameAttribute, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Variable_renameAttribute, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[92])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5032, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Variable, __pyx_mstate_global->__pyx_n_u_renameAttribute, __pyx_t_7) < (0)) __PYX_ERR(0, 5032, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":5177
 *         return data
 * 
 *     def _toma(self,data):             # <<<<<<<<<<<<<<
 *         cdef int ierr, no_fill
 *         # if attribute _Unsigned is "true", and variable has signed integer
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_8Variable_53_toma, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Variable__toma, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[93])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5177, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Variable, __pyx_mstate_global->__pyx_n_u_toma, __pyx_t_7) < (0)) __PYX_ERR(0, 5177, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":5351
 *         return data
 * 
 *     def _pack(self,data):             # <<<<<<<<<<<<<<
 *         # pack non-masked values using scale_factor and add_offset
 *         if hasattr(self, 'scale_factor') and hasattr(self, 'add_offset'):
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_8Variable_55_pack, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Variable__pack, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[94])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5351, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Variable, __pyx_mstate_global->__pyx_n_u_pack, __pyx_t_7) < (0)) __PYX_ERR(0, 5351, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":5396
 *         return data
 * 
 *     def _assign_vlen(self, elem, data):             # <<<<<<<<<<<<<<
 *         """private method to assign data to a single item in a VLEN variable"""
 *         cdef size_t *startp
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_8Variable_57_assign_vlen, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Variable__assign_vlen, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[95])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5396, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Variable, __pyx_mstate_global->__pyx_n_u_assign_vlen, __pyx_t_7) < (0)) __PYX_ERR(0, 5396, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":5474
 *         free(countp)
 * 
 *     def _check_safecast(self, attname):             # <<<<<<<<<<<<<<
 *         # check to see that variable attribute exists
 *         # can can be safely cast to variable data type.
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_8Variable_59_check_safecast, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Variable__check_safecast, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[96])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5474, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Variable, __pyx_mstate_global->__pyx_n_u_check_safecast, __pyx_t_7) < (0)) __PYX_ERR(0, 5474, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":5640
 * 
 * 
 *     def assignValue(self,val):             # <<<<<<<<<<<<<<
 *         """
 * **`assignValue(self, val)`**
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_8Variable_65assignValue, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Variable_assignValue, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[97])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5640, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Variable, __pyx_mstate_global->__pyx_n_u_assignValue, __pyx_t_7) < (0)) __PYX_ERR(0, 5640, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":5650
 *         self[:]=val
 * 
 *     def getValue(self):             # <<<<<<<<<<<<<<
 *         """
 * **`getValue(self)`**
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_8Variable_67getValue, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Variable_getValue, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[98])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5650, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Variable, __pyx_mstate_global->__pyx_n_u_getValue, __pyx_t_7) < (0)) __PYX_ERR(0, 5650, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":5660
 *         return self[slice(None)]
 * 
 *     def set_auto_chartostring(self,chartostring):             # <<<<<<<<<<<<<<
 *         """
 * **`set_auto_chartostring(self,chartostring)`**
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_8Variable_69set_auto_chartostring, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Variable_set_auto_chartostring, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[99])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5660, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Variable, __pyx_mstate_global->__pyx_n_u_set_auto_chartostring, __pyx_t_7) < (0)) __PYX_ERR(0, 5660, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":5683
 *         self.chartostring = bool(chartostring)
 * 
 *     def use_nc_get_vars(self,use_nc_get_vars):             # <<<<<<<<<<<<<<
 *         """
 * **`use_nc_get_vars(self,_use_get_vars)`**
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_8Variable_71use_nc_get_vars, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Variable_use_nc_get_vars, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[100])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5683, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Variable, __pyx_mstate_global->__pyx_n_u_use_nc_get_vars, __pyx_t_7) < (0)) __PYX_ERR(0, 5683, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":5695
 *         self._use_get_vars = bool(use_nc_get_vars)
 * 
 *     def set_auto_maskandscale(self,maskandscale):             # <<<<<<<<<<<<<<
 *         """
 * **`set_auto_maskandscale(self,maskandscale)`**
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_8Variable_73set_auto_maskandscale, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Variable_set_auto_maskandscale, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[101])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5695, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Variable, __pyx_mstate_global->__pyx_n_u_set_auto_maskandscale, __pyx_t_7) < (0)) __PYX_ERR(0, 5695, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":5749
 *         self.scale = self.mask = bool(maskandscale)
 * 
 *     def set_auto_scale(self,scale):             # <<<<<<<<<<<<<<
 *         """
 * **`set_auto_scale(self,scale)`**
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_8Variable_75set_auto_scale, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Variable_set_auto_scale, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[102])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5749, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Variable, __pyx_mstate_global->__pyx_n_u_set_auto_scale, __pyx_t_7) < (0)) __PYX_ERR(0, 5749, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":5788
 *         self.scale = bool(scale)
 * 
 *     def set_auto_mask(self,mask):             # <<<<<<<<<<<<<<
 *         """
 * **`set_auto_mask(self,mask)`**
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_8Variable_77set_auto_mask, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Variable_set_auto_mask, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[103])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5788, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Variable, __pyx_mstate_global->__pyx_n_u_set_auto_mask, __pyx_t_7) < (0)) __PYX_ERR(0, 5788, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":5815
 *         self.mask = bool(mask)
 * 
 *     def set_always_mask(self,always_mask):             # <<<<<<<<<<<<<<
 *         """
 * **`set_always_mask(self,always_mask)`**
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_8Variable_79set_always_mask, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Variable_set_always_mask, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[104])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5815, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Variable, __pyx_mstate_global->__pyx_n_u_set_always_mask, __pyx_t_7) < (0)) __PYX_ERR(0, 5815, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":5830
 *         self.always_mask = bool(always_mask)
 * 
 *     def set_ncstring_attrs(self,ncstring_attrs):             # <<<<<<<<<<<<<<
 *         """
 * **`set_always_mask(self,ncstring_attrs)`**
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_8Variable_81set_ncstring_attrs, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Variable_set_ncstring_attrs, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[105])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5830, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Variable, __pyx_mstate_global->__pyx_n_u_set_ncstring_attrs, __pyx_t_7) < (0)) __PYX_ERR(0, 5830, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":5845
 *         self._ncstring_attrs__ = bool(ncstring_attrs)
 * 
 *     def _put(self,ndarray data,start,count,stride):             # <<<<<<<<<<<<<<
 *         """Private method to put data into a netCDF variable"""
 *         cdef int ierr, ndims
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_8Variable_83_put, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Variable__put, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[106])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5845, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Variable, __pyx_mstate_global->__pyx_n_u_put_2, __pyx_t_7) < (0)) __PYX_ERR(0, 5845, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":5983
 *         free(stridep)
 * 
 *     def _get(self,start,count,stride):             # <<<<<<<<<<<<<<
 *         """Private method to retrieve data from a netCDF variable"""
 *         cdef int ierr, ndims
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_8Variable_85_get, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Variable__get, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[107])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5983, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Variable, __pyx_mstate_global->__pyx_n_u_get, __pyx_t_7) < (0)) __PYX_ERR(0, 5983, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":6150
 *             return data
 * 
 *     def set_collective(self, value):             # <<<<<<<<<<<<<<
 *         """**`set_collective(self,True_or_False)`**
 * 
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_8Variable_87set_collective, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Variable_set_collective, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[108])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6150, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Variable, __pyx_mstate_global->__pyx_n_u_set_collective, __pyx_t_7) < (0)) __PYX_ERR(0, 6150, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":6166
 * 
 * 
 *     def get_dims(self):             # <<<<<<<<<<<<<<
 *         """
 * **`get_dims(self)`**
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_8Variable_89get_dims, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Variable_get_dims, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[109])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6166, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Variable, __pyx_mstate_global->__pyx_n_u_get_dims, __pyx_t_7) < (0)) __PYX_ERR(0, 6166, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":6175
 *         return tuple(_find_dim(self._grp, dim) for dim in self.dimensions)
 * 
 *     def __reduce__(self):             # <<<<<<<<<<<<<<
 *         # raise error is user tries to pickle a Variable object.
 *         raise NotImplementedError('Variable is not picklable')
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_8Variable_91__reduce__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Variable___reduce, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[110])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6175, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Variable, __pyx_mstate_global->__pyx_n_u_reduce, __pyx_t_7) < (0)) __PYX_ERR(0, 6175, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":6254
 *             (typ, self.name, self.dtype)
 * 
 *     def __reduce__(self):             # <<<<<<<<<<<<<<
 *         # raise error is user tries to pickle a CompoundType object.
 *         raise NotImplementedError('CompoundType is not picklable')
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_12CompoundType_7__reduce__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_CompoundType___reduce, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[111])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6254, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_CompoundType, __pyx_mstate_global->__pyx_n_u_reduce, __pyx_t_7) < (0)) __PYX_ERR(0, 6254, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":6258
 *         raise NotImplementedError('CompoundType is not picklable')
 * 
 * def _set_alignment(dt):             # <<<<<<<<<<<<<<
 *     # recursively set alignment flag in nested structured data type
 *     names = dt.names; formats = []
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_23_set_alignment, 0, __pyx_mstate_global->__pyx_n_u_set_alignment, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[112])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6258, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_set_alignment, __pyx_t_7) < (0)) __PYX_ERR(0, 6258, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":6283
 *     return numpy.dtype(dtype_dict, align=True)
 * 
 * def _set_viewdtype(dt):             # <<<<<<<<<<<<<<
 *     # recursively change character array dtypes to string dtypes
 *     names = dt.names; formats = []
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_25_set_viewdtype, 0, __pyx_mstate_global->__pyx_n_u_set_viewdtype, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[113])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6283, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_set_viewdtype, __pyx_t_7) < (0)) __PYX_ERR(0, 6283, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":6546
 *                 (typ, self.name, self.dtype)
 * 
 *     def __reduce__(self):             # <<<<<<<<<<<<<<
 *         # raise error is user tries to pickle a VLType object.
 *         raise NotImplementedError('VLType is not picklable')
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_6VLType_7__reduce__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_VLType___reduce, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[114])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6546, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_VLType, __pyx_mstate_global->__pyx_n_u_reduce, __pyx_t_7) < (0)) __PYX_ERR(0, 6546, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":6656
 *             (typ, self.name, self.dtype, self.enum_dict)
 * 
 *     def __reduce__(self):             # <<<<<<<<<<<<<<
 *         # raise error is user tries to pickle a EnumType object.
 *         raise NotImplementedError('EnumType is not picklable')
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_8EnumType_7__reduce__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_EnumType___reduce, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[115])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6656, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_EnumType, __pyx_mstate_global->__pyx_n_u_reduce, __pyx_t_7) < (0)) __PYX_ERR(0, 6656, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":6737
 *         return pystr # already bytes or unicode?
 * 
 * def _to_ascii(bytestr):             # <<<<<<<<<<<<<<
 *     # encode a byte string to an ascii encoded string.
 *     return str(bytestr,encoding='ascii')
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_27_to_ascii, 0, __pyx_mstate_global->__pyx_n_u_to_ascii, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[116])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6737, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_to_ascii, __pyx_t_7) < (0)) __PYX_ERR(0, 6737, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":6741
 *     return str(bytestr,encoding='ascii')
 * 
 * def stringtoarr(string,NUMCHARS,dtype='S'):             # <<<<<<<<<<<<<<
 *     """
 * **`stringtoarr(a, NUMCHARS,dtype='S')`**
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_29stringtoarr, 0, __pyx_mstate_global->__pyx_n_u_stringtoarr, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[117])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6741, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_7, __pyx_mstate_global->__pyx_tuple[22]);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_stringtoarr, __pyx_t_7) < (0)) __PYX_ERR(0, 6741, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":6764
 *     return arr
 * 
 * def stringtochar(a,encoding='utf-8'):             # <<<<<<<<<<<<<<
 *     """
 * **`stringtochar(a,encoding='utf-8')`**
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_31stringtochar, 0, __pyx_mstate_global->__pyx_n_u_stringtochar, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[118])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6764, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_7, __pyx_mstate_global->__pyx_tuple[19]);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_stringtochar, __pyx_t_7) < (0)) __PYX_ERR(0, 6764, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":6790
 *     return b
 * 
 * def chartostring(b,encoding='utf-8'):             # <<<<<<<<<<<<<<
 *     """
 * **`chartostring(b,encoding='utf-8')`**
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_33chartostring, 0, __pyx_mstate_global->__pyx_n_u_chartostring, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[119])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6790, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_7, __pyx_mstate_global->__pyx_tuple[19]);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_chartostring, __pyx_t_7) < (0)) __PYX_ERR(0, 6790, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":6821
 *     return a
 * 
 * class MFDataset(Dataset):             # <<<<<<<<<<<<<<
 *     """
 * Class for reading multi-file netCDF Datasets, making variables
*/
  __pyx_t_7 = PyTuple_Pack(1, ((PyObject *)__pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4_Dataset)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6821, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_11 = __Pyx_PEP560_update_bases(__pyx_t_7); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 6821, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_8 = __Pyx_CalculateMetaclass(NULL, __pyx_t_11); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6821, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_2 = __Pyx_Py3MetaclassPrepare(__pyx_t_8, __pyx_t_11, __pyx_mstate_global->__pyx_n_u_MFDataset, __pyx_mstate_global->__pyx_n_u_MFDataset, (PyObject *) NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_kp_u_Class_for_reading_multi_file_ne); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6821, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__pyx_t_11 != __pyx_t_7) {
    if (unlikely((PyDict_SetItemString(__pyx_t_2, "__orig_bases__", __pyx_t_7) < 0))) __PYX_ERR(0, 6821, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":6852
 *     """
 * 
 *     def __init__(self, files, check=False, aggdim=None, exclude=[],             # <<<<<<<<<<<<<<
 *             master_file=None):
 *         """
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_9MFDataset_1__init__, 0, __pyx_mstate_global->__pyx_n_u_MFDataset___init, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[120])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6852, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (!__Pyx_CyFunction_InitDefaults(__pyx_t_7, __pyx_mstate_global->__pyx_ptype_7netCDF4_8_netCDF4___pyx_defaults)) __PYX_ERR(0, 6852, __pyx_L1_error)
  __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6852, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_CyFunction_Defaults(struct __pyx_defaults, __pyx_t_7)->arg0 = __pyx_t_4;
  __Pyx_GIVEREF(__pyx_t_4);
  __pyx_t_4 = 0;
  __Pyx_CyFunction_SetDefaultsGetter(__pyx_t_7, __pyx_pf_7netCDF4_8_netCDF4_41__defaults__);
  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_init, __pyx_t_7) < (0)) __PYX_ERR(0, 6852, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":7050
 *         self._path = '/'
 * 
 *     def __setattr__(self, name, value):             # <<<<<<<<<<<<<<
 *         """override base class attribute creation"""
 *         self.__dict__[name] = value
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_9MFDataset_3__setattr__, 0, __pyx_mstate_global->__pyx_n_u_MFDataset___setattr, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[121])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7050, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_setattr, __pyx_t_7) < (0)) __PYX_ERR(0, 7050, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":7054
 *         self.__dict__[name] = value
 * 
 *     def __getattribute__(self, name):             # <<<<<<<<<<<<<<
 *         if name in ['variables','dimensions','file_format','groups',\
 *                     'data_model','disk_format','path']:
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_9MFDataset_5__getattribute__, 0, __pyx_mstate_global->__pyx_n_u_MFDataset___getattribute, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[122])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7054, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_getattribute, __pyx_t_7) < (0)) __PYX_ERR(0, 7054, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":7067
 *             return Dataset.__getattribute__(self, name)
 * 
 *     def ncattrs(self):             # <<<<<<<<<<<<<<
 *         """
 *         **`ncattrs(self)`**
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_9MFDataset_7ncattrs, 0, __pyx_mstate_global->__pyx_n_u_MFDataset_ncattrs, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[123])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7067, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_ncattrs, __pyx_t_7) < (0)) __PYX_ERR(0, 7067, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":7075
 *         return list(self._cdf[0].__dict__)
 * 
 *     def close(self):             # <<<<<<<<<<<<<<
 *         """
 *         **`close(self)`**
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_9MFDataset_9close, 0, __pyx_mstate_global->__pyx_n_u_MFDataset_close, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[124])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7075, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_close, __pyx_t_7) < (0)) __PYX_ERR(0, 7075, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":7084
 *             dset.close()
 * 
 *     def isopen(self):             # <<<<<<<<<<<<<<
 *         """
 *         **`isopen(self)`**
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_9MFDataset_11isopen, 0, __pyx_mstate_global->__pyx_n_u_MFDataset_isopen, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[125])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7084, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_isopen, __pyx_t_7) < (0)) __PYX_ERR(0, 7084, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":7092
 *         return all(map(lambda dset: dset.isopen(), self._cdf))
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         ncdump = [repr(type(self)).replace("._netCDF4", "")]
 *         dimnames = tuple(str(dimname) for dimname in self.dimensions.keys())
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_9MFDataset_13__repr__, 0, __pyx_mstate_global->__pyx_n_u_MFDataset___repr, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[126])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7092, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_repr, __pyx_t_7) < (0)) __PYX_ERR(0, 7092, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":7109
 *         return '\n'.join(ncdump)
 * 
 *     def __reduce__(self):             # <<<<<<<<<<<<<<
 *         # raise error is user tries to pickle a MFDataset object.
 *         raise NotImplementedError('MFDataset is not picklable')
*/
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_9MFDataset_15__reduce__, 0, __pyx_mstate_global->__pyx_n_u_MFDataset___reduce, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[127])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7109, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_reduce, __pyx_t_7) < (0)) __PYX_ERR(0, 7109, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "netCDF4/_netCDF4.pyx":6821
 *     return a
 * 
 * class MFDataset(Dataset):             # <<<<<<<<<<<<<<
 *     """
 * Class for reading multi-file netCDF Datasets, making variables
*/
  __pyx_t_7 = __Pyx_Py3ClassCreate(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_MFDataset, __pyx_t_11, __pyx_t_2, NULL, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6821, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_MFDataset, __pyx_t_7) < (0)) __PYX_ERR(0, 6821, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "netCDF4/_netCDF4.pyx":7113
 *         raise NotImplementedError('MFDataset is not picklable')
 * 
 * class _Dimension:             # <<<<<<<<<<<<<<
 *     def __init__(self, dimname, dim, dimlens, dimtotlen):
 *         self.dimlens = dimlens
*/
  __pyx_t_11 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_mstate_global->__pyx_empty_tuple, __pyx_mstate_global->__pyx_n_u_Dimension, __pyx_mstate_global->__pyx_n_u_Dimension, (PyObject *) NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, (PyObject *) NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 7113, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);

  /* "netCDF4/_netCDF4.pyx":7114
 * 
 * class _Dimension:
 *     def __init__(self, dimname, dim, dimlens, dimtotlen):             # <<<<<<<<<<<<<<
 *         self.dimlens = dimlens
 *         self.dimtotlen = dimtotlen
*/
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_10_Dimension_1__init__, 0, __pyx_mstate_global->__pyx_n_u_Dimension___init, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[128])); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7114, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_8);
  #endif
  if (__Pyx_SetNameInClass(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_init, __pyx_t_8) < (0)) __PYX_ERR(0, 7114, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "netCDF4/_netCDF4.pyx":7118
 *         self.dimtotlen = dimtotlen
 *         self._name = dimname
 *     def __len__(self):             # <<<<<<<<<<<<<<
 *         return self.dimtotlen
 *     def isunlimited(self):
*/
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_10_Dimension_3__len__, 0, __pyx_mstate_global->__pyx_n_u_Dimension___len, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[129])); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7118, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_8);
  #endif
  if (__Pyx_SetNameInClass(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_len, __pyx_t_8) < (0)) __PYX_ERR(0, 7118, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "netCDF4/_netCDF4.pyx":7120
 *     def __len__(self):
 *         return self.dimtotlen
 *     def isunlimited(self):             # <<<<<<<<<<<<<<
 *         return True
 *     def __repr__(self):
*/
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_10_Dimension_5isunlimited, 0, __pyx_mstate_global->__pyx_n_u_Dimension_isunlimited_2, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[130])); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7120, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_8);
  #endif
  if (__Pyx_SetNameInClass(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_isunlimited, __pyx_t_8) < (0)) __PYX_ERR(0, 7120, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "netCDF4/_netCDF4.pyx":7122
 *     def isunlimited(self):
 *         return True
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         typ = repr(type(self)).replace("._netCDF4", "")
 *         if self.isunlimited():
*/
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_10_Dimension_7__repr__, 0, __pyx_mstate_global->__pyx_n_u_Dimension___repr, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[131])); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7122, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_8);
  #endif
  if (__Pyx_SetNameInClass(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_repr, __pyx_t_8) < (0)) __PYX_ERR(0, 7122, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "netCDF4/_netCDF4.pyx":7113
 *         raise NotImplementedError('MFDataset is not picklable')
 * 
 * class _Dimension:             # <<<<<<<<<<<<<<
 *     def __init__(self, dimname, dim, dimlens, dimtotlen):
 *         self.dimlens = dimlens
*/
  __pyx_t_8 = __Pyx_Py3ClassCreate(((PyObject*)&PyType_Type), __pyx_mstate_global->__pyx_n_u_Dimension, __pyx_mstate_global->__pyx_empty_tuple, __pyx_t_11, NULL, 0, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7113, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_8);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_Dimension, __pyx_t_8) < (0)) __PYX_ERR(0, 7113, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "netCDF4/_netCDF4.pyx":7131
 *                 (typ, self._name, len(self))
 * 
 * class _Variable:             # <<<<<<<<<<<<<<
 *     def __init__(self, dset, varname, var, recdimname):
 *         self.dimensions = var.dimensions
*/
  __pyx_t_11 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_mstate_global->__pyx_empty_tuple, __pyx_mstate_global->__pyx_n_u_Variable, __pyx_mstate_global->__pyx_n_u_Variable, (PyObject *) NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, (PyObject *) NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 7131, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);

  /* "netCDF4/_netCDF4.pyx":7132
 * 
 * class _Variable:
 *     def __init__(self, dset, varname, var, recdimname):             # <<<<<<<<<<<<<<
 *         self.dimensions = var.dimensions
 *         self._dset = dset
*/
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_9_Variable_1__init__, 0, __pyx_mstate_global->__pyx_n_u_Variable___init, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[132])); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7132, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_8);
  #endif
  if (__Pyx_SetNameInClass(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_init, __pyx_t_8) < (0)) __PYX_ERR(0, 7132, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "netCDF4/_netCDF4.pyx":7145
 *         for name, value in var.__dict__.items():
 *             self.__dict__[name] = value
 *     def typecode(self):             # <<<<<<<<<<<<<<
 *         return self.dtype
 *     def ncattrs(self):
*/
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_9_Variable_3typecode, 0, __pyx_mstate_global->__pyx_n_u_Variable_typecode, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[133])); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7145, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_8);
  #endif
  if (__Pyx_SetNameInClass(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_typecode, __pyx_t_8) < (0)) __PYX_ERR(0, 7145, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "netCDF4/_netCDF4.pyx":7147
 *     def typecode(self):
 *         return self.dtype
 *     def ncattrs(self):             # <<<<<<<<<<<<<<
 *         return list(self._mastervar.__dict__.keys())
 *     def __getattr__(self,name):
*/
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_9_Variable_5ncattrs, 0, __pyx_mstate_global->__pyx_n_u_Variable_ncattrs_2, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[134])); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7147, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_8);
  #endif
  if (__Pyx_SetNameInClass(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_ncattrs, __pyx_t_8) < (0)) __PYX_ERR(0, 7147, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "netCDF4/_netCDF4.pyx":7149
 *     def ncattrs(self):
 *         return list(self._mastervar.__dict__.keys())
 *     def __getattr__(self,name):             # <<<<<<<<<<<<<<
 *         if name == 'shape': return self._shape()
 *         if name == 'ndim': return len(self._shape())
*/
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_9_Variable_7__getattr__, 0, __pyx_mstate_global->__pyx_n_u_Variable___getattr, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[135])); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7149, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_8);
  #endif
  if (__Pyx_SetNameInClass(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_getattr, __pyx_t_8) < (0)) __PYX_ERR(0, 7149, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "netCDF4/_netCDF4.pyx":7157
 *         except:
 *             raise AttributeError(name)
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         ncdump = [repr(type(self)).replace("._netCDF4", "")]
 *         dimnames = tuple(str(dimname) for dimname in self.dimensions)
*/
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_9_Variable_9__repr__, 0, __pyx_mstate_global->__pyx_n_u_Variable___repr, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[136])); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7157, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_8);
  #endif
  if (__Pyx_SetNameInClass(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_repr, __pyx_t_8) < (0)) __PYX_ERR(0, 7157, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "netCDF4/_netCDF4.pyx":7171
 *         ncdump.append('current size = %r' % (self.shape,))
 *         return '\n'.join(ncdump)
 *     def __len__(self):             # <<<<<<<<<<<<<<
 *         if not self._shape:
 *             raise TypeError('len() of unsized object')
*/
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_9_Variable_11__len__, 0, __pyx_mstate_global->__pyx_n_u_Variable___len, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[137])); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7171, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_8);
  #endif
  if (__Pyx_SetNameInClass(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_len, __pyx_t_8) < (0)) __PYX_ERR(0, 7171, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "netCDF4/_netCDF4.pyx":7176
 *         else:
 *             return self._shape()[0]
 *     def _shape(self):             # <<<<<<<<<<<<<<
 *         recdimlen = len(self._dset.dimensions[self._recdimname])
 *         return (recdimlen,) + self._mastervar.shape[1:]
*/
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_9_Variable_13_shape, 0, __pyx_mstate_global->__pyx_n_u_Variable__shape, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[138])); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7176, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_8);
  #endif
  if (__Pyx_SetNameInClass(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_shape_2, __pyx_t_8) < (0)) __PYX_ERR(0, 7176, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "netCDF4/_netCDF4.pyx":7179
 *         recdimlen = len(self._dset.dimensions[self._recdimname])
 *         return (recdimlen,) + self._mastervar.shape[1:]
 *     def set_auto_chartostring(self,val):             # <<<<<<<<<<<<<<
 *         for v in self._recVar:
 *             v.set_auto_chartostring(val)
*/
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_9_Variable_15set_auto_chartostring, 0, __pyx_mstate_global->__pyx_n_u_Variable_set_auto_chartostring_2, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[139])); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7179, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_8);
  #endif
  if (__Pyx_SetNameInClass(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_set_auto_chartostring, __pyx_t_8) < (0)) __PYX_ERR(0, 7179, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "netCDF4/_netCDF4.pyx":7182
 *         for v in self._recVar:
 *             v.set_auto_chartostring(val)
 *     def set_auto_maskandscale(self,val):             # <<<<<<<<<<<<<<
 *         for v in self._recVar:
 *             v.set_auto_maskandscale(val)
*/
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_9_Variable_17set_auto_maskandscale, 0, __pyx_mstate_global->__pyx_n_u_Variable_set_auto_maskandscale_2, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[140])); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7182, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_8);
  #endif
  if (__Pyx_SetNameInClass(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_set_auto_maskandscale, __pyx_t_8) < (0)) __PYX_ERR(0, 7182, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "netCDF4/_netCDF4.pyx":7185
 *         for v in self._recVar:
 *             v.set_auto_maskandscale(val)
 *     def set_auto_mask(self,val):             # <<<<<<<<<<<<<<
 *         for v in self._recVar:
 *             v.set_auto_mask(val)
*/
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_9_Variable_19set_auto_mask, 0, __pyx_mstate_global->__pyx_n_u_Variable_set_auto_mask_2, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[141])); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7185, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_8);
  #endif
  if (__Pyx_SetNameInClass(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_set_auto_mask, __pyx_t_8) < (0)) __PYX_ERR(0, 7185, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "netCDF4/_netCDF4.pyx":7188
 *         for v in self._recVar:
 *             v.set_auto_mask(val)
 *     def set_auto_scale(self,val):             # <<<<<<<<<<<<<<
 *         for v in self._recVar:
 *             v.set_auto_scale(val)
*/
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_9_Variable_21set_auto_scale, 0, __pyx_mstate_global->__pyx_n_u_Variable_set_auto_scale_2, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[142])); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7188, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_8);
  #endif
  if (__Pyx_SetNameInClass(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_set_auto_scale, __pyx_t_8) < (0)) __PYX_ERR(0, 7188, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "netCDF4/_netCDF4.pyx":7191
 *         for v in self._recVar:
 *             v.set_auto_scale(val)
 *     def set_always_mask(self,val):             # <<<<<<<<<<<<<<
 *         for v in self._recVar:
 *             v.set_always_mask(val)
*/
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_9_Variable_23set_always_mask, 0, __pyx_mstate_global->__pyx_n_u_Variable_set_always_mask_2, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[143])); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7191, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_8);
  #endif
  if (__Pyx_SetNameInClass(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_set_always_mask, __pyx_t_8) < (0)) __PYX_ERR(0, 7191, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "netCDF4/_netCDF4.pyx":7194
 *         for v in self._recVar:
 *             v.set_always_mask(val)
 *     def __getitem__(self, elem):             # <<<<<<<<<<<<<<
 *         """Get records from a concatenated set of variables."""
 * 
*/
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_9_Variable_25__getitem__, 0, __pyx_mstate_global->__pyx_n_u_Variable___getitem, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[144])); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7194, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_8);
  #endif
  if (__Pyx_SetNameInClass(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_getitem, __pyx_t_8) < (0)) __PYX_ERR(0, 7194, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "netCDF4/_netCDF4.pyx":7131
 *                 (typ, self._name, len(self))
 * 
 * class _Variable:             # <<<<<<<<<<<<<<
 *     def __init__(self, dset, varname, var, recdimname):
 *         self.dimensions = var.dimensions
*/
  __pyx_t_8 = __Pyx_Py3ClassCreate(((PyObject*)&PyType_Type), __pyx_mstate_global->__pyx_n_u_Variable, __pyx_mstate_global->__pyx_empty_tuple, __pyx_t_11, NULL, 0, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7131, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_8);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_Variable, __pyx_t_8) < (0)) __PYX_ERR(0, 7131, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "netCDF4/_netCDF4.pyx":7298
 * 
 * 
 * class MFTime(_Variable):             # <<<<<<<<<<<<<<
 *     """
 * Class providing an interface to a MFDataset time Variable by imposing a unique common
*/
  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_Variable); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 7298, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_8 = PyTuple_Pack(1, __pyx_t_11); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7298, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = __Pyx_PEP560_update_bases(__pyx_t_8); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 7298, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_t_11); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7298, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_7 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_t_11, __pyx_mstate_global->__pyx_n_u_MFTime, __pyx_mstate_global->__pyx_n_u_MFTime, (PyObject *) NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_kp_u_Class_providing_an_interface_to); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7298, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (__pyx_t_11 != __pyx_t_8) {
    if (unlikely((PyDict_SetItemString(__pyx_t_7, "__orig_bases__", __pyx_t_8) < 0))) __PYX_ERR(0, 7298, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "netCDF4/_netCDF4.pyx":7334
 *     """
 * 
 *     def __init__(self, time, units=None, calendar=None):             # <<<<<<<<<<<<<<
 *         """
 *         **`__init__(self, time, units=None, calendar=None)`**
*/
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_6MFTime_1__init__, 0, __pyx_mstate_global->__pyx_n_u_MFTime___init, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[145])); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7334, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_8);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_8, __pyx_mstate_global->__pyx_tuple[23]);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_init, __pyx_t_8) < (0)) __PYX_ERR(0, 7334, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "netCDF4/_netCDF4.pyx":7400
 * 
 * 
 *     def __getitem__(self, elem):             # <<<<<<<<<<<<<<
 *         return self.__time[elem] + self.__delta[elem]
*/
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_6MFTime_3__getitem__, 0, __pyx_mstate_global->__pyx_n_u_MFTime___getitem, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[146])); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7400, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_8);
  #endif
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_getitem, __pyx_t_8) < (0)) __PYX_ERR(0, 7400, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "netCDF4/_netCDF4.pyx":7298
 * 
 * 
 * class MFTime(_Variable):             # <<<<<<<<<<<<<<
 *     """
 * Class providing an interface to a MFDataset time Variable by imposing a unique common
*/
  __pyx_t_8 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_MFTime, __pyx_t_11, __pyx_t_7, NULL, 0, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7298, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_8);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_MFTime, __pyx_t_8) < (0)) __PYX_ERR(0, 7298, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "(tree fragment)":4
 *     int __Pyx_CheckUnpickleChecksum(long, long, long, long, const char*) except -1
 *     int __Pyx_UpdateUnpickledDict(object, object, Py_ssize_t) except -1
 * def __pyx_unpickle_Dimension(__pyx_type, long __pyx_checksum, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_result
 *     __Pyx_CheckUnpickleChecksum(__pyx_checksum, 0x0e20e8c, 0x951215d, 0xe8305e7, b'_data_model, _dimid, _grp, _grpid, _name')
*/
  __pyx_t_11 = __Pyx_CyFunction_New(&__pyx_mdef_7netCDF4_8_netCDF4_38__pyx_unpickle_Dimension, 0, __pyx_mstate_global->__pyx_n_u_pyx_unpickle_Dimension, NULL, __pyx_mstate_global->__pyx_n_u_netCDF4__netCDF4, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[147])); if (unlikely(!__pyx_t_11)) __PYX_ERR(3, 4, __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 (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_pyx_unpickle_Dimension, __pyx_t_11) < (0)) __PYX_ERR(3, 4, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /* "netCDF4/_netCDF4.pyx":1
 * """Version 1.7.2             # <<<<<<<<<<<<<<
 * -------------
 * 
*/
  __pyx_t_11 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  if (PyDict_SetItem(__pyx_t_11, __pyx_mstate_global->__pyx_kp_u_Dataset_get_variables_by_attribu_2, __pyx_mstate_global->__pyx_kp_u_get_variables_by_attributes_sel) < (0)) __PYX_ERR(0, 1, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_test, __pyx_t_11) < (0)) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

  /*--- Wrapped vars code ---*/

  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_13);
  if (__pyx_m) {
    if (__pyx_mstate->__pyx_d && stringtab_initialized) {
      __Pyx_AddTraceback("init netCDF4._netCDF4", __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 netCDF4._netCDF4");
  }
  __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(0, 3470, __pyx_L1_error)
  __pyx_builtin_super = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_super); if (!__pyx_builtin_super) __PYX_ERR(0, 1502, __pyx_L1_error)
  __pyx_builtin_zip = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_zip); if (!__pyx_builtin_zip) __PYX_ERR(0, 3176, __pyx_L1_error)
  __pyx_builtin_open = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_open); if (!__pyx_builtin_open) __PYX_ERR(0, 3538, __pyx_L1_error)
  __pyx_builtin_enumerate = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_enumerate); if (!__pyx_builtin_enumerate) __PYX_ERR(0, 5067, __pyx_L1_error)
  __pyx_builtin_Ellipsis = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_Ellipsis); if (!__pyx_builtin_Ellipsis) __PYX_ERR(0, 5536, __pyx_L1_error)
  __pyx_builtin_object = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_object); if (!__pyx_builtin_object) __PYX_ERR(0, 5544, __pyx_L1_error)
  __pyx_builtin_sum = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_sum); if (!__pyx_builtin_sum) __PYX_ERR(0, 5909, __pyx_L1_error)
  __pyx_builtin_all = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_all); if (!__pyx_builtin_all) __PYX_ERR(0, 7090, __pyx_L1_error)
  __pyx_builtin_map = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_map); if (!__pyx_builtin_map) __PYX_ERR(0, 7090, __pyx_L1_error)

  /* Cached unbound methods */
  __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;
  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);

  /* "netCDF4/_netCDF4.pyx":1681
 *         else:
 *             pstring =\
 *             value_arr.tobytes().decode(encoding,errors='replace').replace('\x00','')             # <<<<<<<<<<<<<<
 *         return pstring
 *     elif att_type == NC_STRING:
*/
  __pyx_mstate_global->__pyx_tuple[0] = PyTuple_Pack(2, __pyx_mstate_global->__pyx_kp_u__3, __pyx_mstate_global->__pyx_kp_u__4); if (unlikely(!__pyx_mstate_global->__pyx_tuple[0])) __PYX_ERR(0, 1681, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[0]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[0]);

  /* "netCDF4/_netCDF4.pyx":1827
 *     fmt = _get_format(grpid)
 *     is_netcdf3 = fmt.startswith('NETCDF3') or fmt == 'NETCDF4_CLASSIC'
 *     if value_arr.dtype.str[1:] == 'i8' and ('i8' not in _supportedtypes or\             # <<<<<<<<<<<<<<
 *        (is_netcdf3 and fmt != 'NETCDF3_64BIT_DATA')):
 *         value_arr = value_arr.astype('i4')
*/
  __pyx_mstate_global->__pyx_slice[0] = PySlice_New(__pyx_mstate_global->__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_mstate_global->__pyx_slice[0])) __PYX_ERR(0, 1827, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_slice[0]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_slice[0]);

  /* "netCDF4/_netCDF4.pyx":2449
 *         # r+ is synonym for append
 *         if "r+" in mode:
 *             mode = mode.replace("r+", "a")             # <<<<<<<<<<<<<<
 * 
 *         # If appending and the file doesn't exist, we need to create it
*/
  __pyx_mstate_global->__pyx_tuple[1] = PyTuple_Pack(2, __pyx_mstate_global->__pyx_kp_u_r_2, __pyx_mstate_global->__pyx_n_u_a); if (unlikely(!__pyx_mstate_global->__pyx_tuple[1])) __PYX_ERR(0, 2449, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[1]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[1]);

  /* "netCDF4/_netCDF4.pyx":2453
 *         # If appending and the file doesn't exist, we need to create it
 *         if mode in ("a", "as") and not os.path.exists(filename):
 *             mode = mode.replace("a", "w")             # <<<<<<<<<<<<<<
 * 
 *         read_mode = mode in ("r", "rs")
*/
  __pyx_mstate_global->__pyx_tuple[2] = PyTuple_Pack(2, __pyx_mstate_global->__pyx_n_u_a, __pyx_mstate_global->__pyx_n_u_w); if (unlikely(!__pyx_mstate_global->__pyx_tuple[2])) __PYX_ERR(0, 2453, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[2]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[2]);

  /* "netCDF4/_netCDF4.pyx":2479
 *             if memory is not None:
 *                 if not __has_nc_create_mem__:
 *                     raise NetCDF4MissingFeatureException("nc_create_mem", "4.6.2")             # <<<<<<<<<<<<<<
 * 
 *                 # if memory is not None and mode='w', memory
*/
  __pyx_mstate_global->__pyx_tuple[3] = PyTuple_Pack(2, __pyx_mstate_global->__pyx_n_u_nc_create_mem, __pyx_mstate_global->__pyx_kp_u_4_6_2); if (unlikely(!__pyx_mstate_global->__pyx_tuple[3])) __PYX_ERR(0, 2479, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[3]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[3]);

  /* "netCDF4/_netCDF4.pyx":2498
 *         elif read_mode and memory is not None:
 *             if not __has_nc_open_mem__:
 *                 raise NetCDF4MissingFeatureException("nc_open_mem", "4.4.1")             # <<<<<<<<<<<<<<
 * 
 *             # Store reference to memory
*/
  __pyx_mstate_global->__pyx_tuple[4] = PyTuple_Pack(2, __pyx_mstate_global->__pyx_n_u_nc_open_mem, __pyx_mstate_global->__pyx_kp_u_4_4_1); if (unlikely(!__pyx_mstate_global->__pyx_tuple[4])) __PYX_ERR(0, 2498, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[4]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[4]);

  /* "netCDF4/_netCDF4.pyx":2581
 *         """
 *         if not __has_nc_inq_path__:
 *             raise NetCDF4MissingFeatureException("filepath method", "4.1.2")             # <<<<<<<<<<<<<<
 * 
 *         cdef int ierr
*/
  __pyx_mstate_global->__pyx_tuple[5] = PyTuple_Pack(2, __pyx_mstate_global->__pyx_kp_u_filepath_method, __pyx_mstate_global->__pyx_kp_u_4_1_2); if (unlikely(!__pyx_mstate_global->__pyx_tuple[5])) __PYX_ERR(0, 2581, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[5]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[5]);

  /* "netCDF4/_netCDF4.pyx":2615
 *         varnames = tuple(\
 *         [_tostr(self.variables[varname].dtype)+' '+_tostr(varname)+
 *          ((_tostr(self.variables[varname].dimensions)).replace(",)",")")).replace("'","")             # <<<<<<<<<<<<<<
 *          for varname in self.variables.keys()])
 *         grpnames = tuple(_tostr(grpname) for grpname in self.groups.keys())
*/
  __pyx_mstate_global->__pyx_tuple[6] = PyTuple_Pack(2, __pyx_mstate_global->__pyx_kp_u__11, __pyx_mstate_global->__pyx_kp_u__2); if (unlikely(!__pyx_mstate_global->__pyx_tuple[6])) __PYX_ERR(0, 2615, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[6]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[6]);
  __pyx_mstate_global->__pyx_tuple[7] = PyTuple_Pack(2, __pyx_mstate_global->__pyx_kp_u__9, __pyx_mstate_global->__pyx_kp_u__4); if (unlikely(!__pyx_mstate_global->__pyx_tuple[7])) __PYX_ERR(0, 2615, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[7]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[7]);

  /* "(tree fragment)":11
 *         use_setstate = True
 *     else:
 *         use_setstate = ('self._data_model is not None or self._grp is not None or self._name is not None',)             # <<<<<<<<<<<<<<
 *     if use_setstate:
 *         return __pyx_unpickle_Dimension, (type(self), 0x0e20e8c, None), state
*/
  __pyx_mstate_global->__pyx_tuple[8] = PyTuple_Pack(1, __pyx_mstate_global->__pyx_kp_u_self__data_model_is_not_None_or); if (unlikely(!__pyx_mstate_global->__pyx_tuple[8])) __PYX_ERR(3, 11, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[8]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[8]);

  /* "netCDF4/_netCDF4.pyx":4287
 *                     if zstd:
 *                         if not __has_zstandard_support__:
 *                             raise NetCDF4MissingFeatureException("compression='zstd'", "4.9.0")             # <<<<<<<<<<<<<<
 * 
 *                         icomplevel = complevel
*/
  __pyx_mstate_global->__pyx_tuple[9] = PyTuple_Pack(2, __pyx_mstate_global->__pyx_kp_u_compression_zstd, __pyx_mstate_global->__pyx_kp_u_4_9_0); if (unlikely(!__pyx_mstate_global->__pyx_tuple[9])) __PYX_ERR(0, 4287, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[9]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[9]);

  /* "netCDF4/_netCDF4.pyx":4299
 *                     if bzip2:
 *                         if not __has_bzip2_support__:
 *                             raise NetCDF4MissingFeatureException("compression='bzip2'", "4.9.0")             # <<<<<<<<<<<<<<
 * 
 *                         icomplevel = complevel
*/
  __pyx_mstate_global->__pyx_tuple[10] = PyTuple_Pack(2, __pyx_mstate_global->__pyx_kp_u_compression_bzip2, __pyx_mstate_global->__pyx_kp_u_4_9_0); if (unlikely(!__pyx_mstate_global->__pyx_tuple[10])) __PYX_ERR(0, 4299, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[10]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[10]);

  /* "netCDF4/_netCDF4.pyx":4311
 *                     if blosc_zstd or blosc_lz or blosc_lz4 or blosc_lz4hc or blosc_zlib:
 *                         if not __has_blosc_support__:
 *                             raise NetCDF4MissingFeatureException("compression='blosc_*'", "4.9.0")             # <<<<<<<<<<<<<<
 * 
 *                         iblosc_compressor = _blosc_dict[compression]
*/
  __pyx_mstate_global->__pyx_tuple[11] = PyTuple_Pack(2, __pyx_mstate_global->__pyx_kp_u_compression_blosc, __pyx_mstate_global->__pyx_kp_u_4_9_0); if (unlikely(!__pyx_mstate_global->__pyx_tuple[11])) __PYX_ERR(0, 4311, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[11]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[11]);

  /* "netCDF4/_netCDF4.pyx":5066
 *         # The convention used is that for those cases,
 *         # put_ind for this dimension is set to -1 by _StartCountStride.
 *         squeeze = data.ndim * [slice(None),]             # <<<<<<<<<<<<<<
 *         for i,n in enumerate(put_ind.shape[:-1]):
 *             if n == 1 and put_ind.size > 0 and put_ind[...,i].ravel()[0] == -1:
*/
  __pyx_mstate_global->__pyx_slice[1] = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_mstate_global->__pyx_slice[1])) __PYX_ERR(0, 5066, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_slice[1]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_slice[1]);

  /* "netCDF4/_netCDF4.pyx":5067
 *         # put_ind for this dimension is set to -1 by _StartCountStride.
 *         squeeze = data.ndim * [slice(None),]
 *         for i,n in enumerate(put_ind.shape[:-1]):             # <<<<<<<<<<<<<<
 *             if n == 1 and put_ind.size > 0 and put_ind[...,i].ravel()[0] == -1:
 *                 squeeze[i] = 0
*/
  __pyx_mstate_global->__pyx_slice[2] = PySlice_New(Py_None, __pyx_mstate_global->__pyx_int_neg_1, Py_None); if (unlikely(!__pyx_mstate_global->__pyx_slice[2])) __PYX_ERR(0, 5067, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_slice[2]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_slice[2]);

  /* "netCDF4/_netCDF4.pyx":5390
 *                 # MaskedConstants when filling - this is is
 *                 # a workaround (issue #850)
 *                 if data.shape == (1,) and data.mask.all():             # <<<<<<<<<<<<<<
 *                     data = numpy.array([fillval],self.dtype)
 *                 else:
*/
  __pyx_mstate_global->__pyx_tuple[12] = PyTuple_Pack(1, __pyx_mstate_global->__pyx_int_1); if (unlikely(!__pyx_mstate_global->__pyx_tuple[12])) __PYX_ERR(0, 5390, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[12]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[12]);

  /* "netCDF4/_netCDF4.pyx":5879
 *                 startp[n] = start[n]+stride[n]*(count[n]-1)
 *                 stride[n] = -stride[n]
 *                 sl.append(slice(None, None, -1)) # this slice will reverse the data             # <<<<<<<<<<<<<<
 *             else:
 *                 startp[n] = start[n]
*/
  __pyx_mstate_global->__pyx_slice[3] = PySlice_New(Py_None, Py_None, __pyx_mstate_global->__pyx_int_neg_1); if (unlikely(!__pyx_mstate_global->__pyx_slice[3])) __PYX_ERR(0, 5879, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_slice[3]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_slice[3]);

  /* "netCDF4/_netCDF4.pyx":5883
 *                 startp[n] = start[n]
 *                 stridep[n] = stride[n]
 *                 sl.append(slice(None,None, 1))             # <<<<<<<<<<<<<<
 *             totelem = totelem*countp[n]
 *         # check to see that size of data array is what is expected
*/
  __pyx_mstate_global->__pyx_slice[4] = PySlice_New(Py_None, Py_None, __pyx_mstate_global->__pyx_int_1); if (unlikely(!__pyx_mstate_global->__pyx_slice[4])) __PYX_ERR(0, 5883, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_slice[4]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_slice[4]);

  /* "netCDF4/_netCDF4.pyx":6980
 *                     #if not vInst.dimensions[0] != aggDimName:
 * 
 *                     masterDims, masterShape, masterType = masterRecVar[v][:3]             # <<<<<<<<<<<<<<
 *                     extDims = varInfo[v].dimensions
 *                     extShape = varInfo[v].shape
*/
  __pyx_mstate_global->__pyx_slice[5] = PySlice_New(Py_None, __pyx_mstate_global->__pyx_int_3, Py_None); if (unlikely(!__pyx_mstate_global->__pyx_slice[5])) __PYX_ERR(0, 6980, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_slice[5]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_slice[5]);

  /* "netCDF4/_netCDF4.pyx":7384
 * 
 *         # Reference date to compute the difference between different time units.
 *         ref_date = datetime.datetime(1900,1,1)             # <<<<<<<<<<<<<<
 *         ref_num = date2num(ref_date, self.units, self.calendar)
 * 
*/
  __pyx_mstate_global->__pyx_tuple[13] = PyTuple_Pack(3, __pyx_mstate_global->__pyx_int_1900, __pyx_mstate_global->__pyx_int_1, __pyx_mstate_global->__pyx_int_1); if (unlikely(!__pyx_mstate_global->__pyx_tuple[13])) __PYX_ERR(0, 7384, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[13]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[13]);

  /* "netCDF4/_netCDF4.pyx":1406
 *     return (size,nelems,preemption)
 * 
 * def set_chunk_cache(size=None,nelems=None,preemption=None):             # <<<<<<<<<<<<<<
 *     """
 * **```set_chunk_cache(size=None,nelems=None,preemption=None)```**
*/
  __pyx_mstate_global->__pyx_tuple[14] = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_mstate_global->__pyx_tuple[14])) __PYX_ERR(0, 1406, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[14]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[14]);

  /* "netCDF4/_netCDF4.pyx":1489
 * 
 * # issue warning for hdf5 1.10 (issue #549)
 * if __netcdf4libversion__[0:5] < "4.4.1" and\             # <<<<<<<<<<<<<<
 *    __hdf5libversion__.startswith("1.10"):
 *     msg = """
*/
  __pyx_mstate_global->__pyx_slice[6] = PySlice_New(__pyx_mstate_global->__pyx_int_0, __pyx_mstate_global->__pyx_int_5, Py_None); if (unlikely(!__pyx_mstate_global->__pyx_slice[6])) __PYX_ERR(0, 1489, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_slice[6]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_slice[6]);

  /* "netCDF4/_netCDF4.pyx":1735
 *             return value_arr
 * 
 * def _set_default_format(object format='NETCDF4'):             # <<<<<<<<<<<<<<
 *     # Private function to set the netCDF file format
 *     cdef int ierr, formatid
*/
  __pyx_mstate_global->__pyx_tuple[15] = PyTuple_Pack(1, ((PyObject*)__pyx_mstate_global->__pyx_n_u_NETCDF4)); if (unlikely(!__pyx_mstate_global->__pyx_tuple[15])) __PYX_ERR(0, 1735, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[15]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[15]);

  /* "netCDF4/_netCDF4.pyx":2214
 * 
 * _private_atts = \
 * ('_grpid','_grp','_varid','groups','dimensions','variables','dtype','data_model','disk_format',             # <<<<<<<<<<<<<<
 *  '_nunlimdim','path','parent','ndim','mask','scale','cmptypes','vltypes','enumtypes','_isprimitive',
 *  'file_format','_isvlen','_isenum','_iscompound','_cmptype','_vltype','_enumtype','name',
*/
  __pyx_mstate_global->__pyx_tuple[16] = PyTuple_Pack(36, __pyx_mstate_global->__pyx_n_u_grpid, __pyx_mstate_global->__pyx_n_u_grp_2, __pyx_mstate_global->__pyx_n_u_varid, __pyx_mstate_global->__pyx_n_u_groups, __pyx_mstate_global->__pyx_n_u_dimensions, __pyx_mstate_global->__pyx_n_u_variables, __pyx_mstate_global->__pyx_n_u_dtype, __pyx_mstate_global->__pyx_n_u_data_model, __pyx_mstate_global->__pyx_n_u_disk_format_2, __pyx_mstate_global->__pyx_n_u_nunlimdim, __pyx_mstate_global->__pyx_n_u_path, __pyx_mstate_global->__pyx_n_u_parent, __pyx_mstate_global->__pyx_n_u_ndim, __pyx_mstate_global->__pyx_n_u_mask, __pyx_mstate_global->__pyx_n_u_scale, __pyx_mstate_global->__pyx_n_u_cmptypes, __pyx_mstate_global->__pyx_n_u_vltypes, __pyx_mstate_global->__pyx_n_u_enumtypes, __pyx_mstate_global->__pyx_n_u_isprimitive, __pyx_mstate_global->__pyx_n_u_file_format, __pyx_mstate_global->__pyx_n_u_isvlen, __pyx_mstate_global->__pyx_n_u_isenum, __pyx_mstate_global->__pyx_n_u_iscompound, __pyx_mstate_global->__pyx_n_u_cmptype, __pyx_mstate_global->__pyx_n_u_vltype, __pyx_mstate_global->__pyx_n_u_enumtype, __pyx_mstate_global->__pyx_n_u_name, __pyx_mstate_global->__pyx_n_u_orthogoral_indexing, __pyx_mstate_global->__pyx_n_u_keepweakref, __pyx_mstate_global->__pyx_n_u_has_lsd, __pyx_mstate_global->__pyx_n_u_always_mask, __pyx_mstate_global->__pyx_n_u_buffer, __pyx_mstate_global->__pyx_n_u_chartostring, __pyx_mstate_global->__pyx_n_u_use_get_vars_2, __pyx_mstate_global->__pyx_n_u_ncstring_attrs, __pyx_mstate_global->__pyx_n_u_auto_complex); if (unlikely(!__pyx_mstate_global->__pyx_tuple[16])) __PYX_ERR(0, 2214, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[16]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[16]);

  /* "netCDF4/_netCDF4.pyx":2572
 *             raise IndexError('%s not found in %s' % (lastname,group.path))
 * 
 *     def filepath(self,encoding=None):             # <<<<<<<<<<<<<<
 *         """**`filepath(self,encoding=None)`**
 * 
*/
  __pyx_mstate_global->__pyx_tuple[17] = PyTuple_Pack(1, Py_None); if (unlikely(!__pyx_mstate_global->__pyx_tuple[17])) __PYX_ERR(0, 2572, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[17]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[17]);

  /* "netCDF4/_netCDF4.pyx":2828
 *         return self.enumtypes[datatype_name]
 * 
 *     def createVariable(self, varname, datatype, dimensions=(),             # <<<<<<<<<<<<<<
 *             compression=None, zlib=False,
 *             complevel=4, shuffle=True,
*/
  __pyx_mstate_global->__pyx_tuple[18] = PyTuple_Pack(17, __pyx_mstate_global->__pyx_empty_tuple, Py_None, Py_False, __pyx_mstate_global->__pyx_int_4, Py_True, __pyx_mstate_global->__pyx_n_u_nn, __pyx_mstate_global->__pyx_int_8, __pyx_mstate_global->__pyx_int_1, Py_False, Py_False, Py_None, __pyx_mstate_global->__pyx_n_u_native, Py_None, Py_None, __pyx_mstate_global->__pyx_n_u_BitGroom, Py_None, Py_None); if (unlikely(!__pyx_mstate_global->__pyx_tuple[18])) __PYX_ERR(0, 2828, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[18]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[18]);

  /* "netCDF4/_netCDF4.pyx":3117
 *         if self.data_model != 'NETCDF4': self._enddef()
 * 
 *     def getncattr(self,name,encoding='utf-8'):             # <<<<<<<<<<<<<<
 *         """
 * **`getncattr(self,name)`**
*/
  __pyx_mstate_global->__pyx_tuple[19] = PyTuple_Pack(1, __pyx_mstate_global->__pyx_kp_u_utf_8); if (unlikely(!__pyx_mstate_global->__pyx_tuple[19])) __PYX_ERR(0, 3117, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[19]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[19]);

  /* "netCDF4/_netCDF4.pyx":3470
 *             raise AttributeError("name cannot be altered")
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def fromcdl(cdlfilename,ncfilename=None,mode='a',format='NETCDF4'):
 *         """
*/
  __pyx_mstate_global->__pyx_tuple[20] = PyTuple_Pack(3, Py_None, __pyx_mstate_global->__pyx_n_u_a, __pyx_mstate_global->__pyx_n_u_NETCDF4); if (unlikely(!__pyx_mstate_global->__pyx_tuple[20])) __PYX_ERR(0, 3470, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[20]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[20]);

  /* "netCDF4/_netCDF4.pyx":3509
 *         return Dataset(ncfilename, mode=mode)
 * 
 *     def tocdl(self,coordvars=False,data=False,outfile=None):             # <<<<<<<<<<<<<<
 *         """
 * **`tocdl(self, coordvars=False, data=False, outfile=None)`**
*/
  __pyx_mstate_global->__pyx_tuple[21] = PyTuple_Pack(3, Py_False, Py_False, Py_None); if (unlikely(!__pyx_mstate_global->__pyx_tuple[21])) __PYX_ERR(0, 3509, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[21]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[21]);

  /* "netCDF4/_netCDF4.pyx":6741
 *     return str(bytestr,encoding='ascii')
 * 
 * def stringtoarr(string,NUMCHARS,dtype='S'):             # <<<<<<<<<<<<<<
 *     """
 * **`stringtoarr(a, NUMCHARS,dtype='S')`**
*/
  __pyx_mstate_global->__pyx_tuple[22] = PyTuple_Pack(1, ((PyObject*)__pyx_mstate_global->__pyx_n_u_S)); if (unlikely(!__pyx_mstate_global->__pyx_tuple[22])) __PYX_ERR(0, 6741, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[22]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[22]);

  /* "netCDF4/_netCDF4.pyx":7334
 *     """
 * 
 *     def __init__(self, time, units=None, calendar=None):             # <<<<<<<<<<<<<<
 *         """
 *         **`__init__(self, time, units=None, calendar=None)`**
*/
  __pyx_mstate_global->__pyx_tuple[23] = PyTuple_Pack(2, Py_None, Py_None); if (unlikely(!__pyx_mstate_global->__pyx_tuple[23])) __PYX_ERR(0, 7334, __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
      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<7; ++i) {
      #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
      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: 11; } index[] = {{1},{1},{4},{5},{5},{5},{5},{5},{5},{5},{5},{5},{1211},{1020},{29},{83},{47},{24},{32},{25},{102},{13},{44},{26},{84},{100},{113},{142},{179},{3},{65},{50},{31},{33},{40},{23},{25},{199},{31},{237},{51},{73},{106},{47},{43},{43},{69},{65},{65},{60},{1},{2},{2},{4},{2},{1},{2},{2},{1},{1},{2},{1},{1},{1},{1},{0},{1},{1},{2},{1},{1},{8},{21},{16},{45},{56},{52},{37},{86},{48},{39},{56},{39},{61},{50},{56},{38},{64},{19},{42},{21},{19},{86},{18},{3},{16},{15},{65},{25},{80},{12},{37},{12},{28},{38},{19},{25},{7},{55},{41},{6},{67},{70},{39},{38},{3},{3},{17},{49},{15},{11},{10},{44},{41},{40},{2},{1116},{6},{10},{9},{14},{15},{50},{32},{24},{30},{66},{36},{9},{6},{23},{51},{55},{58},{29},{46},{48},{17},{10},{22},{3},{70},{44},{9},{13},{39},{16},{14},{39},{34},{17},{2},{53},{82},{32},{53},{43},{9},{94},{2},{32},{150},{24},{12},{4},{2},{7},{29},{25},{28},{79},{63},{23},{33},{231},{10},{22},{44},{24},{42},{40},{13},{14},{54},{58},{47},{43},{40},{44},{23},{24},{22},{29},{35},{35},{39},{57},{8},{5},{11},{9},{29},{18},{43},{27},{8},{8},{12},{23},{4},{4},{7},{17},{16},{18},{14},{18},{15},{16},{14},{13},{26},{23},{22},{19},{20},{22},{17},{16},{15},{35},{17},{24},{24},{23},{23},{14},{15},{23},{23},{19},{22},{23},{29},{21},{29},{22},{20},{19},{26},{17},{24},{17},{12},{13},{10},{9},{19},{18},{27},{19},{29},{18},{15},{21},{22},{8},{9},{8},{19},{10},{16},{5},{11},{4},{4},{9},{26},{18},{20},{18},{35},{21},{15},{16},{34},{17},{6},{18},{15},{14},{13},{7},{25},{27},{11},{10},{7},{13},{18},{20},{15},{7},{15},{8},{30},{39},{4},{1},{4},{7},{4},{20},{1},{2},{17},{4},{1},{9},{5},{9},{1},{6},{17},{9},{8},{18},{21},{21},{18},{17},{19},{18},{35},{21},{24},{29},{13},{17},{17},{14},{13},{16},{14},{20},{17},{18},{15},{16},{17},{17},{23},{28},{18},{14},{16},{17},{21},{24},{24},{25},{30},{31},{22},{23},{30},{31},{23},{24},{23},{27},{28},{18},{25},{18},{18},{24},{2},{1},{10},{8},{10},{6},{5},{9},{10},{3},{11},{3},{6},{6},{3},{5},{9},{6},{2},{7},{5},{11},{12},{6},{18},{3},{4},{7},{7},{5},{12},{1},{3},{5},{16},{11},{15},{8},{9},{11},{13},{12},{10},{10},{5},{12},{2},{7},{9},{9},{5},{7},{8},{5},{3},{2},{6},{11},{8},{9},{4},{10},{9},{8},{8},{7},{3},{4},{11},{7},{6},{4},{12},{5},{9},{15},{11},{8},{10},{11},{17},{18},{7},{5},{6},{10},{11},{8},{8},{3},{6},{4},{9},{7},{14},{14},{14},{8},{21},{11},{10},{11},{10},{9},{4},{5},{6},{18},{15},{14},{11},{12},{14},{31},{1},{3},{4},{5},{10},{11},{7},{8},{8},{9},{8},{13},{10},{8},{8},{6},{7},{16},{16},{9},{8},{5},{3},{10},{6},{5},{6},{7},{7},{8},{5},{4},{9},{7},{12},{11},{8},{7},{4},{5},{2},{3},{5},{10},{20},{16},{10},{18},{10},{1},{2},{4},{7},{5},{5},{15},{6},{8},{7},{6},{8},{4},{18},{9},{4},{9},{9},{9},{9},{3},{7},{7},{10},{6},{7},{6},{8},{7},{8},{7},{9},{1},{2},{2},{7},{6},{11},{12},{8},{8},{5},{6},{10},{6},{7},{8},{7},{9},{20},{4},{7},{10},{7},{3},{6},{12},{11},{8},{7},{7},{8},{9},{4},{9},{1},{7},{4},{8},{13},{15},{8},{25},{14},{19},{27},{26},{11},{16},{8},{21},{18},{11},{13},{8},{9},{12},{4},{5},{9},{6},{3},{4},{6},{5},{7},{8},{5},{1},{16},{21},{16},{21},{19},{11},{8},{21},{30},{19},{19},{17},{16},{25},{24},{23},{28},{18},{21},{15},{20},{14},{25},{15},{18},{4},{1},{2},{2},{2},{2},{2},{6},{16},{16},{17},{14},{6},{10},{16},{15},{11},{2},{8},{3},{7},{4},{11},{3},{4},{8},{14},{4},{13},{7},{13},{16},{7},{11},{15},{11},{7},{8},{4},{8},{5},{8},{6},{12},{11},{7},{5},{12},{22},{4},{5},{8},{9},{2},{5},{4},{1},{11},{3},{4},{11},{4},{4},{4},{6},{8},{23},{7},{7},{6},{6},{9},{3},{6},{1},{2},{8},{9},{3},{4},{12},{12},{13},{6},{10},{12},{11},{10},{11},{10},{7},{5},{6},{13},{9},{13},{4},{10},{15},{3},{4},{9},{8},{1},{2},{4},{5},{8},{5},{9},{6},{6},{13},{11},{8},{7},{6},{10},{10},{5},{9},{17},{14},{11},{4},{5},{25},{9},{6},{11},{7},{12},{16},{21},{7},{8},{7},{8},{4},{6},{2},{7},{4},{8},{15},{11},{3},{3},{8},{5},{12},{4},{10},{2},{5},{6},{7},{7},{7},{8},{4},{23},{2},{16},{7},{5},{8},{17},{6},{4},{4},{5},{7},{7},{7},{16},{3},{9},{10},{15},{11},{11},{13},{4},{5},{3},{4},{7},{7},{14},{12},{11},{10},{24},{12},{10},{12},{9},{13},{1},{5},{6},{6},{7},{7},{9},{10},{11},{6},{10},{17},{13},{8},{7},{11},{15},{15},{11},{14},{7},{8},{7},{6},{20},{2},{3},{1},{12},{12},{13},{13},{15},{9},{5},{12},{4},{4},{14},{13},{15},{21},{13},{21},{14},{15},{14},{19},{12},{11},{12},{18},{19},{14},{11},{10},{9},{16},{9},{12},{19},{5},{6},{8},{7},{10},{18},{4},{9},{5},{2},{4},{11},{5},{7},{11},{3},{5},{6},{10},{5},{12},{6},{6},{4},{4},{3},{7},{24},{4},{7},{6},{7},{6},{11},{12},{4},{8},{10},{3},{5},{15},{4},{3},{4},{11},{10},{14},{21},{1},{8},{9},{10},{5},{4},{4},{9},{7},{5},{6},{5},{6},{9},{7},{9},{4},{3},{8},{6},{6},{1},{2},{2},{2},{2},{13},{5},{12},{11},{9},{6},{12},{13},{15},{12},{5},{1},{5},{3},{11},{4},{9},{9},{11},{8},{8},{5},{6},{6},{6},{3},{7},{9},{6},{7},{8},{5},{7},{11},{3},{4},{6},{4},{7},{7},{5},{2},{1},{10},{4},{8},{7},{5},{11},{5},{2},{1},{6},{5},{5},{3},{4},{4},{244},{121},{225},{15},{13},{56},{2},{15},{16},{987},{42},{42},{142},{1093},{12},{31},{35},{64},{215},{56},{142},{53},{118},{33},{603},{232},{86},{76},{129},{137},{78},{143},{25},{408},{16},{48},{16},{61},{59},{77},{87},{132},{119},{88},{88},{86},{86},{88},{38},{16},{21},{20},{21},{20},{9},{35},{20},{36},{13},{95},{38},{39},{23},{105},{15},{168},{16},{90},{17},{19},{16},{36},{49},{196},{174},{89},{31},{31},{68},{13},{1137},{71},{38},{65},{132},{7},{52},{63},{59},{105},{589},{22},{11},{13},{15},{19},{21},{9},{23},{13},{785},{20},{205},{242},{8},{19},{337},{104},{2},{9},{26},{22},{107},{2},{2},{2},{132},{39},{117},{1086},{2},{55},{161},{73},{11},{76},{56},{63},{52},{129},{68},{56}};
    #if (CYTHON_COMPRESS_STRINGS) == 3 && __PYX_LIMITED_VERSION_HEX >= 0x030e0000 /* compression: zstd (14070 bytes) */
const char* const cstring = "(\265/\375`\215\205e\267\001\212BQDH\340\316l\0030\314#\014\343c6C0>f\307\354\230\035\263cv\314F\030>X\030HdF\204\224\3200&\230\222d\264\330,\323p\037\350\r35\007\241\333@\364\330D\300\327\250\206Q\362\000\3715\311\030\333A7mc\352\003\347\003g\004(\025\277U\025\025\336oT\302\231Z\363yo_\002\355\324V\3436^\330\002\365\035jf\027\010\331\324i\rw\223\303\334\3225\210\027f\225\014\014\205\231Y\352\t\231e\246\206\246\306\346\225\003\372\3344\365O\267\316V\242?\034\315\024\225\311\241\355\327.\340\344Z\252w:?\2278\325\247\233FS'\354\033\\\312h\236\372\316\250,\207\246\223\343\276v\220\313\224\262\2534\233\314\237\304N-C\"u\327\244\355?n\253h/\323hr\350;Wg\345L\035[c\212\206\030\r\271\227>\335/\373\2435\341\366z\237\237\267;\327)h\227\246\373t\322>\367\337w\232\257\313\235\342\266\357\3514\325\030@Z\333zhnM\333\246\351\371\327\\\315\2352J\357\034kd0\320\320\323\317f\336:\316\333\346\251k\373<iLfo\353\220j)\2338\347\311e\310\030\223\247\350\231\177\271G\314\320lj\271v\351\2533\236\376\257\311\336\214$\377\256\365R\235\316\314\255\343\371NU\265\227n\333.\177\334.y\373\345\324)9.\177\264g\317\363\306\365dfW\321\027T\n$\373%Y\376\036-\367\377<\335\235Z'\313&\020\250\224\007\220\351\203\370$\272\3736\271\244t\256\210)\321\324\337\243H\304\225\224\225\025\356\263\357i\223\304\207\"\ne\372\"\nE#9\211\244K\026i\262T\233}\237\272T1\377\355\206\226y\2539\356\363\317:\243?\357R\323\322\235\273\346:\024\004\302\345\312-Wf\271\362\312\225A*W\036]9\345\312(W\026]y\305\225]\255\334jeV+\257ZY\325\312c+\247Z\031\325\312b+\257\264\262\213\225[\254\314b\345\025+\253Xyd\345\024+\243X\031$\262\362\n+\273V\271\265\312\254U^\255\262j\225\307UN\2552j\225\305U^Ye\227*\267T\231\245\312+UV\251\362\250\312)UF\251\262\250\312+\252\354\032sk\314 \326\230WcV\215y\034sj\314\2501\213c^\031\263+\225[\251\314J\345U*\253RyL\345T*\243RYL\345\225Tv\241r\013\225Y\250\274Be\025*\217\250\014J\2412\n\225ET^Ae\227\230[bf\211y%f\225\230G1\247\304\214\022\263(\346\0251\273rn\345\314\312y\225\263*\3471\347T\316\250""\234\305\234W\262\007\220\t\004\213\007\020\036BZ\351\343PN\273\374\332\347\363\324y\207v\321\001\312\212xZ\021Qh]\207\270\016bEdY\361`:\221p\022\034\227\3143\325\234Hx$%\230\220F3\221H.'\222\035I>\235d\222\262\207\376\344\373\375i7\222R\016\303pE,\355Z\327)\255\207\035\345\276\357\0337\371\215\237\375\246k\335\346\263\316\266\317w44\373\315\323\355\263\316\373\227\271\004\327{\270\233\332\363OQ\334\215g\010\020 \200:j\373=\234\010\021\"@ \026\223?\271\376\333Do\231$?\357\234$C\031\014\"\362\336\261R\3365\355\325\233\346\305l\357\321\031\263\277ro\226M*\341\256\3552UQ\037\376\316\317\322\367p**,\270\377m%\0204\263\354\341<\344\033\232\322\262\271?N\233/\020(4\351\244\237\324\321]\026Q\312_\337D\274d/\230\024\005\311bb22\031H\031\315\204q\225\312\247\027\232X\354u\341\205\034e15\"f\371{P\330\321\334y\336\351\336\345\336\266\375L\343\331\353\234\352\215\303\351\354q\275k\234\007\371}\3164O\265NG\337\362\311\377\355\365\3270Y\006\346\345\357\236\367\311i)\374\237\352-\327:7\365Ns\212\322\262\367\372|\001\255\204\256\225je\024C\224\030\216\250\220\025\212\250p\014\305\0251\024\3050\351>\273zS}\017\327\343\231h\212\323q\222$w\312\343\036\305}\217\373_M\321Zi\236\250\357\272\336I\335&q\275\243\275\367Z/c;\022W#}\257\355\256j\215d'\273\027{\277\335j~\363\024MO\265s\224\363t8}K\321\021\235\223\372vK\323\327\367\247\232\2367\035_\222:z\357p{\353\350t\216\216\340\252O\367\271y\034Gr\3579'\311\027\006\377q\235s\316\333&79'9\347\274\344->r\024\027\371\n\347$j\244\037\3134\3279Y\332\27479\351}\257\326i\376\223\2447\271\3777\332\270\372\032=i\250Tjvs\223\236l\321F\032\255\346\323\230\377~\233\352\351O\277\313R\365\333\357\235~\334\331\313\275w\233\353\276jz\216SuP\364$yf\211\246\374\243\337{\223\223~\223&j\223(\023\3277Zz\223\223\277\343\312[\272\365l\227:\375$I\342\322t\323p\372\276 +\267\r\351S\275\311\262U\256\304\022\247w\337\367f3S\243\351\214<QtF\242\327\367I\243\2516o\033I\234d\212\316z\347\037-C\224k\316K\257\275\306\235\272\306\244\361\244\351K\222$I]\222\244\276\241""\377\2533\222G\352\2248\375\246\337\300\304\324\320\310\304\300\324\334\334\304\376\313O\365\217\221b,F\3336\237\267k\310_r\030^O\003Ij\240\321\220!F\006C\314\346E\341e\224\305hb61\032b\261\230\013\026b40\267\215\341\353\177\203\340S\034ow\010\036=[\302\261\307\220\236{\\\014\351y\212#K\022\375e\357\221d\331;\372\311\335\251\311\327\306\241\236\357O\236fI\376=\242Hr\227)I\206,\034Mw\245R+\205\366US)c\270\251\211\351\275\326US\311D\352\345\356:\245Cha\361\242\346\365p\241\212J\231\206\344\366|\3673\204\376\363\0327\311\3375.\255\235dx\"\306L'\237b\362'\245\322\017O/b\230\n\307\034\356T\307Aj\223\352S\355:\235\271\241\237O \177\327j\216D\243\001\003\013z\316P\\\351DsASl\252\246\205;\ri\331\324\373\270\333.e\264\373\223\1775$C\365\227j\327\346\336\241f'e\226\233\203T\247\274\235'7\332\353\247\317\246\251\324\367\351O\312\256\223bn]\272I\273\324\270O\356Y\366\233\223v\351\311\334\275\364\346OH'}#M\236\326H\262'1A\220d\0358\220\362\311\203.ksv\323\347\253g\333\007\235\312SEm>\207)\250,I\275#\365\366;['\351\244\211\264\201\344\022\226]\3479O\247\360\376\236\311%\247\3557\nJ]:\357\372\345{\235}O\325\277m@ \024\024\021&\217\202\222O\264S\004\n\n\250\254\241\247N\243\331\310b\344KMV\361\247\221\006a\244\265xN\343?\335e\276\020\213\331<J\353\374\237zJ-\353^\3433\322\351\223TR\327\233d\"\335\220H1R\251\344\375\344u<7M%\027s\237\032\207\236fJ\337{\367m%\213\206\316\365WO\350m\227\334%\273\244j\351\313\024\222\371=\t\263\367U4\323F\343$\217\302q\022$\024\262\234\221\\\272>7\247y\257\313\276\2637ix\301\324l\r\031J\267\331\014=ky\233\331\253\250Z\343_\373M\202{\235\256\366h<\373\337q\265\036\362\\\366\375\367\311\204\362\263\224E\340T4\235\021\221j\237\265\327\346\276\235:\262\327\364L\304VS\231\013o\237$\372U-\302T\333i\255\2467I\202\320b\021\301\204K)\233J\231d\"\201\362\211E%\223\374\t\251&&\304\341\270\216\272Q\023D\"\271\240\376\203>7\277\247\351\223\320\264\242\n\343\317\004\233*\003\2366s\304\"\374_\356\232\230Bq\010V\337\361\035\275\021@\254 '\366\346\002\233\263\242""\\\020\353\207\006\020'\336\355\214;\026r,\023\337\226\353\240\344\363\366B\356\002UD\363W\307\352\241\221\274\241\335\002\221\tl\272\206|\364\000\370\r\340\254\035C\037z\235`\303zq\314^\254\310ZX\305\231\020\227\364e!\210Gl\211\303\2006\311\360\360\010\211<\2002\023\002m\016n\210A\004\033\0200T2XJ1F{A\267`\277\327\217\002,\3023&\235GG\320\203\300\20063\340\360\354\204\031/\214\203\017+\302q\241\026|\375:\215\373!\205\304\035'\n\340\260dD\256\016\233bMpxV\230\002q\001\025\"F\201\215\214\225Cc\205\326\277\035<z\340\006/\310\315\265-\301\322nm\026|\344D\257\234\003\257\t\002\205Q\360\365\212$$\221\335\211\007\360\200\310\006\020!\370\020\341\016\001g(H\302\001\022\032\021\302r\000\014zvr\277\026\375\246^\034\267\304\303\225\262\341U\245\0005l\002\217\274\262\023\034\300\224\204\200 \007F0\310\361\202\2005+\210\t<&v2;\035>!h3X\223\220\007S\210\345\246\204\000=n\311E\t)\261\206$hE6\273[C\036\204+^\"\t\010\312\255/\257\006\036\261\201\002\242\210\021\364\374r\360\t\034\202U\\\000n\217epjoB\027\332\034\026\305\216\200:5V{\334kq\255\214\313R\314`$\367\352\327$\247-i9\273\300\325.\207v\003\253\000\006\277\340\234w\203\373ri\255\002v\204#8zGJP\330\003\242\240\010\267\336\224\203\017\334s\307\022,\003\021\340\201\021\217w\345\006\360\036\034A\335\302Z\221\230\013M,\202\320\010>]\330\010\017+\"\002\216\334\220\273j\377\007\033\263\212^\215\004!\030\217\257\200\033\300\005\032@\230\306\257\027|\375\304\237\211\227\347\252\220\200.\335>\030\275\336\005q\313\030\273a\r\001s;z\347\364\033\201E^\321d\276\034\\\221\353q]X\004\" \310\207J\227k\307\366\313\330\022\226\265~\037\307\206\005\306\n\017\014\363z|\332\030\213\242=i\315\240\010C\321kjm\211j+\210\006\360b\024\204\271\265V\000\010KZ;8p\330\227\007\236\275\260\367\342\235\271\023pHb8h!\034\300\027\233\200\003\0103\240\021T\255\032\236V\305\216X\277\236\254\2415\244\361\321j\020\303Z\035\233\322\361\252\254\326\016\214\340\213U\327q\365\320\000\276Z\003\361(`\205\270\006XC\031\026\007h<\025`V\n\276\215\014\013\324\212\227\212W""\310\213\201\225[?@\330\373z]\254v42\020\023\000Y\210V\2608\253h]y\332\336\312\013zT\304V]0f\023\333\300b\331\316k\307c\207\3643a\030\\\002\003\200s\357\311+\343~\334\006m\250M\331\027Vd;<\002\326\\\312\323\346\330\001\354l\265\211>\002l\210-\327\235O\3738\250\270\370\000G\277\320/\006F\360z\336\0207\375-\017\306^\200\2541>\r\014\340\250e\2613\353g\355y\330\021\276\002\254l\335\340\323\251\030\360\001\212+\216\357\345\333\270\260\310+\304\325\303\"\316\261\232\255\260\252\375\026\337t\254ob\007;5pwC\0041\002W%$\346\371\014`\000C?\235\367\344\226\320+\010\0060\367\262F1\206U\204\001\324\"b\021\033b\017;,?\034\370\002vqM\260-\253\007\006\360\005\273\336\031Wt[-\0016\267v\010j\037\314\267\201\001\004\205\330\021w\200\253jo+le\361idX\200Vh\2600\301\327*\322\000\346|\243\217\000FPtG\256\314\2015\204\001\204\265\257\326\305\232V\217\014\213O\272\302C\207\270\003\205\230\002*F1\000\352\237\214Il\022\002\014\301.RL:\000\024\337\224\0100\324\216@\200b[\"\002\024\341\007\237\030My<\236\337\355h\273\235\316\251w\344\316\353\274I\343\313\316\311R\247\373dK\035U\224*\252\352V\323\377Q\364\243\377\357P\234\215T\375L\365\037\207\356\357K\216\363\373\304\235\275\231\367\247\307\221\276\363\235\246\372\344\355\264\334i\271U\257 \037\021\035\037\314W\342\003\340\343'$\231D\242Cc\"\261\372\0043\202\243_\2047D{b\021\177::F\256\306\305\207\035`!\274\350081606D\202\372u \376\301\210\261\347]\351\210\365\257\200\211\217\316\357\001L\340]\311q\216\325\330\270\300\342\362\342\332\3750\321\231;\017N<\017d\004<H\201f\202\025N\002\374\\\304\222\353_\001vb?\024\251\224\013\310\303-\245\240\016\246\351\017\304hC\315UC>\004I\354^\272\003\207\230CN\234\243\373\220\304\276,\22618\033\314|\230h\t\031 \360=\027V8\210o\354\002\017`\3555\332\251\260\212M^T\216]~\023P\361\3316\370\3040\004\r\317O\302J\274\342\261\321n\2016\177\342\321\312\000\312\014\353#\001\t\375\026p=hV\373<n(d\347\242\344D92\237\001\013V\231\257\300\205\n\017\314@@\01660\303[\035\370@\241\006\240\014`\211]P\205\301\250\033&\210O""\3708.,@N\221E\354\201a{}b)\021\026\226\244E\343a/\200\036\004\250\211\202\336\245{!\367\003\253\340\023\327\\x\200$\332\235 `\026\213[;\035;\236\035\025+&\3130\261~@\237`\356\"\004E\034\021\200m\020Cb\002\320I\264\001\353\314\263b\3700>@\233\210M\337\310V\241W\244\365\243\325~\316G\313\010)&\242\302/\245\330\213z\003\004\350\260S\r\221\235\321\216\314\357\363\313\245\342\204\223R'\346>x\325\315\310\247\036\036\023`\260N\304Xm\304\276(\022\033u)Q\253\300\213K\363,\005\317;\233\231\0369\3337\201F\363X\201\230\210b\321\307\306\321q\261\2464B\274\3047\024-\347\260!\036\261S\323\022\213p\206\016\034\200\260\340\250\306%~\301-\016b\221X\374\311\032\260\236\315\375\364\217\203h*U\330\021w\016\374<\343\211\006\000\003\340\005\300\213Gga\261B\365\261\327\261\206\305\"\255Z\310\3115\221\214J\013BDp^?\230\226\370DF\216\250_[\tq\307\202*\336p\033\200ph\263\003&\201Y@\033\234fu\251\034|\344\336\210<10\254\207X\342\355\240Bq\010\302\204>npHl\t\025\226a\020{^\225\t\243\262<q\300\307\325\342\376 L\354\325\271-\004b\002\247\004\261\t\213`e3R\202w\272\002\334X\273\301\3526\265\177\260\237\350\267\322\357\352\004\347&\276\321\020c\354\300|\030\244\344\005\260\241\367\332\241\320\342E\360\320&\260\t\241NB:\200b\020\244\215\331pi\203\013x\237\240(\022\222UU\252$\376\342G\214K!&\264\263\372}\330\202g\240A;\315\204\204\030(1\337\023\266\321\264 \322\017\022 `\275\277\033\227\202\224\021|\363\252<FN\032%\245\230\213r\035\214Jw\202{\252\3214pQ\016\30403\021\002vD\347\342\216dz%\010#\321\332\361*\021\"\020+\340(}\304\037\243\003'e\360C\004\014\302\036p\371~\310nFD^h\001r\276\002\031\026\020F\230\253K\005iD6\303\037\325`x\340rm\270\247O\254C?\022/\010F\274\341\343\010\311Y?.bz\034X\232\365\203\265\255\256\220\214\211\226\004\022\303\364*\000fi\360\021\277F\244\202\020\276\215\030\266\212\022h\304\0338\246\203\027\006()R\370X\030IN\021\201*\014\000\226X\231\325\303dE\316\243\302PND\025\340\017\216J\030\214\202\037\350\024\360\350\367\001K\307\001X\007\366c\201M\034:d\256\221\334j\301\323\302""\260\342\350-1\212\336\014\3256M\r\257\026\304\243\326$\301\336\222\227\345\266N\335\232\264$\"@\317/\006\327dD>`\021L\202\271\027.\314\207\201PA\254\273\361\241D\0006T\217\211\016\234\3274\022\263r\354\310:\020\263\334\017\t\223WkS\214\356L{\302\2233\022\205p7>a\216\324\322\356n\206u\251\022l\310\211sp\342\323NI\004\2261`GJ\202\"\023\366\000\007p\243\365~\227\027a\315\355\244\000S\010\200\355\324~'\021\314\243\t\321\360\316t\037\264\001>\370\313\365\030}\310iE\036\326\013\361\367\222\212M\256\211b\364\372\345\300\016^\024\202xF#H\212u;\2415\321\t\346\334\0160\rq\357\027\221\257\250\204\022\217\243\245D\n\021\010\000\000\000\000@\000S@0p\200@\"\023L\210Un\017\364\247\220JN\250QR\216f\2204\n\021P\000@@ \000\010 \000\200\000\000\"h\274W\211\t/\200<7\245p\342\211\371\010\357\307\200/\\l\310gG\317n\204\021\2130\036\217\034I`\324\235\202\257\346F\222\253\315\024\026\327\273#\260\260>\364\312\243\227\000\027g\032\013\260F\016O\026\007\235\032#\367\306\222Q\300\241\311a\342\301H\207s\336o+\2741\367\207\344r\021\316'b\212;\"\014b\245m\325\325\326\274\033P\241\235wh\320\332\310\032\033\253[&I\226\301\261\236v\010\241\376\340\310\201\277\212uK\277\333\305\364\030\2651\374\374\332\377\264d\360\235\200\363\234|\225\021\201L\323}\263\003\270[\341\240\3235\273.P\221}2\366\270\255/\210\315\203y\352\362K\002K\354l:\004Z\214\334\n\002\261h\021n\260.\230S\365\033\330+\014\004\304\246D\032\352\251$s\035\277\327\250\306\204\302\232jr\352e>\025[\226\244Fd\345i\334}\203\267zM_ci\245>\234s2\262\237t\356\0334\330\177WU\005\257O{\020xe>\252\343\220\337\265\372=\025I\376\303\010\342\247\264\356\352\212\034\3361Y*\264\332\2531kr\203\264\003\353\313\272]\255\007M\334F\310I\317\326\n\335\262\314\352\334\244\330\300\205(\315\007i\301\337\315\302\002\010\005_\227\2042\023\367\250\354\210\177\023g\276\331\372\361e\337\330\316\346\007\360\302\200+\352\254\337\025\350'\211@\026\2717vrvGY\264\n\33089%\021\252\034\204\350.W%\315\031V[\312\313N& \230\306\000\264\331\216\023a\244i\222\007\276\241\365""\261e\374iL\t\250\307\242\257\330\267\013\230`Z3<\313\001\251W\201\203\223D\037T\345\230\023T\360\376\360H:\036%a\365\030s=\006~t\036\240\005$\253\344\203\245O\372\327\007GSP\r+\262D\206\346tF|\002]\301\027\\SK\310v@\340\214\332\341\362\250\004\000\352\301\335@\261)\304x\031\034\310\214\271O|\014O(\373DE\312!3\347\271UB\251eD14\001\262\25536\000:\207N\027Z\253\277l\\o\254 \366\201\357RC\221\374\274\034\244c\025QY\310\233\354\271\017\017\260)o\340\244\370\001w\340\020\226\355\202\206\255@\221\361\025\3527\310\277\215\264>\024\351\335\3151\314\244\216\004`\204\356z@\241iOF\241\244\243\021\023>\206z\0205\275\377/x\255\311\232\013k\276${\222\365$\250\206P\000\004\027^\311X*X0*\261\264\356N\343s\263\255\245f\214\211\026\202\373\307\234\244p\240d\033V\304\016\363\203qj\036*\r!\351\230)\021l{\342\206&\213\0078\263\2733d\321\034 \315\t\010FO\356S\241\334\341N\376b\023\222scdI\t\024L\224\202\3704\177\227\345^\355<\\\265\240\016\031K\34794\25231\220\311}\311\272\352=)\034E\n\007i\320y*\260\247l\326\301\343=\240(\304\326\255f\023\321ht!\365A\227\210B\225\021$s\212\201j\233LM[\332\363\024\004;\337\347\272\005\242\026\r\261I]\334\025\252\374\2429\202\320\240r\257\264\251\t\240\027\245A\360\317\342\314\215\204\340xQ\0004\313\000&\247\312\252\325'\345\264\220\021X\21698t&\341\244\270[\260(0\266lt\002c\004\225\247\027aGW\025F\313\204i\255\221\333\202n\3405\247\342\2165\377\216\024ti3+\322\357\243ar\211<r=\347pk\0134\320\312|f\350K/\263 \366\0373\222H\205\340\262\031\266\\L~>\r.\"O\276\364\017\225.&D\243\272@!@\204\326\345\024\367(\034\020\241\026R\342\21158M\231\224\201\256\325\226)G\006 \036\016(`i\nc\214\313\377\363;\225:\225\305\361\206\203J!\023\2273\257\253\026\237\361\314,\022}W\240\250k\027 X\224\364%\240\211i\315)~\254\375n=\367\220\275\256\276\312\224\237\t\270\234\3016T\010\232\025\256\nQ\242\203\267\204\376%\365T7w\361\331o2+\314~\330\030'\303>\251d\314\032^\251\212\006\364\331\2462\200\027X\215\003z\001I0\320\317\024\276>s\303\264\314\260U\356B\367\253K\216z\310\307*DU""\267@\346Kt\337l\353\026i\316\313\2558\323\303\330MQ!\274x\304{\306\n\030\367D-9\016\322aH*'\214\025\370\244TY\035\233\252E(\315u\241+\322\372_\330O\315\017A\343\357\033\026\315m\361E\357w\317\006\013\356\033y=R:-;\327u\2377\315\366\276\377\307v\0042~\300\254B\252\313}\203\t\004\350\323\r9\337\030\337\254-\364\372Ae\022\006H~\0238!\270!\261dH\351\203\020+\262W\343g\301&9)\331\307x\376D\334b\243H\340\001\317\235\254N\277\372\306\352\364eH\354\"\002+\022\225\037\252\243z\326\035\2211\343\023\026\316\325\221\031!\303\220h\374t^\007~6\346H\234\206\251K\212\245&\256f~u\030\263h\207{\373z\217E\342\377\233\224\2451\371r\370\322Z\346EF\203@\206ti\341L\306d*O\275\321\320\326O\r _\326t\262\216L\027/\245\312\321\3574\351\350\346\005\376:\332R\211\377\311\303`\350\311\237\n]\253\022Sf;\013\266x\324\371\013\\\247\323\304\230\226\241\016\365\320\232\327\321\252\376\200\256\301 \302s\205\210\302\0038\217\244\341\375\331\350\217\357\333\270R\\\321\017\306\245IZ[\365\254A\306\246\033\261\310\253cbye\207\376\300;\324{\271\305o\003\354\247\273\016- 3\346\316\253\016\n\304\375?Y~v9Y\327\232\003b#\343\323\004}\004\000\024\273\247\264\365$g\351\355.)q\207~\210:\016U9\002\203\301kP\\9N\001\373\001\331\0278\342jZ\214\204\300I\353O\326\365(\346z\223?\323M\300\314{i\351\255\313g\001\331N\035\346\345Q\n-'b7,\363\035\207\016\273\260\227\245(@\334\374\203\273\251Wx\024P\367(\032s[\030\351\355.\004*\372&\3166\224o_\205\326@v1\307K$\000&#A\364\321+t\311\005+\304\220\221\0353r\270\027\360\000\036\324\276g\\\320&w w\224QlD\215i;X/\210C\300r?\363\366w\"r\205\241R\001\260\261\247^\035j\226W<&\344\353\312p \001\215\246\355g\213\346\231nd\251\005\tO\327\016\304\013\261Yp\335\223r$}\257I\217\2102C!6o\243\207_\016\304\241\340\337\371F\"\230\007l\r\020\203\201\003\263\217#\223^y\304\230B\000?\251\202\207:\356&\\\025w\370-)\334\205\360\363\261\365\300JC\332\327\350F\317,\245\362Y\353v\260 \322\241\254x\362\276(\017 \302\354#\220\004\237\3743\034\353/\215\031\024x\333\356Y\277\341A\204\212\370\223\013\271""\276\341\276d\206\202\215\367B\034d8E\016ak`G\305\243\235\333\245$\243\263oC\231\360\036\033\256e\371\rV+\t\310\200\253s\026\374v\267\367\326z:\033\010\300B\211\347\374\262l\033\2600k\311\n\034\177\277\342>\300w\237\307\340M\230+\177\322xF\034G\236\0338\261-\007\370\265\013\322J\027\0344\367\361{{\n\305\232\215s\360HyO1cW\352\265\305E\371\032\224|-\010\265\005\205\277Y\260\310d\370\340$\300\377\004]\005\342\376\304\022J\2611\263\327)t9\217w\013GX\223\370\355\035\335\300\344\002B\035j/<\220@\313\3164%Z\337\241d\232\215t\261TI@?@\363\037\366\023\340o\202{\033\0265 \363\023q~B\260\2406\303\367\3702\242\300X\202\221)\205\357\323g\305\tig\2373\021\272v\003\335\233\315y\3425kf\2640dt1]\353\234\227?\010\375(D\342E\252\364m\363\224\326\376\362\336\300\346%\364y\270[\307\267O\213}\332;\216\200\ty\374\374\266N\357\340kP7\366\255\264\010BBv\310,2! \214\363\323\366\367\3247\177>\213\222\362 \317\245\022\326\350\211\277Hu\225AF\320\267\206\213\207f\207\330:#\014\364\\\327r6\352rc\360\270p\223\035\344B\343?g\003\347B/b`\321G\023\273\"\026L.\343W\355\314!f\205W\363\214\340Z\206\326_\363\227iT=\324-e\003\307l/\375\370\004\213LmD\266\330\230h i)Xn\342\340%\330\322r7\252y\267\375Q\332>P\221\275\322\305\3475]\320 \345\2453\240\346\002\261\217\236\225'\201\023n\351Z\311_fuv\305\226\332MsS?<B{v\005!\004\372\237k\307@c\033\235\213\324\254!\245\034\310?\210is\006\203\271\3013\244\261\005\320\324\275;|\270\013\004|\353\214`:\345FM6\233\376\332X\251`z*S\212\tb\366q\216}\234]r\354\177\277q\242\200\204!\320\023\312.f\221\377\201q\315\016\303S\276\034\325\341\005\224}\\\247\034-\236\370\030^(\016\330\210U\204\254\372\rq\\\342<\244\037\252\250@l\357^\330\265\230\320\224 4M\353\334V=\223\213\374\270\023\367F(\207\\-\210\251<\260\261\246b\221w\306VEw3\364\237M)\261\316BQ8\236\303w\2261\250Mn\340\357\206\354H\272\351M\235\353U\334\357N\274\306\324E,N!\211U\214\316\005\250\025\216:z\241\301)@,\310\234\203&\225)I\307\037\006F\264:\010d1\327[\252+N\2513\224\251v\271\324IN\006\266f\203!\271\327\325""\317\246t\001O^\031\262\033\225I0\027#\355V\365\214\322\316\263\177\2220\267\r\366\323\000\035\315\320'46YUv\254Z\034\275)\243\253&\"Q!\3000\007\320Ip\t\321\214\324\216\321\232i\246\317\325\214\016J\347\017\035X\037\366w\346\303\344\272\361\330Z)\362\227`\321h\245\361\231$e\341\201\370Q\234\253\250\246\232*\027\353\273\337\257H\242\202\263\252pB+\267\221\372%4Z\207\200y\322#v!\305\246\362\000G1E\031\347\306Y\201c\316`\215\2306\020\035)\034-\251\363\020\331d\314\201T1e\321\240zF\331/M\207\"9\336\032\006\3669\254\370\363\014+\014\361\264l\017\337@\003\217p\255$\302\311\371h\016B}-w\025\247\311\274Y\342\230^\217\226*|\205:I\337\\\010H\032\200\352@V\264\r\344\210+1\307\301!\230\316\250\211\365\326x\312:\360A/Z,\022\247H\212\007C\307\336G\272\314]r\247\003\261L\360\353\207j+3\204\300>\332\237\306\r\377w\220Os\367\250\206&\322\373bT\346\307\234hUck\312\322\214\337\311\260\026\335\005!~\262\267{\256\301\353_\215\263\303c\301]#\324\rr-\336\334\361\006\"\241\273\210\340\265\220\333\232$\310\351\255\246\324\246E\001\002w\371\3413\036\257\311P\361\037\314\316K\367\364)\257X\260\003_$\330\341\364\205\004'z\371\"\260\024\230B=q\251\376G\326hx\007H5\246+T\002)\304\017j\306\002n\276\327L\030y\006i\377\353\265\233\230\303\320\310G\324\222\253\026\250\350(t;\2754}<\010Lx\245\3020\350\207L=f\316\025\325T\313P\002\354\343\314\322r\241\253\237\360OX-\360\315\014\234\220\204t\271=\213\247@\262\222\351\331\336\321w3\317\355\201+T\306\230;\304\306`\304&\250\332V+\257\210\216HjH6\245\255\233\307\353^\351*RO\354V\200s\334\351\201\302\005\320(s\005:\356A\034\233@u\272\3176\033if\243\330\306\275\337\030q`\247\341\203\350\002g\230~\002\303\0344P\324\321x\007\353Es\312\n\002DQ\277\242\342Py\372}\215\016\026]n\177\370G\271\206\346_\033\360(\220H\334\232\271\211\365O\340VW\032U\027\315Gqw\013\207s\333\3764\343+6\227\314\357\304t\020\000\"\031W\310\r\261\327IX\320w\3650\3662\3216Y\365GA\024d\250'99\2517k>I?\243L\020\356.\276\240\000-\264\376\261WGbM\304\361\t\311?V\324\327\242u.nk\266?\223T\333""\030\212\343\360rpJ\245\300@\262\345d\221`\244\213\211;r\035\036[PO\321c/?*\337\236\216\025%z\336\010&E\213\023\226}XS_\3257qiU\250\342\332!\253\375BI\035n|\037\336${\227\004\252Lu\206\202\364\314O\005\200\342\325\223|M\373\017\277wL\260\270$\332$\350\323\t\364\322\223g\271\"\254\373 \304\"\026\213\021\316\007#{\317ST\013P\351\022\034Y%\3362\023\344\255\214M\304u\377\260\010\022+R\036\262\374\027\361\2709\307gg3\n\311\327\323\007b\231\320\032V.\006>\375\177\362\200\3571r\t\010\263\360\007\222C\220\232w\010\327mw@\277&\356P\301\007\021,C\211\330P\266J\\\003g\351v\362\025-\360\206\355H#\366\014x\231\306\376\374o\233\225Y\217\360\024\002^20\215N\201\262Z~\013\330\340\032\370\201_\236\204i\257%<\212[\312Q\2565\t&\322\2320\3074\335\370\014\022\2009\357<\020M\256\275\013\005A\240\007N\321\210\340'\327W\251\256\251\351o\014ZkZ\214.b\033\003P\334zo\200\322\302\212\363\033\231\207/\362\206Zh\324\00330\212\246v\3572l\331i@\242\245\364\246\241Uph\027\037g\\i(\377NG\032\220so\255\004@?\345\t\371+\234\026\310\265\221\311D\373k<\330\000!\224\0219A\022\023\010\352I\034\344\210\365\023\310\322y\372\013\2471\207\227\n)\263\367\001\345\304\246\320\306\t\036\303\252\036r\211\221\336\001\031U0\021P\325I\3078<(T\3356Du\346\0041H\306\010I\333\"J\004a#C0\332\364\244\230\302\246\200L\370}\020\tZ\352TM\2367\2740\347t\231\014\254\3440Y\251\365_\304Yd7\001H\263}V|\212^9\241\375\267\317\201\022\234\035\234\006\\YG\"\372_L\246\t\340\326Y\234zzk2\305\373\233\2627\004\034\035R'\036\212X\236nz\335\014\006V:i\017\340\237\227D|\210q;\217\202\341H\t\333\254\021~\006'{K\020\321o\336\002\204}\305\356\220S\341\254<{\237\200\377,OxZC\214\202\201\210\220\225\025\322\341\360(a.&\354s\275\331\346\335\306u\350\227\016\034\245\212,V\312w\341\337u\247\377l\370\320\336\274\365\374R\203\353\340'\203\021=\251\342\232\036\341\264f\002\336\263\252\210\0240z[z.F\204\232>\027yP\323\024\363_\200\313@\300r\347_\326\273io\006\326\272z?1m\007\327\334:\272\003b\002\206d;\010t\026\264b`\233\312\010\251\r@\251}?/l\274j\241""\332}\273R\275#5\342\357\244\363\250\335\214)\021#\300\250\223{\366(\260\206F\253\212\337\370M\254J\212\330\177\345n\310\341\026\376\326_\341\307\330\364S\366z\215\207\305\324\321\230\302*\205\214\314\244\337\003\307\201\310\223_\266\374\254\367Q\261\345\244\254\244R\237\253\t\013\361L.\272\326\320\204!\227\316/?.\363\317\271^Lm\026h\327\335\236\315\323:\032m\353t\035xM\033\234`hjx\311v\320\375\024\207\027\362\236\000\330L\023\t\247\324:1q\"/Cu\306\322!\305\372\365\346tsj\360O\017\243\031gG\353~\335m\206\206U\316\216\316y\247,1F\261Y\243'\024\221\375*\354\t?R\202\322\220\245\010J\375\210\311\000\335z4V\357+\253\333\003V\002tI\\\323\352TM\322\232\230\245\220\026\367v\227\364\371\234FB\245,{X\3455\307\336\221\257\302\221\256\342Q`\n{|\031\031\317H\267'i>\343\340\224M\305\226i\206qL\225\026\031\347Y\336K\240\177\301\324\244\034\322\014\262\265\242C\375L\241\346g\0210Y\340\347\255\344\262\316%\332\262\322\244\371W\341\201\030.\214 H\3706^E=\272\321W\322\021\002\357\274=\226G:\320Aq4\342\252\276\ns5\244\031\240\033P\277=\016-?\026\310$\274\014+5\333\215gT\200P2\361\35564G\364%\274\260z\361\004\343\n&\006n35%,&\266\244\362{\370\022\365$\260\347\022c\233\226D\221\257\202\324\177\010\232*t\333\233Z\204\366\252\260\220O\352\346\207\332\327\n\315)\023\210\025\216\3272O\034'\022T\274\204\366D\250\220\264\220\340\205\020\303\025A\377\312\001`p\264\213\304\341\0279\221R\007A\236\365@x\263-H\252`\315\210\000\004sO\323\003\315!*\316\253&\003\022\014\201\340;\352\026\005@Y\344P\025\216:&\305\365Q\306J\203\324\364\213-\277W\351\257$\311\313\276\364\306!\240>'J\020\345\037|:+B\256\205\033r\206\210\214@%es\265>\003\246\016\222\3322\376VYT\344%\315X\223\246d\261\223\361\013SI\206c6,\206\025V\254Tqk\031\025\371G\274\000\224\350\330\273\014S9\2405\240e\356\213@\033\004\006\377\315\005\201\200\n\340\231\230\263 QOD\314\2034\003\030\315\3105\361\t\307\227r^\322r(7\036b\211{\257LB\371tQ\353\232\320h/zS)\317$\013Ym`\220\214\361\312/\005#b\303\223\037\005\206\222\305+\267\267\272\240c\205""\204\014\365\354'\205\216\020\354)\266\000j\320\330\320bKk\241\335\265j\304\353\272\337\311xf\270\252\304\370\246~\274\032\034K\316\307\2446\204\022[2\031I.\324-\313\021\352\031\003/\002\262X:\031\206\272y(\230\355\366i\347[\234q{{I\003w\2741\374\351\252\367\275\006\342\376gW\366\030\\\334\010\000\3140\262\223\215\325\024\0254\260\002L\021\275L\351f\235\376\014\262B\344\003\247\030\r-t\325d@rvi\271\356.\266\010ZK\205\323\363.\362\004\201\337\241K\353(FN\324\327e\377J\024\353\307\330?\2564\217`N\266\321a\327\234]\365\206\315`\266|\227\250\256\217\227\253\344x\311\346L\216\254\000\222%\365$\334\226\006\261dg\212\007I\334\3062\024\253\n\262\310\307\304\351\n\276\331X\364\000\035\021\026\025\202\356\203\001z\376\257\020\366**6\252]\1772\375\277\330d0hu\241t\\\\4\007B\371\322_o-[\221\000\373\201\267>\324\005\007\341a\230\345K2w\214\\L\353\252X\302\n\271\262r\3773\303\252\344H\265\t\225d\366\013\211\303\365b\211w\260\255\026>\255\347\274\304\264ID\254nlM\376\367R\260\274<|\362\037\316\372\246O\031\363\322\220\t=?/\255\315!\335\013\373\352o\373\027\305\003\237\317\362\300k\037\341\256\033\032\354?8\302\025nM\302\333\344\\\363\260\241\261\2065\312\256\r\250\001\r]\330\002 f\241G\2300\300<'a\022B\303\024g\241\372\022\r#[\035\337\374HQ\213M[\346\333yL\255\250\236M!\261^\027p\331u\360\203+\302J\264\214\036\205R\260\326\005\021\327O\257\261\331\033z\353'c\376\204\3433\r\214O\256w\337o\235\374d\313\024\347\235\305\360\214\214 \265\0339\337\t\201j\210-\356f\200\022\311>\313\017 \313\355\235\256J\272\217\212\277\305#_x\301Q*.B\017\360\347\3441Ez(\372d\374\331\377\222Q\360\032\224Q\014\177\261\333+\350\234L<\222\0358\243\307\023\241[\016+\265|\014\240\234Oc0[\246\351\256\225\337\230\271Q\354\316.\201-\231&6\257\353\346\034\305\225\023\247\260D(\245?U\313\350\031\224`y3\363\200\002\003\225\337\321\320\227\362\003l\010\307\360h\034\200\234\364%\014\355/\352O\375qDf\322\342\272[\333;\\\347\335p\004\373pm$LYw\352\376\341#\276\r\337\334\026R\335\276-\275\343+r \347\351Z\322\205MTe\241""\033\206{1$\rQ\376Dw\033\206\363^>\016\313\022\022aY\343\207\300`\274\301/\227\212\301\n\007\350\010\366\266\017\224\035\352\347\r\220\377\216\333'\\05\352Z\326\341\230\002e\037\222=\316\31492\010\337\r\323\027\226\260\213[,/W\177\026\240\252I\332\314Z3\224\241\301pu\261\024\037\014\217\013\343%m\377\006\341\304v\332\360\271{]\202\025\362\3000\257\221\024\022\302\225i4x\221v\201\373\251\353\266\377\005*\nH\260\225?\212\2571\324v>\314\007B\362\"\246\2170@*\226\034\271/lh\301\205\2170\224\371\331\037.n?\235\233\354\277\377s\242F&w\307\276\376\35684!\230\216\226\207\270\356\261)H\\\225\014\035_?`\325JGd\315T\355\242\252\272c\007\002\224VxRX\251\272P[v,cx\201\363mx\267\021U@'\t\327be\366<-\3170\345\010\330 \226d\365\335\325\343\276;\276\255k\303L8\245\361\272\213\262\r,\213\241\242\016k\211\37098H!\367u6\034\242;0P\r\305\265\021)5DQ\250\026PRA\257\256\227`\367\t}\253\313'P\025x\314\305\224\204\203\251\022\001\027\236\026y\231\002\270;\036Rq:x\255\270+\220\327-\314\\\276u\\8\363h\223R\021\261\324\246\210\202+\221\214\013k\357\370\273\253L\251\372\242\364\r\351\275\235\243#\317X\177\023\267\363\324A\267>\030L$\323\255\r\006\247\210\263V\273O\201$\007*j)\273\273\026H\030\rr6\321\265}a\322\317\225\033\230.\261\366\220p\317\006\335\032ZH\220\206\010\232\001\203\264\360\367\337eL|\357}\365\273\032\233\372\300\215\223\016\351\202J\001\264\017\301\363\340|\244\031\337\324\002\021\345S\356\257\204Z6q/RBXo[\222\320\363\n:\265\357\313\240Ry\305\345\210!1dwG\244\377\236\267`\t\004\2332\266w\033'\r'\275\264\022\017\"\364%\232\207\323\306\312\316\n\203\021\262(i\025\264JB|p\342d\272\3746\202\226\212M\017\001G\311/Z\345\202\303\263\032`\345\340q\037K\244\244\306\323ni,8\271\021t\304>UG\333%2@\352FqX6\335o \t9\370G'\265\230[FQrB\031\030J\263\304\363\026\001\231\033\234\"\010W\361\364\232=6\343\312\025]\265\346;\201\273.b^@\3551\n\036\213\335\264\207\372;Z\361@\320%\026\340\210\203&\337aC\332\2533\336\t!\245\360\\?\314\337j%\034n\013\377\025\374\310\255\317\022\363\251_\033\002\276\200""\202\323\2220\344\032\316\036\021\213\200O}3\354\n\230I\325\251{\312\030\376\303E\215\307\254\000G\246\032/\342\241\371\007\"\177\201~\321\266\224\266\243\344\270\203\002\225\023\0015\224o\367\317\242\010\362\361X\321t\205\200L\336\213\372J\233\204\td\244\272\254\335\307\350q\346HGPF\n\220L\033\371\261\266\331Y7\005O\374@\273\n\365&\023%\026%\014\214Z\327l\363\3669\223\376\363\340#\304\030(\261\330\221\241\261\274\200M\345}\361a.\026\0230.G\t\227ZK\354\203<<^\254\240\006\343\335a\250\270\321\323\343\307U\241\256J\257\304!\331\356\020\255\3572v+\255\224\212B\354}\333\225~@5!M3\3068AU<>\374\377HG\016\321\001\315Z\205\300J\240\340;X\216\363\223:y\355~>\316\327\025\203\371\013\215\244\242\260\260\357Z(b\001\007\216\323%\r\240\020\363\322\3243H\002D>\272GR\225\241Zw\013n\331ae\307\247\021(\330!\325<\331\320\326\367\371 [c\rf\253\032\343l\204B\017\034C\"\032/\251IY\271\317k\332\325\331\\\360\237\334\243Qc\273\375\002\322\303\251\372\367\243\333 \025!\245\324\254\360\227\017\020\315\247\336\206\002\244\274\337k\351O\2148\037w2z\240p\274\253\023\357\000\226\267\342\001\253^\267|E\004\366\347\010\217*Z&\272\372D>\004\030\304\351\031\261T\232?\200z+\022\257^\244\3059\227`3\370f\321\221\003\245\n2\267\212\264\r\022\315\326L\300\203\014Mmg\206\316)*bR\327\255\310O\023\031*\371\2026\240\031k\032P\226\350A\211\214\226\352\336\350{j\022\3175\024\017\235*\0177\334\355Dx\014>i)\223\320x\027\317\327$\032b\315b\377\244%\225b+\327\374\3130\026,\250\032\014\322+g\240\363\341\006\021d\234\014\034T\377\326\005\350cW?\261,D\212\000:u\357\033\030\203\244\366\371\"\362\366\0024\220\306\260y\223G\347\267\323\376\320\230\246\373R+\335\035\272EV\272D\361u\245\312\336\375\357<\375\301\345\325\026\002\006\305\\\234[a\017jeM\221\320\242\203O\211\323x^\000\203\370\317\374\303R\212Z\327j\\pq\326dF\"\002\337\257W\\\\Q\247KlQN \254@\201l\031\263\365\305I\247F\267d\034\347\210\333\205+\211~\362\374\nj~d\232\004CU\264u\333\034FsUC\302\350\213\200\257E~\026\254\207\374\317\317\014\331\246?dp6\215\333""\0132\343O\230\324p\22607\027\013h3\352\303\367U\002\031Ld\032\342\035\225\255Ui\177\241\335\231\347\206@`V\347\023L\013$\n\353\304\014F\3162\034\275_M\257\212\313\252\244.\032\237#\007\275\030o\203\024\314\242\\G/\3006]0\305\nl\350\016\322\216#V\253+\202\246\213\"\355\373A<M\251\322\237\263\017\021\023WX\016f\262G_4\334\030NTd\236.\220\340|\204\373O\310\3446C\274E&k\300\r\365n\330\027\364\3366\301|\363Ep\326\372Y\2336\241\205\023!l\362\t\023\337\205\244@\365\247\216dj\242T=+\242&\0373tC4lv\262\\el5\262\325E\021'>\327\250<gBk:5\034\205\375\223\213\262\360\303\370\303\341\352\357\345\202\201\244\265\030U\347\"\363\351Q\213\202\352\341\365\013j\"P\216\241\014\232w\007\244\340\264\315\3477\241C\310\231T\221Uv\370\025\335\333\320\367\263RI-\223\363\353\304h\0013e\203\331;\022\226\021\312Y\03045\3249:\224\375|\371\2732\255\272-\rQ\244,\353\\\217\305\326\307\323\236c\006(B\270\307\372\214t\232\204\016\026\216\344\240\307]?\017K\313\026\332\216\250\210O\353}\205!\372\376\362\211\376\302As\373 ~!i\0177\356\262\344\027\000\350\353~R'\030\355\375'\220\213\272\031\0256\035\343t\377?\247j*J\352\204\260\366\326\350\311\315W\233\341\202\2400tX\331\233\3342n3=\026\310\353\342\262\344KH\032\322S\254\363\177\272H\032w\023@\330\343j\3668\224U\260;0\2365\035W\231\017\246\205w\361\364P\235\321\306BF\272Et\313\263Y\301\364\207\000\300\014\244\347\304\327\311s\364X\030\002'B&\032b\035Y\214\037\0305\017\231\343\355O\001\310\334\350i|\277\210D\\\3226\234*\262\326jZ\270X\344\216\220\260\213\327\265\301\347\233\265\367\207&$s\327\026\023\265\202R\354\253\302p\321\276D\3206\372\234\263\367\320\250\274\302\343\307\336\305\223R\221\235\201\275\344\256\002{C#\207\317!C+\201 l$\260\340\274j\335uyb\366\006\224\017\334)\2438\034\001@\365\276\330\\3\340@\315B\206\030\266\200Q\237\231\007\031\316~\360\252\205\236\246\267\201\275\356:\362\247JL\344L\227Y\371 tK`\360\353u\rP<\220\014R\001\246\005\0339\226\343T/\216+=\233\306\1775>\274\203\354\027\010\376}\320)\243X\313\311\265\327\206\322&\034(K\035""\017\000)_\235\302e\377(\007\035\270\201\002\274\036\220\255F\036\312g~\327\022\324\250/\342>\232\026\273\001sl\376w\2274(6d\315\210$@%\301\033\022\026*&S\312\035\224\320\300\262\200o\312\334\002\356s'\221\232r8\272\024\206\2022w\230\231\222\256\340\010\265\0001\313LL\001\352\344;\261}\301h\263z\230V\261\312\211\025N\254e\211X\351\340\212\200\353\260\355*\032)\270\366\301\350Tyf\017\203\223:\337q\207\t\375zd0\2178f#D\243\315\242\201\245>\300\243]9\276J\324aU\333\364\337\271\312\325\274\200\257\226\022f%s\002\231&z\213q\357\322:Z\000%\363\220$@\254\014\237^1(\226\316?\"\344\347^\327\273\246\204\276s\311\"\265\016\000o\266\26648\325iV\203\030V\322\203\006=Ro\237V\177'\234I+\022\016\\0\025QP\365Q\350b8\033\207b)]\230\022\345\340\247\252(\255k\361\264\257\216\276\305\263\363\224\211'\372f:Zy\305\215\253\\Y|\314?\246\016\260\245&\000\";~.&$&\2359\320KBQ\221{\0304#\266\021\333\312 j\351\314e\252EgQ\016p\351\327\331!%\236\356\017\230\030\256\217/\267\225\001\321\252\241\210\325\003V\246t\022\225\223g\014\305S\264\230\3141\354\036\346\272\370\212)\314En\212\273\257.E\252\276\301\330\204\243J\031\215\302%2\341\327\243\007\364B7\351\010\200\003\211\227\230\033\254\253\375\036\344\375;\276\305&\020c\336\031S\203d\367\342_s\2669\346\005A\265\024\210\341\022\301~\010/\273\356\310\325\336\321\261\376\334\325w\227\364>\202\214Z\374\207~1\223\016SE\255\373*p\242\331\232\335y\335\333\326C\244I\001[\235O\252\230\224)\345\2603<\272\rc\3653/\245\tn\231</\353)\315\355\236\340l\254\346\226\226`m\017\305pP\315z\337\213\237\252m}\nc\254\216GcT\240\243\252\333\030\371\363S\014Z\241\\\346t\031\364\025\025\234QFm9\236=\3433\330EB\217\256\300*\340\260\364\263\2079\275\030\347e\275\252\210\231\tK}~;\031X\247\2675\314\274\372hY\2266\227\241\020\254\254iI\216\360\254s4z\2410\312\020\034^\033\014\202\261}w\274h\030\222\004\010\371,\320\331\246\n\260\027\013dw\366\251\2502\203\305c\177\306a6,\"\303\347ud/\346\313\256tcPT\n\332:\021\007n\325\3062\341k\217\234\224l\377\364BEz@\276A\300\037\002x\272""\351\031\260B\340\022_\206 \272\261\340E\266\320\356\020]\352jk?\301\037k\241\340`\346u_\\\342p\201\231\313\210\323\372\2429\253%\367;\2528\222\221J\326\024\024m\344\356\214\001\363)\037\364C\223\024\257\274\206@w\252\322\346,\312\374*\036\335m(\030\366R\204\203\312Fv\261M\310d\365\027m\350\361S)3\275\233\302\021\275\tw<\302\314\360s\263\214\342\nW\177\346\352\334\3168\361\234\031\004\271m9\245\001\364H\324\371_\3347&h|\365-\254\215n\237\353\247\026\332T\216\353\001d<\327\366\266\365M\234\334\212;\211U\364y&r9n\006\270B\377a\205\"-\263\2357l\231G\022Y\313\355\032-\265\233yFN\226\0072-CvhY\262LL\226\000\364\362\261'\233=,\237\3652\301\357_@6\213\026\272\210\224\3038\351\006,\311_\306\206\0038t\033!\221L\202@\210\\b\007F\231e\302\243\217\254\245\252\220\322\322h\n\213b\371\254)A\236\315\361nU\2637X\262J'P%g\024\230\306\332\214n\001\255\225\212\261\266\200\357\305c}p/\303\304\306\217\032\223\027\206\203\2557\213\313\300sfS\002\243g\022\020\032s\374z7.\212J\374b\354\037\023\337X\205\031\240\371f6\t\332\353\027?\331V\001\344I\013@T8\326\247\204\016\343\023g\002F\217w\373f\346\022ARV\317\031\370H\025\261\"\016\033\\i\030\355\373*=7\237\267v\016\\\311\224\354\201\233#\322\232^\206Z\357\353_G\017\232X\203NW\222<\\P\036\205\301\223\037Rj.\250,4e|F\354U\307\256\206\317%\267\330\315v\217\017\255\254A|\211\0231(\330\304\003\363H\t\207\245\325\373Qn\235\274{C\3577\310[\331n\327*\335\310\221\351\010\377I)\313_j\307\361\244\217\341`\363\002\300\246\020\243\311\355\334;\004m\036\306\253\342E\203}0\223SS\344(\024\344c\223\250\257\006%r\307\336\273G\233\204\332Q\032C'B\261\330\344mr\036@\357\342\026\236|\353\315\004\265\353Z\367\241%\275P\023\331\211\371\254\303,\302\337p\035n \210\256\311\315\310s\375T\375\275\326t\312\0075_\037\211\027\363m\204\326F!\252<\306\321\027\307\314\351\367\367E\252\275B\217&\244W\031v\020\256\332y\263P\317\231\330k\203\333\"\025d\037\245t\230\312A\251\344\2415k\027\300\342\007\371\0108\242\274mJ\220\030Tv\200L\256\346.\304\203T8clS~a\205\r\326\2244\270~l|""i\244\221[i\026\264\260\211\362\224o\333\203\r\262[\350\367\234\235\356\227-Z\005Do\247a\303=\220vK\371\275\037\337B\000\004*\212*\255\0051\032\022S\357c\004\207\252\234\035\304\030\2369.b\332\277\243\213\273\270\376\256\032V@\273\375H=\215\325)\347\023\277\242\363\014Y5\215\215\022\010\230.\202\274\253\366Y\031!\337\334\"\000{\324\241F\033K\007\227n\213`\304\275D\010$\304U\247\316\220\276\376\320\272\251\215^\320L\241\237\267\2351\216io\275C\324\345\275\013\263\325\305\264\273\371\317]ck\357Q\007\014~0=\251H\344\221ei\233\232c\305\247\234\026\365\346I\334\221\205;K\323\231\322\024\016\264)\235\334\372\254\017#\206\336\344\357\264m\255\366M\302P\342\241\346-\266\237H\231\360\354B\031\321\253\005\256>>\324R\365\337\246\365\025\220\227l\335\321\322\212it\237\320\270\262.2\341\017\362\311b\375\272\304ARJdd\262\326^6\263\235\360%\227\202\216FL\266h\335\034\\V\250+\037O\321^f9\021\210\206[\000-\250\355k\254\r7\310\317G\377T\340@\203b\210Q\252\340t\277c6\266Q\235\360\324>a\264?\263\276%\020_\364\013C\206\010*/!\245S,Rw\313\266NIhZ\276\220\307\233\026\025vq\232\ro\350L\374wQ\300\203?\0042 \355\024\362\373\344\033D\205\2308\035\311\013R L\331j\234\263\315\377[\2760\217\247\223\242:\241\247\316\202*\304vIeO\217\216\255\374qD\216\225q\363v\310\223\230XQJS\370\262\022\013;\212E\205\263t\331),(\275D\252\r@-R\310\217\"\243j\343\214\340\255\250\2432\231aaZ{\267g`MK\0317\3504\005@\372Q\235\017-\r>\024\271Y\332A\221\266\025\212\005\033E\336\351A=\320\225M\032\243\016I\375z\306l\305\032\t\266\010Q\217\360\340C\275\354\221\254k\264\343\343_\354l~\006Dt\362\r\340zUb8%d\325H\214\337\021\272\276y]\205\261a\355\265\212\037\324\234*6hKwW*8v\036\264\346\265\345\223\2414\213\246A\226B\253q\310\313\377\245\366\345\276]\005\337\210\274\260\362\202;\203|\362\356{\304\177\202Q\342\361\220\375\205$\000\302\034\333\344kF(&\315@\n\241\244p\205Q*=<6\273\237\250I7\010J5x\307\205\3605\337\247\212\257\270-\343\222\tCS=\033d\"\377L\234\022\333\367(HZ\221\215H'\300H/\365\036\304\"&\201G\340|\356\377""\277\302\022[\351%\205\203\277i\214\377\352e\030\201g\266q\3328R\221\260S&\375\311\024\022\223^\300\341#\250S\350\265S)\274V\375\350\221F\215\253\224s\003q\372h\255\036[(\037X\3410\350\010\232z\273\216\r\233/\357\265\276(\217\230k\334p\3159\333_\346\027\227\306\333\317\221\255c\233\210*0\371\003";
    PyObject *data = __Pyx_DecompressString(cstring, 14070, 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 (13167 bytes) */
const char* const cstring = "BZh91AY&SY\332\304L}\000\r\221\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\300@@@@@@@@@@@@\000@\000`<\021\336\361\276E\313\025A\\\265D\003\337ld\000\304\006\363\330\036\201n\234w\030\0006.\353j\005\313S\325;9\017LiEJ\363\313\256\312\362\310\263\273\027c\"\323\014e\t;-\323\263h\353\"\326\266\310\211$6\325\r\335\315<s\002]\246\255\262\207\247\017mW\255\253\333\206\2757]\267q\300v\305 \001\350\220HQ@\240\000\017\244\036\230\003\275\215\000\301$\210M\032\031\0312h\t\240\323L\200\010h&\247\2014i\352eM\351=MOS\321='\265M\006\324b\036\246 z\236\247\251\351\000\r4\004\010@\2105MG\372E6\223\031OI\2652\003'\250\362\236\240<\241\372\2404\003@\320=F\206\215\000\000\320\001\246 \221$\246L\243\rM=OD=FM\014\203C\324\364\236\232O)\264M=OS\301\230\230\246&)\372\010\232\232z\236$\304\032mC\010$\324D!4\233M\023Q\201F\247\246I\246\324x\230SO(\375\"z\214\324\332\230\200\014\236\243C 4\032h\000h\000\001\241\010\2116\246M= d\323&\230\232zM\007\250z\023\323 \236\203Q\355\nm\240\3256\232\200\033\324L\006\223\324\3204\r2h\t\022\010\000A\002d\304\305\030L\223$~\212z\236\231'\244=2F\231\001\240\006\200\000\000\003@h\003\377\207\220w\367z\331\343\325\035\271Y\303\026\216\251\336\036\025\211|K\303\261\225\331}\247S\225Q\257o>\213\010\326<K/\262\353\313\357\347\226-\246F\332\024@\344\321\201!\260x\316\276J\342+>L\355\n6^VN\262\2701rp\033\210\206\006\304Qk\225 \022-\024\317\276\245\364\321\210\211\276\232YG\376D\273\240n\223\207\316\356\243\354\"@\244\232\343\366\026\\\034G\373>\023\341\342E\031\250\200X\"\n \010(\021,\020`/\340\343U\341\310\374\351T\215U\320\321\300,\\U\t\007R\014\310\0064\200\234\300\324\0342-\314\243-+h\313bNH\324\014\301`\214\323s\231\250\254#\016\205i\010>\267\350\273\221\241\276\242=\215d\001\2200@\310\003\007\001\303\375\377L\177\362\244\202#\030\244Y;\2450\244\337$\336\006\370\033\3447\240\311\006\0248\241l\273\213\204M\001rW+\213\217B\001T*\205T\025\025K\000(\250\205@\240\024\250 \305#&&6\232MFB\013\001AT\220U\210\214I\026E\024@X\311\026*\200""\"*\210\251$X\244QdY\021\024\222,\005\"\202\212H\",\207\250W\033\313\357\013\357\276\003l\357\030\222\025\202,\n\026\026\006K\244Y\244\006\026\311\226\016h\320\020\203\004\311\356N\347W\256\334\0210B?\241\221\236\371\357r\030\026\262\010\300\202\273\020a\231\231\203g\337x\273%J\033\024\014\035\253\033\026X\350\3008\031\276\177\220\312;\\\233\213o\306\tu\000\357\357>P\362\236\240\250{\002C\032\0016\r\244\237\225\026\333l\351\300\364\3117@\365\006E\200\262,\200\212\250E\"\301I\005\002,\221Qb,Y\"1F *\301I\"\213\010\244PU\005\221`*\310.\360b!\2205\200%PV\r\t\264\233B\006\300<\353\034\017W\252\312\233o\214R\ny\0101\221\212\217\003\361MM@R\032\311c\031\201\206\253\032\205\010\032Y\245\200\213\350_x\"\333}2\371\204\214\222\264\223c\004>\016\202RDQPR+\021\214\"\221\024Dc\311\224+U\016\367:\300*#\357\020\352$\352\340u\244X\221\001TEd\202\210\310()\021\220Ed\212\252(*\310\242\3642\232\350\207\025`\306,yT\3357\223\211E\n\210\310\262\206B\230e?(6\220\337\005SH\273m\306\370z\310\214oi``J1\203t\200\334+\355\004\\\000v\\\003\201\331%\303]\t\205u\247R\333\033\263T\367\263Q\243\\\270\315+u\nAbP\204H!\003\374\2558$\013\275\234\311F\032\020B\001\003\226b\032\032\232ha\025)\260\204\266\031\r\000BQv\251\274v\223\221\327\327\331\314\347'Q\021\210\035\014\020\252Y\314JT\032m\261\231\342,\214\305\242\330\257\326H\315\031\215\240\340\263m*#\026\305\004:FDC\250jD\212\212\300\270\220\241\021lmh\321\004\210A\242\r\020h\267\032\201\256\245\211\037P\336\203c\225\202\311\024Q\030\250\"\305Y\021\213\005\"\201\326\3239\035g84\034\215\302\242%\2250\300\344,p\224'sh$X\026\374=\267\330C\260\235\201;\010\035\223\260;\265\3359r\030\314\020\320\323\036\343v\314\263v\333\267F\340\334\001\271n\335_\251\3005\320Y\344\371QbYh\230\334\032\303\032\201\260$Cph\226\211\032-\026\207\023\361R\320Z\003l`\333f9\340\226\231\301\233\206\255\330\345\244\321'B\"J \034\004\242J!@\333\3245F\241\252\327\226\266!\217^F\332M\244\306\006\317S@\324y\332i)qg\327\\\264\226,u\226\355\301\261\267\033\371\336\355\205\226\343w&\232""\350(`\36726q-\003Dh\212~78g\220\261\305$^\213\006\233!\230\230\220\202[\322\337\217'\330K\0006\277\021\365`\332\346\312R\010M\214X.}\344\264\334\030\253\360[\341\272\337\270\351\205IF8\361\277K\252X\310\351\035\327\0246\240\005\024\341l\tM\000AUW7\276\204_\277\267\205_\024\031\324Z\205\316J\344\267\305\333B\334a\013GSo\016o\006\316`\331\017?O7{\362w\277/\203\370\354\310\271\317\244\377\006|\\~\310\271\032\370\251p|\007\037\271'?\247)\310aC(\346\301\246\260\225-\210\262\241ZY\330+*j~\373\314\351j\363\373\207\371?\005Z\253\266\255\266\300\177w\313\345a\347\277\356x\370\370\370\370\327\217\217\216\261\244\316s\350\316s\234\357\255g9\326\332\326\265\254\363\340\375E\367\333\2168\343}\367\337\236\373\343\030\3061\214q\214c\030\3061\214c\030\3063\214c\030\3061\214g\030\3061\214c\030\3061\214\342\325\253Um{\235\365c+\033\324\305Ji\254\236x\017F\210\242\260\217\201D\343\354\243\023\277\342\316\253\005\313\320zI\262\236\233\006\234\030\013$&\265\356E\213:a\207z\033\274w\025\214\023\\\221\265\026`\273\016W\226\030\271\353\353<\271}\265\332\224\337\247\3732m\313\311\206<8\327!\\_\222r\200\366[\202\227\331\255h\004\341R\263k\333\022\033N\263\354\306\020_\246[\267\302\276\314\017S\216x\235\333\202,F\343\316+\233Y\202\356\330\342\353\201\316\332\024\227q\363\021\250\020'kf\313\365`\r\303\252&!\\\2002\321\260\023\323w\032<\\6\347w!P\340\363b\303\363\366[|\331\\ \300\3645\3537\267\202\351\275N\013]\372v\361h\r\307\001\2722}c\340}~\203\204\330[?`\205\244\337\310\274\027\365-\313\272\360\034?8\353j\024\373'\326\273M\327X\021\313\232\327\252;\201BP\353\303\033\317a\263'PypW\321\355Zw\253Y\261z$\223\242\237\034q6\203\362j\254\326a\230\365xN\327\374\3554\352\017\213\256,\022\251\327\333\363\200\337a\302\220\243\302\350\367$\330\205\355\324v\035\247\351H\241\222\035\267\0071\210y\236\272\226\020\303\232\270\2343]|\r\372K$\002\234\360\227k\207\n\242\037vt\337\313\333\262\273\237V\335GD\333\000hW\236\372\322WS\356\270\235\333\211c\201\300\221\211i\r\330@u\227c.\244s\363J\375o\236\323\244""\315\263\250N?~\322\272\032j9\010\356w?C/\312\022\265\251xA\252\231w>\365\243\265\341\000\355\207'.4\246Wnle\252e\263\221l\316\217\035% .\360\355\273\326\263\346\"\311K\347(\272\035\243p\217\277/@\033%t\234c>\273\347\266\205\2138\"\336\301\271L\002\235\345\007\232\326\n-P\035\264\300\206\363\356\226\265m\214*%\206e\363\037\033\014:c\274rvR\247\213\352.\333\340P\201\344Qq1\325\000\275\241\320G:\305m2\376\275\006-^\007\021[\326\037\276\265\342F\327Q\254\205,/\0375]\030\366\236\037\003O\022\341B\220g\253%\032\262vk\247\177\177>\234\022M\310\221i\"\354\373\227U\230\315\223(\305\016\375\006\000\247\220\027!\326\325j\020\327\205\030\032\357\341\206\026yz\270\253\347\275\003\006{\342u\005\341\230\010,B\310\014\235\272(\337\335\367=$\017w\336\366\377\017\322\307\253\315\360\275\316I0\201z\276[?\0004\235\214\377\314\343\342?\013\244\022]\202W\013\253\344]_\024x\261sS2\006\001.B\027HP\243\201\"\025\303\014A\246Z\022\250\021J\025\020\362Zp\313\"H\251\230\232\"\245\310\252\272\0236\264(\351\240\255\031\253~\240z\336A\363y~G\213\361\014\036\274\263\335\263\375\245X\247 \316\353\r\305\372P\344\302\365\274{\323\3510-\323;gc9X\030V,V\304{\r\317\236\330\037\210\366\335\267m\005\264[-\206i&\002D\264~2M\322D)\001H\211\010\376g\337\021\243\020\343\276\014\325\234\217\3776[M\206t\255\204\367\311\307R\334$\017\342\300+\350(U\004\222\005\242Dq[\262\200\251Z\277\343\247\177Px_\321\3708q+\030\273\275\253\031\021\366\366\371}\277b\373\241\373\254\363t\315\177\311r\246\360\301\017*\334!:z\266'\203\272\234{YC\001\354\366\272\304\221\022\262\201\206m\246\031\235\210r\035\311\261 \330\216p\340\360k\rb\327\336?\247\032/\034MH\210\337\273r(9\376\240Is\204\302\326U9D\245\037j\nsG\205\024\352@\277\206\224\251\005\313\315\357W\205\260\206\022\253\234\367\307w*\203\263\345\037\014\357\035\t\336\21680>=t\221y\276\316x\240\317#+\262{.M\256\001\3238\331\226+0H\241\312\205\225\037G\2231\231\371\021\221i\360\016\361\233\277\314Q\370\364\347\317\021\216\305\360\013\351x\367\217!\302_W\267fk\231\322\326q""\376\242FkU\255\237!\276\027C\037\303\272K\347\233pM\3416x\277&\316\003\244\366\376.\205&\226\"iQ`\177\020\361\3209\230\0173/_E\224B0\277e\215\267\255\375\360\372\214\375\355\254\307.}K\257E\357y\245]{6\333\310\344S\317\353Y2\277ihyY\261S\177\252,\266\030\350\035\240\266|@\341\317t4r\341g\032\331B\321w\204\373\326\323\030\333\373a\270\375\036\2100?\342R\374\306\276\335?ZH\244D?S\275\356\035\235Mu\331\317\257\221/\264Tv(\246\222\206W\216\356\322)\260\307\324\r82\230\342\331\212#\326\203\343x\224\033uG\352r\251\255\230\n\356\315Ey\022\202\275x%t5%\031\276\275\266\320\301\320\361mA\024QE\214EUi(\306n\361\251\341\367\3769\367O\273\356\372\337\203\352y\337\021\362\371\372\345\355T{j\301\005\217\257\210\344:E1\3077\016\\\273/k\340\327\233\206\325\210\254\217m\244\3479Z_\265\017h=\236X:?G\226\367\236n\233\220GrY\346\236y\3702\332(-\2374\236\330 \032\033\256}\330#\262\272\234\377?\253\323d\340\205\314\2311\276\313\034sc\346\367z|\253\241\233y\267\236\235\342p\346\031$\311\"b\t\244\036\217\207\315\362\001\356\213\320\027\230\027\274(\3111\341d\260\231FNrn\025\213pf\240\301\016\336\202\313\226\023qD\034F\n\222\300\023X\030 \2148$\336$\215-d\207\200XY!\240\355\351\350i\2236Md\023\r\312\032\004)\253S0\225\202k\034M2\244\311Hy\336U\031\363?{{{\177N\235\334\235\375:\007\300\264\272T@\311\223d`\321\343hf-\007GK\367 ;\257m\315\243\020dK=\336\346\215\256\234\320\347\271\237>|\371\363\3759mq3r;\240\364\216\002\346x\320aK\n\026\021\006\225Z\354\355\366t\213\"\271^)qb\305\213\026*\034\306\240\306\2555\2679\326\330\340q\003\324Hd\035\315\267Gm\032\242B\364\267\374\303\013\267\337\006\234\311$fHY\204\263 3\010\304\215\356>E\035w\355\323N\\\271pe\313\202\311\226KL\203l\202\025\025\324\251\022T\200R*t{\371\352\271\202\\\0300`\301z\232m#\221\034nF\033\224\201H\225)\024\210\244_\273&JK\024[\222\232i\246\232i\246\310\211\305lJt)\3477\177w\026\003\004v\247\236z(\242\212(\304\330$Dl\314\035\274\333{u\205\344\025\225\252\305\214\251\005F\335\3148p\336\303\207\016\032B\312\013\rT\350\235\004\351N""\224\3500\364\224\024.\245[{\336]n{~\201\3152s\334A\350|!\375\t\201\335\256N\205B(T*\016\243y\211\347\325\030F\224b\215*\273-G\034\377\207b\275\225\231*n\335WK\267M\223\027n$V\231 f8U\317\001q\231\211~<v\";\037U\341^\013\305\3454\036\031\222Ai/\252\330=$\035\364\220xv4\365+J\357\273\376\336\371\245\332\305\364~\265\373\322>\337\324\003\317\327\r\3723\337N\271vZ\335\017W\275\"HJ\004\005\004\005\022(\227gr\365\252Y:T\177\317(\2319\010\001E@\235S\220\321\323\r\2331`4$^H3u8-\001\201Qj\221\030\230\273\022\024\314\t\205V\200ZV\255\214*\3028\002#T#kb\214\242\364\3576\031\026\356\265A\226a\030&\310\026\320\r\202*\304\255a\316\214=O\360\343\352\303R\304/2\026\013\001{\376o\354\376m\314;\t\337 \251\024dQ{\276p\030>W\334\236\000\333\177\203\363\323\203\211|\276$_E\360\277\210\257\257\374%\277K\016\372\000Z\030I\201\237\366\365\374\005\346\031\034\363qA\347\342\367)\305\036\303\363S\343}\217c\341\371\230\r\227f\365\275\253\355{m\0343\246\332G\315\346\277\273q\235\206\001\260\233\316\010\305\301\273.\336\320\016\324\035\240v\244v\244\177g\277\304\266\2719R\240c\324\233\344\204Hn\t\342N\234\245\260\214N\0018\004\340o[\3171\250\275-\010\030\007\372\236\304K\250\201\032fj\210Y%\222FI\027\021pXW\371U\323H+B\350\243(\331\330\303\371\334L\2210\004\311L\246\t\203\014;#\272\2679\244H\210\220$\262O\307\265\234\014\177}I\020e\207\356G\035\356O\036\255\351\300''\236\264Vx\242\005\022\200\354\3214)\020\220\330\370\311l\330\312\007\357A\367\262;\334\316-\253`\246S\027K\277\337\320\322\243\177^\226U7>\377\232\247j\364Z}\2136\334@2\210\311r{\301?*V1Y\267\037\274\372\333\300\347\037{9\214\255\365\034\323\337\201\332\255\002\326\2215\226\337\365p\344\236\213k\3633\014\346\307d\255a\345\376\337\2123\037e\250\326\3669\030\203\004}}\330\273E\017\206\300\320\013\202\367\263\304\3630\220) \007\334\tQ\005\005\274^\271Q*\007S\243\255\2723\224\\\014\207H\220\211T\377\217,]\305\020\001\312\332d\tm4\t\004\346\262q\324\202\213\234t\2121&\213\014kU\222\030\244,\"\3457\024\244P\244B\212B\356\336\221\263\311-"">5\350\366\274\3144\307%\210t}\324\331\227}t\350\3060\032s8t\323\201~\210\262`\316QO\327\013\344\244\245*B\222\261bX\372mF\273r\357$$p\343\306Q\307\214\302\323\323\312\202\003\311\335\360|^hq\004Cq\016\257&,H1%\211\006!bF\341\371\353]\345\315z\245?\323\337\320\373\354\257\027\220^AyLh\340\371\243\021t\355\266\203\025\344\274\350\345\231\233\255g\264Y\031\205:Y,X\332f\207\317+\351>\365\255NHi\367^\032\r\215\025,\220j\035\200$hy\220y\200\036`\253\005\241\030\214Gog\007F\216[\275\003\222\310\022\312\224\250\225\022\201,\271\315<\356\017\2202\231L\240\316r\023<|\"\367\370E\305\305\320]7\267\327\027\270\325\305\305\300\276\337\221\365\347\312ny\360\356\372>\037\256)IIy\277i\004\004\027\217/\317\374\347\267\232\355p:+H#\302\342\323\365$\036\216\n\036\230z=\000\314\314\372Mn\\l\216\216\215\231q9\210@\347\245\3205\306\220\223\311k\311\3528\213\341\365~\241\334:\002\007\325\206m<2\223\231G\314\221U\352\260\031\010\201\226U}5N\260\n\267[+9\003\347M\211.\352I\030\366\360*\323Y\257-\225\325o\337\017\006H\315\336\346\304\354T\360Vi\007\325\"\344C\367\2367\311 \363~\r1\333\r\332\343yc\310\\\314\345h\226\324\2119g\"r\260\244\213\324\200c\335\033\265\266\315\220j\210\264\001\336od\261\\\030\213\"\023\342/\325r\332\226k<\301\263\363)\222ynaI~\221\330\021\312\367\017\3246``*\214\004n|ca2\016\003j\020t:\333L\t\275\005MS\367@\334\267B\025)G%7P\222\256\333\3728\335\231\232v\342\337\005\327\371\216\340\267^\005\257\264\202\350\347\216j$\207N\322\301\253\2019\2000@\033\211mj\000\030\034\013\264\n\367\312\306\304w\310\020\365dq%\363U\202:Zh\256K\243\3017V-\352\311\213\315\025\264\241\007\245\\\027U\036\345\007\025^A\345\370:A$p1\275\256\031pVO\177;|gN\360n/\311Q\033:\2646\250\320AE\023\211\357\021\035\200\306\031^\301\325B\033\256\314\342\341\341\205y\002y\363\364\356\341uwiv<\373,\226\223\331\363a\261Fb\344\355\233\032\2730\223#\031\334\205F\207\216$\247px\261\306\324\360\360\372\341\256\354N\237\237\270>\255\201\356\200\303Y\372\377za\357\315\034\033ci1\017\2210\366\344H\357\206\3274_""\244\317\333\220<\376\322\232(\030\311\tH\202)A\335D\223\034<zo#\231\007/\362\261\376]\265\251\222%\335\266\035.\226\025\315#&F\352T|\230\024[\335\320\0247\0366\303\330)\275CB\030\005x\325\332\311\222\353\231\212V.7\nF\271~\377I*~FC\335\265\004H\305A`p\234\326\035\001\316\"\027\314\322\014TA\336\017\205\376\313\311\235#\203\324D\221\264.\337$\nH\363\242\231\013\010p\370\336\200\352a\310\005\013\255|\271\202\346\227\236\010\303\251t\260\347vs\004\272\030KT\036ee\226YY\006-\336\213h\311\001|L\275*\r6\210\2501\002E\022I\251U48\354h\035~\215O\027$\3617\016\314%\333\211{Y5\315\010\322\024\260/E\033@\030k\307\r\367$ o\211!\331\320*\033\347o=\245\316\351\270w;\211*\270c\216](\250\320\224<\230\034\200\237\000@\026$\225\001M(B\033\247[:\354\336\230i>\331[\314\342\330\035\366n\206\276f\2219Z~\340J1\024\321.Ni\\O\000\030\2139\315<\225\003\007m\002\003\232EDY\276\271\006dY\272\220\360\307\003\201T\225\r\027\273\271\241L\021$\024\246\251\035\276\377q\207u\273\316\347\220@\335\t@\200\031\350\005\002\005\000(E\345\365\236\"\"1\254y\275\367E\002\216\315\215\256\006\345\211R\202L\374\251\314$\320 \332\nBP\212\005\247cJn\335\300t\202V\354^\2320\320%\013\311\201$I\262\253\313\217\340\371\203\367\271\032\010\n\020\331\204\214\354\224\035\020\217\010\270\340\315i\320\001\272\221\033\002IB\025\221\344r\017c\337\363\322\227\327\323\207\261C\2638\331\226i\244^\253D h\222\016\376\332>\010\365DA;\226\266\264f2\254h\310\226`\312\250\337#\224S=\310k\275\177,\020\212\365\373\240D\023D\250\237e\262\345*r?\001%\004\365N\350h\\\372\277};\322k\006):\262\306\347\317\250L\227KYM\211\030e\342\351\270\361\264\032\344\302\331\304\345\352\301w\354\3071^\325\327\245&\014\360%\026S?%V\324\230N\350\250\247\263\304\230\327\\\337L\340\360\207\261G\205\271\272-E\235\273\2738V\266Q\023\211\2167\320\036\367*\001\020M\302\277\274e\271a\2116\263\200\333\0100\311\3350R[\205\273$\272\253\221~\032`\320\353Ku\301\003\274\217\2674\2370\243\310\\z\341\326rx\224o:\210\322\213\261\244\343\273\237\331\323\372\344\013\034""\225,Q\331M\203\t\221LW\244r5\"Hd\211K\242f6n\245\302\360H\360\017\000\360\017\016[2d\350M\375=\245\205\214\230Ar\302\243%%*\\\361\325ix\014\346a\2323\021\305J\013(\354\260)249\242T\352j\334\222 r\n\234\252\"n}H\373?J\200\034\020\254\303\207\262\364\303.\353C\256p,\333u\322]w\337oO\217\350\231g\246\270Ii\"d\270\210\206\024\234\207#\247J\033#\262\376\335i*\326\373\202\027a\317m)H\207\234[%\016dvf\035\340\274\033\030\211\344S\252\231!\266\371\024R\331;{\330\341\016\003\3616\374^Z\325\333\254\277\007O^\352\027\206\212\311c\005\2344G.]\350\250\232x\233\335\211\3241\312\014\001\340\226\270\271\363\020\2269\233\330\347\271\331\003\3343D\314\207{I\262`\374\350\307\2076\245_\034\271\"\344\243\237u\227\016\224\264\2404\240\322\221\245r\227z\231M\264R\376G\005\370\030\207\320\251\332Nf\365\321\324^{\2050\241\307\022\313\271\n\364\262\334\245\001'\204[\022^\t\205\256\260\272\021\"j\331\030{\2764\354Y\340\213\243\246\234a\242\345X\335\3652 \355|\314d\231\034\006\263\"\207\006\346\303\003s\241\002\341\204\244\303\214\013P\230\014\207,\016\006\357\354\r\257kf\267g\204Qjs0\313X\262\320\310\240\205qw\242\323P\246hsW\215g\224@\016\307'\210\342\310\230\313\033m\320VHpM\314\201N\246\331\216\233\231x3\266\034K\302\014\302\222\312(S\261&D\257\317\306\252\366\024\n\003L\351\274@\331\251\352\025i\202\221\240\344\005*4\353*\026V\n\233\275\357\240\302\220\332\326,\317\201\362\261f\004[W9\210\3016\346-a\003eqP8\276\366\250\302\3414\2463\037\226B\322\370\226b\207D\013\341/,\236\245*\324\274\361x9N\305 \344\264\317k\005\010r{\335Fg8.\177\364*H\205\265\235\226\324h\3467\360\344\211\210\321\252\2738\270\324\320\253\355\r\020\205\305\326l\240X\301\312\225\301\261j`\313\270\342\215\n-\232\203g\266h\336\251\321\001\364\213\353\273$\3120\032\276UG \243\261\220@C\247f7]\320\024\303l'\2516H\347l\212+\330\365\021\2358%\325QGV\"g\263\237\261\226K+w\211\336D\004\033\336>\013jj[\366\226\0201\214\263t\234\033\256\261Ms\251\327\3359z\367\246\261\235\352\320/\244\215\274\"\017\3501\243w\276\2076^\2215\343e""\270]q\236u\267)y\361\240\026\271\023\277\023\306?\241N\036+n|\374\275\034r\216\tg`\334Y\n\331\325\0100\332\006T\234\202c\253\244\2419\352\343i\351\356*\310Q\037\311\013\240,\257\211\000N\305\001\343u\014\224\310\254\n\"e\010'^\255R\370T\204\336\314\303$k\215\237\007\236\377/\264\255U\367#\312\245\020lPu\017\255\370\022\353\344\322\261\006\271C\200\3462!Qv\t\030\345{\001A\336\356\022P\224\272\246s\r\000\211(\007R\312\247\271X\332\204B\342\005\351v\210F\266\263\277l\030\316\366\265\200\326\332I\223b\215\311\215LU\351\320}\244\210 \001\260\037=\202%\035\221\024\220Pc\004`\243$x\274\006\305\034\004\324\253\032\314\270\205mp0\252\262tWAd\244\033\205\331\274,\277;\213b\363b\250\255\333\360\326\314\325\243\2530\225\3277\302\022\3426\257\211\267.j\026\200\367Y9R\222\343\332\"3~\225\355#\320\276\037\022\274\316\005\204u\026\212\305=\273\304\345\327p\357\227>\366\352}t\017\257\244\375_B\241\346\3173\030\224\302\370\206>\203\230\2514\211\327\320\217\212\220*L\353\337zr\204@pH\260\253\370\236\277\006R<pq\340\373\347\345\276\300]\226\331(\006\235]7\363\275\246C0a\203\014/\276W2\330\207})@\277O\207\036Y\252\244\213\242\024\330\257E\303W\310\211\270(\303\ne\210w#;l\035k\206}\207\276\035\240{\351y\027\275\250\217\033\022\202\204PP\233 x\206O\032Ka\302\003UA\214\024\031z\271\314\262\264\300\347\035\274\261\\\261nZa\357%h\007\270\2322\0301\007\013\251\212\206\262D3\347j\222u\254\320M\202\353i}8\252%?.\313\343\355\367l\r\017U\233M\355\327\251\253 \224\031\034\023ZDM\2331H\232\216\221\035)dA\2202x\016\034\270\377.a\017\006\006a3%|]\321\201\351\231,\002\303\351v\322w1\220\252\005\332L\200\374\212\253@\372hE\332\023\332\244\037\214\245\225m\t\303P\2734f\2112!\006$\362\355\255\3405\"u!IM4\355(\225\177\301\352\327>T\201-\244\026,jC\245\320\370\270\357\275=\0000\233\364\t\334\302\031\336\005\335\310\226E~\253\021sS\025\322!W\233\332'\353\024\243b\006t\032.\202\254qhV\331\023\350\352lR\223\303\004\016r\006\301@\227\346\253\356\007\252$\005\355*\260\201]\"\325\255\307\270\263\024\230\275""\221\253\230\202\275\304}44\217k\002\020XT\200Wr\031\206m\205\017\001\210m\005\031f\026\"H\212\244\230\223\274T\r\320I\204X\240\\\242$\313y7\002\006y\2337\226U~\345\2561F\2525\331\372\201=\273\267\212\032d\337\271DJ\215\300\244\273\307\321%\344\334\344\022\232*&\0042yJ\007G\0139)I\027\262\346\262\267ut\002\303\333\350\220\367\"\340\244\311\003\035hH\272.\035L\025\020U\000G\203%\002#\021\221g\272\020\214\322\272E3\346\023\303W\263\033m\001\010\351\3035\217\232v\267>;\356\226\265\250e \322N^uJ\327\343\031\036\354Xh\364n\"\322\3339t\303'\037XWH\007,\022\3308\307.x\306\364\005\233\212\235\330\023f\320E\204\203\232\371b\221W\322l\241s\301\310a\210\331\016aa\330\226\300\330\266\0079\240\n'\313\304\026D\213%\307\324\317vf\366\022J \341\004\np^H\240\3277\210\356\343oU\324VE\327\027%\323%\013\355\267f\rC\0060\202S\350\272\223\362\371\363\346s\204\356;\247\263\331;\303\021\211\335*\221\243u\3018\343\0210\024$Y\332O\017\031}\362\370\013\016\221\376!\300,\013\347E\330\244{y\004\017\255#'D\320\330\306\273Z\207#\266\021\004\241\r\200\225\303C\036\256\013\3310\306\363\237\341\316\323p\354\032\206\321,\\\n.\264\r\017\023\353Q\027/\034N\250%f%<\375\346\301\304\024H\301\030\304\"\233J\343\310\305\331\306\257\256\001p\303a\315\"\330\362G\234\376\242X\272\347\024vD\244d\267A?\271\206\240\236\350\367\330\036c}=\3773\301\347jw \260@\020\330\251\346\033\"\037Y\243\024\024\035\340\307\243>\263\265*t\206\306r\220\"\251\026\251+\313\322\204\312\262\230q\2575\221\331!M\020\324\022\201|o\220\335\222\001\300\030y\363c\215oO&(\227V\244j5-G\014\352f7\\8f\264\023\217C\204\314\316N~6\220\245CL\222:\331=\255\353\257_%\203\260\236\3703\223\265Ed\001\0010\200\315\245\316\363]\320\301\336<\\\267\343\2214\021\210\242\254\210\301\220X\210,\026,R^\320_W\206\354\347j\326\02061\304\357!yXoU\313\242\027\300\213\221L\333\276\333E\255*\225\0325\315@I\273#\351[\301\253k\224I\2305\254\212\005\330`f\r\001&b\206\222(+\311\201\360\320&\321y\n\033vE7\304\344wa\301\311\240\357b\216N>N\243\253\323\236\344g\020\016""\005:R\254kS\030\302`h\262U\333Q\224\rZ\325z\327e\264\342\362\340[\335p\264-2\302\322\030L2\330\271*\356R)\034\265\005m(F\334K>\024\013\226\361:\272\312\034\3178hl\203G\311/\207\230\254\264\347\262\216t\352\"\265\254\355\276\330\360\352E\301\221BZO\237\334\031\333z;|W\\\321\233\\8olll/\007\213L\332\336@\225\207,\367y\3318\357\257\222\315\333\227Xi\322Sf\374\335\010\301\004J\252\002\223H\027\006\225\013\006\002\2355Y\243\351i\r3\214\200'>\3754-\327\366\372v\272\270^\257\177F\233\367b\225\330\307\267\357H\222!\204U\370[\275\240\246\257\274yO5\036\250\022\201\210K\235\206\310\220\310]\214\n\215\034\210\362S\210O\303\247\235\246\271\3277`0\327\025%\210\244\r\320\230&<\276Mo\273\205\020;\322\331i\344\333M\270d\206\204\021EY\0060N\3327\260\341\362\370\356o\226\265\270\316nu\014\230p=Y\226H\027F'ZP\031`\346\005\302\350\344\026\350_fk1\021\304\254\311t&\031g\226w\330_\003\255\313rdJ\370X\321S\370.-\326\224\270\351\345Z\216\035^,\221\314\205}\205\215w\326w_\231\003\243D5\237\265\ti8\005\017\2609R\266E\263J\n2\021\343:W\030\261F2% f\257y\2517\000w,\335\266\277G\276tx\014\032h_\\T\334M\310\221\244\301/[h`\254\014\346\224\014l\036N\014\371T\301\203\221e*\001\324\302\201YUR\033d\243\201w=\366)\\\355\366\010\23527\236\0235~\014X\254ZE\250,\3723\270\364R9\024=\2133\262\227\201\305|\354!\371\342\037\3230\205 vN$\014\234(L\214\037Lr\256\215\374\346G-\326l\255\024\201)\320\313\rAZ\304\213k\023\361J\365M\310GC\021a\362\273\305v\250\271\th\322\t\273\372\"[\237\200b\2576a\362\203K\021\253\315A\000\221A\300\250\252\001\235\236H\024\305)\240y\270\3625\230\201\311\317Nr]\025\003\346 \022\003\002\217\2073=C\017`\252l_\276Y8\2052\034\257k\326<\325\351\353\321;\213E \244\"\300S\276\207\0220-\024\027\316\223\233$\\\253\034\263D4{S\320Y=\3469`\213X=\370\321\355*\241\025\323-2\300\255.\203}\260\230\222c\312\004\256/\006\323.I+\343cH\t \361\341\326\266\302\001Y\334\200\375Y\223\276):\036\234\267g^F!yYSe\251\313\001\302Q\226\270\322,\240\255\337\331\373ZR_(a\336\257G\273\267\243Rei\234\275\230""\2139I \367\272\357\201\374\003=1\351\224C\243_\003\374\327@\002\304\2214\005\002\310\031\036x\253hYqo\000\373+j\n\250K;\026\350Vk\036\215`\004f[\273\nD\002\210\026\021\204\301A\246BH\245\t\200E\321\246\035K\263\t$i\224\006\311\032\001\001A&\200\241'%\311\257K\207p\t\344*\005\024PP\304A\361\227.Z,\213\032\273\264\261\n\227e\235f\021\226`\240Z\360\324n#TP\264\216\"\002 \205I\365\260r)9QLj\235\347-d\202\032\361\362\313\332.\357/!\010e\374\336Kexw\016\270\204\n\332g9\3122eI\242\302C!\344yP&\027\227_\343\223\237U\345\256\205\361\010=\362\345\022\247\224\336\256;\336\275\246\367l\3437\206\033\032\216VLV\001K\265\315\242t\362\226\240\213f\210\205r6th\022Qp\200\320iJ\220\260\242\251I\211(\n{j(M\205k\025\210HNQ\204\214F\307\257%\307\240X\034\306\230\013\033\214\325\030\323m\210\260\342n\235M\220\322h\244\207\022\212\367*J^\251C)j\250\255\255\251%]Q\277g\001\231\226\230\022\220\021\250e\213\347\327\261\031\362E*Ll\201\310\355Gb:\321\330y\016\353\217\270\230\355:\265\237\255\022\203\246\007F\035\304?\262\260\267w1\336\276\267Y\014\263\330\262:\257\241a\324@\233\266\347&\014\266n&\262\211DM/b\364r\245f^\227\233\202\203\014\351t\334\321Pi\340'\312p\2270\376P\357\267)bf\025\210\343\306\033\205\252\250cl\246\021\033\002]lpI\020\035`\360\024\2737\t\342\350\002\200\3624\341\335i\322z\242\010\0265\274\347\231\222j\254\031H\264jWP\365a\344\016\303\210\325\242\351\220\200v\017\332\211%a\272\027\226u\241\315\261\272\347\217\217\300\325s\035\224\352\336\321\207\014\203\014\256\220\260\241\003Z2\254\365\231\354;8W\301\320\276\245\014\t\326\nV\000\033\347?J,\360$|\352\233\205\317e\350\356\305\010\357\253M\316\230\2206\262\214P\026\262|\203g\267v4\030\347x\003\302\3328\0306\005\241\202\243\rn\323\223\177%\263H\230X[&\2166)0a+\265\263T\335 \206\222\200a\t\264\310`\261r\320\272\325\302\334ed\353\321\264\216G\213\334,\306\221\317zF\014\203\247g\t\317\234\361\271P\031U:\225m\342{]\257/`7L_\311\237\237W\t\337tQ\273\314\324\014c7\361\202q\t\024\252*(h\203'\033r\tI2\244\315b\001\251\336\2765\307""\344\302\274!pk\312\357\245C\235\233<\025\003L\255\264K9SL\245\274\350\322u\3179\327\226\235\034'\223A\306\306\337R\037,\310\237\340e\207FYY\026\313\\[\221\276xf8:e=\213V\205\266\201\310\210h\033a\014\211\016\355\231\037\033\251\333u\373\367.\266n\032'\271M\253\307\025\271g\006\225\316\216\235ik\021\254F\263\333\367\t\362]\266\245\350\215e\034\323D\271\210\331\255\007n\365\025\232 \033\0301\225\"\326\332cP\350\316\211\307\006vYiuiai,\013\010(\227\\\021Q\316J\r\2626d\301p\255\370\341\256a\220\364k)\263\010L&\036\2200\031\270\006\216\376\202\252\201\331l\313\265N\216:\223m\020\305\205n\332\213\341\345\335\260\033\220\r\310\263q\270(/\\\026J\24782d-\306\206R\344\r$\230C\306\3323Y\223\274\223\347\263! +\001\336\260ED\016%\002\020\202\010\263\240\241\035\245\014yt,X^L\276\000\276\260(aY\0040\006\306\333A\335EI\030$\263X\306\372\301G\224\246\245\224\3571\253\220qA\251|\250q\307\033\356tb\201\256\220\260\276\033\010+\000\362\231}+R(\221VZ\337\225\0353\222\032\266\204[|y*\370c@;\252\226\231K\007\276\005f\244\371)&9W\304\351\321EMC|\322\t\314\343\247\033\3137\205T\031\257&\342\363Fy\222xg\301\341a\312c\301\350\310$\247\014\301g{\000\323$\022\tR\350\224\235g\275\351Y \204O$t\3406h?\005\315\201V\033j \345\215;\362\231\236\322\251\270\231&f\211\277\027G_x\303Z\267\306\213\022,X\263\257mq\324\234\035 \003\341I\277%\"\"8A\242\251\243\277>iTW\271Ul(\227\270~g\224\303KRs\231\010\325\272\005\t\202\245|\250\311'\254\"\200\034\023 txu9K\270Q\035~\t\016@(\215\330\200\305H\335\230\327y\227y\356k\345if\231\346\205\342\230\037g\264o\211\006\342K}%\276\222\337\0278\032\224$:\003\027\233\360y2\374\210<\236\030u\310c\2642\310V(\244\213b\013-\241\267\350\317is\250@T]~C5\177P\255i\277\233\244\"\250&\373\032\357\030X0&\303\314\027\t\035\241\365\231j{\265A\336\321qvQZ?nJ<\237A\250\271\243=\240\372\2034[&%w\235\300\322I\200\3178\332^bU\033G\263\216\373\t\205\031\243O`\017\223\316Q\236$\001Y[|\034\342\n\302\323\357|\353\316\000iH4\213Y\255-z\326|\035\273\342\352\247Q\264\333\320\250\330\311\304""\374\265\263\332+*;m\005\226\337\317\001\n\353\241|\223#\0079c \360\220v1-Z\017\260\372\312\240\352\222Z\333\313pz\212<_\244\376}\230\016\022B0\207\002\314\260\264L}\010\325\254\025\242\333\325U\376\270\275\321\337lE\264D\342]\201\330\221\330\216\300]\213\263\262~\346\247\255s\231,t~\327\231\006\262\237Z+\354\316\362^`|\005\334\311\363\365I\n\226\024\201\331?y4,\033\3149\242\211\253+\000\300\n\264V*\312\326\377\217G\307 \354\201\222X\010o\323\350\025* \374\005\021\031\330\366\346z\027\361\375\264(0\311F\325\0036A\207\r@T\"\244T\212\225J\250\267Vl\305\301\306V3<\201\3643\330\212'9\203\244<\252\361\352@\300\254\031\025\3528Z\200&\315\326\212\206f\303\272\361\242\374\200\324\207\343\306H\306$B\014b\305\000\363\364\204\316\332\233@\265\0029m\216p\306\261XP<[j\362*\025APT\225G\222\223\0203\001\213\001\261=\226\3110^\031\276\326\025\246\232\032h\262\234\346\2054\032S\323[\210\213\213\027\027\"D\211~(\"&\003\247\016\003\035\177\307\346\375\037\303\344y\225(]\320j\374\271*\250\327\203\002\244)\321O\033\225\213$\023\224^;\031j\333\271Y\2300\335/;J\210\246\252\r\3132\332\200tK\267\364\207\346\217\210\002Dd\272?w\337\237\342\036\220\377\010\302\n\211\0301EX\"\240\260P\024D\221H#\024bF\007(\303\332\032\210\002\222\231)\025Ab\301b\"2\013\"\254\217\021\237r\244\243\357*\375\002\213\03703\366'\331\023\237\364y\373\203\3402b\344\363\0312XS\014\007\333C\317\365n6}%\200\205\261TPAh\300\335\210S\002\230\021\022\244\023\351\270\272Qf\006\356\230\226\243-\237\244\313a\200\210\325&,\273\177Z\203\343\262c\030Y\317\234s&rLxS>\027\002\317\302@\364\007%\200\366~\317\036\021\210\023\211\354y\300\210R\0056*@\024\303l \005\177g7\340\353H\363?\271\001.Rz\240\177z+C@\321\255\372\231\250\037\367\251e\200h\351\rsr\205\210\241\224=KS\353\325\335\177\270\312\375\313\311R\303\374\356\245{9\320\027\020\205\242b\241W\365\202\303\032T\315\225\014\244\246R\212\320\313\001\001\030\272\020\250\232D\224\006[\230\023\357\230\204Lz\tj\333\222L\215\242\315\023,\227T\0374\251'\364\260\372\254\237\310\227\"\264""\230\253\254\340Y\370t\312\372\207\361J\260\231\326\342T\377+\262\352#\366\320\302(X\320\203\276`\320\270\215\340\231ZAb\002%\337{\243\314\036\352-\240\313\370\013\201\365\307\240\376-\252\217Q\201SEZ\215\211f\322 {\321*\205\0261y\3511\227nT\315\013\270\223\002\311cL\n\305~o\307\177\021\003\354d\022BpD/<\017\314\254'!\020\222@\037\263\330@M?\305\203\377\001\276\001\007\222\306\220\243\272\224\360\316\032{\202\313:\020F\020\006\302\223J\320C\317\374^\210\340dz,\372\000O=\017LH\261\006u\253\370UL\017\310\301\315\201\211\204v(\017\266f\204\204\006bm\016\001\327\0019\007(\020\244\210\266\206P! \0131\206$\323u(\230~\362\206D\200\243Z\031Bf\233\002\216\021\304*>\266L\020`\217\267\350\003\377z\370\000\272\257H\177}\375\311Qg\356J\225\370Xf>\356\203\240\2436nxb\325\226\207\343J-\020A\001\001H\r\030`\002\322\033\r\354\310\206)\021;\233\200\301\373q\367=/o\343\373\276\2304\225\205\362EB\200\300y\370\014\0058\010\320pI\301\007^\236\330E\300\"\205?|V\207\250\257\036<\325\373\224\021\211\251)/`8\264\024x\325\236\245\343&\r\177\202\217\000\240\017\200\375B\200zO\254@@\201(\372\200\222\020\367\207\252*\234h{\3463a\204m#Ke\263\227\0320\216\020\364\201\002}\206\303\317\370AI\\\003\333\331\241P\306\3422\307\004\024\023\t\323\365\277/\371\017\\\210\374\375]\375\217\212\324\3733\306\032'\217mX\340\234\n3\370B\001q!\250\334`(I7B\270*\006\r\342\005\334\304 \030\230\262\246\014\211lJ`0YE@v\010\301\203>\301\222\264\367\032\260W{\013\274\007\016-\215\313\033\244=q\326\362\274=_\367\201\036\311\3538\334a\231\nz\310lIH\204\211\\\234\247\014P\"\251\343'e\234\275\245\372\005\216#\2427h\203\240\010\225\020\204\357\305\266\341\006l^\373,\376o`r\374|\203\217\235G\\\327\351Q\327\346A\263a1H\350\354;\2067 \016\211M\207\225\204^oNd\346\206\360\252\277\365X\264$\030\320:\006;\241\243=G\r\243\326\034\235~\277:\354tx\220\020D\003\372\230D\276\303npG\323\375\220\036\026SB\354\027\351\025)\243\r\265^?x\253\222>\302\356\362B\352\3651'h}\231\362\261\023\002\300\204\270f\204gE\245E\000/\374\255ijU\320\016""\031S\342\233\354\370\276\330\354v\327\267_#\333\367\350\216\343\355\311\003c\276b\236\342\026 \3054\273\222\017zb$n\204)\007`\343\000P\206\373+>!\001\230\341\201BcY\371EI\211\n\303gr\244c\206!\217\220J\361;=\257\247\330#\362&\247\244\001\333\004%\322\323i\307t\237\217\341\003R\021\215\304\356\277\036\303\275nu}\366\004\221\340#u\010\357\2413\254\005\200F\322\t\031\212\201\232k\014\000\2420.\202[\361e\277\022=\261#\263\333\351C\246\220\357\330\277\274\020\351\005t\262#z4\016\214\001\207s\271\215P\267(``\"\001;\355\336/LU\021\255\\\017\324tE\360^\t{m]\316\310\356\367\372}o\264{\230\237\377)\252\351\3752\340\305\320{\314\300\230}\355\"Y\003]\376\033e@\320\240\342\225\030Z\222>&p\226\234^\354\005\231\036\207\304$\t\005\016\005\265\243\305\024\304\0354\304\356\304\177\247\211\333?\347\340`t\364\236\231T\204\373\243\346{\206\031\032\331G\204\306\253N1n\3762\0031\356\322\222\030\274\034C\251[\224i\030${\273\" \304\366\273\236\003\335\357z\275>\031\004\022\007M\277\371\035\375\037\277\260\333\347\216\001\205\305\341J#}!\207U\231\253\243c\201'\335\260\201\235\367\337\201\031bu\214gO\316=\377W\275\341B\251\201\341R\203\022\354O\270b\273\302\005\003q\340L\304\020`\217\n\215\215i\r\031\334!\262\223R*\316\341W\271 VG\273\\; w\373\235\363\323\340\364\307\200\030\241hH\257\341\237\211\376+\372\301\"\234\374D\007(,BL<`\333W\201V\003?\3066\263\332\033\206\344\236,\355\177\217xv\217e\307\216<\t]\317s\271U\023\337T~\363\n\355t\206ARD\014\234\255\364-\351&b\021\033\253/\233\237\320\364{\275\0367d{xz{\272#7\035\261=\275\301\025\334\341X\022\356\277\275\241\271\002\306\333\261b\037Qh]\357uhdnf$i\217\221\321\314{=\300\276_h\025\351\200{\244w5*\213\004\367;\247\273R8J\023\276\333p\200*7Y\335\027<\022\260F\331\333\035\037\007w\264#\265\363\007\257C\366\373D\351D\216\322\023\273\311\355\342#\005d\236\337\rL+\025\274\013\240\342\226\307\365\375\361\333\003\263\316\343\333\005Wf\344\221\320\207eX=\211\205R\3475h\210b\200:\030\"X\002\210Cn\277'\242<~^N85\314\037/6\232s\314\202\252Am\274\316""\201\330\202`\364'\240\2728-\216Tp!1\305\327\360\016\277[\255\362\211\345\345\262/\225s\212\217zy\365\303\332\337Cq\275\366\033\216\003s\000 G\021[\016N1\341\347\362x\371%\363\307\\\037\203Xv\025Y\355v(\213#\200]\234\342\020\346\267\334\r\030\025E\3569\272\274\334\237\031\347\350\346s\367\362\326\206\236\013(\366h!@\202TvP\326\003\021c\253\311\311\317\325\353\317?/\264\377?>\335\021\321\303\212\353V\275\255\301\275\t\342\207l\210\326ssr\362\374<\376\327\233<\372#\336\250\nv>@\215\340n\316\372\311\354\032\341\260tY\345\344\347\366z\334c\220\374\"z:\373N\322\276\324\306\010\346!\276\27777\207\216\024\373\242:\343\234ts\371\335\016w\325\005w\207e\024!X\310\373\376GW\233\217\220u\334r\232\2034\205\373\203\260\004\303T\273\014`,(.\252\032\014\363q\365G\365\370_W\253hr \207\031#\223\350U`\350;\353\232\237\037\255\376\243\253\346y\\}^\263\242z\362<<\326\035I\336\256\221\260P\335\215\254(\245Vi\035@\026\247\203\027\242\203E\270$F\2705Q\277w\226\230\243R\235'\203\3256\241\236\1774sH\272\320\203\317;8\276\367'\2308\371_\203\255\024d\216O\247\315\2039`m\315\303\274=\221\311\311\306\010\356\217\242\347\216\227!\035\374\221D\335\032\261\237\203B\375x\375\242~\037eu\220R\245%\214\362!!\251M\031\264eR\253T\343:\365\363\252\024\320\0253\325Y\261J\033S\305\032\003\307\372K\212.\264\355&\240-\341\252\223\234p\317e\024\240'g\007&x\254.\350*{'\266\344\345\377\245\347\247\2053\245\243$\277+(\302+?o=J\311\022d 7\363\037|lJ\r6b;\3621\367s.\365%\014\264\202\250\020\030\233\2222\004\205H\334c\254\224\372\227\001\231g\211\223\220O\371\361='\036|uL\217\037\024b\373a\216\355m\024\306\\Z\221^\n\345{,k\345\304\303\210\352\365\3155\235\030W\330F\345\361_\332^^%\325{\2643\350\331[\031\242\357`L\371 \356^\371F_\244Z\273\005m\227\370\262c\275\207\nG\035\317\352\230Z\202f\016\027;\321\"\376\314x2Pc\007\206E\311F\0334\2647mn\346\236\335\233V\3405\027L\006\341|+\306\365V\227\200!D\206/,\242\273i\247\250t-\357l\016\324\224)\255\320\025\262\261\247\201.p\036\377E\211\273C\217\000lf\013\234\336\345\t\321.""~\222[\376\350\221\365\242\251\206a\377\r\265t\301.\203_\262T\345+\362\355}\025wVP\371oLj\301\275\304\333Z\305\254\277qP\326\266;\023\262\022\203\263rhQ\210V\265\200\312\223\225\216c\010\263\024`\200\304\202\025\3321\204Yb\360\2212]qP\243tu7\251\202h\373\266\205\355\201\344\255[\326L\033b\215\243\224\206ceB\217\026l\357Z\331(?hp\023\276\264w\325*\022\207\nR\0200\210{\0272B\264\033H\tg\023\013\003\246\261\342!\345\344\341\222\313h}\211\032\254\026x<\217\"\266\234\241;\315\n\324\312\261Cb@A\014\225\231x+\"C\311\027H\334\331d\225\211\264\204\330y\215*\226\242\021\022\303\263\224XI\227\224\024D\223b\303\022\220\312\037OF\361t\024[\336L&\010\231\004\334;\266\032\316\"\024\022\2133j\273\314+o\240\347w\344\340)\2240Ec\030\273\267hm7\353X<{\257\311\222\364\022\224\370\272\207j\247\272\334\254\232\016u\"\222\242\246C\233hcA\023\362\322\303z/\006X\233B\255='\201fQ\273\305\206Q L\206\222V\204\344\245\343u%\315\331\331\235mP\016[\202)\260\263\025\240,\213b\203DK\212g\374/}\000$Z\213\327\233\326a\021e\020\327\200\035s\221\326\036\313d\301\rC\335\315\314'Ju!\230\267n\215}|\213\331\t\026l\036\344A\371\324\201\225\276\226\217\361U\260\210[\017\233\305\255Kh\307\240l\342\023\251\211\306\206\013\275\317\251\021Ae\331\301 a\224\205\003\242\"f\331\232\026G\211\245$I7\240q\277\234k\0227\210mT\203\251\t\321nf\246\276K\016\356\314\336\327\262\214V\r\006=$\364\010\243B\351D\352\202\006\220U\245\030\246/30\314\3102p\206+-\272\233\246\245\251\233\232x\255\320\030\t\307l\310\305\231\202X\036W\317{ikEa\231;[(\031H\226Q\232\265\013\346\357\231Vp\262+T\335\032\221:\013-x\3475\232\307Z\221$Q+\307\322V\223\t6w\355\212\271\204\226\315\314\226\317M\002\331\215.\345\225BhQ7\250\205\346\266d\334\371?\374]\311\024\341BCk\0211\364";
    PyObject *data = __Pyx_DecompressString(cstring, 13167, 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 (14468 bytes) */
const char* const cstring = "x\332\345|\311c\023W\366.N\0141\306\200\215ml C\331@l\203\021\226-O\014\351\247\000&$\204\306\330@\206\316\257(K%\273\202\\\222U%\017$\351\316\322K-\265\324RK-\265\364\322K-\265\324\237\300\237\360\276s\316\255A\262 t\367{o\363\222\270\206[w<\367\014\3379\367(\221h4\022\235\212Fb\221\351hd>2\035\213D\3512\035\211\306P6E\027<\315\322e\216>,F\246\272\357\245\r\307\321R\231\234\2263\215\244e\257k\233\371\264k\335HYiS\263M\367\336\375%\355\276\341\032\216\351:\223\332\246\361\232\252l\0339\313XK\233N\267\2235l\333o\225E\033j\350hF6k\0329\315p4+\245\271\033\346\236\266c\346L\315\262\265\214-u\"\335^\267h\353\270\332\032\177}\365\344\301*\206\214\351\367\036\307WV\036\335\233\324\244`\346h\301\\\354\353G\253\372\337\227\226V\036\254vc\376\315\345\367\343\253\361W\264\256M\303\325\306\275n_\371k\321v2\366\230\213k\356\365D\244\273;\2364\262\256\231\324R\271\314\246\366sv/\221L\3752\276\341\272\331[7of\367\234D\332\262\335\210\223\311\347\022&\372\\7# \315M\2566\241\255\355iq;\211\325=\3148\216\211\232\350\357\301\256\261I\324\310;\306\272\251\215\257\230\246\366\352\373%5xD\327-\333ru\235'\250mf\3206i\272\206\225v&nuw\277z\365*\273\347nd\354\356\257\276\372J\2636\263\231\234\253\331\371\315\354\036\321\323\316r\361e-\201\rsM\315\320\0343g\201\344\231\224\267_\262\005;\226\273\201\257\336^i\316\006\236\354u\325\032{\2429\306&fh\247\255M\213\326\236\2646M\333\2612\230?\325\241\251\331)\332\224\234a\257\233\343\321)L.\022\211h\364\017w\256\2263>\272\231rM\307\275\352D\354\304\250v\025\255&\265\321\235\321IE\376\273c-\233:6A\013I\005\275\321?\251\210,\350\2767\213\361\321\335\321\311'`\227\211\246z\273\332]\277\356\013\2656\256:j\215N\362\303DK\203\237\247nE\247~A3;\0331d-v\352Ztj2:u\rO\327\243h D\2613;,\006\232\221N\203B\031\307cg\020\001l\224\261\023\346\244\307\303\336^\n\255\320\273\277\275\036=\256\201\032\322s\026\204w\307S\021_n~\306<\177\371\371\326/\023\335?kS\232\026\325\264iM\233\321\264\230\246\315j\332\234\246\315k\332\202\246-j\321)-\032\325\242\323ZtF\213\306""\264\350\254\026\235\323\242\363ZtA\213.j\323S\332tT\233\236\326\246g\272\265\351\2306=\253M\317i\323\363\332\364\2026\275\250\315Li3QmfZ\233\231\321fb\332\314\25463\247\315\314k3\013\332\314\242\026\233\322bQ-6\255\305f\264XL\213\315j\2619-6\337\255\305\026\264\330\2426;\245\315F\265\331imvF\233\215i\263\263\332\354\2346;\257\315.h\263\213\332\334\2246\027\325\346\246\265\271\031m.\246\315\315jss\332\334\2746\267\240\315-j\363S\332|\264[\233\237\326\346g\264\371\2306?\253\315\317i\363\363\332\374\2026\277\250-Li\013QmaZ[\230\321\026b\332\302\254\2660\247-\314k\013\013\332\302\242\2668\245-F\265\305imqF[\214i\213\263\335\332\342\234\2668\257-.h\213\213\277\220xt\323\276*\325\225\315e\266-V\\\206\215\275q\315\\\312H\230\232\233\001\357\373[\242\271\340*\315c\027\222X\022+\207[A\002\254\255\274\251%2\233\233\2209\256\211\"\027\375%oB\006\022F\332\264\223Pf\324%\370\2029\342\235\"\276\212\346\377'\344;\025\005K\2650\224\036%\001\233\014\213\326h\213h)\206KM\267i=\375\301\255\243Ge\221\310\342\211\243\214\360\327u\\Z\203\337Y \254RO\344U\236\225\004\2724m\277\347\017i\020\215\320V9h6\2324\366\034\r[\212\315\237\236\232\232\2721\025\305\177\243\252\337\367T\233\016\252a\252\336f\243\246\343\032\364\230\364\373x\317\307(\204\271I\303\314D\275%\035\3712\025P9\r\0253\036\0204\364zY{F\212\210\324\264\273\223\371o\324\220\036\350!\227ugH\01311\177\t\351(W\0105\321\335\226\232\341\212?\317L\3772\241a\236\253\230\342\266\221\206\004\355\344,\3275I\ny\3364g\232g\"\003\376p\360\301\025\263A\337\276_\322|A\2030I\317\253<}\222\240q7\2548Wy\254\356\231i_\366\357e 5y;\271\272\227\005l\200\320d\\-k%^\247i]\367\000'`\305\315\335\204\231u\301\230\332\316\006&\345\346\366H\334!\304yR\353`\260|\016$\335\264\034V\003l\370if\260\337\257a\014\225)M[k9#\267\347Qy\335tu\237|\372\332\236n\270n\316Z\313\203\316\3328Z\232P\265\213\013\023\236\326i\235\231/+Zf\355W3\001\251\317h\351\014\230\"G\024\264\222\017\240\005\332.I_\262\322\351\027Ld\177D\0376\321H\274D\337\324\243\271\210PR\033\317\313""\362\320^\227]zm\356\001\365$\211\022\315r6\361(\2356\327\2154\266,i\356z/\330\002\300\003k\033*\014\253\322\\Lo\322\037\2328\020\270#\320\263\255\023\377~\351\t\0232\206\252\351=\206[\n\231xp\355\032\351Y\255E\021)\005\305\210\2148\177\222{U\225\204E`\250\267\362\026m\241\273\001\241\360\361\014\263\225/\251\230\017\266;I\032\337\327\335\004IA\370\244\2312\000Z\233\352\21211\223\221w\216\301\335\007\204\266C\335n\030\333\004\307\374\376\202\235\372\200\001\273\277g\330\355c0P\336\310\345\214=-\304a\006\354\010A\224\244\231\315\231\t\332\336H\367#\033\222\005E\201]p0\013\333\005\225Si\"\035\303r\2322\3673I\346\321\314\345`\217v\300\013\335\330\274\234a\021i\224\264\332\346\256\213\365\246M\354c\344I\006\263\3465\337cKESM\002\332\256\2319\014\213!\034L*\001[K\225l\355\351\203\2477b\260\344\264\2239\2238\033\272#\277\226 \003-\310t-oay6\263\217\023\321\036\245\264\275L\036c\232\314\207Y2\344\241\006.q3\233mLl\014\036F\3065H\222u4\307\252\306\000UA\000fJ\264^2\322\230\362\312Ugu\003\323L\345\355\004K\275\277w\020e\340\364\033\t\215=\236\353\324d\315\024\266\300\002a\366\263\344\353\320\306ND\264\325\214f\332\264\267\223\350\200f\235T\355c7\304hk\"PJ?<\347\272\324e\316\004IL\314\350\353|*\005\302\260Byn;\371,\331w\214\225P:\213i\240\201\320\330i7\\A\304\223\020\003U\305\314YS\274\3361r\353\332\213\307m\365\302\213\220\304\267\377\000\226X\207\264\321~\331\353\302B,\211\301\2604 \321YI\227\022\275\210\266\204\362\014>\344T\t\204\2205y\022%a\032\304\"\322\271\233Il\010JB\265m\023\230F\312\205\377\310x\321'T1\230qT\251x)\020\243d\322r\205\357\003?$@l\355\365e\367\313\370\263'\217\236<\274\245}m$\210PI\207\355\315f\026\354\262\346;\243\304\360\264\345\236N\3441\277\271\277\0040\r\1779\262\333M|\2536\364\216\306nrD{\236]\317\211C\214i\253\225j_\335\225\317\032h\223\314\354\330A\225n\324\342.\261r\336\267hd!\262K\373\262a\255o\200\340`X\000L\010\276\231\354\036w\000\026\311\273t\340^\256c6\371\265\010\276\336|n[\244doz\034{\023\306)o:7\247g\247&\"\376Z\257B\273\263L\260\3627R""$\217\t\003\n\031S\3605S\222\270,\334\204\3523\317\213Q\267\334\356\017\350\304\323\370\001\241\211!\024\273\371\n\215\214K\210{]\022\303\220\261p2!\363swL\265\032\353NfL\231V\022\300\332\206p\201\222\301*\363!\311\270\027\026\035t\370\332\312\222\036\200\227\327\266:\231\321\017\254\372\342\361\203'\357\251\352Sb\354\2523\006\005\35745\366%\232\026\333\334\211\366\301\235\360\014\376\233\016x\265\377M\007m\333\336\004\304\276EPkR\353\036\233\030\323\306'\264\361\273\277\377\355\330\235\257P:\006i\325\261s\246\261\276\236\003J`}\353\0172\301v\000\346Da\235\211vZ\207e\360\225\221w3:\2211m\356\336]\315\345\315Wb\364<\315\021\330>0\253t\261\026\340\314\020\216\210\351\260\034\326\272\255oC\341i\233&4uR\352\023G\022\342\343\312Ll\037\300\005\006\372\252\363N\252()\221\356\3038\212];\303!\260(\223f\014\246\360\244\252\023\202\000\302\352\206\346\300\374\0339\325+#~\024\276z\230\313\344\263\257\264q\236\262\221\315\246)\242\003QT\270jb\322\023yXa\3235\241\236\034\362)\323v\202\206\200\322c\024\020Q\225R@p-\366\206\255<&\261N\003\221\372\312bS\200\310\371\335\361\273\207\315C[\351\036\343\266\357\236,s[DJ$a\022+\033\306\303{\344\366\032\203\244V\n\312f#o\277v\2547\246D\037\r\262\032\256\265\236\317\344Ey`\020\325\302G\260\246\266\236\316\254\255\361\033\007,7\t\246\214\377\375\251\371\344~\374\351\204\327\314\361\273\366VE\256@8\300\245\321\307\320\004<8K\261\264\255\274I\372\321\367T\030T*+\n\026\361\373p\024\333\372\214\002\017\300_s\3122\323\214\311\300\265\255L\305\373\021\262\360w\307\326\300\005\t\375\332Xs\341\033+;\335\\\344\240h,\014\244\201+\225\273\342Y\035\014\271\221L\31527Su\037\016\301\\\272{\n\332$\233z}\343\270\311\261\033\t'\221\3171G8\033\006\370\345\256\346\277\023!\357\312\324\303R(\022!\000\256Y\256\324\216Q0\206L5\030\312J\230\312$lf\300\265\223\262\233*:+D\001\n\314\273\304\246J\366}u\342o\216\3575\211\270\021\277\030\026\243\334\247\202\314<\220\343S\031\252\352V\360F\262\211\361\022\033\350\315\3351IXa\3600\301\033I\340\266t&K\200,\330\337\220""\2215\322\250\206\225\336\nm\377;{\243\177B\325\356\222ri*\032g\246\233 \253\234\264\034\336\020\313y\r\2729L\235V\340J>\250\000\217\351Ht\222q3{\032h-\253\"\372(\242\221\256\263\255\004\3652>\2662F\357c\317\307&d\333\307\000>,\303\036\363=@\000\313<\255\331'\361\030\230\304E\305\311\2615k]Z\333\006\301\354\261Im\035\244P=\334\260i\256`5\231\000k{\376\240\300*\3549\021\216\2513\251\230!\\A\334\020\370\322.}a\324\244\374l\237\217-;\225\221j\216\252\006H\267A\\\262\262\362XK\000]Z)\213\\ \347N*\366U*6)\"\347\334d\275\013\25271\230\0074\224 jO\356\351+\253\317`\032C\026\206\032\360\030b<H\3213ES)\377\321\016\236&}\360\023R\204\240\010\366\032B\221\001\263|P]\002dj\222\241\371\211\277\252\334\r?\244\271\236\350\276v\355\325{\"\020@\225\351\324\244v\355\032\023\331\231xu\355Zw\3673\323\315\347\300\206\006H\214M\306\260\201\230\262\203'<,Z\331J\220T\t\020\247\020\347=\354\030\373f\020K0\315]1j\260\034\320\211\230\225\303[\037\364Gf>\307\343\221V@\347\335JF\331I\316\360A\220\214G> \371\027\246\304P'[\203\242\227\265\207\2601A\317\254\215wo\030\273\260`\376\202%\346\265M\"f'\336\027\232\031\247vw\307~\030\233xw\347<-\332/?\262\247\333X\345h0\334\007\217\326\324\301\3351p\203\273A\276\211\356\230\206\276\003\236\315\351\244n\022P\310\230\021\205\264\216\020\032\030\201\335\270\200\326\357#\265\034\261u\373\215rj\317\tPE4\016\320\371\337\234\215L\036\246\311HPp\214\014\036\326\034\036g\262\233C\006\276I\347-G'\024\325%\020\263\016m`\223!lSM\005\3320\225\340\203/{\346.\363\237\004\033\274\205|\010\027\304i\323\203\023\307\177k\317\323\306\346Z\322\320\266\001\201\211\264?\203\007&\265\261\037\351\362\023]V\307~i\317\023,\032I>\"\224\260\216\255\215R\217\377\t?\034\235\211\243\005A\362\266#\253P\322\350z\316J\352\233\006\203\362\377d\350p\373\326)pD\215\247A,\250\024\374\244\002\210cr\273\352\260\017  \361\226\262d\362\306\206\r\234\267\t\024\006\305-\232_\251\02139)\246\3147,9\261&;c\226\n+\006V\231\321_\200\223\325w\245\025\311\026\2320\253I\216I* \027Ba\332\032\341-01\307""\003\030\\\233:\264\245K\301\213\034E\025thp\002\254\376\020\024K\204\225\314\032\t>\313\306&\233p\371\306\210$*\234I\034\n\373k\346\2669D\344\373 \226\243\360\323\215\327v\342\252\003P\010\257\010\365\201\360`\321\223\n\236\204}\202&\020\341\341%\350v\306K\260\331\232\223&h\244\220\203\302\257Df_l\024'\204\035-\177\361\177\331\314\336\0133V\306\357\305\224\226\272\034\362g\030vI\250\204\214D\363\316\355\220\234\354\322%G\027C62w\335\203\004\233\177\035\267l2mG\202\307\2674\322\223`\2471\276\037A]\021;a\363\322\261\"\2029I\325#4Zf\207<I\016\026\202\216\264\233\337/\371!\243 6f\223FN\23063\022\365\221OP\360?\351\341\027\331\251\246YFt\025\362\361b\\y\327J;\266w\020\343\363\2716\3164d\333\n\00627\263\356\336\204\0045Lxa\022^\345\367\024;\006x\343\223\276\010\274\336\234\031a\342\t\275R\006:b0-'\202\341j\371M\002&\2555\260\003rj(\313\270\253\335\31006\027\250u\327\203n>\241RA\222\204\027U\347\035\344F\322\223\300\310I\037D\222\024\2050\267\270\341\355\260?\3612XM\3613\265\243\260\027\230s\234\354V6\203\372ki\317\377`k\0039O\213\222h=\031\340\263\243\014MZyz\024|\274\325\322\310\007\311\337?}\344\2715~\244\227q\034\351\247\261\255\274\001\257\362\215\251S\243\367!\337\257-\027>xf\023\330\367a\316\260\363\360\321Q\364\2146M8\336\177STC\347\271\353`^T~\375N_\000\016\024x\232\235{/(\301\266P\346K\2669\01073\233\002'I\304\235sm\300\360\340S\037\362{\3408\026\231\221\020\244\242\261RY\312]\270G`zR\305\342\333E\260#M\036\206:\345\"\017\003\353W\001\001m|\374\2523q\303\301urb%z\325\013^\210\226\r\264/\255\256\345\243\264o\363\301w\350\350\033A\325\210N\232\213w&\0356H\032\243~\372\276\236\313\266\377\300\232\"\364\205K\225%\n\024\210\212C\013\233\032\236\227\250\030\232\244\201\303\345\3442\262\313\333\316\337\223/\357\332^\022\002\366ClWOZ\353t\302,v\260\225\245\375#\010\366\343\026#S\221\177o\347\265`\353\3218\264\365^\307\357\337\357\277S\324v\007\346k\222Cat\306\343\352G&\257\346N\204Qb\303\366&B\250@\005\001\302A\225\200N\\J\356 \331t\321f\276!\302\036\220\004\323\016""\210n\310%n*\235z\323\323\261\221\354\336\256\247\331Y \r\211\327Gy.-\361\000\347\33559\366\347\327\273\345\265$\355xG\305\0068\203\353+b\007\211\347)w\221\371\303\316\3307$:\347w\"\3642d\352\341C\036\325\216\017y\336\323R\231\245\340\354Y\r\353\241\034\201\315(\347 \256\3276p\353\327\314\277\360\354?4\002\220\267_\333\231\035[bB\370JU\307\307\314\204r\362\355\261\300\364M\264\311\010#\264\327\256\230!\341\270\377e\"\260\345y\233\016<\300ao\304\3624\201\271#At\233t\261\217\006\037<y\376\375_T!\243\323.Z\033\262\314\377F5\032P\033\017\322\0209n5\341\235\235\347\335\324\215\205\361 \206\356?\321?>\273\215\007T\231\360\220r\000\276\310\030\355\3442\2047}\340k5\007\264ny\276\031G\270\233\252\206?y\206\312\263G\341T\210\360sD\327!\232\371\204\251\353\367\343O\247\361\027S\301\344 \013\321\244\330\002\276\007\005\273\224\266\024\274\373=x%\034\260n~\323\241w\375\022`\017\000\037\377\025\276\t1\204\377\216\376\202\257M}\311\331\\x\001\315_\374\324\211\346b/c\242\271\224\rns\221\034\240\266\224\251\355\361J\375x\272W\340\305\204\374w\210{\"\231\376\200l\220P\225\346.7\014\324\344x/:\007\365\233\312)\344\333\246\234\204\266M1\005n[\212-'\2235}\022\311\310\376\\\004\214\304\27596\027\037\241o\010\2724\027\265R\r\177\272\221\336\001:\324\311\365i*\346\343\235\r#\347fD=\035\371\330\266\005\025\302\234\2613w\344\343\221R>\222\201\223w\264\314\016\027\331\t\231\202\336D\023\247u\177\374\002\375\310\214\271<h\271g'\274g7\003\256\320\003\022z\017A\221\237\022\330T\004{\325\\\240\344-\301v[o\375\226\3155\227\320Y\007\364YP?\364\321\223<\277\204qY\360j9\276\326\326\333\226>H\247\255\254c9\372\003[\354\205'j\336=\244\036\202\270f+vf\376\341\213\210\37370\367\024\360\3653\206\302I\321\230\263/A\272~4]:\\\342\r\335\\F\024:Z\022\271\223\316\200k\234\257 \216\266\271\233\315\205\25382h\270\035\3174x\025\241j}\017:\275#\201\225\257\202\032J\360$\211\310\317\t\305\362@\330M\032\251)KT\275\353:\364\017\360\260\367F\t)\372\367\346\346\327\371\224\272\265a\020\377\303\021^xrO\277\377h\345\273""\307\017VV\360\370\364\301\263\225G+\253\312\375kJ\225?\2327\337.\303\276%\r_\235\272\266\244m\301\214\336\373&\376lE\345|}/g\241K\222k\367\300\313\307{\377W\237,\204\353\377\376\364\321\323\007Oe\224\247P\304\272\376to\027\177\367\255\204\253?1w\335gfje%\252\257\270\3201\367\300p\356\n\243C\212|>\177\376\344\376\203\245GO\036\334\177n\223,>\267\305g}!\246@\256a&\366\024[\353\035u\330@\207\252\004\314z\244P\2668\\\250v9T\302r\037z?2\005\237u\217\226\034a\346\240F\350\010<(Ll\230\211\327:exPzGP\236\262v\275\223w\035\022\275\006\007#\370\210u4\275\000\3334\177\r\033\202\210N\261\264\320[\336\rM\233=\250\340\325\315l\032\376\233L\230\025\207_\306\307\262\340\013\277\300\267\312~\211\0048\374W1\201\301\374x\362\341.\311N7\255`\3353\021\333G\352\301\236\353<\005=a\200t\341o-\263`\205\352\277)\221\327[\013\374\367\260K\345\027\266\230d\277\274\305\246\352\357\372\320\\\336jm\365\367\177>\372\265\315X^q\373R\317J\353\357\377|\364\353\273Z\035\255\236\310\300W\342\\\277\246\342fs\336\364\351][\350\034\331\302Vc\177\344Ch?\345\324>\031t\007\377\016\263\320\025\3238P\022A\264\331X_\207Q}\224\224\373\023\3541\236\300\202F\032\374\316\027\212>\371\017Y:\235\tv\325\260\367\350\367St\210D6\224\224\217\350\237\340\006\0217\034\374K\005\206\223\260\254\220(\205\365\000D\036\3636\010\254X\231H\"\203\016]\313\346\324\027\372\017\177I\250R\334\210\017\3315\n\247\344\254\255Y\353\014V\005\261zi\003\231\234\202\260\3246\374h\331\333\362\226~\343\335c\376\303\206\352\305\331\310\247RiS\275\330X\351\236<\277I[k\352\t\310v-\223I\353k\271\214\221$\275\005\275\261\006\200\314\251\225k{0s4Uz\310\344\222R\342\360\305\225\347\035#\313`:\021\235K,$t\302\360\314\013\360XLJ\276\221\004\\\357\356\350\211d\212\376\236\231\tl\257\377@E\253\217\241\253q\177\201{p\303\177\344\010\220\177@\204\363\316\243Sd\263I\304\302b\306\nX\264\260\231\313\265\350\343\020\237z\212/\310K\t\236\262\272\316\271\261\201\201\241_\244\231 \270\356\346\214\204\271\006\005\234\240\334\0303'>Y\370\n\377LOP\224M6)A1j\360\262""\334\234\204\355\n\276\243\364D\331\367m3\255\030\3003\020`]\335Jzo\324\316J\352\341W\307K}\361\356M_C\371&\001\017%2$b\240\237k\006\251?\211\0146\224\304)\221\311\356%\310\240\363%{\324=lq\013\233\335\301\220\033\030v\377\232\335\276\346\267#v5\t\367\233<p\372\233\016\"\225\241\240%=A\002\351F\234IwJ\353\345\363\030\262z^\264\301\273s\330\022/\3464\237f\361\023&Lwb\234$\353\027\225+\240np\250ew\274w2[\260Z\216o\025u\331U\271a\237\2020\004\355\232\225\014.\016\256\340W\272\361D\344\306\325\034\365\347f\\\022\t+G_tJK\321%v\323\362Ha8\214\230I\340B*\227.I\374\273\313G\021|\221i\311\243\030l=\235\311\274\316g\245\010\216\205\342\220d@\032~\312+\234\006\346v\245d\3332wL\010\031\245L\343\317\306[:\353\346\370\260\205/\201\3542\271L\217h*\034!\303\343\352P0\026\273\273\203\017\024_%\375\355\344\023\t^\215\n\206\2306\235\014\3447y\376\374B)\357\\L\223\361\356\016d\231\3059MOd?8]E\367\023W\034HO:\217\271\320\271\267\343\205V\000Y\301\262\370\346\256\020\207\340N|\211[\016<\345\254\247R\261\324\202\372m\212$\264\220\212Q\204\327C\317\236\346\361\"\024|\236\303\025\234\000\330\320\223$\242\340\225P\022-I\241%\235r\004Y\256\333\000A\372\001\201\372\021\00145\345k\344f\246S\351\214\341\316\305R\233\2567\035\271q\247\374H\244w\344\321Ri-\216\n\231\350:%\242\311\325\205fwR4%:\030\200\005\260\327\225\310\221z\363\320\333:#\035e \351%\244*=@\347\335\217\310n3\300k\203\353\336\023\272\361-\372\221^\303\240\277\305Y\365@2n\274\t{\216K\371\375\212\rQJYy\260o*\216\037\362\024\360\020*W\320\332G\233\374]\034;\235\222\037\031t\362\205\253\361I\374z.\253\253?+\351]\344sV$\034\017\316Fk\344I\327\203\022\025!UE\2410T\270\304\257$\205\220\271Y\217\007\270@1\032?CAI!6]\364,\233!\335/\264\354-\2571g\nC\361\265|\315\262\277\347\027\221\317\335\322G.AnoP\340MY\336\275\363\302X\353\304\275\017G\312\345\330\244\2658\014\334[\277\t~g\352\253\022'\314\266\252(\010\337\205\n\232H\316l\252C\344\326\345\375\215\237C\324T-\024\361CA\013G\321\357\t,k\312\212Z\323V\314Z\260xg\345J\273\234`$a\005H\216\355""\274\325\212\354\254&\220f\361\316[Au\377Io\371\302s\263\002Cn%\341\206\223\016\001R\330\265D\003[P\214V\240P(/\024\332\322w\220\241\357\355\254\013S\316\370\302\371>.FBAVzA\r\\\345\\[\0076\r^$q\021\357\004\254p\363\214H\350\221Z\243\023\037\240P6G~\323\362V\352`\026\216\344n\260N\242\013u-\321\036\324\366\177\010\027\016\235Y\016\241l\213v\224/\272H\274<g\255]3\r\2762s\262\001$\360\364\347\310\005\273\201\215\224\347\274E\364\3735c\331\257_\233fv\3074^\303\002\2746\367t\374\321M\241[<&\360\347\000(&%\315\317\213>\275\343PO\005\033p!L\312\306}S\210\225\316\345E\027\246\035\027\377\305s\271\315MC\207\003\002P\211\353\257\231\034\261\326\246\221%\242\204\2759!\2228#\352Y\216\303\344TT\256d\345\344I\014\263<\263\321\223G\262{\2414\024]\236\267\251\346.\321\006\242ne\344H\027\323\201\262\025\000\254oZ\266\232Y8\323\236\341-\241\262|\232\264\261\276\231\313\220A\247\3771\202N\206u\023\2656=s\303/\230\270mGY|\371\022\272\242\316\246`wa\001\233\211\337\244\311\302\n\t\317\304\261\312\341\207{\220\337\314\312\225\366\207\325\022\253\t;\001;\302\027*o\361`\365\326w\262\2236Ct\3322\372C\031%?\321\261\2628\206:\377<(\2660k\233\353r*j\023>r\344\252C\230\327\3451+\251/b.\274CW\357\364U\327\325qqX\231P\341\016_V\350\350\023w^\201\334\022\364[A{\235\374c\333\2663\254\370m:\240\203>'\255mg\233\320\277\036H5\300'd\016\377\021\24069\347\004\027\026'Z \236\267\201A\324\253\275m\223\031\22632\361\253\235L:I[\215\033MD\335\022\274\025:\345Yf\3263P\356:\343k\242\245\236\001\035\362\256\362\234\031\225\343\225\031\216\202V\276)\360\037\024l\221_G\340\352\262\031\242\013\375a#\371f\255e\211R\216\333*\342\331L\226\376\277\002\273\334 g\022:\005=\203'\336\224\320\007]\307\013\r\246\323\223\265M\354Et\315\3462I\374\355\356Q0\r\177t\303\242\262{\312,f\367v\305\223t\200T\371\r\352\233\374\003~V\200\201\036y\003\370)os\272\203\031\204\373u\262mi\341{\266r\354\3264\331;/\177\246)\217\006\264\204\306\317q\354C\331\340\234\231 G9\307\262\216\253\270\032\362\300\0034=\3022\204\202\236G\202\332^\001""\370\007\217)\362\270L\272\203=\324\017T\211O[bg-\307X\241\343\253\346c+\220;m\320\270\022N\005\331\210)\024\365r\334\263\031\206\266\030\010\026\204\314\212\357{\3213i\037\357\231\363[Hm\005/\226\035\274\360\317\376}\217\237Uh8O\221rW`\212\222\315\320\241\315\213\037\037j\033\315k\n\274\265\215\3025\007\331\234fH\335\034j\343\271\370.\247\210D\350\250-t\304\306'\017Jw\036\215\313\265\t\307q-\362\350\304\267\013\316_\310\205\224\021\375\260\\k|.\010\313\005\347\035z\233\263\017\336R\271z\"\257\314<\354\243\312\3249\232\273\303\221\026\342q\222Qz\310:iJ\362\324\001\213\334\265=\312\361s\262\260\235\316V\3364QUn\244^0\272C'\020|\311\312#\271\232<+\272X\t\311\376\202\215\207\364\340\312\2150\200\233\301\037-^\234\n\276\035\361;P\232\244?\212+H\362\013_\263\212(\352\327\267\006u\034\374\020\027\317\256\223_c*\343\016eBn.\324\005\020%\264\225\237\023\301\337)>\010\237\205PK\010\305\010Pe?>x\262\354\355\266\340\006\252\207\377o\023\272\273A2\005\325\354?d\361\224\331q\241t\371L\013\034\310!K7#\240\206\016O\335\014\221\227O\007t\346h7\343\212\221\306\003\3310?\314\345\346\362\224 \343\205c%\026%\277\013\317\347\243\371\351|,\277\2402`tv\304\371\1771\341\331\024\335J\372\317\241GP\203\224\014\205t\375xn\370\245%\326K\257\036\323qb\350\3666\305x!\355\344\377(\250\206\307\004\313?\204pW=\250<e\235U\202\2476<\215!N\000_\371\222\020T\205\001\361\337# \345\300a\245'\n\223\331<jN\274<\232\231o\300\203\007T\204\264ms\264\212\300\252\276\235&\242\311\325\331\346.\234\035}\307H\277fG\021\250\322\246?b-\205Cw\350G\277\304\320`\233T\312\332\245\037`\232;\316\356.Sq\227:zc\3462\304\027\024\304%([\353\274]\215\326\207/\227\242\365\363#\245\276\372\360L%Z\2778V\033[\254\366\325\207\256\324\256,\035\030\365/\246k\323\337\324\276\371\251\366\323\317os\235\307N\366\027&\212\213\245xi\271\336\325W\270\210\307\245\362H9\332\350:\265\037\333\337\252\367\014\024\342\r\\\356\027{\250\316\333\356c'{\366o\025\226\013\233\245\331\362'eT\270P\354\243\322\356z\327\351\375\345}\243\201\333O\205\255""\342\251\322B9Z~XY\254\306\353]\375\205;\305\337\313w\253\307\253/\016n\035\376\\\373\341U\355\225Q\357\032(|_\033\231\257l\325\273\316\027\014\251\365[y\262\362\372\240\257\336uv\177\2676t\023\003t]\252]\212\224\355\352\223\303\353\265\347F\315\330\254m\332\3649_\370\266h\024\267j\307\372\013\321\267\332\261\343\247\367\343\373/\n\321z\347'\177n\357\377PX-\242\2233\373\277\026;\360\200\262\275Bg\341aq\2764R\357\352\331\177P8\217)\036/.\243\207\335\222K\313m-\314\225\207*\035\225K\325\007\007}\007#\365\316\343\177\376\270o\354\357\024\022\305\276\"^O\355G\377\203\201\211@\033\005&\021=\254\025?)n\225:\250\267\031t\276U8\201\242\216wL\266\243x\256\030-\336+\346J}\245/\313\235\345\245\312\325\312V\365\243\352\345\352r5y0v\330\177\030?\\\255-?\253=[i\374'\215\274%n\027V\212<\245\350\237\035\r5\263\335\302^\251C^\347\n\003\205\027E|{;p\254\373\024\366\241v\026\234V\032)\315\203k\026+\361\312r\275\023\233Y\330\242.\346\231\265\276\257\200\0164\243!\314'\376g\374\355\364\261\223\247\367\277\001K\201Bx\375\266\203\336\037\021\341\212#x\277x\354d_\341\343B\224*\274=A\374\026\253\235\005O\227\342\365\236\376B\254\220/\306\033]\347\n#\304?q&\252p\356\034\346q\263r\016,\337\372z\256p\243\270]Z\256}\271\200\265+\232\016\362${\372\n}\205\253\005\2478R\234-u@dz\320qaV\270\240\321s\026\344X\306\236\203\212\365\336O\213\361z\357\220b\221\024KL/-5_|\200\241FQ\360\002\034\377uy\255r\274\262\\Y\253v@\350T\205x\361\005\317\277\367\\a\254x\036\233~\242\264^^n\204\232\217x]\267T<N\235\326{\316\027\326\275A\211$\003\220\024\342\034\010\351Ba\006\262\203i_\303(\313T\022m0\231d\236\311\322\325\322V\235\205\371\237\305\225R'v\243\277r\277\332\361\266\353\330\351\336}\2670_\274\\\\\305\2721\272K\014W\212\225\266\274o\261\3026z\344/P\020D\r\027\244\351\250\017\236\257\017\\*\336-w\224\007\312?V\222\240\350D\2642\\\275p0yh\034n\325\373\260-\205\0370\330\211R\242|\276\354TFT\213\333%\003\262\266H\303\327\307n\226w+\277\037D\017\342\215w|\334;\350\001w.\327{>'1\257\237\306N\325y\ns L\256\304\264""\265\210\n\262\334]\324\341\317\264\242e,\241\357S^\317l\271\247\002z\016\024\036\024\007\321\221[\232+\367\225G\352\003\303\340\276\301\342\257\274\210\345r\272:\002%\326w\2518\301\337#\262y^\243-\232`\024\3734PZ.\031\215\336~\2429Ft T\037\227\347@\321x\375\302\305\372\360\027P_#\345Xy\257\332\t\255w}\246\262P\2156\006.\026\257\361\276aJ\2271\241(\365\033/\220*\305\024\211\212\027*#\215\336\013\305\317J\251r\274\374C\345e5^]n\032\374\263\342\017\245\037\313\006\224\341\300\347E\013\3739 \273u\271\364\022\"}\245bT\266\300\025\027\276\240o\265\361D-\261^[\267kv\276\226\337\256c\370\221\342t\361e\3511\324Y\237\367\372\2744)\375}Q\334+\177T\276Y\355\253^\255n\035t\374\267kk\310\332H\304\342\373-7\210v\027Is\224\3048\212\t\2379\213\247Z\377\227j\347\343\242\325\357\025\266P\263\373Ck\326\307\242\320\322\361\267\021jp\233\364s\275g\250\260S4Ea\\(\016\227>\305\006\303\274\014\025~\203\230\r]+{\227\361rG\235M\314\320\2152K\316<\204\256/$K\347\240\277\246\213?c\213\372\350\345\n\251\214\342\311\322%\020}\262j\037.\221\332\304LvP\376;\030\255\003\363\376\224\2043\252\014Z\317\376\267$\233T#\t\253\321{\trt\017\333\327\013\226nxo\215\256^O\3335\376\377\321hG5\022\355\365l\361\0048\376\r\211$v\035J(GF\243\336\253\324\276b\304? &\253\225\013\325+U\243~c\266\362\003\244\345\006\020\016\3500HR=\\\352\007\206\271\\~Q\231\251\030\357\342\335;\007[\207\035\215w1v\375:PI\025\3220T`\255\302\274FK\377\225I\332w\236\371\254w\224\305\2314S#4\371\276\220B:_Hs\235\220f:\021\250\231\233\325s\020\242\177K\344\320|\360R t\003\030\365cl%\211u}\360\"\rP\357\277JZJ\324K\033\r\310\332c\207\037\206\301\000P\005c\230\312(\240Z\264\022o\250\242\021Zz\276\370\215\260\200R\321_\241\336D\305\223q\032\376\242RZ/\331\360\207\207\360\264N<\3208\030\346\277P/\355V:@\n\201T_\337`0\362\347\314\311\317J\374h2\235\307IG6x\"wJ[\345\356\312\227`\345s\325Xu\007xXY\002\243\335\212}\355\374n\255\326\336\342\276\355a\334\302\326\n\"\330[8\311\270\221\271\336-D\353\252~G\375\364\031\341\373.b,\352&\372'\320\315\231""\332\031FUP(\334\021\2010n\346\253\246\236\375\373\205\216w\177\026;)x\252W\246\362{q\246\370\032\222\365\222\324g\317\376\022t\333<6\241\203!>0\335m\332I\231\241W\365\207\n)\3553\322\376\017\340H\030\367s\020\353\332\320\030\310\330Y~\004\255`\037\304=\023\r&\227J$6\r(\271u\326\037\217YE\365\016\027;!\301L\327\332\245\353(\277_9\t\241\215\034vx\202\324\373\005\265\r1\221V\372\004\343\234\"\306TF\223T\301\\\261\037\035\221En\320\005\333\177\256\237\206\334f\342O\260\327\021\255<\254F\253\337\034\304\017\226E\366\026\260$CMl(\2600\354\342\200\350\276\273\363\327\226\351L\270\235\302\247\370\370\270\324U\033\277\205\205rw\274\255A\007\367\253'\341F\334TH\273\213\030\221U\340W\274\024o\002\352\355\002q\014]N_\342I\373\005\215\340\023\346\363;Px\334\3433\314\346t\203\300\270V:\005\355\252\206\277\002f^\005\003\203\373\353\375\003j\334\200#\266\024\303\324{\373\3102\367{\314\323O\006\354$}\274\302\260\323 \026!\005x\266\227\n\307\213#\265K\363\225\034\214\201p\357]\360\356\020\030I\372'\357\343\241p\267<F\013\337\025\311P\007\314Ov5\n\024\317R\260S\\#\336\017\246\025\256R\207q\354,0\303\306\205\326\363\260f\254O\267\013\317\302:\231\265\364\3270\267l,\210\027\250\333A@\320>\342\225\030\231\313\322\032\231r_\255\324O\223\201:Qd\023\355\240_\341\254\240K2\342\220\335\217`O\367\270\244W&\2544\234t28T\310\025[\307 \035\233/~\215\256\207?g\220\331\327\200\212\333av\230\253\364UFIa\022\373\316\213y \025\320A;\254$\230\330\201\274\354\0241\304\200\270J\215\036\245\205z\013\035\205s k\374\257PB\010\025\204@@\363\013\357\312\216\340&\002\324\333l<`|\207y\241y\302\215\364\205H\362yY\270\036\022\332'\232\200 \025\\\206\275J'\204\344\362\365\362\002\206\365\264\001M\263\257\341[\276U\037\262\327\264\357\016c\207;\265\027\024\203`\365S\357\031,\374B\312\250\254\360\312t\341e\361q\370\365yq\222t\375\007\216\332\016x\236\307\010#\245\277UF*\261J\276\n%\333W\353\233\200q\270R\266*.L~Oo\255W\203O\205\036\316\006\212n\026*.Y\2358\210\035\354\325\236.C\200e\240\355\322O\345\255\006\036_""\2637\321s\245\364u\311\3408Ku\244\201\036zh\366\244\263\036\326.MW\256W_\036\304==U\033\n\224\337H\2507\265\264\177\202\376\311\362Dm\346\336A4\374\025\235\036/\374\214M\030\000\350\217\227\377\001wk\204\007\300\206\023\227\367\227\343\201:hQGG\365\201E`?\244\210\224\027\311u\0079\002\300JI\354\221'\230\324\353\307\245\333\345d\345je\247j\264\261\"\253\305!\000\272G\200^\n\341\205\233\354VI}\016\264\314p\362`\375p\331\027s\342\263\023\330\350\177\021\332\254\267\325\2427\340bz\023gM\025\342rq\223eOB\346\271e1\254\335\013\177c\036\332-\273\0045\310T\264%G\243\347t\275\367b\361\2122\036P\243\0047\006H\2775||q\031p\024\"\177\241\370\005\273\223?TV\253\303\230\351\370\341d\355\305\313\332\313\037\024P\251+s5\370)ia\032g\026\310\177\261\370\020\363\330)\033^\301\002{v\304\005c\350\265\251\326\026\353eRB{\202\027\316\025\"\242<\245^'\250z\272\374?\340\346\201\021\221V\261[\377\004\317\334'9\226\327?J\017\001\265\374\257\377\002t\247\005\264\257\334\362u\027Z,I,/\257o\240\371;\313\254\312\347k\027\211\263\227*\002[\204\312\363 i\254\270\345\333\236\006\273YP\265\265\013\023\002F*/H\370\310\352\237C\315\337Y6:\002O\237\200\342'\345<\333\363x\375\264`\025\037@\021\244\370\200\252\263\305\217x\013\337Q\325\327\201\0030\177=\236\216wK\314\013\323\373\317\311\344HP\204\\\275\355\332g\021\354\326YQ\313\203\354i\336/\037\207\223\231\254\214U\007\252*d\302\300\236\226\017\205\214\306\203\3030\010K\314s\377\252\254WW ~\303\243\245+%\203!7\231\2114\305]\305pP\275\205\362|\3452P5j\2151C\017~*^\027\341\332$\020\372\300\347\265\3171\0210\360\034\215Z5\004&\323\344\223\3508\t\315fB\3271\333\315\262Tm\225OV\006\304\356\304\330\030\375V\031!(\001\271\024\304\002\336\213\026\357\227:Z\337\033\"E\254b\311\250\177W\330\"\374t\201\314\022\021\326\257\277\210)\256z\306\274\031P\234\013\277\005\300a\240\364#\3506Q\275\005\244\026\006(\037\334\370u\365\"4\245\337\364\\\250)\007\tO\265`_i}K\201\305\333\025\343\010\346m?\017\277\263V5\330\334!\2710\035m\225_\320\355\231P\267\354\361\267\316\321C_""\257\331\217\016\301\256\333\325i\360W3\001\022p\205G\216,\242\021\240\261\357\210\033)h\312\033W<U\2429\234\240\240k\274~3*:\206eR\202\037W\025\222\276\0063\263\314ZSi\035qp\363`\366\016\236\023\303#\022\\rmz\324>M\010\307\324\203\363\003\371.l\366\366\n\005w;e\315s\205\376\302Rq\234\204\240\316Hq\226\002\342\020\322\332Yva\033\034@QX\214](1x\263\245nV\215\003\260\2457(\266\203~\265\377K\375\216~H\277\373\377\344\340\312_v\313\306\375\203g\273\377/O\334\376\242\327\177\221h\243\327k\037F\203/8h\372\0014 '\257\203L\013\243\177\350\332\245\322u\326r#d\257{\000o\223(xA\356\231\214~\272\326\363)m\276\030$\262\313\003\300\253=\247k\2479|\337\\\270\377?\304\224\255\025?#J\266T\324IR\376T^\353\210\3108\035 \304k\203_r\370\341E\345VU9\275\013\322)\001!u\306@\313;Q0$6G\347\014\313\265\363c\245\3371\353%rK\373\244\335\242\214AdA\215\302FQm\323`\341Q\361G6\336]C0\272'\344\021 S\004\350\201\027\224\236\221@\037\305\253\216S\320|\020\000\226\002)WAC>&#9\030\"\322P\303\336}\005\205NS\204\26064^\356\252tT\316W\336\034\364\3713\"\205b\324:'\313|\"rZ\211\356\"/w\221\216\245\244\332mb\022!\016j\320\355\373\"\343_,C\212\237p\254DJ\350\366MA\025\217\324\225r\270-\253\352\331\377{1\352\225E\245\005AA\357\241\241\000\337L\321*m\227\227\275\260\306xI\235\332\234F\373\0301\027^\277:v\362\314\276(!Z\360\273\370\222\246\304*gK6\352cV2)\212\027\212\361\201\243\3172K\000\t\366\372^eK8\236\334\272\341\013b\023\237\003.\255\362q\335`%Q\355\257J\233\006]\352\003\203\r\226\244\004y\037\024\202\354+^\025\376\027}t\221\271vD\"\373\262\345\301;\271\rM3\367\234\261V\221\342\370E;\221\032\254\r\216\223\033#\361\206^V\024\034\243h-\000\034S\034Q\353\371\214L(\023\225b\024\265S4\233Ur\205\010\231\374\346\rE\216u\\\\\233s\220\224\347\330N\261\013_\241\3618\2735\001P>\273\277'\207\215\177\262\323\330\307\261l\262\nK\250:R\276K&\213\024<\341\251\360\203\202\361r(\330#\364\003\022\271P\274\304\256\304\000\374\020\366x\344\313$\234\337\316r\\\230\354>\305\264T\233\332\305k\345/\341\255=\"\230B\247\243\353$""\205\223\345\257a\274\372H\235\250\222\353\345\351\362\n\237Sx%\343\345\217\000\2579~\257\216\237\212}\037\262\006n^\330\014\020\376_Nj\240\020\017x\277\3073d\237\224\266$:0I\036\300\005\026\341~9-W3\234\255<\257\216P\377\352\375\006\243\345\360li\033\317\025>cH\271\310\236\337@\365\371\001\313\305\371\202/\231M\356_e\336\363\r\267\004V=\364\2163.\311\231\201p\357\247\ne\337V}S@\316\010p\306@\313\347\357(\250\355\177\246\031'a\366c\034\004\331\200\214\375Q\361\261\210\370L\024\351NBZ/\263\331<R\"z\366,\223Z\275\014\251\203\312\357+C\325\316\352CAf\223\014FSP\270\227\253\313\036\332\246\023\221\236/\212\273%\207\277}Wu\017\346\016\373\374#^\216\224\237\244\270.\035\032t\226\276)? \262\016\022\301\000\257%\204\030\367\335;\301&n\355\362\014C^\025uPn\233+G!\215\236!\037\203\357B\231\304Cay9\254\350\0207{\271\001%<\240\311Q\005\006\031\032\2467>\207\210\206\312\033x\354$\307\237\372\331%\276!\004\376\271Ho\275\3673\n\343\274{\252\245\273\034\276x\307LO\323\351\314\203\322y2\301\r>\250AE\216\254\312\n\242\365sC\005\007\272\214\274\024n8\215\341\202\363\212\207t\276C;O\212o\200\222Ah>\354\304\020\nz\006\002\250X\353\247\245\237I\342h\352\300\363*\360\3757\016\306\357V\334\352\302A\364\340\233\303\270\212\321\202\343\324\321\360\036\250\360\003\204\365#8)\253\325\363\330\275\350\301\375\303\256\332\323\347\265\347/\310e\276*\007Ts\025\003\275\314\035\014\034,\037\230\207\261C>\3752K3\034d\022G\272x\272\264R>QNW\257Vw\351XF&\016\027\207T\375o\304j\365a\326\345\027\340\240=\243\330\333\210\230\321\001@V(\"\222\257K\305+\342\rA\347\r\027;k\237N\022zm~>U;E\216\217[\272S\336\256\254\320\211S\300\017\204\007\356\363\331C\273\302\206\020\337\363\243\334\362\035\t\031\265-\305>/2\222\352\004R\376\004\332'J}\356\0028\263\332x\337WB6\203PR'h\365\230\200[\236\255t\264g\034\377\304\251\366\305\315\362\026J\226\350<\254\232\307&\260\367\374[q\254\324\347i\357\027\024HF\347\330;\266\003\304\014\317\351\200\217j\266\224\240\t\035\243\016\362A\006\205%8\303\347D\350x\365\002\371\356},""\265\367\351L\260\321\305\261}\340$\n\014x\263\235\346x\333,\034\343\237*\277\261\266\203G.\205Q9\010\026\237\273\037Z\266\263\364\300;\363\033\360\016F\372`\324~a?V\265\225\345o\227\236\227G<\375\247\"\365l\362\256\224,\320\241\235\253J\\\240\034U\032\270\227\201\365n)\017u\t\325\315&\264\245\233vv\323\323\246\265\376 j\270\310\007\014\375\003\000\211\034K\365[\355\024\254\342^\371t\205#[\307\t\013\212\333\327-~\235\200\204\220_w\253:Jq\210s\357\365\n\377M\267\357[R\261\336\243A\300\341\317\270\347\206\3652\006\rZs\234;d\3419\306|\036m\276,\237\256\315~w\030m\323\306wV[\352\222\214\253J\261\342o\240\324F\305\020\320\3567\027\3178\332n\320\001\020\353~\351d\371|\371\217\332\035:.\361G\026\246\241`\230\004k\357\037\304\375\000X{\317\274m\207/j/^\276+8\t\0036\254\370E]H\241v}N{K\331\002]\244H\273F)/k\202r\002&I\255_\247\343l\276H4v\010\272l\275\362\002\232s\356p\270\266\374\262\366\322\250\031\353\265u\247\346\344\337\036;\266\335q\357#\334\356}t\377\243`\032*\024jx!\317\253\n\006\304*{\007\035\007\027\017\243\207\337\252P\242\3421Uo\334O\302\231\240\\\232P\0103\352E\260\275h\363@\365\307\003\343`\013\306\254\350\307\366\234\342\227^p\247\345`o\225\342\313\260\336\315\265\241R\376\242vm\370Zy\244v\375N5^\273\373\204\323\201\336\321\230\275\326 \252;\3224\022\237\353p\242\215\034\370\362\331\255\222l\311.Z\226\207_J\236\302yO\361\217r\202\025.\246\223F.\372\251\370G\371\357\325h\355\316\223\303_k?\374\330Z\217\016\233U\037V\351\237@W\233\265{\036\003\251\336\177.u\204\336\376\247\024\365d\254\207\270\226\216\225f\310\305c\\\342\241~\227#\321]\352\261\020\367j\273\222\007\"r*/\344\362\001\3714\3278.\307[~=\357A\302\215\347\030\337@\027\212\316\351\225TIO\216v\310\271\255wA\251c\363;I\341\017\324\006\256\210m\"\007\366<\373\231s\254\217{(Pu\245\220\202\253/\351!\320%_\357\233\354-\277\344$\213e\361z\373\013_C\333\214\261\376\\\003\377\257\001RHV\207\227_\"no\276\360\r\235\212\025\035\324K\225\357\221\246=\203\376\026\010\275\000\252\014\000X\315\010\326\337\306n\302\326C""@cp6W\310\014\222\236\030\306\352\242\200\300\256\344\016\020\r\317\354\257\260\230/S\346\314\013@\202\241RW\371c\216D_\255lW\227\345\334l\205c\265I\212\245\n\310{\001|\377\r\320\233\270,\336\241\037\231\232~\317\037\355\2273t\301\2449>\225v\310F\202\252\2504\302gS\322\331s\026\273\336\001q0\344\244p\336O\301Q/\224AF8\353t?\273.\222\242s\274\364\0178\376[\234\032\033\225s\267mF\320K\345P\3373\204\343\010T^P\016\354\307\224oT\356\207\007e\002\244\334\253\344\000\301\266\016:\017\226\016G\016\243t\330\316V\213\006#\027\243\207q\241?QI\323\3111\232\242\364\327\031tB\2712$o\215\001r\251\177\202`\177\314\212\343\343\3124\260\022\247\214J\356\3118\247\216\311\251\311=\340\r\262\200\003C\212<\024\034$r\016s\372\361U\340\272\016\022\3401\236\274\300\245\013\305s\234\205\321A9o\203*\352\315\347\271/\213\367\200n(\356}\245\262\016\247,u@\373\013M\307g\3774\363\005\360\3450\334\200\376\201pYTx\313\225\203I\t8\364\250\270\375\034\026\271\n\276z\016;d\370\261}\017?l\370\251\247\303*\002\320\321\350$\026\337 n\250wv\355w\301@\201E\327\n\237x\271\301$\3543\373)\326R\354\031\216y\247\3066\347\235H\240\202\216w9\331\205R\024?\342d\027Ve\023\344\307\221:\033e\227\356\001E\366%\325\311)|Y\374\230\341\351L\351W\220=J\310\222\016s\257\211\233LpyH\345\014\037\247\271z\251g[\215NB\021_\226\272\3011\235\034\354*\374N\347R\377o\026CIW'9]l\211\017\302\006\010ZW\317U\347a\021f\017;\016\317\035.\324VXg\016|\016\245E\031\035tV\262V9Ay\213\224\201HG\316),\322hC\227\376\302(\3712*\243\314[q\375\035+.\374\301\240z\353\317\016\210\350q\n\000>\341$I\300\377Z\347g\305\177\224\373\336\216\036\353\355S\231y\022\302\243\210V\014`\355D\331\010E\264\004l,\na\010>R\316i?\007=\372<I\232\340\203\237\216 +\300!\227E\231+N\016h\014P<s\235w\013\275|\314\001-\225lp\2334\270\262sJ\371PN \005\320\272I&dv\217\213*\322\370\210A<\334\002q|\0268g\377yy\264\314\260\021 \262x\013s\033\246\363\035\232;\305\013\305\215\231\341\340Y\2622Bi\347+\344\335\206\265\370\252\004\253:\241\227\tx\366x]-\22768\320\353\251\270.\220""\240\237#-4\"\225\326\216\r\300\254@|\337\236?v\274w\377\217\332\247\221r\006\356}\347'\177\346)8\305\350\213\222\0339\243}\207\202\004|\210\"\271\333(\372\215\263-)S\262\301\351\222\364\023\002\225N\376e\371$%\215s\"yq\371O\364\320\275\177\275\200=\004.\242 Y/\334m\nH?\344,\200\263\325\255\226/'\000N\277\250v\374I\n\360\370\231\375\325\302\347*\364\362\t\203vr\221:%\202\266Dy\005\222\272\377\022\332c\300?\351\241L!\206\200\370\266\305\023\273F*\244\274Sy}0t\330\321h.\351+w\354\033\024\256\375\254\370s\371L\305\240s\003\211\016\0134\360\263w\224C\246`\302\033\032\220\223\006?\025\014U?;\210}\236\207\314?\254\314W\257\001\321\235e\030\032:\222\236\243\256\370\270\\\360\016\331<Z\307\210z\254uj\2453dCO\357?\203\367\322\301\001\312\251\332\324\377\002\220\304^\177\005\\\334\003s_\353\374\262\224\256M\177}@\373\007\206\272[\323\246+Wjs\337\036\216\310Y\362'\205\340\327\037\361Pv,\355\027\037\375\260\243\270NS \226g\250\244Pi\223\203T\357\247\350\205\000\323Z\347\347\305\315\332uL\005\223}\373\270\303\3731\t\367B\320\357;Nk'\335^\017\204\342s9\214-\305\275,\255SdHN\365\361\017\n\030S\336!\361\243\036~\347\037M\004M\231\356\203b\365\004o\211\306T\221\354\366r?PP\321\302\207\354\300|)\307\321\222#\303j0Mr\376\205\nD48RM.\224_$N\376=\311\273\341H\343jm\225T \365>,Q\372%\200\014\027\202F\311\206l\375VH\213JzM\274\256R}\344FzP~\021\261\004\365(\247.+\024\003\240\234K\261\326\333\342\211\311\3175(\2556\010r\302k\370\261\366\343O\004\376\316\356\033\376\001\200\367\003\n\002\244\3769F\216c\334^\226\334\216\227\325\367F\214\302(\245\205\222\363\323s^\242w\244\006\377Q\032,y\310\201P\300\0204|\276\314\007\332\353\024\377y^{\376\003\2005\235\200\217\224N\227\177!/\347 \007\253\300\347\330\353\2220E\244\243\363\350\034eN\371\245\215 \374#eFc\234\222}\356T\235\003J\327\037\034f\014u\027\346h\206#?\315\325\200h*\377<X9\374\030\336S\\BI\024Sq\312\343\225\021X\327\346\312w\017>f\370\205>\337=$\177\336bp\303\007;\235\345o\311\2065\270`\264\364\220\001S7E\203\377\215\252\215\036\317\250""\251t\211\031f\367\333\264\"\321\344\337J.\371c9wx\254\314\210\034\341\310\201\325\252w\344\343?\220\317{\2023:96\351\0249Y\010Z\242x\033\350\242\243r\241z\265\352\036\334>LrBb\250\251p\375\266\374\354D\232^\2016\035\204\224\370\035P\240\345D\305\"\360\207&t\350\027\017N\217\374Wu\372F~\311]\340\325[\314\263\217\211\316\241\024\273\336\302i\312\022\366\314j\017[\1772\252M_$D^\334\"D\363\005%\220MUNUo\037\274\246|\254N\n\217\177\303\336\tT\365\357DBv\307\313\217\253g\340P\363O\265\250Q8\353\261vn\252\322Q\213\336?Pi\240JX\207\nN\355\"\276\250d\006/l\036\207\203m\370\331\215}\205a\016I\237\306z\272$\373^\035u\237\246s\362\346\004\265\016\016\322\250h\024\304\206<)\243\341%\251\321\306s\202%\014\025\214h\027\031\032\t\001I\316<\241T\376%\234J?T\271@A>\223JFl\000\324\245\331\000\220\251$\247\034J-\324\247P\233c\311\252\317\246\022\372eM\220\276\361\234p\226Zk\320-\030Z\375\334\353\013\3765\031\035\004\277\346\0146\266\367\367\366\331\223K\263\033\324I\251\254\027\261\341\313\37431\314\301\335\217\326\375\316@\362\343=\024\212\005\027\023$#\014\247~2\306`\201/\034\270C\363sm\233\237\303\214;)\355\276\363\224tD\331v\322I\355\330\325\322\377T\376v0\322\010&v\262\321ID\244M\231\343sB\376a\336\233B\037\035\362\324U\252%ad\216\304\356\224\274#*l\327#\2008A\000R\35351-\001^Nx=\007tJ1\004\376\025_\367\376\030z\004.\322\340x\215\322\274\217\376\034\260{\377*\377\000\303R\321`\352z\377\243\375\313\373\313\373\257U\326\263\374\266p\230q\037\372P\300\311\357\201\023\177!`\n-\221\343N\351\201\262\370\377\r;\005\3530";
    PyObject *data = __Pyx_DecompressString(cstring, 14468, 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 (34445 bytes) */
const char* const bytes = ".11.101.4.21.7.24.1.24.2.14.4.04.4.14.5.14.6.24.9.0\nClass for reading multi-file netCDF Datasets, making variables\nspanning multiple files appear as if they were in one file.\nDatasets must be in `NETCDF4_CLASSIC, NETCDF3_CLASSIC, NETCDF3_64BIT_OFFSET\nor NETCDF3_64BIT_DATA` format (`NETCDF4` Datasets won't work).\n\nAdapted from [pycdf](http://pysclint.sourceforge.net/pycdf) by Andre Gosselin.\n\nExample usage (See `MFDataset.__init__` for more details):\n\n```python\n>>> import numpy as np\n>>> # create a series of netCDF files with a variable sharing\n>>> # the same unlimited dimension.\n>>> for nf in range(10):\n...     with Dataset(\"mftest%s.nc\" % nf, \"w\", format='NETCDF4_CLASSIC') as f:\n...         f.createDimension(\"x\",None)\n...         x = f.createVariable(\"x\",\"i\",(\"x\",))\n...         x[0:10] = np.arange(nf*10,10*(nf+1))\n>>> # now read all those files in at once, in one Dataset.\n>>> f = MFDataset(\"mftest*nc\")\n>>> print(f.variables[\"x\"][:])\n[ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23\n 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47\n 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71\n 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95\n 96 97 98 99]\n```\n    \nClass providing an interface to a MFDataset time Variable by imposing a unique common\ntime unit and/or calendar to all files.\n\nExample usage (See `MFTime.__init__` for more details):\n\n```python\n>>> import numpy as np\n>>> f1 = Dataset(\"mftest_1.nc\",\"w\", format=\"NETCDF4_CLASSIC\")\n>>> f2 = Dataset(\"mftest_2.nc\",\"w\", format=\"NETCDF4_CLASSIC\")\n>>> f1.createDimension(\"time\",None)\n>>> f2.createDimension(\"time\",None)\n>>> t1 = f1.createVariable(\"time\",\"i\",(\"time\",))\n>>> t2 = f2.createVariable(\"time\",\"i\",(\"time\",))\n>>> t1.units = \"days since 2000-01-01\"\n>>> t2.units = \"days since 2000-02-01\"\n>>> t1.calendar = \"standard\"\n>>> t2.calendar = \"stan""dard\"\n>>> t1[:] = np.arange(31)\n>>> t2[:] = np.arange(30)\n>>> f1.close()\n>>> f2.close()\n>>> # Read the two files in at once, in one Dataset.\n>>> f = MFDataset(\"mftest_*nc\")\n>>> t = f.variables[\"time\"]\n>>> print(t.units)\ndays since 2000-01-01\n>>> print(t[32])  # The value written in the file, inconsistent with the MF time units.\n1\n>>> T = MFTime(t)\n>>> print(T[32])\n32\n```\n    CompoundType is not picklableCustom exception when trying to use features missing from the linked netCDF libraryDataset.get_variables_by_attributes (line 3398)Dataset is not picklableDimension object no longer validEnumType is not picklable_FillValue attribute must be set when variable is created (using fill_value keyword to createVariable)Illegal indexIllegal primitive data type, must be one of MFDataset is not picklableMFNetCDF4 only works with NETCDF3_* and NETCDF4_CLASSIC formatted files, not NETCDF4MFTime requires that the same time calendar is used by all files if no default calendar is provided.MFTime requires that the time variable in all files have a calendar attribute if no default calendar is provided.\nMulti-dimensional array attributes are now deprecated.\nInstead of silently flattening the array, an error will\nbe raised in the next release.Note 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.S%sThis function requires netcdf-c 4.9.0+ to be used at compile time). To enable, rebuild netcdf4-python using netCDF Unable to retrieve Buffer from Unsupported compound type elementUnsupported value for compression kwarg VLType is not picklableVariable is not picklableVariable length strings are only supported for the NETCDF4 format. For other formats, consider using netCDF4.stringtochar to convert string arrays into character arrays with an additional dimension. Variable object no longer valid\nWARNING: Backwards incompatible files will be created"" with HDF5 1.10.x\nand netCDF < 4.4.1. Upgrading to netCDF4 >= 4.4.1 or downgrading to\nto HDF5 version 1.8.x is highly recommended\n(see https://github.com/Unidata/netcdf-c/issues/250).WARNING: %s cannot be safely cast to variable dtypeWARNING: %s not used since it\ncannot be safely cast to variable data type\nWARNING: there is no default fill value for this data type, so fill_value='default'\ndoes not do anything.WARNING: unsupported Compound type, skipping...WARNING: unsupported Enum type, skipping...WARNING: unsupported VLEN type, skipping...WARNING: variable '%s' has unsupported compound datatype, skipping ..WARNING: variable '%s' has unsupported VLEN datatype, skipping ..WARNING: variable '%s' has unsupported Enum datatype, skipping ..WARNING: variable '%s' has unsupported datatype, skipping ../,)):    , \n')' () (=|?\000<>:  'add_noteaggregation variable ) and extension ) are only supported with `auto_complex=True`array string attributes can only be written with NETCDF4_assign_vlen method only for use with VLEN variablesattribute %s has unsupported datatypecannot assign fill_value for masked array when missing_value attribute is not a scalarcannot close a `Group` (only applies to Dataset), cannot delete. Use delncattr instead.cannot find compound type in this group or parent groups, cannot rebind. Use setncattr instead.cannot set _FillValue attribute for VLEN or compound variablecannot specify chunksizes for a contiguous datasetcannot using file globbing for remote (OPeNDAP) datasetschunksize cannot exceed dimension sizechunksizes must be a sequence with the same length as dimensionscomplex datatypes (compound field of an unsupported data typecompression='blosc_*'compression='bzip2'compression='szip' only works if linked version of hdf5 has szip functionality enabledcompression='zstd'-cscurrent shape = current size = data can only be assigned to VLEN variables using integer indices data model, file format data to put in string variable must be an object array"" containing Python strings data type:  : data type mismatch between master -developmentdimensions cannot be altered : dimensions mismatch between master     dimensions = %s    dimensions(sizes): %sdisablediskless mode requires netcdf lib >= 4.2.1, you have %sdtype must string or unicode ('S' or 'U')enable'endian' keyword argument must be 'little','big' or 'native', got 'endian-ness of dtype and endian kwarg do not match, using endian kwargerror getting HDF5 library version infoerror setting path to SSL certificates<f4>f4, fields/values =file format does not support NC_STRING attributesfilepath methodfilling offfilling onfilling on, default _FillValue of %s ignoredfilling on, default _FillValue of %s usedformat not supported by python interfacegc\n**`get_variables_by_attributes(self, **kwargs)`**\n\nReturns a list of variables that match specific conditions.\n\nCan pass in key=value parameters and variables are returned that\ncontain all of the matches. For example,\n\n```python\n>>> # Get variables with x-axis attribute.\n>>> vs = nc.get_variables_by_attributes(axis='X')\n>>> # Get variables with matching \"standard_name\" attribute\n>>> vs = nc.get_variables_by_attributes(standard_name='northward_sea_water_velocity')\n```\n\nCan pass in key=callable parameter and variables are returned if the\ncallable returns True.  The callable should accept a single parameter,\nthe attribute value.  None is given as the attribute value when the\nattribute does not exist on the variable. For example,\n\n```python\n>>> # Get Axis variables\n>>> vs = nc.get_variables_by_attributes(axis=lambda v: v in ['X', 'Y', 'Z', 'T'])\n>>> # Get variables that don't have an \"axis\" attribute\n>>> vs = nc.get_variables_by_attributes(axis=lambda v: v is None)\n>>> # Get variables that have a \"grid_mapping\" attribute\n>>> vs = nc.get_variables_by_attributes(grid_mapping=lambda v: v is not None)\n```\n, got ', group 'group %s:    groups: %s    groups = %sif memory kwarg specified, mode must be '""r' or 'w'illegal data type for attribute illegal format requestedindex exceeds dimension boundsinvalid scale_factor or add_offset attribute, no unpacking done...' is one of the reserved attributes isenabled-knc%slen() of unsized objectmasked arrays cannot be assigned by VLEN str slicesmaster dataset %s does not have a aggregation dimensionmaster dataset %s does not have any variables to aggregatemaster_file not in files listmode must be 'w', 'x', 'r', 'a' or 'r+', got 'multi-dimensional array attributes not supported, must be one of : name = 'name cannot be altered.ncnegative strides not allowed when slicing MFVariable Variable instancenested structured dtype arrays not supported._netCDF4netCDF4.utilsno files specified (file list is empty) not defined in  not found in numpy._core.multiarray failed to importnumpy._core.umath failed to import', numpy dtype = -oonly endian='native' allowed for NETCDF3 files, got 'only numpy string, unicode or object arrays can be assigned to VLEN str var slices or higher (and possibly enable parallel mode only works with the following formats: parallel mode requires MPI enabled netcdf-cpath = %s'quantize_mode' keyword argument must be 'BitGroom','GranularBitRound' or 'BitRound', got '%s'r+ : rank mismatch between master renameGroup method not enabled.  To enable, install Cython, make sure you haveversion 4.3.1 or higher of the netcdf C lib, and rebuild netcdf4-python. requires netCDF lib >= root group ((%s)-s(%s,)S1%s not a valid dimension name%s not a valid group name%s not a valid variable nameself._data_model is not None or self._grp is not None or self._name is not Noneself.memory cannot be converted to a Python object for picklingshape cannot be altered : shape mismatch between master significant_digits kwarg only works with netcdf-c >= 4.9.0. To enable, install Cython, make sure you have version 4.9.0 or higher netcdf-c, and rebuild netcdf4-python. Otherwise, use least_significant_digit kwarg for quantization. ', size = size cann""ot be alteredsize of data array does not conform to slicesrc/netCDF4/_netCDF4.pyxstrides must all be 1 for string variablesstrides must all be 1 for vlen variables: string type<stringsource>to assign values to a non-scalar variable, use a sliceto retrieve values from a non-scalar variable, use slicingtrying to assign illegal value to Enum variabletype must be string or unicode ('S' or 'U')type must string or unicode ('S' or 'U')unknown szip coding ('ec' or 'nn' supported)unlimited dimensions = unlimited dimensions: %s (unlimited): name = 'unrecognized format requestedunsupported component type for ENUMunsupported component type for VLENunsupported datatype specified for VLENunsupported datatype specified for ENUM (must be integer) (using utf-8(variable 'variable     variables(dimensions): %s    variables = %swrong data type in object array: should be wrong data type: should be BitGroomBitRoundCompoundTypeCompoundType.__reduce__DAP2DAP4DatasetDataset.__enter__Dataset.__exit__Dataset.__reduce__Dataset._closeDataset._close_memDataset._enddefDataset._getnameDataset._redefDataset.closeDataset.createCompoundTypeDataset.createDimensionDataset.createEnumTypeDataset.createGroupDataset.createVLTypeDataset.createVariableDataset.delncattrDataset.filepathDataset.fromcdlDataset.get_variables_by_attributesDataset.getncattrDataset.has_blosc_filterDataset.has_bzip2_filterDataset.has_szip_filterDataset.has_zstd_filterDataset.isopenDataset.ncattrsDataset.renameAttributeDataset.renameDimensionDataset.renameGroupDataset.renameVariableDataset.set_always_maskDataset.set_auto_chartostringDataset.set_auto_maskDataset.set_auto_maskandscaleDataset.set_auto_scaleDataset.set_fill_offDataset.set_fill_onDataset.set_ncstring_attrsDataset.setncattrDataset.setncattr_stringDataset.setncattsDataset.syncDataset.tocdl_DimensionDimension_Dimension.__init___Dimension.__len__Dimension.__reduce_cython___Dimension.__repr__Dimension.__setstate_cython__Dimension._getnameDimension.groupDimension.isunlimited_Dim""ension.isunlimitedEllipsis_EncodingEnumTypeEnumType.__reduce___FillValueGranularBitRoundGroupGroup.closeHDF4HDF5MFDatasetMFDataset.__getattribute__MFDataset.__init__MFDataset.__reduce__MFDataset.__repr__MFDataset.__repr__.<locals>.genexprMFDataset.__setattr__MFDataset.closeMFDataset.isopenMFDataset.isopen.<locals>.<lambda>MFDataset.ncattrsMFTimeMFTime.__getitem__MFTime.__init___MFTime__delta_MFTime__time_MemBuf_MemBuf.__reduce_cython___MemBuf.__setstate_cython__NC_DISKLESSNC_PERSISTNETCDF3NETCDF3_64BITNETCDF3_64BIT_DATANETCDF3_64BIT_OFFSETNETCDF3_CLASSICNETCDF4NETCDF4_CLASSICNUMCHARSNetCDF4MissingFeatureExceptionNetCDF4MissingFeatureException.__init__NoneOPIPEPNETCDFPath__Pyx_PyDict_NextRefSS1_StartCountStrideTrueUUNDEFINEDUnion_UnsignedVVLTypeVLType.__reduce___VariableVariableVariable.__array___Variable.__getattr___Variable.__getitem___Variable.__init___Variable.__len__Variable.__reduce___Variable.__repr___Variable.__repr__.<locals>.genexprVariable._assign_vlenVariable._check_safecastVariable._fix_complex_numbersVariable._getVariable._getdimsVariable._getnameVariable._packVariable._put_Variable._shapeVariable._tomaVariable.assignValueVariable.chunkingVariable.delncattrVariable.endianVariable.filtersVariable.getValueVariable.get_dimsVariable.get_fill_valueVariable.get_var_chunk_cacheVariable.getncattrVariable.groupVariable.ncattrs_Variable.ncattrsVariable.quantizationVariable.renameAttributeVariable.set_always_mask_Variable.set_always_maskVariable.set_auto_chartostring_Variable.set_auto_chartostringVariable.set_auto_mask_Variable.set_auto_maskVariable.set_auto_maskandscale_Variable.set_auto_maskandscaleVariable.set_auto_scale_Variable.set_auto_scaleVariable.set_collectiveVariable.set_ncstring_attrsVariable.set_var_chunk_cacheVariable.setncattrVariable.setncattr_stringVariable.setncatts_Variable.typecodeVariable.use_nc_get_vars__aadd_offsetaggDimIdaggDimNameaggdimalignalignmentalignmentpallalways_maskanyappendaroundarrarray__array__arrlenasasarrayasciiassignValue_ass""ign_vlenastypeasyncio.coroutinesattattaattdictattnameatypeauto_complexbbigbloscblosc_compressor_blosc_dict_blosc_dict_invblosc_lzblosc_lz4blosc_lz4hcblosc_shuffleblosc_snappyblosc_zlibblosc_zstdbool_broadcast_tobs_bufferbyte_typebyteorderbytesbytestrbyteswapbzip2c16c8c_pathcache_clearcalendarcalendars_cdf_cdfRecVarcdfRecVar_cdfTLen_cdfVLencdfVLencdfcdfmcdlfilenamecertificftimecharchartostringcheckcheck_err_check_safecastchunk_cachechunkingchunksizeschunksizesp__class_getitem__cline_in_tracebackclobberclose_close_close_mem_cmode_dict_cmptypecmptypescntcodingcommcomplevelcomplexcomplex_dim_idcomplex_typeid_complex_typescompoundcompound_complex_typecompressioncompressorconcatenatecontiguouscoordvarscopycountcountpcreateCompoundTypecreateDimensioncreateEnumTypecreateGroupcreateVLTypecreateVariablecreateVariable.<locals>.genexprddatdatadata2data_model_data_modeldataarrdatabuffdataelemdatashapedatatypedatatype_namedate2indexdate2numdatetimedecodedefaultdefault_encodingdefault_fillvalsdelncattr__dict___dictdimdimensions_dimiddimiddimidsdimlensdimnamedimnames_dimsdimsdimtotlendirname_disk_formatdisk_formatdiskless__doc__dset_dsetdtdtxdtypedtype_dict_dtype_endian_lookupdtype_is_complexdtype_namedtype_unsigned_intdtype_vieweecelemelemnewelptremptyempty_cdfRecVarencodeencoding_enddefendianendswithenew_ensure_nc_success__enter__enumenum_dictenumerate_enumtypeenumtypeserrerr_clserr_strerror_infoerrorsexcludeexists__exit__extDimsextShapeextTypeextra_msgff4f8featurefieldsfile_format_file_formatfilenamefilepathfiles_filesfill_valuefilledfillvalfiltdictfilters_find_dim_fix_complex_numbersflatflattenfletcher32float64fmtformat_format_dictformatcodesformatidformatsfromcdl__func__functoolsfvalfvalisnanggenexpr_getgetValueget_alignmentget_chunk_cacheget_dimsget_dims.<locals>.genexprget_fill_valueget_var_chunk_cacheget_variables_by_attributes_get_vars.<locals>.genexpr__getattr____getattribute___getdimsgetfilesystemencoding_gethdf5libversion__getitem__getlibversion_getnamegetncattr__getsta""te__globgroupgroupnamegroupsgrp_grp_grpidgrpidgrpnamegrpnames_grpshhas_blosc_filter__has_blosc_support__has_bzip2_filter__has_bzip2_support____has_cdf5_format__has_fillval_has_lsd__has_nc_create_mem____has_nc_inq_format_extended____has_nc_inq_path____has_nc_open_mem____has_nc_rc_set____has_ncfilter____has_parallel4_support____has_parallel_support____has_pnetcdf_support____has_quantization_support____has_rename_grp____has_set_alignment__has_szip_filter__has_szip_support__has_value_flag__has_zstandard_support__has_zstd_filter__hdf5libversion__httpii0i1i2i4i8iblosciblosc_blocksizeiblosc_compleveliblosc_compressoriblosc_shuffleibzip2icomplevelicomplevel_bzip2icomplevel_zstdicontiguousidideflateidxiendianierrifletcher32indinfo__init___intnptonctypeisMA_is_coroutine_is_intis_native_bigis_native_littleis_safeis_unsignedis_unsigned_int_iscompound_isenumishuffleisinismaskedisnanisnativeisopen_isprimitiveisunlimited_isvleniszipiszip_codingiszip_pixels_per_blockitemitemsitemsizeiteritemsiuizstdjoinkkeepweakrefkey_keykey_bytestrkeyckeyskindkwargs<lambda>least_significant_digit__len__lencharlendimlittlelru_cachelstlstArrmma__main__majorversmapmaskmaskandscalemasked_arraymasked_valuesmastermasterDimsmasterRecVarmasterShapemasterTypemaster_file_mastervarmaxsizememiomemory__metaclass__minorversmissing_valuemode__module____mro_entries__msgmvalmvalisnanmvalmasknn1name_name__name__namesnamstringnativenbytesnc_create_memnc_open_mem_nc_typencattrsncdumpncdumpargsncfilenamencgenncgenargs_ncstring_attrs__ncstring_attrs_nctonptypendimndims_needsworkaround_issue485negstridenelemsnelems_orignelemspnestedgroupsnetCDF4._netCDF4__netcdf4libversion____new__newSlicenewnamenewnamecnextngattsnnno_fillnonenormpathnp_complex_type_nptonctypensdnumnum2datenumpynumunlimdimsnumv_nunlimdimnvnvarsobjectoffsetsoldmodeoldnameoldnamecopen__orthogoral_indexing__os_out_array_shapeoutfile_packparallel_parallel_formatsparentpartpath_pathpathlenpathlibpersistpixels_per_blockpopposixpathpreemptionpreemption_origpre""emptionp__prepare___private_attsprodproxyput_putput_indpy_path__pyx_checksum__pyx_result__pyx_state__pyx_type__pyx_unpickle_Dimension__qualname__quant_modequantization_quantizequantize_moderravelrc_getrc_set_recLen_recVarrecdimlenrecdimname_recdimname_redef__reduce____reduce_cython____reduce_ex__ref_dateref_numreleaseversrenameAttributerenameDimensionrenameGrouprenameVariablereplace__repr__reshaperesult_reverse_format_dictrsrunssafe_fillvalsafe_missvalsafe_validmaxsafe_validminsafe_validrange_safecastscalescale_factorselfsend_set_alignmentset_alignmentset_always_maskset_auto_chartostringset_auto_maskset_auto_maskandscaleset_auto_scaleset_chunk_cacheset_collective_set_default_formatset_fill_offset_fill_on__set_name__set_ncstring_attrsset_var_chunk_cache_set_viewdtype__setattr__setdefaultsetncattrsetncattr_stringsetncatts__setstate____setstate_cython__shape_shapeshapeoutshufflesig_digitssignificant_digitssizesize_origsizepslslen_sortbylistsplitsqueezesqueeze_outstastartstartpstartswithstatestaticmethodstderrstdoutstepstopstr__str____str__.<locals>.genexprstrdstrdatastridestridepstringstringtoarrstringtocharstrtsubdtypesubprocesssumsuper_supportedtypessyncsysszipszip_coding_szip_dict_szip_dict_invszip_pixels_per_blockt__test__thresholdthresholdpthrowtiletime_to_asciitobytestocdltolist_toma_tostrtotalmasktotelemtracebacktruetyptypecodetypeidtypinguu1u2u4u8unicode_errorunitsunlimdim_idsunlimdimidsunlimdimsupdateuse_get_vars_use_get_varsuse_nc_get_varsuse_setstateutilsvvNamevalval_bytestrvalcvalid_maxvalid_minvalid_rangevalidmaxvalidminvalue_valuevaluecvaluesvarvarInfovariables_varidvarnamevarnames_varsversion__version__vidviewvldatavlen_vltypevltypesvnamevsw_walk_grpswarnwarningsweakrefwherewith_suffixwritewsxxdimidxtypezeroszipzlibzstd\320\004;\2701\330\030#\2401\330\026!\240\021\330\0303\2601\330\032'\320'9\270\021\330\027$\320$F\300a\330\0372\3202H\320HZ\320Z[\360r\004\000\t\023\220)\2309\240A\240Q\330\010\021\220\032\2309\240F\250!\2501\340\010\013\2104\210q\330\014""\024\220A\340\014\024\220D\230\014\240A\240Q\360\n\000\t\014\210:\220Q\220m\2405\250\007\250q\330\014\031\230\021\360\n\000\t\n\330\010\r\210Q\210a\340\010\r\210Z\220q\230\013\2408\2501\250G\2609\270A\330\010\023\220<\230|\250=\270\005\270V\300:\310[\320X`\320`a\330\010\024\220M\320!7\260q\330\010\026\220a\330\010\023\220<\230{\250,\260k\300\021\330\010\017\210x\320\027/\250q\330\010\033\320\033.\250n\270N\310+\320Ua\320am\320mn\330\010\017\210u\220J\230a\230q\320\000\023\2201\360 \000\005\r\210A\210V\2201\330\004\007\200v\210X\220T\230\021\330\010\016\210j\230\001\230\021\330\004\007\200y\220\004\220G\2307\240!\330\010\014\210E\220\026\220q\230\005\230Q\230a\230x\240t\2501\340\010\014\210E\220\026\220q\230\005\230Q\230a\230x\240r\250\027\260\001\260\033\270E\300\021\300!\330\004\005\200Y\210a\210w\220c\230\021\230!\330\004\013\2101\320\000\023\2201\360 \000\005\r\210A\210V\2201\330\004\007\200v\210X\220T\230\021\330\010\016\210j\230\001\230\021\330\004\007\200y\220\004\220G\2307\240!\330\010\r\210Q\210h\220a\340\010\r\210Q\210h\220b\230\007\230q\240\001\330\004\013\2103\210a\210q\220\006\220b\230\001\330\004\007\200y\220\004\220G\2307\240!\330\010\014\210E\220\026\220q\230\001\230\022\2301\230C\230r\240\021\240&\250\004\250F\260%\260q\270\002\270#\270Q\270d\300'\310\023\310A\310T\320QR\320RS\340\010\014\210E\220\026\220q\230\001\230\022\2301\230C\230r\240\021\240&\250\004\250F\260%\260q\270\002\270#\270Q\270d\300'\310\023\310A\310T\320QR\320RS\330\004\005\200Y\210a\210v\220S\230\001\330\004\013\2101\200\001\340\004\013\2103\210a\210x\220y\240\001\200\001\340\004\013\2106\220\024\220V\2301\200\001\360\024\000\n\013\330\010\017\320\017!\240\021\240!\2407\250!\2509\260A\260Q\330\004\026\220a\220q\330\004\013\2107\220)\2309\240M\260\021\330\004\014\210E\220\027\230\001\230A\200A\3602\000\t\r\210H\220D\230\001\230\021\200A\360J\001\000\t\r\210I\220T\230\021\230!\200A\360\032\000\t\021\220\003\2201\220D\230\001\360\006\000\t\014\2104\320\017#\2401\240A\330\014\023\2204""\220u\230A\340\010\022\220!\330\010\024\220A\330\010\r\210Q\330\010\021\220\032\2306\240\021\240/\260\022\2601\330\010\021\220\032\2306\240\021\240/\260\022\2601\330\010\022\220-\230v\240Q\320&8\270\002\270!\330\010\014\210E\220\025\220a\220q\330\014\021\220\021\220%\220s\230!\2305\240\001\240\021\330\014\022\220!\2205\230\005\230Q\230a\340\014\017\210v\220Q\220c\230\022\2301\330\020\034\230A\330\020\027\220q\230\005\230Q\230f\240A\240Q\330\020\026\220a\220u\230E\240\021\240\"\240A\240V\2501\250B\250b\260\005\260Q\260b\270\001\270\021\330\020\026\220a\220u\230A\230V\2401\240A\330\020\022\220'\230\026\230q\240\006\240g\250Q\340\020\026\220a\220u\230E\240\021\240!\330\020\027\220q\230\005\230V\2401\240A\330\020\022\220'\230\026\230q\240\005\240V\2501\330\014\026\220g\230Q\230f\240A\240Q\360\006\000\t\024\220<\230q\240\001\330\010\013\2108\2203\220a\330\014\022\220*\230A\230Q\330\010\013\2101\340\014\023\2204\220q\230\005\230Q\230d\240%\240q\330\010\013\2104\210~\230S\240\004\240M\260\023\260D\270\001\360\010\000\r\020\210t\2207\230#\230T\240\021\330\020\027\220t\2307\240!\2404\240q\360\010\000\r\020\210t\2204\220v\230Q\330\020\027\220t\2309\240A\340\014\017\210t\2205\230\001\330\025\026\330\024\033\230=\250\001\250\024\250Y\260d\270!\330)1\260\030\270\031\300,\310a\310q\330\021\024\220A\220X\230S\240\006\240c\250\026\250s\260!\330\025\026\330\024\033\230;\240a\240t\2509\260D\270\001\330'/\250x\260|\3001\300A\340\025\026\330\024\033\230;\240a\240t\2509\260D\270\001\330'/\250x\260y\300\014\310A\310Q\330\014\036\230a\230q\330\r\021\220\021\330\014\017\210t\2206\230\026\230r\240\021\330\020\026\220i\230q\240\001\340\014\023\2204\220x\230q\330\014\017\210t\2207\230#\230Q\360\010\000\021\034\2307\240!\2405\250\014\260A\330\020\024\220E\230\025\230a\230t\2406\250\021\250!\330\024\030\230\001\230\025\230j\250\001\250\024\250Q\250l\270!\360\n\000\021\033\230)\2406\250\021\250.\270\001\270\021\330\020\024\220E\230\025\230a\230q\330\024\033\2301\230E\240\024\240Q\240a\340\020""\023\2203\220a\220x\230s\240&\250\003\2506\260\023\260A\330\031\032\330\030\037\230{\250!\2504\250y\270\004\270A\330+3\2608\2701\340\024\032\230*\240A\240Q\360\010\000\021#\240!\2401\330\020\024\220A\220Q\360\n\000\021\034\230=\250\001\250\031\260!\340\020\031\230\035\240f\250A\250X\260W\270A\270Q\330\020\024\220E\230\025\230a\230q\330\024\035\230X\240Y\250a\250q\330\024\036\230i\240q\330\024\027\220t\2307\240#\240W\250F\260$\260a\260q\360\006\000\031\037\230i\240q\320(c\320cg\320gn\320nu\320uv\330\024\032\230!\2302\230W\240L\260\001\260\021\330\024\032\230!\2302\230U\240,\250a\250q\330\024\037\230y\250\002\250/\270\021\270%\270q\300\001\340\020\023\2203\220a\220x\230s\240&\250\003\2506\260\023\260A\330\031\032\330\030\037\230{\250!\2504\250y\270\004\270A\330+3\2608\2701\340\024\032\230*\240A\240Q\360\010\000\021#\240!\2401\340\020\024\220A\220Q\330\010\014\210A\210Q\330\010\014\210A\210Q\330\010\014\210A\210Q\200A\360\010\000\t\014\2101\330\014\023\2201\360\006\000\016\017\330\014\023\320\023&\240a\240t\2509\260A\330\010\017\210u\220C\220q\200A\360\n\000\t\014\2101\330\014\023\2201\360\006\000\016\017\330\014\023\320\023&\240a\240t\2509\260A\330\010\017\210u\220C\220q\200A\330'1\260\033\270A\360.\000\t\014\210;\220c\230\021\330\014\027\220w\230e\2401\240A\330\014\031\230\030\240\034\250Q\250a\330\010\027\220{\240!\330\027*\250!\330\027*\250!\330\027(\250\001\330\027/\250q\330\027-\250Q\330\010\013\2107\220'\230\021\330\014\022\220*\230A\230Q\330\010\022\220)\2302\230[\250\001\250\021\330\010\022\220$\220a\220q\230\t\240\033\250F\260,\270n\310F\320RS\330\010\017\210w\220a\220|\2405\250\001\200A\360\034\000\t\024\2201\330\010\026\220a\330\010\014\210J\220a\330\014\017\210w\220d\230!\330\020\033\2309\240C\240q\330\020\036\230a\340\020\033\2309\240C\240q\340\010\020\220\003\2201\220D\230\001\340\010\024\220A\330\010\r\210Q\330\010\021\220\032\2306\240\021\240/\260\022\2601\330\010\021\220\032\2306\240\021\240/\260\022\2601\330\010\022\220-\230v\240Q\320&8\270\002\270!""\330\010\014\210E\220\025\220a\220q\330\014\021\220\021\220%\220s\230!\2305\240\001\240\021\330\014\022\220!\2205\230\005\230Q\230a\340\014\017\210v\220Q\220c\230\022\2301\330\020\034\230A\330\020\027\220q\230\005\230Q\230f\240A\240Q\330\020\026\220a\220u\230E\240\021\240\"\240A\240V\2501\250B\250b\260\005\260Q\260b\270\001\270\021\330\020\026\220a\220u\230A\230V\2401\240A\330\020\022\220'\230\026\230q\240\006\240g\250Q\340\020\026\220a\220u\230E\240\021\240!\330\020\027\220q\230\005\230V\2401\240A\330\020\022\220'\230\026\230q\240\005\240V\2501\330\010\013\2104\210~\230S\240\004\240M\260\023\260D\270\001\330\014\023\2205\230\006\230a\230z\250\024\250Q\360\006\000\r\020\210r\220\027\230\001\330\020\023\2204\220u\230A\330\031\032\330\030\037\230}\250A\250T\260\031\270$\270a\330-5\260X\270Q\330-9\270\021\270!\330\025\030\230\001\230\030\240\023\240F\250#\250V\2603\260a\330\031\032\330\030\037\230{\250!\2504\250y\270\004\270A\330+3\2608\270<\300q\310\001\340\031\032\330\030\037\230{\250!\2504\250y\270\004\270A\330+3\2608\2701\330+7\260q\270\001\340\020\027\220q\330\014\017\210u\220C\220q\330\020\026\220j\240\001\240\021\330\021\026\220c\230\021\330\020\"\240!\2401\330\r\021\220\021\340\014\023\2205\230\006\230a\230z\250\021\340\014\023\2204\220x\230q\330\014\026\220l\240!\2401\330\014\017\210t\2207\230#\230Q\360\006\000\021\033\230)\2406\250\021\250/\270\022\2701\340\020\023\2203\220a\220x\230s\240&\250\003\2506\260\023\260A\330\031\032\330\030\037\230{\250!\2504\250y\270\004\270A\330+3\2608\2701\360\006\000\025\033\230*\240A\240Q\360\010\000\021\024\2205\230\003\2301\330\024\032\230!\330\025\032\230#\230Q\330\023%\240Q\240a\360\n\000\021\034\2307\240!\2405\250\014\260A\330\020\024\220E\230\025\230a\230q\330\024\027\220w\230a\230q\330\030\034\230A\230U\240'\250\021\250\"\250G\2601\260A\340\030\034\230A\230U\240!\340\020\027\220u\230H\240A\240V\2501\340\025\026\330\024\033\230>\250\021\250)\2601\340\020\024\220A\220Q\360\010\000\021\032\230\035\240f\250A\250W\260A\260Q""\330\020\024\220E\230\025\230a\230q\330\024\032\230!\2302\230W\240A\330\024\032\230!\2302\230U\240'\250\021\340\020\023\2203\220a\220x\230s\240&\250\003\2506\260\023\260A\330\031\032\330\030\037\230{\250!\2504\250y\270\004\270A\330+3\2608\2701\340\024\032\230*\240A\240Q\360\010\000\021\024\2205\230\003\2301\330\024\032\230!\330\025\032\230#\230Q\330\024&\240a\240q\360\006\000\021\025\220E\230\025\230a\230q\330\024\036\230f\240A\240R\240q\330\024\036\230e\2406\250\021\250(\260$\260a\340\024\032\230!\230<\240q\250\n\260&\270\001\270\022\2704\270w\300a\330\024\030\230\001\230\025\230a\340\020\027\220u\230H\240A\240V\2501\340\025\026\330\024\033\230=\250\001\250\031\260!\340\020\024\220A\220Q\330\010\014\210A\210Q\330\010\014\210A\210Q\330\010\014\210A\210Q\330\010\013\2101\340\014\023\2204\220q\230\005\230Q\230d\240%\240q\360\014\000\t\014\2104\210t\2206\230\021\330\014\020\220\t\230\021\230!\330\010\013\2104\210t\2201\330\014\023\2204\220q\230\001\330\r\016\330\014\023\2205\230\010\240\001\240\021\340\014\023\2201\200A\340\010\016\320\016!\240\021\240!\200A\360\014\000\t\014\2103\210a\210t\2201\330\014\022\220*\230A\230Q\330\010\014\210D\220\001\200A\360\014\000\t\014\2103\210a\210t\2201\330\014\022\220*\230A\230Q\330\010\017\210t\2206\230\021\230!\200A\360\020\000\t\014\2104\210|\2303\230k\250\024\250W\260A\330\010\014\210F\220)\2307\240&\250\001\330\014\024\220A\220V\230;\240f\250A\330\010\013\2104\210|\2303\230k\250\024\250X\260Q\200A\360\016\000\t\014\2104\210}\230C\230q\330\021\022\330\020\027\320\027'\240q\250\004\250I\260Q\260n\300A\330\014\036\230a\230q\330\014\017\210}\230C\230q\330\020\027\220q\340\020\036\230g\240V\2501\250L\270\002\270!\330\020\030\230\004\230A\330\025\026\330\024\033\320\033+\2501\250D\260\t\270\021\270.\310\001\330\020\"\240!\2401\330\020\037\230q\330\020\024\220E\230\025\230a\230q\330\024 \240\007\240q\250\013\2601\260A\330\020\024\220A\220Q\330\020\023\2206\230\023\230A\330\024\033\2301\340\024\033\2301\360\006\000\022\023\330\020\027""\220v\230Q\230d\240)\2501\250G\2601\260G\2701\270H\300A\300Q\330\014\017\210t\2208\2303\230a\330\020\027\220q\340\020\027\220q\200A\360\n\000\t\014\2104\210q\330\014\023\2201\340\010\013\2104\210q\330\014\023\2201\360\006\000\016\017\330\014\023\320\023&\240a\240t\2509\260A\330\010\017\210u\220C\220q\200A\360\016\000\t\014\2104\210q\330\014\023\2201\360\006\000\t\014\2104\210u\220L\240\010\320(:\270!\330\014\023\2201\340\r\016\330\014\023\320\023&\240a\240t\2509\260D\270\t\300\021\300/\320QR\320RS\330\010\032\230!\2301\330\010\013\210>\230\023\230A\330\014\023\2201\340\010\013\210>\230\023\230A\330\014\031\230\021\330\014\031\230\021\330\r\033\2303\230a\330\014\031\230\021\330\014\031\230\021\340\014\031\230\021\330\014\031\230\021\330\010\017\210|\2301\200A\360\014\000\t\014\2104\210q\330\014\r\340\010\017\320\017 \240\013\2501\330\r\016\330\014\023\320\023$\240A\240T\250\031\260$\260a\330\023\024\330\010\032\230!\2301\200A\360\020\000\t\014\2104\210q\330\014\022\220*\230A\330\020\021\360\010\000\t\023\220*\230A\230Q\330\010\023\2201\330\010\t\330\014\022\220$\220g\230Q\230a\330\014\024\220C\220q\330\017\020\330\014\022\220(\230!\320\0337\260r\270\021\330\r\016\330\014\023\220=\240\001\240\027\250\001\330\010\032\230!\2301\340\010\014\210G\2204\220q\230\001\340\010\014\210G\2201\220K\230q\200A\330\010\013\2104\210t\2201\330\014\022\220)\2301\230A\340\014\023\2204\220w\230b\240\001\240\021\200A\360\020\000\t\014\2104\210t\2201\330\014\022\220)\2301\230A\330\010\020\220\004\220A\330\010\014\210A\360\006\000\t\014\2107\220!\2201\330\014\017\210v\220R\220q\330\020\026\220j\240\001\240\021\330\014\017\210u\220B\220a\330\020\023\2204\220v\230Q\230b\240\001\240\025\240c\250\021\330\024\033\2304\230v\240Q\240b\250\001\250\021\340\024\032\230*\240A\240Q\330\r\027\220q\230\006\230a\330\014\017\210s\220!\2206\230\023\230A\330\020\026\220j\240\001\240\021\330\014\026\220a\330\014\020\220\002\220%\220y\240\001\240\021\330\020\023\2204\220w\230a\230q\330\024\032\230*\240A\240Q""\330\025\027\220r\230\021\330\024\033\2304\230v\240Q\240b\250\001\250\021\330\024\027\220u\230B\230a\330\030\036\230j\250\001\250\021\340\030\037\230w\240a\240t\2506\260\021\260\"\260A\260Q\340\024\033\2307\240!\2401\330\014\023\2205\230\001\230\021\340\014\022\220*\230A\230Q\340\010\013\210:\220Q\220f\230A\330\014\024\220D\230\001\230\021\340\014\024\220A\220Q\330\010\020\220\001\220\022\2201\220A\330\010\021\220\032\2306\240\021\240/\260\022\2601\330\010\021\220\032\2306\240\021\240/\260\022\2601\330\010\014\210E\220\025\220a\220q\330\014\022\220!\2205\230\005\230Q\230a\330\014\022\220!\2205\230\005\230Q\230a\330\010\013\2104\210w\220c\230\021\330\014\026\220i\230v\240Q\240a\360\006\000\r\030\220w\230a\230u\240L\260\001\330\014\026\220j\240\001\240\036\250q\330\014\023\2201\220E\230\021\330\021\022\330\020\027\220{\240!\2404\240y\260\004\260A\330#+\2508\2601\330\014\036\230a\230q\330\014\020\220\001\220\021\340\014\017\210t\2207\230#\230T\240\021\330\020\026\220i\230q\320 K\3104\310w\320VZ\320Z[\330\014\024\220A\330\014\025\220]\240&\250\001\250\021\330\014\022\220!\2202\220W\230L\250\001\250\021\330\014\022\220!\2202\220U\230,\240a\240q\330\021\022\330\020\027\220{\240!\2404\240y\260\004\260A\330#+\2508\2601\330\014\036\230a\230q\330\014\020\220\001\220\021\330\010\014\210A\210Q\330\010\014\210A\210Q\200A\360\010\000\t\026\220]\240!\240?\260!\2604\260u\270A\340\010\021\320\021)\250\021\250$\250i\260t\2701\330\014\020\320\020 \240\001\330\014\020\220\017\230q\330\021\022\330\020\027\320\0275\260Q\260d\270)\3004\300y\320PQ\320QR\330\014\036\230a\230v\240Z\250q\340\014\036\230k\250\021\250!\330\014$\240B\240a\320'9\270\021\270!\340\014\020\220\014\230L\250\001\330\020\024\220G\320\0332\260+\270W\300A\360\006\000\022\023\330\020\027\320\027+\2501\250D\260\t\270\021\270!\330\014\036\230a\230v\240Z\250q\330\021\022\330\020\027\220~\240Q\240d\250)\3203C\3001\330\014\036\230a\230v\240Z\250q\330\014\020\220\005\220[\240\001\240\024\240W\250A\250\\\270\031\300!\330\020""\024\220G\2306\240\025\240c\250\023\250A\200A\360\014\000\t\014\2104\210u\220L\240\010\320(:\270!\330\014\023\2201\330\r\016\330\014\023\320\023$\240A\240T\250\031\260$\260i\270q\300\001\330\010\032\230!\2301\330\010\013\2108\2203\220a\330\014\023\2201\330\r\025\220S\230\001\330\014\023\2201\340\014\023\2201\200A\360\020\000\t\014\2104\210u\220L\240\003\240;\250d\260%\260w\270a\330\010\014\210F\220)\2307\240&\250\001\330\014\024\220A\220T\230\027\240\004\240I\250V\2601\330\010\013\2104\210u\220L\240\003\240;\250d\260%\260x\270q\200A\360\024\000\t\014\2104\210u\220L\240\010\320(:\270,\300g\310Q\330\010\020\220\004\220A\330\010\026\220j\240\006\240a\240\177\260b\270\001\330\r\016\330\014\023\320\023&\240a\240t\2509\260D\270\t\300\021\300-\310q\330\010\032\230!\2301\330\010\023\2201\330\010\014\210E\220\025\220a\220q\330\014\026\220g\230Q\230k\250\021\250!\330\010\014\210A\210Q\330\010\013\2101\330\014\023\2201\340\014\023\2201\200A\360\020\000\016\017\330\014\023\220?\240!\2404\240x\250t\2608\2701\270H\300A\330\010\032\230!\2301\330\010\013\2108\2203\220a\330\014\023\2201\340\014\r\330\020\032\230$\230a\330\020\027\220q\330\023\024\360\006\000\021\024\2204\220q\340\024\036\230e\2406\250\021\250#\250T\260\021\330\024\031\230\037\250\001\250\024\250X\260T\270\030\300\021\300(\310,\320VW\320WX\330\024&\240a\240q\330\024\033\2301\360\006\000\025\034\2301\200A\330\010\013\2105\220\003\2209\230G\2404\240w\250a\330\010\013\2105\220\003\2208\2307\240#\240Q\240d\250'\260\021\330\010\013\2105\220\003\2209\230G\2404\240q\330\010\t\330\014\023\2204\220y\240\001\240\021\340\014\022\220.\240\001\240\021\200A\330\010\013\2105\220\004\220L\240\r\250^\2701\330\024!\240\036\250q\330\014\017\210u\220C\220~\240W\250D\260\001\330\014\017\210u\220C\220}\240G\2504\250q\330\014\017\210u\220C\220\177\240g\250T\260\021\330\014\017\210u\220C\220~\240W\250D\260\001\330\014\017\210u\220C\220\177\240g\250T\260\021\330\014\017\210u\220C\220x\230w\240d\250!\330\014\017\210u\220C\220z\240\027\250""\004\250A\340\014\023\2207\320\032+\2501\250F\260!\200A\360\014\000\016\017\330\014\023\2207\230!\2304\230q\330\010\032\230!\2301\200A\340\010\013\2107\220!\2206\320\031)\250\024\250W\260A\260V\2701\330\014\024\220E\230\022\2304\230|\2501\250D\260\001\330\014\017\210t\2206\230\026\230s\240&\250\007\250u\260G\2701\270A\330\r\024\220A\220V\2301\330\014\023\2204\220q\230\004\230A\330\014\017\210t\2206\230\026\230s\240&\250\007\250u\260G\2701\270A\330\r\024\220A\220V\2301\330\014\023\2205\230\002\230$\230a\330\014\017\210t\2206\230\026\230s\240&\250\007\250u\260G\2701\270A\330\010\013\2104\210w\220c\230\024\230Q\330\014\023\2204\220w\230a\230t\2401\330\010\013\2102\210U\220!\2201\360\010\000\r\020\210w\220a\220v\320\035.\250a\330\017\024\220D\230\001\230\025\230e\2401\240D\250\005\250Q\250d\260'\270\024\270Q\330\020\027\220t\2301\340\020\023\2207\230!\2306\240\021\360\010\000\025\030\220u\230F\240!\2404\240\177\260g\270S\300\001\330\030\"\240$\240a\340\030\034\230A\330\030\036\230l\250!\2501\330\024\027\220u\230F\240!\2408\2507\260#\260Q\330\030\"\240'\250\021\250!\330\025\034\230A\230V\2401\330\024\036\230d\240!\340\024\036\320\036.\250a\250t\2606\270\024\270Q\270a\360\010\000\021\024\2204\220w\230d\240$\240d\250$\250e\2604\260q\330\024\033\2305\240\006\240a\240q\250\t\260\024\260Q\340\024\033\2304\230w\240a\240{\260!\330\010\017\210q\200A\340\r\016\330\014\023\2208\2301\230D\240\001\200A\340\r\016\330\014\023\2208\2301\230D\240\001\340\010\013\2101\330\014\036\230a\230q\340\010\014\210K\220q\360\n\000\t\031\230\001\230\021\230$\230a\200A\340\r\016\330\014\023\2209\230A\230T\240\021\200A\360\020\000\t\023\220*\230A\230Q\330\010\023\2201\330\010\022\220*\230A\230Q\330\010\023\2201\330\r\016\330\014\023\220=\240\001\240\024\240Y\250d\260)\270:\300Q\330\010\032\230!\2301\200A\360\020\000\t\023\220*\230A\230Q\330\010\023\2201\330\010\022\220*\230A\230Q\330\010\023\2201\330\r\016\330\014\023\220=\240\001\240\024\240Y\250k\270\032\3001\330\010\032\230!\2301\200A\360\022\000""\t\023\220*\230A\230Q\330\010\022\220!\330\010\013\2104\210|\2303\230k\250\024\250W\260A\330\r\016\330\014\023\220:\230Q\230d\240)\250;\260a\330\010\013\2104\210|\2303\230k\250\024\250X\260Q\330\010\032\230!\2301\200A\360\020\000\t\023\220*\230A\230Q\330\010\022\220!\330\010\013\2104\210u\220L\240\003\240;\250d\260%\260w\270a\330\r\016\330\014\023\220:\230Q\230d\240)\2504\250y\270\001\330\010\013\2104\210u\220L\240\003\240;\250d\260%\260x\270q\330\010\032\230!\2301\200A\360\016\000\t\023\220*\230A\230Q\330\010\024\220A\330\010\013\2104\210|\2303\230k\250\024\250W\260A\330\010\t\330\014\022\220$\220k\240\021\240!\330\017\020\330\014\022\220(\230!\320\033;\2702\270Q\330\r\016\330\014\023\220=\240\001\240\024\240Y\250c\260\031\270!\330\010\013\2104\210|\2303\230k\250\024\250X\260Q\340\010\032\230!\2301\340\010\014\210K\220t\2301\230A\340\010\014\210K\220q\230\013\2401\200A\360\006\000\t\r\210A\330/1\260\021\330\010\013\2107\220!\2206\230\021\330\014\022\220%\220v\230Q\230d\240*\250A\250Q\340\014\023\2201\330\010\t\330\014\023\2205\230\006\230a\230u\240D\250\001\330\017\020\330\014\026\220a\330\014\024\220E\230\021\230!\330\014\023\2201\330\010\022\220)\2301\230D\240\001\330\010\013\2104\210q\330\014\024\220E\230\021\230!\330\010\017\210q\200A\360$\000\t\021\220\004\220A\330\010\013\2106\220\023\220F\230(\240$\240a\330\010\014\210G\2205\230\007\230q\330\014\017\320\017%\240Q\240a\340\010\014\210J\220j\240\001\240\021\330\014\020\220\t\230\021\330\020\024\220G\2305\240\n\250'\260\021\330\024\027\320\027-\250Q\250a\200A\360 \000\t\021\220\004\220A\330\010\013\2106\220\023\220F\230(\240$\240a\330\010\014\210G\2205\230\007\230q\330\014\017\320\017%\240Q\240a\340\010\014\210J\220j\240\001\240\021\330\014\020\220\t\230\021\330\020\024\220G\2305\240\n\250'\260\021\330\024\027\320\027-\250Q\250a\200A\360\"\000\t\021\220\004\220A\330\010\013\2106\220\023\220F\230(\240$\240a\330\010\014\210G\2205\230\007\230q\330\014\017\210~\230Q\230a\340\010\014\210J\220j\240\001\240\021\330""\014\020\220\t\230\021\330\020\024\220G\2305\240\n\250'\260\021\330\024\027\220~\240Q\240a\200A\360 \000\t\021\220\004\220A\330\010\013\2106\220\023\220F\230(\240$\240a\330\010\014\210G\2205\230\007\230q\330\014\017\210\177\230a\230q\340\010\014\210J\220j\240\001\240\021\330\014\020\220\t\230\021\330\020\024\220G\2305\240\n\250'\260\021\330\024\027\220\177\240a\240q\200A\360*\000\t\021\220\004\220A\330\010\013\2106\220\023\220F\230(\240$\240a\330\010\014\210G\2205\230\007\230q\330\014\017\320\017\037\230q\240\001\340\010\014\210J\220j\240\001\240\021\330\014\020\220\t\230\021\330\020\024\220G\2305\240\n\250'\260\021\330\024\027\320\027'\240q\250\001\200A\330\010\024\220C\220q\230\004\230F\240+\250Q\250d\260!\330\010\020\220\014\230B\230d\240+\250V\2601\260A\200A\360*\000\t\r\320\014\034\230D\240\001\240\021\200A\330\010\014\210E\220\024\220Q\330\014\r\320\r#\2401\240A\200A\330\010\014\210E\220\024\220Q\330\014\r\210^\2301\230A\200A\330\010\014\210E\220\024\220Q\330\014\r\320\r\035\230Q\230a\200A\330\010\014\210E\220\024\220Q\330\014\r\210_\230A\230Q\200A\330\010\014\210F\220!\200A\360\022\000\t\r\210H\220A\320\025&\240f\250A\250V\260:\270Q\330\010\017\210t\2208\2301\230A\200A\360\014\000\t\r\210H\220D\230\001\330\014\020\220\006\220a\200A\360\034\000\t\r\210I\220Q\320\026'\240|\2601\260F\270!\330\020\021\330\010\017\210t\2209\230A\230Q\200A\340\010\014\210I\220Q\220h\230a\200A\360 \000\t\025\220I\230Y\240a\240q\330\010\027\220y\240\006\240a\240q\330\010\020\220\001\360\006\000\t\r\210E\220\021\330\014\017\210t\2203\220a\330\014\017\210r\220\027\230\005\230Q\330\020\025\220W\230A\230U\240%\240q\250\007\250q\330\014\024\220E\230\027\240\001\240\021\360\006\000\t\020\210q\200A\360\024\000\t\r\210J\220a\320\027(\250\010\260\001\260\026\260z\300\021\330\020\021\330\010\017\210t\220:\230Q\230a\320\004,\250A\360\032\000\t\r\210K\220q\230\013\2409\250A\250V\2609\270E\300\021\330\010\017\210t\220;\230a\230q\200A\330\010\014\210K\220q\330\010\014\210M\230\021\330\010\014\210I""\220Q\200A\330\010\014\210N\230#\230Q\330\010\014\210I\220Q\330\010\014\210H\220A\330\010\014\210N\230!\330\010\014\210K\220t\230;\240a\240q\330\010\014\210O\2301\330\010\014\210K\220t\2301\330\010\014\210I\220S\230\001\330\010\014\210I\220S\230\001\340\010\014\210F\220)\2303\230i\240v\250Q\330\014\020\220\t\230\021\230(\240!\200A\360\032\000\t\r\210O\2304\230q\240\001\200A\360>\000\t\016\210Q\340\010\032\230!\360\006\000\t\021\220\004\220A\330\010\013\2106\220\023\220F\230(\240$\240a\330\010\014\210I\220Q\330\014\022\220%\220q\230\001\330\014\020\220\003\2205\230\006\230f\240A\330\020\023\2208\2301\230A\330\024%\240Q\240a\240w\250a\250u\260C\260q\330\024\027\220\177\240c\250\021\330\030\031\330\025\034\230A\230U\240#\240T\250\027\260\001\260\025\260c\270\023\270A\330\024%\240Q\340\024%\240Q\330\024\025\340\014\017\210\177\230c\240\021\330\020\022\220'\230\021\230%\230q\240\001\340\010\017\210q\200A\360\032\000\t\r\320\014!\240\024\240Q\240a\200A\360 \000\t\r\320\014!\240\024\240Q\240a\360\010\000\t\021\220\004\220A\330\010\013\2106\220\023\220A\330\014\024\220D\230\001\330\010\014\210G\2205\230\007\230q\330\014\017\320\017\"\240!\2401\340\010\014\210J\220j\240\001\240\021\330\014\020\220\t\230\021\330\020\025\320\025(\250\001\250\021\200A\360\n\000\t\020\210~\230Q\230d\240)\2501\200A\360\n\000\t\020\210~\230Q\230d\240)\2504\250q\200A\360\024\000\t\r\320\014\035\230T\240\021\240!\200A\360\n\000\t\014\320\013!\240\024\240T\250\021\330\014\023\2204\220{\240!\2401\340\010\014\210G\2201\220A\200A\360\010\000\t\022\220\024\220U\230!\330\r\016\330\014\023\220>\240\021\240(\250$\250i\260q\330\010\032\230!\2301\330\010\017\210y\230\007\230q\240\001\200A\330\010\021\220\021\220$\220a\220t\2301\230F\240(\250!\250=\270\001\330\010\023\2205\230\004\230A\330\010\023\2205\230\004\230A\330\010\023\2201\330\010\013\2104\210v\220S\230\001\330\014\022\220'\230\021\230!\330\025\031\230\033\240A\240T\250\024\250\\\270\021\270!\340\014\022\220'\230\021\230,\240b\250\004\250A\330\010""\014\210H\220D\230\010\240\001\330\014\022\220'\230\021\320\032*\250&\260\004\260I\270Q\270a\330\010\016\210g\220Q\320\026,\250B\250c\260\021\260!\330\010\016\210g\220Q\320\026+\2502\250S\260\001\260\021\330\010\016\210g\220Q\320\026(\250\002\250#\250Q\250a\330\010\017\210t\2205\230\001\230\021\200A\330\010\021\220\021\220$\220a\220t\2301\230F\240(\250!\250=\270\001\330\010\023\2205\230\004\230A\330\010\016\210g\220Q\220m\2404\240x\250t\2608\2701\330\010\014\210H\220D\230\010\240\001\330\014\022\220'\230\021\320\032*\250&\260\004\260I\270Q\270a\330\010\024\220A\330\010\014\210K\220t\2301\330\014\022\220)\2301\230D\240\007\240q\330\014\017\210s\220,\230a\330\020\031\230\027\240\001\240\023\240A\240Q\330\010\016\210g\220Q\320\0265\260U\270!\2701\330\010\016\210g\220Q\320\026-\250T\260\021\330\010\017\210t\2205\230\001\230\021\200A\360\n\000\t\022\220\035\230a\230t\2409\250D\260\t\270\024\270U\300!\360\006\000\t\026\220Q\330\010\014\210I\220Q\330\021\022\330\020\027\220~\240Q\240d\250)\2607\270!\330\014\036\230a\230q\330\014\023\2209\230G\2401\240A\330\014\031\230\033\240C\240q\340\010\017\210q\200A\360\034\000\016\017\330\014\023\220;\230a\230t\2409\250I\260Q\260a\330\010\032\230!\2301\200A\360\024\000\016\017\330\014\023\220;\230a\230t\2409\250K\260q\270\001\330\010\032\230!\2301\200A\330\010\016\210d\220!\2204\220q\230\006\230h\240a\240}\260A\330\010\013\2104\210|\2301\330\014\023\2201\330\021\026\220d\230(\240#\240Q\240a\340\014\023\2201\330\021\026\220d\230(\240#\240Q\240a\200A\360\014\000\t\017\210g\220Q\220a\200A\360\014\000\t\027\220g\230Q\230f\240M\260\027\270\004\270G\3001\330\010\032\230,\240d\250$\250f\260F\270#\270Q\330\010\013\2104\210w\220d\230!\330\014\037\230x\240s\250$\250f\260K\270t\3006\310\021\330\014\023\2204\220u\230A\230Q\360\006\000\t\025\220E\230\026\230q\240\004\240H\250E\260\021\330\010\025\220Q\330\010\027\220t\320\033+\2501\250A\330\010\013\2101\330\014\023\2205\230\006\230a\230t\320#3\2604\260q\330\014\017\210t\2207\230$\230a\330\020\027""\220t\2305\240\001\240\021\340\014\027\220u\230F\240!\2404\240x\250u\260A\330\014\017\210t\2207\230#\230Q\330\020\027\220q\230\001\330\014\020\220\005\220Q\340\020\021\330\024 \240\005\240V\2501\250A\330\027\030\330\024 \240\001\330\020\023\2201\330\024 \240\005\240V\2501\250A\340\024 \240\004\240B\240a\330\014\017\210x\220t\2301\360\010\000\021\036\230T\240\021\240!\330\020\035\230Q\340\010\027\220t\320\033+\2501\250A\330\010\013\2101\330\014\023\2205\230\006\230a\230t\240=\260\004\260A\330\014\017\210t\2207\230$\230a\330\020\027\220t\2305\240\001\240\021\340\014\r\330\020\034\230E\240\026\240q\250\001\340\020\034\230A\330\014\017\210q\330\020\027\220u\230F\240!\2401\330\022\027\220s\230%\230t\2401\330\020\027\220t\2302\230Q\340\020\027\220q\330\014\017\210u\220G\2301\330\020\023\220;\230c\240\021\330\024!\240\021\330\020\035\230Q\360\010\000\r\020\320\017%\240R\240x\250q\330\020\024\220E\230\034\240[\260\001\260\021\360\010\000\021\031\230\001\340\025\026\330\024\033\230?\250!\2504\250x\260t\2708\3001\300H\310A\330\020\"\240!\2401\360\034\000\r\020\210t\2204\220y\240\005\240X\250S\260\002\260#\260T\270\026\270t\3001\300D\310\010\320PU\320UV\330\020\032\230%\230v\240Q\320&6\260a\260t\2706\300\024\300Q\300e\3104\310q\330\020\036\230e\2403\240a\360\006\000\021\024\2204\220q\230\r\240S\250\006\250l\270%\270x\300q\310\001\330\020\023\220;\230d\240!\330\024\027\220{\240#\240Q\330\030%\240Q\330\024\031\230\024\230R\230q\330\024!\240\021\360\006\000\t\024\2206\230\033\240A\360\n\000\t\033\230$\320\036.\250a\250q\330\010\030\230\004\320\034,\250A\250Q\330\010\030\230\004\320\034,\250A\250Q\330\010\013\320\013\033\2304\230t\240<\250v\260S\270\001\330\014\027\220u\230F\240!\2404\240|\2601\260D\270\004\270A\330\014\027\220u\230F\240!\2404\240|\2601\260D\270\004\270A\340\014\017\210q\330\020\033\2305\240\006\240a\240t\250<\260t\2701\330\014\017\210q\330\020\033\2305\240\006\240a\240t\250<\260t\2701\330\010\013\2109\220G\2305\240\004\240D\250\007\250t\2601\330\014\027\220x\230u""\240A\240Q\330\010\013\2109\220G\2305\240\004\240D\250\007\250t\2601\330\014\027\220x\230u\240A\240Q\360\022\000\t\025\220D\230\006\230d\240!\2404\240t\2505\260\001\330\010\013\2101\330\014\023\2205\230\006\230a\230t\240=\260\004\260A\340\014\023\2205\230\006\230a\320\037/\250q\260\004\260F\270$\270a\270u\300D\310\001\330\014\017\210{\230'\240\021\330\010\013\2104\210v\220V\2303\230a\360\022\000\r\020\210y\230\007\230q\330\020\035\230U\240\"\240A\330\014\017\210y\230\007\230q\330\020\035\230U\240\"\240A\330\010\013\210;\220c\230\025\230d\240%\240w\250a\330\014\031\230\021\360\006\000\t\014\210;\220c\230\021\330\014\031\320\031)\250\021\250$\250f\260D\270\001\270\021\340\010\030\230\004\230A\230Y\240d\250!\330\010\013\2101\330\014\023\2202\220]\240!\2405\250\005\250Z\260{\300!\360\006\000\r\024\2202\220]\240!\2401\360\010\000\t\014\2104\210w\220c\230\023\230D\240\004\240E\250\024\250Q\360\006\000\r\024\2204\220q\230\001\330\r\021\220\024\220]\240$\240d\250!\360\006\000\r\024\2205\230\006\230a\230v\240U\250!\340\010\017\210q\200A\360\006\000\016\017\330\014\023\220>\240\021\240$\240i\250q\260\001\340\010\013\2101\330\014\036\230a\230q\340\010\014\210K\220q\330\010\030\230\001\230\021\230$\230a\360\010\000\t\020\210\177\230a\230x\240u\250I\260U\270!\200A\360\010\000\016\017\330\014\023\220>\240\021\240$\240i\250q\330\010\032\230!\2301\330\010\017\210y\230\007\230q\240\001\200A\360\024\000\016\017\330\014\023\320\023)\250\021\250$\250i\260t\2709\300A\300Q\330\023\024\220I\230Q\230a\330\010\032\230!\2301\330\010\017\210w\220i\230y\250\r\260Q\330\010\020\220\005\220W\230A\200A\360\016\000\t\n\330\014\022\220$\220j\240\001\240\021\330\017\020\330\014\022\220(\230!\320\033:\270\"\270A\330\010\022\220*\230A\230Q\330\010\024\220A\330\010\013\2104\210|\2303\230k\250\024\250W\260A\330\r\016\330\014\023\220=\240\001\240\024\240Y\250c\260\031\270!\330\010\013\2104\210|\2303\230k\250\024\250X\260Q\340\010\032\230!\2301\340\010\014\210J\220d\230!\2301\340\010\014\210J\220a\220{""\240!\200A\330\010\017\210q\200A\360\020\000\t\020\210q\330\010\013\2104\210|\2303\230a\330\014\020\220\001\330\014\022\220'\230\021\230!\330\010\020\220\001\220\026\220{\240&\250\r\3205K\3101\200A\360\020\000\t\020\210q\330\010\013\2104\210|\2303\230k\250\024\250W\260A\330\010\020\220\001\220\026\220{\240&\250\r\3205K\3104\310q\330\010\013\2104\210|\2304\230{\250$\250h\260a\200A\360\022\000\t\020\210q\330\010\013\2104\210u\220L\240\003\2401\330\014\020\220\001\330\014\022\220'\230\021\230!\330\010\020\220\001\220\024\220W\230D\240\t\250\026\250}\320<R\320RS\200A\360\020\000\t\020\210q\360\010\000\t\014\2105\220\003\2201\330\014\020\320\020D\300A\340\014\022\220.\240\001\240\021\330\010\013\2104\210u\220L\240\003\240;\250d\260%\260w\270a\330\010\020\220\001\220\024\220W\230D\240\t\250\026\250}\320<R\320RV\320VW\330\010\013\2104\210u\220L\240\003\240;\250d\260%\260x\270q\200A\360\014\000\t\030\220q\330\010\030\230\001\330\010\030\230\001\330\010\027\220q\330\010\036\230a\330\010(\250\001\330\010!\240\021\330\010\"\240!\330\010)\250\021\330\010,\250A\330\010+\2501\330\010+\2501\330\010\024\220G\2306\240\027\250\006\250g\260V\2708\3006\310\030\320QW\320Wa\320ag\320gs\320su\360\000\000v\001C\002\360\000\000C\002D\002\330\010\013\2104\210u\220L\240\010\320(:\270,\300a\330\r\016\330\014\023\320\023%\240Q\240d\250)\2604\260y\300\001\300\032\3101\310J\320VW\320WX\330\010\032\230!\2301\330\r\016\330\014\023\320\023(\250\001\250\024\250Y\260d\270)\3001\300A\330\010\032\230!\2301\330\010\013\2101\330\021\022\330\020\027\320\027+\2501\250D\260\t\270\024\270Y\300a\300q\330\027\030\230\001\330\014\017\210u\220C\220s\230&\240\001\340\010\013\2101\330\021\022\330\020\027\320\027'\240q\250\004\250I\260T\270\031\300!\3001\330\027\030\230\001\330\014\017\210u\220C\220s\230'\240\021\340\010\013\2101\330\021\022\330\020\027\320\027'\240q\250\004\250I\260T\270\031\300!\3001\330\027\030\320\030*\250!\320+<\270A\320=N\310a\310q\330\014\017\210u\220C\220s\230'\240\021\340\010\013\2101\330""\021\022\330\020\027\220\177\240a\240t\2509\260D\270\t\300\021\300!\330\027\030\230\001\330\014\017\210u\220C\220q\330\020\026\220a\340\020\023\2201\330\024\032\230!\340\024\032\230!\340\010\013\2101\330\014\024\220A\220X\230Q\330\014\024\220A\220]\240!\330\010\013\2101\330\014\024\220A\220X\230Q\330\014\024\220A\220]\240!\330\010\013\2101\330\014\024\220A\220Y\230a\330\014\024\220A\220]\240!\330\010\013\2101\330\014\037\230q\330\014\024\220A\220Z\230}\250O\2701\320<N\310j\320XY\330\014\024\220A\220]\240!\330\010\013\2101\330\014\032\230!\330\014\024\220A\220Y\230i\240~\260Q\260m\320CV\320VW\330\010\013\2101\330\014\024\220A\220[\240\001\330\010\013\2101\330\014\024\220A\220^\2401\330\010\017\210q\200A\360\014\000\t\020\210s\220!\2203\220a\320\0273\2604\260q\200A\360\n\000\t\020\210t\2201\200A\360\010\000\t\020\210t\2201\220A\200A\360\014\000\t\020\210t\2201\220D\230\001\200A\330\010\017\210t\2201\220D\230\013\2409\250E\260\021\200A\360\014\000\t\020\210t\2201\220D\230\005\230Q\230b\240\001\200A\330\010\017\210t\2201\200A\330\010\017\210t\2207\230!\2306\240\022\2404\240x\250q\260\001\200A\360\016\000\t\020\210u\220J\230a\200A\360\020\000\t\020\210w\220h\230a\330\010\031\230\021\230&\240\004\240A\330\010\024\320\024$\240A\240Q\330\010\017\210r\220\026\220q\230\013\2406\250\024\250Q\360\014\000\t\023\220$\220f\230B\230f\240A\240Q\330\010\014\210B\210e\2209\230A\230W\240F\250#\250Q\330\014\017\210r\220\023\220B\220d\230'\240\021\240$\240b\250\006\250b\260\001\260\023\260D\270\001\330\020\027\220q\230\005\230Q\360\006\000\t\020\210u\220H\230B\230a\230s\240$\240f\250C\250q\330\010\016\210e\2208\2302\230Q\230c\240\024\240V\2503\250a\330\010\017\210v\220X\230R\230q\240\003\2404\240v\250S\260\001\330\010\022\220'\230\030\240\022\2401\240C\240t\2506\260\023\260A\360\010\000\t\016\210S\220\001\220\024\220Q\330\010\r\210V\2206\230\027\240\010\250\003\2501\250F\260%\260v\270Q\340\014\024\220A\220S\230\001\230\025\230d\240'\250\021\330\014\020\220\005\220V\2301\230H\240B\240b""\250\004\250A\330\020\026\220j\240\001\240\021\360\006\000\r\023\220%\220q\230\001\330\014\023\2206\230\021\230!\330\014\023\2204\220r\230\025\230a\230s\240\"\240A\360\016\000\r\023\220!\330\014\022\220!\330\014\020\220\005\220U\230!\2301\330\020\024\220D\230\010\240\001\240\021\330\020\023\2207\230!\2305\240\001\240\021\330\020\023\2207\230!\2301\230E\240\021\360\010\000\r\023\220$\220a\220s\230!\2305\240\005\240\\\260\026\260q\270\005\270V\3001\360\006\000\r\030\220v\230Q\230f\240F\250!\330\014\020\220\005\220U\230!\2303\230c\240\021\240!\330\020\031\230\021\230%\230q\240\003\2405\250\001\250\023\250B\250e\2601\260C\260r\270\026\270q\300\004\300F\310!\3101\330\020\030\230\007\230q\240\001\360\010\000\r\026\220Q\330\014\027\220q\330\014\020\220\005\220U\230!\2301\340\020\026\220a\220r\230\024\230R\230x\240t\2503\250e\2603\260a\330\020\023\2201\340\024\034\230A\230Z\240q\250\003\2501\250D\260\003\2602\260S\270\002\270#\270Q\360\006\000\025\033\230(\240,\250a\250t\2608\2701\270C\270u\300A\300Q\330\024\027\220r\230\025\230a\230u\240D\250\004\250A\330\030!\240\021\330\030%\240S\250\001\330\024\032\230'\240\021\240!\330\014\017\210q\330\020\031\230\022\230<\240q\250\001\340\020\031\230\025\230l\250!\2501\330\014\017\210v\220W\230C\230t\2408\2507\260$\260g\270Q\270f\300A\360\010\000\r\016\330\020\024\220A\220U\230!\2308\2406\250\030\260\021\330\023\024\330\020\024\220A\220U\230!\2308\2401\360\006\000\t\020\210t\2201\220E\230\021\230!\360\006\000\t\014\2102\210U\220!\2206\230\024\230T\240\024\240U\250$\250a\330\014\023\2204\220w\230a\340\010\017\210q\200A\360h\001\000\t\r\210I\220T\230\030\240\024\240Q\240a\200\001\340\004\014\210B\210h\220j\240\001\330\004\010\210\010\220\001\330\010\016\210b\220\007\220q\230\005\230Q\230a\330\010\013\2103\210f\220C\220q\330\014\017\210s\220'\230\023\230A\330\020\026\220n\240A\240R\240w\250a\250u\260A\260Q\340\020\023\2203\220i\230q\240\002\240&\250\003\2501\330\024\032\230)\2401\240A\340\024\032\230\"\230G\2401\240E\250\021\250!\360""\006\000\r\020\210s\220&\230\003\2304\230t\2403\240j\260\003\2601\330\020\033\2306\240\021\240*\250B\250c\260\021\360\006\000\021\027\220b\230\007\230q\240\005\240Q\240a\330\010\017\210w\220a\220q\340\004\022\220(\230&\240\n\250!\330\004\020\220\006\220a\220|\2406\250\021\200\001\340\004\014\210B\210h\220j\240\001\330\004\010\210\010\220\001\330\010\016\210b\220\007\220q\230\005\230Q\230a\330\010\013\2103\210f\220C\220q\330\014\017\210s\220'\230\023\230A\330\020\026\220n\240A\240R\240w\250a\250u\260A\260Q\340\020\023\2203\220i\230q\240\002\240&\250\003\2501\330\024\032\230)\2401\240A\330\025\030\230\t\240\021\240\"\240F\250#\250T\260\024\260S\270\001\270\022\2707\300!\3005\310\001\310\022\3108\320SV\320VW\330\024\036\230b\240\007\240q\250\005\250Q\250b\260\006\260a\260q\330\024\037\230v\240Q\240f\250B\250a\340\024\032\230\"\230G\2401\240E\250\021\250!\360\006\000\r\023\220\"\220G\2301\230E\240\021\240!\330\010\017\210w\220a\220q\330\004\022\220(\230&\240\n\250!\330\004\020\220\006\220a\220|\2406\250\021\220}\240D\250\007\250q\200\001\360\016\000\005\r\210H\220N\240#\240W\250A\250Q\320\004\035\230\\\250\021\360\"\000\020\021\330\010\014\210J\220a\360\006\000\t\r\210F\220)\2304\230y\250\006\250a\330\014\020\220\t\230\021\230(\240!\360\010\000\t\014\2109\220C\220q\330\014\030\230\001\230\026\230r\240\023\240A\240T\250\021\330\014\020\220\005\220U\230)\2401\240D\250\001\330\020\023\2204\220w\230a\230s\240!\330\024\032\230!\340\024\032\230*\240A\240Q\340\024\035\230Q\230g\240Q\240a\330\014\030\230\003\2301\230A\330\014\017\210s\220!\220;\230b\240\001\330\020\026\220a\340\020\026\220j\240\001\240\021\340\020\033\2304\230q\240\n\250!\2501\360\006\000\t\r\210L\230\001\360\006\000\t\r\210I\220V\2303\230d\240!\360\006\000\t\024\2208\2309\240A\240U\250\"\250A\330\010\022\220(\230!\230:\240T\250\030\260\024\260Q\360\010\000\t\r\210K\220u\230F\240!\2403\240a\240w\250d\260!\340\010\r\210S\220\005\220Q\330\010\014\210B\210e\2209\230A\230T\240\021\330\014\020\220\004\220H\230A\230Q""\330\014\022\220(\230!\230:\240Q\240h\250d\260!\330\014\022\220!\330\014\020\220\010\230\001\230\023\230F\240(\250\"\250A\330\014\022\220!\320\000\024\220J\230l\250!\360\026\000\005\020\210}\320\034.\250o\270Q\330\004\007\200u\210G\2201\330\010\020\220\001\340\010\020\220\001\330\004\007\200w\210g\220Q\330\010\022\220!\340\010\022\220!\330\004\007\200{\220'\230\021\330\010\026\220a\340\010\026\220a\330\t\n\330\010\017\320\017!\240\021\240&\250\t\260\021\330\004\026\220a\220q\230Q\200\001\330\004\n\210+\220Q\320\004%\240Q\360\024\000\t\020\210x\220q\230\004\230G\2404\240y\260\017\270q\320\004%\240Q\360\024\000\t\020\210x\220q\230\006\230k\250\037\270\001\200\001\360\010\000\005\016\210T\220\036\230t\2409\250D\260\007\260t\2709\300D\310\001\330\004\014\210G\2201\220F\230,\240a\330\004\007\200v\210W\220E\230\024\230Q\330\010\022\220!\330\010\027\220q\340\010\030\230\001\330\004\007\200q\330\010\017\320\017*\250$\250a\250w\260k\300\027\310\001\340\010\017\320\017*\250$\250a\250w\260k\300\021\250\001\210a\230a\320\004\035\230[\250\016\260a\360\"\000\t\r\210E\220\021\330\010\013\2101\330\014\031\230\021\340\014\031\230\021\330\010\013\2104\210v\220^\2401\330\010\017\210z\230\024\230Q\230a\230z\250\034\260T\270\031\300!\330\017\025\220V\2307\240*\250G\2607\270*\300A\330\017\030\230\001\330\010\013\2108\2203\220a\330\014\023\2206\230\021\340\014\020\220\004\220A\220X\230Q\330\014\r\210V\2201\220F\230!\330\014\r\210V\2201\320\004 \240\016\250a\330\010\r\210R\210y\230\001\330\014\017\320\0170\3200@\300\001\300\021\330\014>\270a\330\014$\240A\320\004&\240l\3202B\300!\360\026\000\t\024\220=\320 2\260$\3206J\310!\330\010\013\2105\220\007\220q\330\014\024\220A\340\014\024\220A\330\010\013\2107\220'\230\021\330\014\026\220a\340\014\026\220a\330\010\013\210;\220g\230Q\330\014\032\230!\340\014\032\230!\330\r\016\330\014\023\320\023)\250\021\250$\250i\260t\2709\300A\330\023\034\230A\330\010\032\230!\2301\320\004\036\230m\320+@\300\001\330\014\r\360L\001\000\t\014\210:\220Q\220g\230Q""\330\014\017\210u\220K\230q\240\001\330\020\024\220A\330\020\026\220j\240\001\240\021\340\020\036\230a\230t\2401\240A\340\010\013\2104\210q\330\013\017\210q\330\013\021\220\027\230\001\230\021\340\010\013\210<\220w\230a\330\014\017\210|\2307\240!\330\020\026\220j\240\001\240\021\340\020\031\230\021\340\014\025\220U\230!\2301\360\010\000\t\020\210w\220a\220q\340\010\014\210F\220)\2304\230y\250\006\250a\330\014\020\220\t\230\021\230(\240!\360\010\000\t\024\2201\330\010\014\210H\220G\2304\230{\250&\260\001\330\014\017\210w\220c\230\021\330\020\023\2203\220l\240!\330\024\037\230q\330\024!\240\021\340\020\023\2208\2303\230a\330\024\037\230q\330\024!\240\021\330\010\013\2109\220C\220q\330\014\022\220'\230\021\320\032T\320TV\320VW\360\010\000\t\030\220q\330\010\014\210F\220%\220t\230:\240V\2501\340\014\017\210v\220S\230\t\240\021\330\014\023\2201\220A\330\014\024\220A\220Q\330\014\024\220A\220Q\360\006\000\r\021\220\003\2201\220F\230\"\230B\230d\240+\250S\260\004\260A\260Q\330\020\034\230A\230Z\240v\250W\260A\330\010\013\2103\210a\210~\230S\240\001\330\014\022\220'\230\021\320\032W\320WY\320YZ\360\020\000\t\017\210a\330\010\014\210H\220A\330\010\022\220!\330\010\024\220A\360\n\000\t\r\210E\220\021\330\014\017\210r\220\023\220A\330\020\027\220q\340\020\027\220w\230a\230q\330\014\017\210z\230\023\230A\330\020\"\240!\340\020\"\240!\330\014\026\220d\230!\330\014\020\220\005\220\\\240\025\240a\330\020\023\2201\340\024\027\220r\230\027\240\007\240u\250A\330\030\036\230g\240Q\320&U\320UX\320XY\360\010\000\025!\240\r\250]\270,\300a\300r\310\022\3101\330\024\036\230g\240Q\240b\250\001\330\024\037\230w\240a\240r\250\021\330\024\036\230g\240Q\240b\250\001\340\024\027\220{\240#\240Q\330\030\036\230g\240Q\240a\340(+\2508\260<\270s\300!\360\n\000\025\030\220s\230!\230=\250\003\2503\250a\250q\330\030\036\230g\240Q\240a\340(+\2508\2603\260a\260~\300S\310\003\3101\310A\330\024\027\220{\240!\2404\240s\250(\260!\2601\330\030\036\230g\240Q\240a\340(+\2508\260=\300\003\3001\360\006\000\025""\030\220{\240#\240Q\330\030\036\230g\240Q\240a\340(+\2508\260<\270s\300!\360\006\000\025\030\220q\330\030!\240\021\240%\240q\250\004\250J\260a\260q\340\030!\240\021\240\"\240G\2501\250D\260\n\270!\2701\360\006\000\025\030\220q\330\030!\240\021\240%\240q\250\004\250J\260a\260q\340\030!\240\021\240\"\240G\2501\250D\260\n\270!\2701\340\014\017\210w\220a\220q\330\014\023\2207\230!\2303\230a\230t\240;\250a\250q\360\010\000\t\r\210J\220a\330\010\014\210L\230\001\330\010\014\210L\230\003\2301\230A\330\010\014\210N\230!\340\010\014\210I\220T\230\021\330\010\014\210I\220T\230\021\330\010\014\210I\220W\230D\240\006\240f\250A\330\014\017\210x\220s\230!\330\020\024\220F\230!\230;\240j\260\001\260\031\270%\270t\300;\310d\320RS\330\010\014\210I\220T\230\021\330\010\014\210H\220G\2304\230v\240V\2501\330\014\017\210x\220s\230$\230k\250\025\250a\330\020\024\220F\230!\230;\240i\250q\260\006\260i\270u\300A\330\010\014\320\014\034\230A\330\010\014\210O\2301\330\010\014\320\014\034\230A\330\010\014\210H\220D\230\001\330\014\017\210t\220=\240\003\240:\250S\260\004\260L\300\003\3001\330\020\026\220j\240\001\240\021\330\014\020\220\r\230W\240A\240T\250\021\330\014\020\220\014\230G\2401\240D\250\001\330\014\020\220\r\230W\240A\240T\250\021\330\010\014\210I\220Q\230q\200\001\340\004\037\230q\320 0\260\013\270;\300k\320QR\330\004\023\2209\230H\240A\240Q\330\004\007\200|\2207\230!\330\010+\2501\250L\270\016\300a\330\004\013\2101\320\004\037\230q\360\020\000\t\014\2104\210q\330\014\022\320\0220\260\001\3201D\300A\360\n\000\t\014\2109\220C\220q\330\014\027\220s\320\0320\260\001\340\r\016\330\014\023\220;\230a\230t\2409\250A\250Y\260a\330\010\032\230!\2301\340\010\021\220\030\230\026\230q\240\r\250S\260\010\270\002\270!\330\010\013\2104\210q\330\014\r\330\010\t\330\021\022\330\020\027\220{\240!\2404\240y\260\001\260\031\270!\330\014\036\230a\230q\340\014\026\220f\230B\230a\340\014\020\220\001\220\021\330\010\017\210w\220g\230Q\230a\200\001\360\026\000\005\010\200q\330\010\022\220*\230A\230V\2401""\240A\330\010\017\210q\330\010\017\210x\220y\240\001\240\021\330\010\013\2105\220\003\2201\330\014\023\2201\340\014\023\2204\220w\230a\230q\340\010\016\210l\230!\330\014\r\200\001\330\004'\240q\250\006\250a\200\001\360\026\000\005\010\200q\330\010\026\220j\240\001\240\026\240q\250\001\330\010\017\210q\330\010\026\220j\240\001\240\026\240q\250\001\330\010\021\220\021\330\r\016\330\014\023\2209\230A\230U\240!\330\010\032\230!\2301\340\010\016\210l\230!\330\014\r\200\001\360\006\000\n\013\330\010\017\320\017\037\230r\240\021\240+\250Q\250k\270\021\270!\330\004\007\200u\210C\210q\330\010\016\210l\230!\2301\330\004\013\210>\230\032\240:\250Q\200\001\360\024\000\005\010\200t\2101\330\010\016\210l\230!\330\014\r\360\n\000\005\014\320\013\033\2301\230A\230\\\250\021\250!\330\004\026\220a\220q\330\004\020\220\001\330\004\020\220\001\330\004\014\210K\220q\200\001\360\022\000\005\010\200t\2101\330\010\016\210l\230!\330\014\r\360\n\000\005\022\220\021\330\004\021\220\021\340\004\013\320\013\033\2301\230L\250\001\330\004\026\220a\220q\320\000%\240^\260?\300!\340\004\007\200u\210C\210q\330\010\t\340\004\017\210x\220{\240!\2406\250\027\260\001\260\021\330\004\007\200z\220\021\220)\2301\330\010\013\210:\220Q\220j\240\001\330\014\027\220x\230w\240a\330\010\016\210g\220Q\220f\230I\240Q\340\004\007\200q\330\010\013\210:\220Q\220k\240\021\330\014\030\230\t\240\027\250\001\330\010\022\220\"\220A\220Z\230q\240\001\330\004\n\210'\220\021\220!\320\000 \240\001\360\"\000\005\010\200v\210X\220T\230\021\330\010\016\210j\230\001\230\021\330\004\n\210%\210v\220Q\220i\230u\240A\240Q\330\004\007\200q\210\002\210#\210Q\210k\230\025\230a\230q\330\004\013\2101\320\000\030\230\001\360\006\000\005\010\200w\210g\220Q\330\010\016\210j\230\001\230\021\330\004\017\210|\2301\230A\330\t\n\330\010\017\320\017$\240A\240Z\250q\330\004\026\220a\220q";
    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 < 1066; i++) {
      Py_ssize_t bytes_length = index[i].length;
      PyObject *string = PyUnicode_DecodeUTF8(bytes + pos, bytes_length, NULL);
      if (likely(string) && i >= 215) 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 = 1066; i < 1198; 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 < 1198; i++) {
      if (unlikely(PyObject_Hash(stringtab[i]) == -1)) {
        __PYX_ERR(0, 1, __pyx_L1_error)
      }
    }
    #if CYTHON_IMMORTAL_CONSTANTS
    {
      PyObject **table = stringtab + 1066;
      for (Py_ssize_t i=0; i<132; ++i) {
        #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
        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;
    double const c_constants[] = {0.0,1.0};
    for (int i = 0; i < 2; i++) {
      numbertab[i] = PyFloat_FromDouble(c_constants[i]);
      if (unlikely(!numbertab[i])) __PYX_ERR(0, 1, __pyx_L1_error)
    }
  }
  {
    PyObject **numbertab = __pyx_mstate->__pyx_number_tab + 2;
    int8_t const cint_constants_1[] = {0,-1,1,2,3,4,5,6,7,8,32};
    int16_t const cint_constants_2[] = {128,1900,16384};
    int32_t const cint_constants_4[] = {14814860L};
    for (int i = 0; i < 15; i++) {
      numbertab[i] = PyLong_FromLong((i < 11 ? cint_constants_1[i - 0] : (i < 14 ? cint_constants_2[i - 11] : cint_constants_4[i - 14])));
      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<17; ++i) {
      #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
      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 : 5;
    unsigned int num_posonly_args : 1;
    unsigned int num_kwonly_args : 1;
    unsigned int nlocals : 6;
    unsigned int flags : 10;
    unsigned int first_line : 13;
} __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 = {0, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS|CO_GENERATOR), 1561};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_k, __pyx_mstate->__pyx_n_u_v};
    __pyx_mstate_global->__pyx_codeobj_tab[0] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_genexpr, __pyx_mstate->__pyx_kp_b_iso88591_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[0])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {0, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS|CO_GENERATOR), 2133};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_d};
    __pyx_mstate_global->__pyx_codeobj_tab[1] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_genexpr, __pyx_mstate->__pyx_kp_b_iso88591__24, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[1])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {0, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS|CO_GENERATOR), 2611};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_dimname};
    __pyx_mstate_global->__pyx_codeobj_tab[2] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_genexpr, __pyx_mstate->__pyx_kp_b_iso88591__24, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[2])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {0, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS|CO_GENERATOR), 2617};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_grpname};
    __pyx_mstate_global->__pyx_codeobj_tab[3] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_genexpr, __pyx_mstate->__pyx_kp_b_iso88591_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[3])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {0, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS|CO_GENERATOR), 3005};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_d};
    __pyx_mstate_global->__pyx_codeobj_tab[4] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_genexpr, __pyx_mstate->__pyx_kp_b_iso88591_a_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[4])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {0, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS|CO_GENERATOR), 4532};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_dimname};
    __pyx_mstate_global->__pyx_codeobj_tab[5] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_genexpr, __pyx_mstate->__pyx_kp_b_iso88591_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[5])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {0, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS|CO_GENERATOR), 6173};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_dim};
    __pyx_mstate_global->__pyx_codeobj_tab[6] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_genexpr, __pyx_mstate->__pyx_kp_b_iso88591_a_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[6])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 7090};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_dset};
    __pyx_mstate_global->__pyx_codeobj_tab[7] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_lambda, __pyx_mstate->__pyx_kp_b_iso88591_D_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[7])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {0, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS|CO_GENERATOR), 7094};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_dimname};
    __pyx_mstate_global->__pyx_codeobj_tab[8] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_genexpr, __pyx_mstate->__pyx_kp_b_iso88591_A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[8])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {0, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS|CO_GENERATOR), 7095};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_varname};
    __pyx_mstate_global->__pyx_codeobj_tab[9] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_genexpr, __pyx_mstate->__pyx_kp_b_iso88591_A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[9])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {0, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS|CO_GENERATOR), 7159};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_dimname};
    __pyx_mstate_global->__pyx_codeobj_tab[10] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_genexpr, __pyx_mstate->__pyx_kp_b_iso88591_A, 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), 1};
    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_stringsource, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_mstate->__pyx_kp_b_iso88591_Q_2, 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), 3};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state};
    __pyx_mstate_global->__pyx_codeobj_tab[12] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_mstate->__pyx_kp_b_iso88591_Q_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[12])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1321};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_key, __pyx_mstate->__pyx_n_u_ierr, __pyx_mstate->__pyx_n_u_keyc, __pyx_mstate->__pyx_n_u_valc, __pyx_mstate->__pyx_n_u_bytestr};
    __pyx_mstate_global->__pyx_codeobj_tab[13] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_rc_get, __pyx_mstate->__pyx_kp_b_iso88591_q_AV1A_q_xy_5_1_1_4waq_l, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[13])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 7, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1345};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_key, __pyx_mstate->__pyx_n_u_value, __pyx_mstate->__pyx_n_u_ierr, __pyx_mstate->__pyx_n_u_keyc, __pyx_mstate->__pyx_n_u_valuec, __pyx_mstate->__pyx_n_u_key_bytestr, __pyx_mstate->__pyx_n_u_val_bytestr};
    __pyx_mstate_global->__pyx_codeobj_tab[14] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_rc_set, __pyx_mstate->__pyx_kp_b_iso88591_q_j_q_q_j_q_9AU_1_l, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[14])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {0, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1372};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_majorvers, __pyx_mstate->__pyx_n_u_minorvers, __pyx_mstate->__pyx_n_u_releasevers, __pyx_mstate->__pyx_n_u_ierr};
    __pyx_mstate_global->__pyx_codeobj_tab[15] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_gethdf5libversion, __pyx_mstate->__pyx_kp_b_iso88591_r_Qk_uCq_l_1_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[15])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {0, 0, 0, 0, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1381};
    PyObject* const varnames[] = {0};
    __pyx_mstate_global->__pyx_codeobj_tab[16] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_getlibversion, __pyx_mstate->__pyx_kp_b_iso88591_HN_WAQ, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[16])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {0, 0, 0, 7, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1390};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_ierr, __pyx_mstate->__pyx_n_u_sizep, __pyx_mstate->__pyx_n_u_nelemsp, __pyx_mstate->__pyx_n_u_preemptionp, __pyx_mstate->__pyx_n_u_size, __pyx_mstate->__pyx_n_u_nelems, __pyx_mstate->__pyx_n_u_preemption};
    __pyx_mstate_global->__pyx_codeobj_tab[17] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_get_chunk_cache, __pyx_mstate->__pyx_kp_b_iso88591_7_9AQ_aq_7_9M_E, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[17])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 10, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1406};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_size, __pyx_mstate->__pyx_n_u_nelems, __pyx_mstate->__pyx_n_u_preemption, __pyx_mstate->__pyx_n_u_ierr, __pyx_mstate->__pyx_n_u_sizep, __pyx_mstate->__pyx_n_u_nelemsp, __pyx_mstate->__pyx_n_u_preemptionp, __pyx_mstate->__pyx_n_u_size_orig, __pyx_mstate->__pyx_n_u_nelems_orig, __pyx_mstate->__pyx_n_u_preemption_orig};
    __pyx_mstate_global->__pyx_codeobj_tab[18] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_set_chunk_cache, __pyx_mstate->__pyx_kp_b_iso88591_Jl_oQ_uG1_wgQ_a_a_aq, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[18])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {0, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1435};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_ierr, __pyx_mstate->__pyx_n_u_thresholdp, __pyx_mstate->__pyx_n_u_alignmentp, __pyx_mstate->__pyx_n_u_threshold, __pyx_mstate->__pyx_n_u_alignment};
    __pyx_mstate_global->__pyx_codeobj_tab[19] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_get_alignment, __pyx_mstate->__pyx_kp_b_iso88591_t1_l_1A_aq_Kq, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[19])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1459};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_threshold, __pyx_mstate->__pyx_n_u_alignment, __pyx_mstate->__pyx_n_u_ierr, __pyx_mstate->__pyx_n_u_thresholdp, __pyx_mstate->__pyx_n_u_alignmentp};
    __pyx_mstate_global->__pyx_codeobj_tab[20] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_set_alignment_2, __pyx_mstate->__pyx_kp_b_iso88591_t1_l_1L_aq, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[20])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1501};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_feature, __pyx_mstate->__pyx_n_u_version};
    __pyx_mstate_global->__pyx_codeobj_tab[21] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_init, __pyx_mstate->__pyx_kp_b_iso88591_a_Ry_00_a_A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[21])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1735};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_format, __pyx_mstate->__pyx_n_u_ierr, __pyx_mstate->__pyx_n_u_formatid};
    __pyx_mstate_global->__pyx_codeobj_tab[22] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_set_default_format, __pyx_mstate->__pyx_kp_b_iso88591_wgQ_j_1A_AZq_aq, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[22])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2149};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_ierr, __pyx_mstate->__pyx_n_u_err_cls, __pyx_mstate->__pyx_n_u_filename, __pyx_mstate->__pyx_n_u_extra_msg, __pyx_mstate->__pyx_n_u_err_str};
    __pyx_mstate_global->__pyx_codeobj_tab[23] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_ensure_nc_success, __pyx_mstate->__pyx_kp_b_iso88591_uCq_x_6_z_1_Qj_xwa_gQfIQ_q_Qk_A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[23])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2167};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_dtype};
    __pyx_mstate_global->__pyx_codeobj_tab[24] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_dtype_is_complex, __pyx_mstate->__pyx_kp_b_iso88591_6_V1, 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), 2548};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[25] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_enter, __pyx_mstate->__pyx_kp_b_iso88591_A_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[25])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2550};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_atype, __pyx_mstate->__pyx_n_u_value, __pyx_mstate->__pyx_n_u_traceback};
    __pyx_mstate_global->__pyx_codeobj_tab[26] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_exit, __pyx_mstate->__pyx_kp_b_iso88591_A_F, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[26])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2572};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_encoding, __pyx_mstate->__pyx_n_u_ierr, __pyx_mstate->__pyx_n_u_pathlen, __pyx_mstate->__pyx_n_u_c_path, __pyx_mstate->__pyx_n_u_py_path};
    __pyx_mstate_global->__pyx_codeobj_tab[27] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_filepath, __pyx_mstate->__pyx_kp_b_iso88591_q_4q_0_1DA_9Cq_s_0_at9AYa_1_q_S, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[27])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2630};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_check_err, __pyx_mstate->__pyx_n_u_ierr};
    __pyx_mstate_global->__pyx_codeobj_tab[28] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_close_2, __pyx_mstate->__pyx_kp_b_iso88591_A_81D_1_aq_Kq_a, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[28])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2645};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_check_err, __pyx_mstate->__pyx_n_u_ierr, __pyx_mstate->__pyx_n_u_memio};
    __pyx_mstate_global->__pyx_codeobj_tab[29] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_close_mem, __pyx_mstate->__pyx_kp_b_iso88591_A_iq_1_aq_Kq_a_axuIU, 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), 2661};
    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_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_close, __pyx_mstate->__pyx_kp_b_iso88591_A_T_4_1_G1A, 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), 2671};
    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_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_isopen, __pyx_mstate->__pyx_kp_b_iso88591_A_t1D, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[31])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2686};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[32] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_reduce, __pyx_mstate->__pyx_kp_b_iso88591_A_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[32])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2690};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_ierr};
    __pyx_mstate_global->__pyx_codeobj_tab[33] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_sync, __pyx_mstate->__pyx_kp_b_iso88591_A_7_4q_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[33])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2700};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_ierr};
    __pyx_mstate_global->__pyx_codeobj_tab[34] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_redef, __pyx_mstate->__pyx_kp_b_iso88591_A_81D, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[34])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2705};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_ierr};
    __pyx_mstate_global->__pyx_codeobj_tab[35] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_enddef, __pyx_mstate->__pyx_kp_b_iso88591_A_9AT, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[35])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2710};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_oldmode, __pyx_mstate->__pyx_n_u_ierr};
    __pyx_mstate_global->__pyx_codeobj_tab[36] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_set_fill_on, __pyx_mstate->__pyx_kp_b_iso88591_A_at9IQa_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[36])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2728};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_oldmode, __pyx_mstate->__pyx_n_u_ierr};
    __pyx_mstate_global->__pyx_codeobj_tab[37] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_set_fill_off, __pyx_mstate->__pyx_kp_b_iso88591_A_at9Kq_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[37])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2742};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_dimname, __pyx_mstate->__pyx_n_u_size};
    __pyx_mstate_global->__pyx_codeobj_tab[38] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_createDimension, __pyx_mstate->__pyx_kp_b_iso88591_A_Kq_9AV9E_t_aq, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[38])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 7, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2758};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_oldname, __pyx_mstate->__pyx_n_u_newname, __pyx_mstate->__pyx_n_u_namstring, __pyx_mstate->__pyx_n_u_dim, __pyx_mstate->__pyx_n_u_bytestr, __pyx_mstate->__pyx_n_u_ierr};
    __pyx_mstate_global->__pyx_codeobj_tab[39] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_renameDimension, __pyx_mstate->__pyx_kp_b_iso88591_A_AQ_A_4_3k_WA_k_2Q_Yc_4_3k_XQ_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[39])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2784};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_datatype, __pyx_mstate->__pyx_n_u_datatype_name};
    __pyx_mstate_global->__pyx_codeobj_tab[40] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_createCompoundType, __pyx_mstate->__pyx_kp_b_iso88591_A_IQ_1F_t9AQ, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[40])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2802};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_datatype, __pyx_mstate->__pyx_n_u_datatype_name};
    __pyx_mstate_global->__pyx_codeobj_tab[41] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_createVLType, __pyx_mstate->__pyx_kp_b_iso88591_A_HA_fAV_Q_t81A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[41])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2814};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_datatype, __pyx_mstate->__pyx_n_u_datatype_name, __pyx_mstate->__pyx_n_u_enum_dict};
    __pyx_mstate_global->__pyx_codeobj_tab[42] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_createEnumType, __pyx_mstate->__pyx_kp_b_iso88591_A_Ja_z_t_Qa, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[42])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {20, 0, 0, 24, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2828};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_varname, __pyx_mstate->__pyx_n_u_datatype, __pyx_mstate->__pyx_n_u_dimensions, __pyx_mstate->__pyx_n_u_compression, __pyx_mstate->__pyx_n_u_zlib, __pyx_mstate->__pyx_n_u_complevel, __pyx_mstate->__pyx_n_u_shuffle, __pyx_mstate->__pyx_n_u_szip_coding, __pyx_mstate->__pyx_n_u_szip_pixels_per_block, __pyx_mstate->__pyx_n_u_blosc_shuffle, __pyx_mstate->__pyx_n_u_fletcher32, __pyx_mstate->__pyx_n_u_contiguous, __pyx_mstate->__pyx_n_u_chunksizes, __pyx_mstate->__pyx_n_u_endian, __pyx_mstate->__pyx_n_u_least_significant_digit, __pyx_mstate->__pyx_n_u_significant_digits, __pyx_mstate->__pyx_n_u_quantize_mode, __pyx_mstate->__pyx_n_u_fill_value, __pyx_mstate->__pyx_n_u_chunk_cache, __pyx_mstate->__pyx_n_u_dirname, __pyx_mstate->__pyx_n_u_group_2, __pyx_mstate->__pyx_n_u_genexpr, __pyx_mstate->__pyx_n_u_genexpr};
    __pyx_mstate_global->__pyx_codeobj_tab[43] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_createVariable, __pyx_mstate->__pyx_kp_b_iso88591_1_1_31_9_Fa_22HHZZ_r_9AQ_9F_1_4, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[43])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 7, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3016};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_oldname, __pyx_mstate->__pyx_n_u_newname, __pyx_mstate->__pyx_n_u_namstring, __pyx_mstate->__pyx_n_u_var, __pyx_mstate->__pyx_n_u_bytestr, __pyx_mstate->__pyx_n_u_ierr};
    __pyx_mstate_global->__pyx_codeobj_tab[44] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_renameVariable, __pyx_mstate->__pyx_kp_b_iso88591_A_j_A_AQ_A_4_3k_WA_Yc_4_3k_XQ_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[44])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3040};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_groupname, __pyx_mstate->__pyx_n_u_nestedgroups, __pyx_mstate->__pyx_n_u_group_2, __pyx_mstate->__pyx_n_u_g};
    __pyx_mstate_global->__pyx_codeobj_tab[45] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_createGroup, __pyx_mstate->__pyx_kp_b_iso88591_A_IYaq_y_aq_E_t3a_r_Q_WAU_q_q_E, 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), 3070};
    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_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_ncattrs, __pyx_mstate->__pyx_kp_b_iso88591_A_Qd_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[46])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3077};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_name, __pyx_mstate->__pyx_n_u_value, __pyx_mstate->__pyx_n_u_xtype};
    __pyx_mstate_global->__pyx_codeobj_tab[47] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_setncattr, __pyx_mstate->__pyx_kp_b_iso88591_A_q_4_3k_WA_5K4q_4_4_ha, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[47])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3090};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_name, __pyx_mstate->__pyx_n_u_value, __pyx_mstate->__pyx_n_u_xtype, __pyx_mstate->__pyx_n_u_msg};
    __pyx_mstate_global->__pyx_codeobj_tab[48] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_setncattr_string, __pyx_mstate->__pyx_kp_b_iso88591_A_q_4_3a_5K1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[48])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3104};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_attdict, __pyx_mstate->__pyx_n_u_name, __pyx_mstate->__pyx_n_u_value};
    __pyx_mstate_global->__pyx_codeobj_tab[49] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_setncatts, __pyx_mstate->__pyx_kp_b_iso88591_A_4_3k_WA_F_7_AV_fA_4_3k_XQ, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[49])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3117};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_name, __pyx_mstate->__pyx_n_u_encoding};
    __pyx_mstate_global->__pyx_codeobj_tab[50] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_getncattr, __pyx_mstate->__pyx_kp_b_iso88591_Q_xq_k, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[50])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3137};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_name, __pyx_mstate->__pyx_n_u_attname, __pyx_mstate->__pyx_n_u_ierr, __pyx_mstate->__pyx_n_u_bytestr};
    __pyx_mstate_global->__pyx_codeobj_tab[51] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_delncattr, __pyx_mstate->__pyx_kp_b_iso88591_A_AQ_4_3k_WA_Qd_a_4_3k_XQ_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[51])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 7, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3184};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_oldname, __pyx_mstate->__pyx_n_u_newname, __pyx_mstate->__pyx_n_u_oldnamec, __pyx_mstate->__pyx_n_u_newnamec, __pyx_mstate->__pyx_n_u_ierr, __pyx_mstate->__pyx_n_u_bytestr};
    __pyx_mstate_global->__pyx_codeobj_tab[52] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_renameAttribute, __pyx_mstate->__pyx_kp_b_iso88591_A_AQ_1_AQ_1_Yk_1_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[52])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 8, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3200};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_oldname, __pyx_mstate->__pyx_n_u_newname, __pyx_mstate->__pyx_n_u_newnamec, __pyx_mstate->__pyx_n_u_grpid_2, __pyx_mstate->__pyx_n_u_ierr, __pyx_mstate->__pyx_n_u_bytestr, __pyx_mstate->__pyx_n_u_grp};
    __pyx_mstate_global->__pyx_codeobj_tab[53] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_renameGroup, __pyx_mstate->__pyx_kp_b_iso88591_A_4q_A_AQ_1_gQa_Cq_7r_1_G4q_G1Kq, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[53])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3229};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_value, __pyx_mstate->__pyx_n_u_vars, __pyx_mstate->__pyx_n_u_var, __pyx_mstate->__pyx_n_u_groups, __pyx_mstate->__pyx_n_u_group_2};
    __pyx_mstate_global->__pyx_codeobj_tab[54] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_set_auto_chartostring, __pyx_mstate->__pyx_kp_b_iso88591_A_A_6_F_a_G5_q_Qa_Jj_G5_Qa, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[54])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3257};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_value, __pyx_mstate->__pyx_n_u_vars, __pyx_mstate->__pyx_n_u_var, __pyx_mstate->__pyx_n_u_groups, __pyx_mstate->__pyx_n_u_group_2};
    __pyx_mstate_global->__pyx_codeobj_tab[55] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_set_auto_maskandscale, __pyx_mstate->__pyx_kp_b_iso88591_A_A_6_F_a_G5_q_Qa_Jj_G5_Qa_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[55])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3284};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_value, __pyx_mstate->__pyx_n_u_vars, __pyx_mstate->__pyx_n_u_var, __pyx_mstate->__pyx_n_u_groups, __pyx_mstate->__pyx_n_u_group_2};
    __pyx_mstate_global->__pyx_codeobj_tab[56] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_set_auto_mask, __pyx_mstate->__pyx_kp_b_iso88591_A_A_6_F_a_G5_q_Qa_Jj_G5_Qa_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[56])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3311};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_value, __pyx_mstate->__pyx_n_u_vars, __pyx_mstate->__pyx_n_u_var, __pyx_mstate->__pyx_n_u_groups, __pyx_mstate->__pyx_n_u_group_2};
    __pyx_mstate_global->__pyx_codeobj_tab[57] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_set_auto_scale, __pyx_mstate->__pyx_kp_b_iso88591_A_A_6_F_a_G5_q_aq_Jj_G5_aq, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[57])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3337};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_value, __pyx_mstate->__pyx_n_u_vars, __pyx_mstate->__pyx_n_u_var, __pyx_mstate->__pyx_n_u_groups, __pyx_mstate->__pyx_n_u_group_2};
    __pyx_mstate_global->__pyx_codeobj_tab[58] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_set_always_mask, __pyx_mstate->__pyx_kp_b_iso88591_A_A_6_F_a_G5_q_q_Jj_G5_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[58])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3368};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_value, __pyx_mstate->__pyx_n_u_vars, __pyx_mstate->__pyx_n_u_var, __pyx_mstate->__pyx_n_u_groups, __pyx_mstate->__pyx_n_u_group_2};
    __pyx_mstate_global->__pyx_codeobj_tab[59] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_set_ncstring_attrs, __pyx_mstate->__pyx_kp_b_iso88591_A_Qa_A_6_A_D_G5_q_1_Jj, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[59])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 9, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS|CO_VARKEYWORDS), 3398};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_kwargs, __pyx_mstate->__pyx_n_u_vs, __pyx_mstate->__pyx_n_u_has_value_flag, __pyx_mstate->__pyx_n_u_vars, __pyx_mstate->__pyx_n_u_vname, __pyx_mstate->__pyx_n_u_var, __pyx_mstate->__pyx_n_u_k, __pyx_mstate->__pyx_n_u_v};
    __pyx_mstate_global->__pyx_codeobj_tab[60] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_get_variables_by_attributes, __pyx_mstate->__pyx_kp_b_iso88591_A_Q_A_6_F_a_IQ_q_5_fA_81A_QawauC, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[60])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3454};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_ierr, __pyx_mstate->__pyx_n_u_namstring};
    __pyx_mstate_global->__pyx_codeobj_tab[61] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_getname, __pyx_mstate->__pyx_kp_b_iso88591_A_iq_1_y_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[61])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 7, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3470};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cdlfilename, __pyx_mstate->__pyx_n_u_ncfilename, __pyx_mstate->__pyx_n_u_mode, __pyx_mstate->__pyx_n_u_format, __pyx_mstate->__pyx_n_u_filepath, __pyx_mstate->__pyx_n_u_formatcodes, __pyx_mstate->__pyx_n_u_ncgenargs};
    __pyx_mstate_global->__pyx_codeobj_tab[62] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_fromcdl, __pyx_mstate->__pyx_kp_b_iso88591_A_1_A_c_we1A_Qa_q_Q_7_AQ_2_aq_F, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[62])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 7, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3509};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_coordvars, __pyx_mstate->__pyx_n_u_data, __pyx_mstate->__pyx_n_u_outfile, __pyx_mstate->__pyx_n_u_ncdumpargs, __pyx_mstate->__pyx_n_u_result, __pyx_mstate->__pyx_n_u_f};
    __pyx_mstate_global->__pyx_codeobj_tab[63] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_tocdl, __pyx_mstate->__pyx_kp_b_iso88591_a_E_1_4v_1_z_Qaz_T_V7_G7_A_83a, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[63])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3542};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_ierr};
    __pyx_mstate_global->__pyx_codeobj_tab[64] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_has_blosc_filter, __pyx_mstate->__pyx_kp_b_iso88591_A_1_1_at9A_uCq, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[64])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3554};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_ierr};
    __pyx_mstate_global->__pyx_codeobj_tab[65] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_has_zstd_filter, __pyx_mstate->__pyx_kp_b_iso88591_A_1_1_at9A_uCq_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[65])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3567};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_ierr};
    __pyx_mstate_global->__pyx_codeobj_tab[66] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_has_bzip2_filter, __pyx_mstate->__pyx_kp_b_iso88591_A_1_1_at9A_uCq_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[66])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3580};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_ierr};
    __pyx_mstate_global->__pyx_codeobj_tab[67] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_has_szip_filter, __pyx_mstate->__pyx_kp_b_iso88591_A_4q_1_4q_1_at9A_uCq, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[67])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3669};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[68] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_close, __pyx_mstate->__pyx_kp_b_iso88591_A_gQa, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[68])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3742};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_err, __pyx_mstate->__pyx_n_u_grpid, __pyx_mstate->__pyx_n_u_namstring, __pyx_mstate->__pyx_n_u_ierr};
    __pyx_mstate_global->__pyx_codeobj_tab[69] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_getname, __pyx_mstate->__pyx_kp_b_iso88591_A_U_iq_1_y_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, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3789};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[70] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_group_2, __pyx_mstate->__pyx_kp_b_iso88591_A_t1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[70])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 11, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3796};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_ierr, __pyx_mstate->__pyx_n_u_n, __pyx_mstate->__pyx_n_u_numunlimdims, __pyx_mstate->__pyx_n_u_ndims, __pyx_mstate->__pyx_n_u_nvars, __pyx_mstate->__pyx_n_u_ngatts, __pyx_mstate->__pyx_n_u_xdimid, __pyx_mstate->__pyx_n_u_unlimdimids, __pyx_mstate->__pyx_n_u_dimid_2, __pyx_mstate->__pyx_n_u_unlimdim_ids};
    __pyx_mstate_global->__pyx_codeobj_tab[71] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_isunlimited, __pyx_mstate->__pyx_kp_b_iso88591_A_4_Cq_q_IQnA_aq_Cq_q_gV1L_A_1D, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[71])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_state, __pyx_mstate->__pyx_n_u_dict_2, __pyx_mstate->__pyx_n_u_use_setstate};
    __pyx_mstate_global->__pyx_codeobj_tab[72] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_mstate->__pyx_kp_b_iso88591_T_t9D_t9D_G1F_a_vWE_Q_q_q_awk_a, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[72])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 16};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state};
    __pyx_mstate_global->__pyx_codeobj_tab[73] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_mstate->__pyx_kp_b_iso88591_q_a, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[73])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 8, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 4478};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_name, __pyx_mstate->__pyx_n_u_complex_typeid, __pyx_mstate->__pyx_n_u_complex_dim_id, __pyx_mstate->__pyx_n_u_error_info, __pyx_mstate->__pyx_n_u_ierr, __pyx_mstate->__pyx_n_u_np_complex_type, __pyx_mstate->__pyx_n_u_compound_complex_type};
    __pyx_mstate_global->__pyx_codeobj_tab[74] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_fix_complex_numbers, __pyx_mstate->__pyx_kp_b_iso88591_A_4uA_it1_q_5Qd_4yPQQR_avZq_k_Ba, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[74])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 4508};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[75] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_array_2, __pyx_mstate->__pyx_kp_b_iso88591_A_t1A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[75])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 7, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 4575};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_ierr, __pyx_mstate->__pyx_n_u_dimid_2, __pyx_mstate->__pyx_n_u_namstring, __pyx_mstate->__pyx_n_u_dimids, __pyx_mstate->__pyx_n_u_dimensions, __pyx_mstate->__pyx_n_u_name};
    __pyx_mstate_global->__pyx_codeobj_tab[76] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_getdims, __pyx_mstate->__pyx_kp_b_iso88591_A_at9D_U_Q_IQ_Qd_7_aq_9G1A_Cq_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[76])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 4593};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_err, __pyx_mstate->__pyx_n_u_grpid, __pyx_mstate->__pyx_n_u_namstring, __pyx_mstate->__pyx_n_u_ierr};
    __pyx_mstate_global->__pyx_codeobj_tab[77] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_getname, __pyx_mstate->__pyx_kp_b_iso88591_A_U_iq_1_y_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[77])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 4650};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[78] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_group_2, __pyx_mstate->__pyx_kp_b_iso88591_A_t1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[78])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 4657};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_ierr, __pyx_mstate->__pyx_n_u_no_fill, __pyx_mstate->__pyx_n_u_fillval};
    __pyx_mstate_global->__pyx_codeobj_tab[79] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_get_fill_value, __pyx_mstate->__pyx_kp_b_iso88591_A_4xt81HA_1_83a_1_a_q_4q_e6_T_XT, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[79])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 4687};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[80] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_ncattrs, __pyx_mstate->__pyx_kp_b_iso88591_A_Qd_4q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[80])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 4694};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_name, __pyx_mstate->__pyx_n_u_value, __pyx_mstate->__pyx_n_u_xtype, __pyx_mstate->__pyx_n_u_msg};
    __pyx_mstate_global->__pyx_codeobj_tab[81] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_setncattr, __pyx_mstate->__pyx_kp_b_iso88591_A_q_5_1_DA_4uL_d_wa_WD_RRVVW_4uL, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[81])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 4714};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_name, __pyx_mstate->__pyx_n_u_value, __pyx_mstate->__pyx_n_u_xtype, __pyx_mstate->__pyx_n_u_msg};
    __pyx_mstate_global->__pyx_codeobj_tab[82] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_setncattr_string, __pyx_mstate->__pyx_kp_b_iso88591_A_q_4uL_1_WD_RRS, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[82])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 4729};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_attdict, __pyx_mstate->__pyx_n_u_name, __pyx_mstate->__pyx_n_u_value};
    __pyx_mstate_global->__pyx_codeobj_tab[83] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_setncatts, __pyx_mstate->__pyx_kp_b_iso88591_A_4uL_d_wa_F_7_AT_IV1_4uL_d_xq, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[83])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 4742};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_name, __pyx_mstate->__pyx_n_u_encoding};
    __pyx_mstate_global->__pyx_codeobj_tab[84] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_getncattr, __pyx_mstate->__pyx_kp_b_iso88591_Q_xq_G4y_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[84])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 4754};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_name, __pyx_mstate->__pyx_n_u_attname, __pyx_mstate->__pyx_n_u_bytestr, __pyx_mstate->__pyx_n_u_ierr};
    __pyx_mstate_global->__pyx_codeobj_tab[85] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_delncattr, __pyx_mstate->__pyx_kp_b_iso88591_A_AQ_4uL_d_wa_Qd_4y_4uL_d_xq_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[85])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 21, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 4770};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_ierr, __pyx_mstate->__pyx_n_u_ideflate, __pyx_mstate->__pyx_n_u_ishuffle, __pyx_mstate->__pyx_n_u_icomplevel, __pyx_mstate->__pyx_n_u_ifletcher32, __pyx_mstate->__pyx_n_u_izstd, __pyx_mstate->__pyx_n_u_ibzip2, __pyx_mstate->__pyx_n_u_iblosc, __pyx_mstate->__pyx_n_u_iszip, __pyx_mstate->__pyx_n_u_iszip_coding, __pyx_mstate->__pyx_n_u_iszip_pixels_per_block, __pyx_mstate->__pyx_n_u_icomplevel_zstd, __pyx_mstate->__pyx_n_u_icomplevel_bzip2, __pyx_mstate->__pyx_n_u_iblosc_shuffle, __pyx_mstate->__pyx_n_u_iblosc_compressor, __pyx_mstate->__pyx_n_u_iblosc_blocksize, __pyx_mstate->__pyx_n_u_iblosc_complevel, __pyx_mstate->__pyx_n_u_filtdict, __pyx_mstate->__pyx_n_u_blosc_compressor, __pyx_mstate->__pyx_n_u_szip_coding};
    __pyx_mstate_global->__pyx_codeobj_tab[86] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_filters, __pyx_mstate->__pyx_kp_b_iso88591_A_q_q_a_A_1_1_G6_gV86_QWWaaggssu, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[86])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 4848};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_ierr, __pyx_mstate->__pyx_n_u_nsd, __pyx_mstate->__pyx_n_u_quantize_mode, __pyx_mstate->__pyx_n_u_sig_digits, __pyx_mstate->__pyx_n_u_quant_mode};
    __pyx_mstate_global->__pyx_codeobj_tab[87] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_quantization, __pyx_mstate->__pyx_kp_b_iso88591_A_4q_1_4uL_1_at9D_QRRS_1_A_1_A_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[87])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 4879};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_ierr, __pyx_mstate->__pyx_n_u_iendian};
    __pyx_mstate_global->__pyx_codeobj_tab[88] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_endian, __pyx_mstate->__pyx_kp_b_iso88591_A_4uL_1_AT_iq_1_83a_1_S_1_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, 7, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 4897};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_ierr, __pyx_mstate->__pyx_n_u_icontiguous, __pyx_mstate->__pyx_n_u_ndims, __pyx_mstate->__pyx_n_u_chunksizesp, __pyx_mstate->__pyx_n_u_chunksizes, __pyx_mstate->__pyx_n_u_n};
    __pyx_mstate_global->__pyx_codeobj_tab[89] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_chunking, __pyx_mstate->__pyx_kp_b_iso88591_A_4uL_gQ_A_j_a_b_at9D_q_1_1_E_aq, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[89])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 8, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 4922};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_ierr, __pyx_mstate->__pyx_n_u_sizep, __pyx_mstate->__pyx_n_u_nelemsp, __pyx_mstate->__pyx_n_u_preemptionp, __pyx_mstate->__pyx_n_u_size, __pyx_mstate->__pyx_n_u_nelems, __pyx_mstate->__pyx_n_u_preemption};
    __pyx_mstate_global->__pyx_codeobj_tab[90] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_get_var_chunk_cache, __pyx_mstate->__pyx_kp_b_iso88591_A_it9AQ_IQa_1_wiy_Q_WA, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[90])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 11, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 4939};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_size, __pyx_mstate->__pyx_n_u_nelems, __pyx_mstate->__pyx_n_u_preemption, __pyx_mstate->__pyx_n_u_ierr, __pyx_mstate->__pyx_n_u_sizep, __pyx_mstate->__pyx_n_u_nelemsp, __pyx_mstate->__pyx_n_u_preemptionp, __pyx_mstate->__pyx_n_u_size_orig, __pyx_mstate->__pyx_n_u_nelems_orig, __pyx_mstate->__pyx_n_u_preemption_orig};
    __pyx_mstate_global->__pyx_codeobj_tab[91] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_set_var_chunk_cache, __pyx_mstate->__pyx_kp_b_iso88591_l2B_2_6J_5_q_A_A_7_a_a_gQ_it9A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[91])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 7, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 5032};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_oldname, __pyx_mstate->__pyx_n_u_newname, __pyx_mstate->__pyx_n_u_ierr, __pyx_mstate->__pyx_n_u_oldnamec, __pyx_mstate->__pyx_n_u_newnamec, __pyx_mstate->__pyx_n_u_bytestr};
    __pyx_mstate_global->__pyx_codeobj_tab[92] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_renameAttribute, __pyx_mstate->__pyx_kp_b_iso88591_A_AQ_1_AQ_1_Yd_Q_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[92])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 27, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 5177};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_data, __pyx_mstate->__pyx_n_u_ierr, __pyx_mstate->__pyx_n_u_no_fill, __pyx_mstate->__pyx_n_u_is_unsigned, __pyx_mstate->__pyx_n_u_is_unsigned_int, __pyx_mstate->__pyx_n_u_dtype_unsigned_int, __pyx_mstate->__pyx_n_u_totalmask, __pyx_mstate->__pyx_n_u_fill_value, __pyx_mstate->__pyx_n_u_safe_missval, __pyx_mstate->__pyx_n_u_mval, __pyx_mstate->__pyx_n_u_mvalmask, __pyx_mstate->__pyx_n_u_m, __pyx_mstate->__pyx_n_u_mvalisnan, __pyx_mstate->__pyx_n_u_safe_fillval, __pyx_mstate->__pyx_n_u_fval, __pyx_mstate->__pyx_n_u_fvalisnan, __pyx_mstate->__pyx_n_u_mask, __pyx_mstate->__pyx_n_u_fillval, __pyx_mstate->__pyx_n_u_has_fillval, __pyx_mstate->__pyx_n_u_validmin, __pyx_mstate->__pyx_n_u_validmax, __pyx_mstate->__pyx_n_u_safe_validrange, __pyx_mstate->__pyx_n_u_safe_validmin, __pyx_mstate->__pyx_n_u_safe_validmax, __pyx_mstate->__pyx_n_u_byte_type, __pyx_mstate->__pyx_n_u_masked_values};
    __pyx_mstate_global->__pyx_codeobj_tab[93] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_toma, __pyx_mstate->__pyx_kp_b_iso88591_A_gQfM_G1_d_fF_Q_4wd_xs_fKt6_4uA, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[93])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 5351};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_data, __pyx_mstate->__pyx_n_u_fillval, __pyx_mstate->__pyx_n_u_msg};
    __pyx_mstate_global->__pyx_codeobj_tab[94] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_pack, __pyx_mstate->__pyx_kp_b_iso88591_A_7_6_WAV1_E_4_1D_t6_s_uG1A_AV1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[94])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 19, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 5396};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_elem, __pyx_mstate->__pyx_n_u_data, __pyx_mstate->__pyx_n_u_startp, __pyx_mstate->__pyx_n_u_countp, __pyx_mstate->__pyx_n_u_ndims, __pyx_mstate->__pyx_n_u_n, __pyx_mstate->__pyx_n_u_vldata, __pyx_mstate->__pyx_n_u_strdata, __pyx_mstate->__pyx_n_u_data2, __pyx_mstate->__pyx_n_u_msg, __pyx_mstate->__pyx_n_u_elemnew, __pyx_mstate->__pyx_n_u_e, __pyx_mstate->__pyx_n_u_enew, __pyx_mstate->__pyx_n_u_start, __pyx_mstate->__pyx_n_u_count, __pyx_mstate->__pyx_n_u_encoding, __pyx_mstate->__pyx_n_u_bytestr, __pyx_mstate->__pyx_n_u_ierr};
    __pyx_mstate_global->__pyx_codeobj_tab[95] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_assign_vlen, __pyx_mstate->__pyx_kp_b_iso88591_A_4t1_1A_A_A_7_1_vRq_j_uBa_4vQb, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[95])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 5474};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_attname, __pyx_mstate->__pyx_n_u_msg, __pyx_mstate->__pyx_n_u_att, __pyx_mstate->__pyx_n_u_atta, __pyx_mstate->__pyx_n_u_is_safe};
    __pyx_mstate_global->__pyx_codeobj_tab[96] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_check_safecast, __pyx_mstate->__pyx_kp_b_iso88591_A_A_1_7_6_vQd_AQ_1_5_auD_a_E_1_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[96])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 5640};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_val};
    __pyx_mstate_global->__pyx_codeobj_tab[97] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_assignValue, __pyx_mstate->__pyx_kp_b_iso88591_A_3at1_AQ_D, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[97])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 5650};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[98] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_getValue, __pyx_mstate->__pyx_kp_b_iso88591_A_3at1_AQ_t6, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[98])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 5660};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_chartostring};
    __pyx_mstate_global->__pyx_codeobj_tab[99] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_set_auto_chartostring, __pyx_mstate->__pyx_kp_b_iso88591_A_D, 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), 5683};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_use_nc_get_vars};
    __pyx_mstate_global->__pyx_codeobj_tab[100] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_use_nc_get_vars, __pyx_mstate->__pyx_kp_b_iso88591_A_T, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[100])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 5695};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_maskandscale};
    __pyx_mstate_global->__pyx_codeobj_tab[101] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_set_auto_maskandscale, __pyx_mstate->__pyx_kp_b_iso88591_Ah_IT_Qa, 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), 5749};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_scale};
    __pyx_mstate_global->__pyx_codeobj_tab[102] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_set_auto_scale, __pyx_mstate->__pyx_kp_b_iso88591_AJ_IT, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[102])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 5788};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_mask};
    __pyx_mstate_global->__pyx_codeobj_tab[103] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_set_auto_mask, __pyx_mstate->__pyx_kp_b_iso88591_A2_HD, 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), 5815};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_always_mask};
    __pyx_mstate_global->__pyx_codeobj_tab[104] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_set_always_mask, __pyx_mstate->__pyx_kp_b_iso88591_A_O4q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[104])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 5830};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_ncstring_attrs_2};
    __pyx_mstate_global->__pyx_codeobj_tab[105] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_set_ncstring_attrs, __pyx_mstate->__pyx_kp_b_iso88591_A_Qa, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[105])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {5, 0, 0, 22, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 5845};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_data, __pyx_mstate->__pyx_n_u_start, __pyx_mstate->__pyx_n_u_count, __pyx_mstate->__pyx_n_u_stride, __pyx_mstate->__pyx_n_u_ierr, __pyx_mstate->__pyx_n_u_ndims, __pyx_mstate->__pyx_n_u_totelem, __pyx_mstate->__pyx_n_u_dataelem, __pyx_mstate->__pyx_n_u_i, __pyx_mstate->__pyx_n_u_startp, __pyx_mstate->__pyx_n_u_countp, __pyx_mstate->__pyx_n_u_stridep, __pyx_mstate->__pyx_n_u_strdata, __pyx_mstate->__pyx_n_u_elptr, __pyx_mstate->__pyx_n_u_databuff, __pyx_mstate->__pyx_n_u_dataarr, __pyx_mstate->__pyx_n_u_vldata, __pyx_mstate->__pyx_n_u_negstride, __pyx_mstate->__pyx_n_u_sl, __pyx_mstate->__pyx_n_u_n, __pyx_mstate->__pyx_n_u_encoding};
    __pyx_mstate_global->__pyx_codeobj_tab[106] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_put_2, __pyx_mstate->__pyx_kp_b_iso88591_A_1D_4_1A_4uA_A_Q_6_1_6_1_vQ_8_E, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[106])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 24, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 5983};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_start, __pyx_mstate->__pyx_n_u_count, __pyx_mstate->__pyx_n_u_stride, __pyx_mstate->__pyx_n_u_ierr, __pyx_mstate->__pyx_n_u_ndims, __pyx_mstate->__pyx_n_u_totelem, __pyx_mstate->__pyx_n_u_i, __pyx_mstate->__pyx_n_u_startp, __pyx_mstate->__pyx_n_u_countp, __pyx_mstate->__pyx_n_u_stridep, __pyx_mstate->__pyx_n_u_data, __pyx_mstate->__pyx_n_u_dataarr, __pyx_mstate->__pyx_n_u_elptr, __pyx_mstate->__pyx_n_u_strdata, __pyx_mstate->__pyx_n_u_vldata, __pyx_mstate->__pyx_n_u_shapeout, __pyx_mstate->__pyx_n_u_squeeze_out, __pyx_mstate->__pyx_n_u_lendim, __pyx_mstate->__pyx_n_u_negstride, __pyx_mstate->__pyx_n_u_sl, __pyx_mstate->__pyx_n_u_n, __pyx_mstate->__pyx_n_u_encoding, __pyx_mstate->__pyx_n_u_arrlen};
    __pyx_mstate_global->__pyx_codeobj_tab[107] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_get, __pyx_mstate->__pyx_kp_b_iso88591_A_1_a_Ja_wd_9Cq_a_9Cq_1D_A_Q_6_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[107])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 6150};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_value, __pyx_mstate->__pyx_n_u_mode, __pyx_mstate->__pyx_n_u_ierr};
    __pyx_mstate_global->__pyx_codeobj_tab[108] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_set_collective, __pyx_mstate->__pyx_kp_b_iso88591_A_4q_1_AT_a_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[108])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 6166};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_genexpr, __pyx_mstate->__pyx_n_u_genexpr};
    __pyx_mstate_global->__pyx_codeobj_tab[109] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_get_dims, __pyx_mstate->__pyx_kp_b_iso88591_A_uJa, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[109])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 6175};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[110] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_reduce, __pyx_mstate->__pyx_kp_b_iso88591_A_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[110])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 6254};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[111] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_reduce, __pyx_mstate->__pyx_kp_b_iso88591_A_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[111])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 7, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 6258};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_dt, __pyx_mstate->__pyx_n_u_names, __pyx_mstate->__pyx_n_u_formats, __pyx_mstate->__pyx_n_u_name, __pyx_mstate->__pyx_n_u_fmt, __pyx_mstate->__pyx_n_u_dtx, __pyx_mstate->__pyx_n_u_dtype_dict};
    __pyx_mstate_global->__pyx_codeobj_tab[112] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_set_alignment, __pyx_mstate->__pyx_kp_b_iso88591_Bhj_b_q_Qa_3fCq_s_A_nARwauAQ_3i, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[112])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 8, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 6283};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_dt, __pyx_mstate->__pyx_n_u_names, __pyx_mstate->__pyx_n_u_formats, __pyx_mstate->__pyx_n_u_name, __pyx_mstate->__pyx_n_u_fmt, __pyx_mstate->__pyx_n_u_dtx, __pyx_mstate->__pyx_n_u_lenchar, __pyx_mstate->__pyx_n_u_dtype_dict};
    __pyx_mstate_global->__pyx_codeobj_tab[113] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_set_viewdtype, __pyx_mstate->__pyx_kp_b_iso88591_Bhj_b_q_Qa_3fCq_s_A_nARwauAQ_3i_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[113])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 6546};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[114] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_reduce, __pyx_mstate->__pyx_kp_b_iso88591_A_2, 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), 6656};
    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_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_reduce, __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 = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 6737};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_bytestr};
    __pyx_mstate_global->__pyx_codeobj_tab[116] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_to_ascii, __pyx_mstate->__pyx_kp_b_iso88591_3axy, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[116])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 6741};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_string, __pyx_mstate->__pyx_n_u_NUMCHARS, __pyx_mstate->__pyx_n_u_dtype, __pyx_mstate->__pyx_n_u_arr};
    __pyx_mstate_global->__pyx_codeobj_tab[117] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_stringtoarr, __pyx_mstate->__pyx_kp_b_iso88591_vXT_j_vQiuAQ_q_Qk_aq_1, 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), 6764};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_a, __pyx_mstate->__pyx_n_u_encoding, __pyx_mstate->__pyx_n_u_dtype, __pyx_mstate->__pyx_n_u_b};
    __pyx_mstate_global->__pyx_codeobj_tab[118] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_stringtochar, __pyx_mstate->__pyx_kp_b_iso88591_1_AV1_vXT_j_y_G7_E_q_Qaxt1_E_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[118])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 8, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 6790};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_b, __pyx_mstate->__pyx_n_u_encoding, __pyx_mstate->__pyx_n_u_dtype, __pyx_mstate->__pyx_n_u_bs, __pyx_mstate->__pyx_n_u_slen, __pyx_mstate->__pyx_n_u_a, __pyx_mstate->__pyx_n_u_n1, __pyx_mstate->__pyx_n_u_n1};
    __pyx_mstate_global->__pyx_codeobj_tab[119] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_chartostring, __pyx_mstate->__pyx_kp_b_iso88591_1_AV1_vXT_j_y_G7_Qha_Qhb_q_3aq, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[119])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {6, 0, 0, 37, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 6852};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_files, __pyx_mstate->__pyx_n_u_check, __pyx_mstate->__pyx_n_u_aggdim, __pyx_mstate->__pyx_n_u_exclude, __pyx_mstate->__pyx_n_u_master_file, __pyx_mstate->__pyx_n_u_msg, __pyx_mstate->__pyx_n_u_master, __pyx_mstate->__pyx_n_u_cdfm, __pyx_mstate->__pyx_n_u_name, __pyx_mstate->__pyx_n_u_value, __pyx_mstate->__pyx_n_u_aggDimId, __pyx_mstate->__pyx_n_u_dimname, __pyx_mstate->__pyx_n_u_dim, __pyx_mstate->__pyx_n_u_aggDimName, __pyx_mstate->__pyx_n_u_masterRecVar, __pyx_mstate->__pyx_n_u_vName, __pyx_mstate->__pyx_n_u_v, __pyx_mstate->__pyx_n_u_dims_2, __pyx_mstate->__pyx_n_u_shape, __pyx_mstate->__pyx_n_u_dtype, __pyx_mstate->__pyx_n_u_cdf_2, __pyx_mstate->__pyx_n_u_cdfVLen_2, __pyx_mstate->__pyx_n_u_cdfRecVar_2, __pyx_mstate->__pyx_n_u_f, __pyx_mstate->__pyx_n_u_part, __pyx_mstate->__pyx_n_u_empty_cdfRecVar, __pyx_mstate->__pyx_n_u_varInfo, __pyx_mstate->__pyx_n_u_masterDims, __pyx_mstate->__pyx_n_u_masterShape, __pyx_mstate->__pyx_n_u_masterType, __pyx_mstate->__pyx_n_u_extDims, __pyx_mstate->__pyx_n_u_extShape, __pyx_mstate->__pyx_n_u_extType, __pyx_mstate->__pyx_n_u_varname, __pyx_mstate->__pyx_n_u_var, __pyx_mstate->__pyx_n_u_dset};
    __pyx_mstate_global->__pyx_codeobj_tab[120] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_init, __pyx_mstate->__pyx_kp_b_iso88591_m_L_QgQ_uKq_A_j_at1A_4q_q_wa_7, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[120])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 7050};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_name, __pyx_mstate->__pyx_n_u_value};
    __pyx_mstate_global->__pyx_codeobj_tab[121] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_setattr, __pyx_mstate->__pyx_kp_b_iso88591_A_IQha, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[121])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 7054};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_name};
    __pyx_mstate_global->__pyx_codeobj_tab[122] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_getattribute, __pyx_mstate->__pyx_kp_b_iso88591_A_5_L_1_q_uC_WD_uC_G4q_uC_gT_uC, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[122])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 7067};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[123] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_ncattrs, __pyx_mstate->__pyx_kp_b_iso88591_A_t1D_Qb, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[123])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 7075};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_dset};
    __pyx_mstate_global->__pyx_codeobj_tab[124] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_close, __pyx_mstate->__pyx_kp_b_iso88591_A_HD_a, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[124])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 7084};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[125] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_isopen, __pyx_mstate->__pyx_kp_b_iso88591_A_s_3a_34q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[125])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 9, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 7092};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_ncdump, __pyx_mstate->__pyx_n_u_dimnames, __pyx_mstate->__pyx_n_u_varnames, __pyx_mstate->__pyx_n_u_grpnames, __pyx_mstate->__pyx_n_u_name, __pyx_mstate->__pyx_n_u_genexpr, __pyx_mstate->__pyx_n_u_genexpr, __pyx_mstate->__pyx_n_u_genexpr};
    __pyx_mstate_global->__pyx_codeobj_tab[126] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_repr, __pyx_mstate->__pyx_kp_b_iso88591_A_at1F_5_A_5_A_1_4vS_AT_b_A_HD_I, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[126])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 7109};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[127] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_reduce, __pyx_mstate->__pyx_kp_b_iso88591_A_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[127])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {5, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 7114};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_dimname, __pyx_mstate->__pyx_n_u_dim, __pyx_mstate->__pyx_n_u_dimlens, __pyx_mstate->__pyx_n_u_dimtotlen};
    __pyx_mstate_global->__pyx_codeobj_tab[128] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_init, __pyx_mstate->__pyx_kp_b_iso88591_A_Kq_M_IQ, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[128])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 7118};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[129] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_len, __pyx_mstate->__pyx_kp_b_iso88591_A_t1_2, 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), 7120};
    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_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_isunlimited, __pyx_mstate->__pyx_kp_b_iso88591_A_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[130])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 7122};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_typ};
    __pyx_mstate_global->__pyx_codeobj_tab[131] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_repr, __pyx_mstate->__pyx_kp_b_iso88591_A_d_4q_ha_A_4_1_1_d_Qa_1_d_Qa, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[131])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {5, 0, 0, 7, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 7132};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_dset, __pyx_mstate->__pyx_n_u_varname, __pyx_mstate->__pyx_n_u_var, __pyx_mstate->__pyx_n_u_recdimname, __pyx_mstate->__pyx_n_u_name, __pyx_mstate->__pyx_n_u_value};
    __pyx_mstate_global->__pyx_codeobj_tab[132] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_init, __pyx_mstate->__pyx_kp_b_iso88591_A_N_Q_IQ_HA_N_Kt_aq_O1_Kt1_IS_IS, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[132])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 7145};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[133] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_typecode, __pyx_mstate->__pyx_kp_b_iso88591_A_t1_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[133])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 7147};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[134] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_ncattrs, __pyx_mstate->__pyx_kp_b_iso88591_A_t1D_9E, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[134])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 7149};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_name};
    __pyx_mstate_global->__pyx_codeobj_tab[135] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_getattr, __pyx_mstate->__pyx_kp_b_iso88591_A_5_9G4wa_5_87_Qd_5_9G4q_4y, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[135])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 9, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 7157};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_ncdump, __pyx_mstate->__pyx_n_u_dimnames, __pyx_mstate->__pyx_n_u_name, __pyx_mstate->__pyx_n_u_unlimdims, __pyx_mstate->__pyx_n_u_dimname, __pyx_mstate->__pyx_n_u_dim, __pyx_mstate->__pyx_n_u_genexpr, __pyx_mstate->__pyx_n_u_genexpr};
    __pyx_mstate_global->__pyx_codeobj_tab[136] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_repr, __pyx_mstate->__pyx_kp_b_iso88591_A_at1F_5_A_gQm4xt81_HD_IQa_A_Kt1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[136])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 7171};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[137] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_len, __pyx_mstate->__pyx_kp_b_iso88591_A_4t1_1A_4wb, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[137])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 7176};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_recdimlen};
    __pyx_mstate_global->__pyx_codeobj_tab[138] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_shape_2, __pyx_mstate->__pyx_kp_b_iso88591_A_Cq_F_Qd_Bd_V1A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[138])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 7179};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_val, __pyx_mstate->__pyx_n_u_v};
    __pyx_mstate_global->__pyx_codeobj_tab[139] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_set_auto_chartostring, __pyx_mstate->__pyx_kp_b_iso88591_A_E_Q_1A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[139])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 7182};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_val, __pyx_mstate->__pyx_n_u_v};
    __pyx_mstate_global->__pyx_codeobj_tab[140] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_set_auto_maskandscale, __pyx_mstate->__pyx_kp_b_iso88591_A_E_Q_1A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[140])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 7185};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_val, __pyx_mstate->__pyx_n_u_v};
    __pyx_mstate_global->__pyx_codeobj_tab[141] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_set_auto_mask, __pyx_mstate->__pyx_kp_b_iso88591_A_E_Q_1A_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[141])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 7188};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_val, __pyx_mstate->__pyx_n_u_v};
    __pyx_mstate_global->__pyx_codeobj_tab[142] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_set_auto_scale, __pyx_mstate->__pyx_kp_b_iso88591_A_E_Q__AQ, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[142])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 7191};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_val, __pyx_mstate->__pyx_n_u_v};
    __pyx_mstate_global->__pyx_codeobj_tab[143] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_set_always_mask, __pyx_mstate->__pyx_kp_b_iso88591_A_E_Q_Qa, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[143])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 32, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 7194};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_elem, __pyx_mstate->__pyx_n_u_start, __pyx_mstate->__pyx_n_u_count, __pyx_mstate->__pyx_n_u_stride, __pyx_mstate->__pyx_n_u_put_ind, __pyx_mstate->__pyx_n_u_datashape, __pyx_mstate->__pyx_n_u_data, __pyx_mstate->__pyx_n_u_squeeze, __pyx_mstate->__pyx_n_u_i, __pyx_mstate->__pyx_n_u_n, __pyx_mstate->__pyx_n_u_strt, __pyx_mstate->__pyx_n_u_cnt, __pyx_mstate->__pyx_n_u_strd, __pyx_mstate->__pyx_n_u_nv, __pyx_mstate->__pyx_n_u_ind, __pyx_mstate->__pyx_n_u_sta, __pyx_mstate->__pyx_n_u_step, __pyx_mstate->__pyx_n_u_stop, __pyx_mstate->__pyx_n_u_idx, __pyx_mstate->__pyx_n_u_vid, __pyx_mstate->__pyx_n_u_k, __pyx_mstate->__pyx_n_u_lst, __pyx_mstate->__pyx_n_u_newSlice, __pyx_mstate->__pyx_n_u_s, __pyx_mstate->__pyx_n_u_lstArr, __pyx_mstate->__pyx_n_u_ismasked, __pyx_mstate->__pyx_n_u_dat, __pyx_mstate->__pyx_n_u_fill_value, __pyx_mstate->__pyx_n_u_cnt, __pyx_mstate->__pyx_n_u_i, __pyx_mstate->__pyx_n_u_numv};
    __pyx_mstate_global->__pyx_codeobj_tab[144] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_getitem, __pyx_mstate->__pyx_kp_b_iso88591_A_wha_A_AQ_r_q_6_Q_fBfAQ_Be9AWF, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[144])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 19, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 7334};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_time, __pyx_mstate->__pyx_n_u_units, __pyx_mstate->__pyx_n_u_calendar, __pyx_mstate->__pyx_n_u_datetime, __pyx_mstate->__pyx_n_u_name, __pyx_mstate->__pyx_n_u_value, __pyx_mstate->__pyx_n_u_calendars, __pyx_mstate->__pyx_n_u_idx, __pyx_mstate->__pyx_n_u_t, __pyx_mstate->__pyx_n_u_msg, __pyx_mstate->__pyx_n_u_ref_date, __pyx_mstate->__pyx_n_u_ref_num, __pyx_mstate->__pyx_n_u_i0, __pyx_mstate->__pyx_n_u_i1, __pyx_mstate->__pyx_n_u_i, __pyx_mstate->__pyx_n_u_v, __pyx_mstate->__pyx_n_u_n, __pyx_mstate->__pyx_n_u_num};
    __pyx_mstate_global->__pyx_codeobj_tab[145] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_init, __pyx_mstate->__pyx_kp_b_iso88591_Ja_F_4y_a_9Cq_r_AT_U_1D_4was_AQ, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[145])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 7400};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_elem};
    __pyx_mstate_global->__pyx_codeobj_tab[146] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_netCDF4__netCDF4_pyx, __pyx_mstate->__pyx_n_u_getitem, __pyx_mstate->__pyx_kp_b_iso88591_A_t7_6_4xq, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[146])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 4};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_pyx_type, __pyx_mstate->__pyx_n_u_pyx_checksum, __pyx_mstate->__pyx_n_u_pyx_state, __pyx_mstate->__pyx_n_u_pyx_result};
    __pyx_mstate_global->__pyx_codeobj_tab[147] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_pyx_unpickle_Dimension, __pyx_mstate->__pyx_kp_b_iso88591_q_0_kQR_9HAQ_7_1L_a_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[147])) 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)

  /* Generator.init */
  if (likely(__pyx_Generator_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 ### */
/* #### Code section: cleanup_module ### */
/* #### 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;
}

/* IterFinish (used by dict_iter) */
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;
}

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

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

/* PyObjectCallOneArg (used by PyObjectCallMethod0) */
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);
}

/* PyObjectGetMethod (used by PyObjectCallMethod0) */
#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

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

/* RaiseNeedMoreValuesToUnpack (used by UnpackTuple2) */
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");
}

/* RaiseTooManyValuesToUnpack (used by UnpackItemEndCheck) */
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);
}

/* UnpackItemEndCheck (used by UnpackTuple2) */
static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) {
    if (unlikely(retval)) {
        Py_DECREF(retval);
        __Pyx_RaiseTooManyValuesError(expected);
        return -1;
    }
    return __Pyx_IterFinish();
}

/* RaiseNoneIterError (used by UnpackTupleError) */
static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
}

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

/* RaiseUnboundLocalError */
static void __Pyx_RaiseUnboundLocalError(const char *varname) {
    PyErr_Format(PyExc_UnboundLocalError, "local variable '%s' referenced before assignment", varname);
}

/* GetException (used by pep479) */
#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
}

/* pep479 */
static void __Pyx_Generator_Replace_StopIteration(int in_async_gen) {
    PyObject *exc, *val, *tb, *cur_exc, *new_exc;
    __Pyx_PyThreadState_declare
    int is_async_stopiteration = 0;
    CYTHON_MAYBE_UNUSED_VAR(in_async_gen);
    __Pyx_PyThreadState_assign
    cur_exc = __Pyx_PyErr_CurrentExceptionType();
    if (likely(!__Pyx_PyErr_GivenExceptionMatches(cur_exc, PyExc_StopIteration))) {
        if (in_async_gen && unlikely(__Pyx_PyErr_GivenExceptionMatches(cur_exc, PyExc_StopAsyncIteration))) {
            is_async_stopiteration = 1;
        } else {
            return;
        }
    }
    __Pyx_GetException(&exc, &val, &tb);
    Py_XDECREF(exc);
    Py_XDECREF(tb);
    new_exc = PyObject_CallFunction(PyExc_RuntimeError, "s",
        is_async_stopiteration ? "async generator raised StopAsyncIteration" :
        in_async_gen ? "async generator raised StopIteration" :
        "generator raised StopIteration");
    if (!new_exc) {
        Py_XDECREF(val);
        return;
    }
    PyException_SetCause(new_exc, val); // steals ref to val
    PyErr_SetObject(PyExc_RuntimeError, new_exc);
}

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

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

/* TupleAndListFromArray (used by fastcall) */
#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

/* 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 (used by fastcall) */
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
}

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

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

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

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

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

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

/* decode_c_string */
static CYTHON_INLINE PyObject* __Pyx_decode_c_string(
         const char* cstring, Py_ssize_t start, Py_ssize_t stop,
         const char* encoding, const char* errors,
         PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors)) {
    Py_ssize_t length;
    if (unlikely((start < 0) | (stop < 0))) {
        size_t slen = strlen(cstring);
        if (unlikely(slen > (size_t) PY_SSIZE_T_MAX)) {
            PyErr_SetString(PyExc_OverflowError,
                            "c-string too long to convert to Python");
            return NULL;
        }
        length = (Py_ssize_t) slen;
        if (start < 0) {
            start += length;
            if (start < 0)
                start = 0;
        }
        if (stop < 0)
            stop += length;
    }
    if (unlikely(stop <= start))
        return __Pyx_NewRef(__pyx_mstate_global->__pyx_empty_unicode);
    length = stop - start;
    cstring += start;
    if (decode_func) {
        return decode_func(cstring, length, errors);
    } else {
        return PyUnicode_Decode(cstring, length, encoding, errors);
    }
}

/* 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_unsigned_int(unsigned 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 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(!(is_unsigned || value == 0 || value > 0) ||
                    !(sizeof(value) <= 2 || value & ~ (unsigned 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_unsigned_int(unsigned int value, Py_ssize_t width, char padding_char, char format_char) {
    char digits[sizeof(unsigned int)*3+2];
    char *dpos, *end = digits + sizeof(unsigned int)*3+2;
    const char *hex_digits = DIGITS_HEX;
    Py_ssize_t length, ulength;
    int prepend_sign, last_one_off;
    unsigned int remaining;
#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 (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 = (unsigned 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 = (unsigned 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 = (unsigned 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
}

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

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

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

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

/* PyObjectVectorCallMethodKwBuilder */
#if !CYTHON_VECTORCALL || PY_VERSION_HEX < 0x03090000
static PyObject *__Pyx_Object_VectorcallMethod_CallFromBuilder(PyObject *name, PyObject *const *args, size_t nargsf, PyObject *kwnames) {
    PyObject *result;
    PyObject *obj = PyObject_GetAttr(args[0], name);
    if (unlikely(!obj))
        return NULL;
    result = __Pyx_Object_Vectorcall_CallFromBuilder(obj, args+1, nargsf-1, kwnames);
    Py_DECREF(obj);
    return result;
}
#endif

/* SwapException */
#if CYTHON_FAST_THREAD_STATE
static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
    PyObject *tmp_type, *tmp_value, *tmp_tb;
  #if CYTHON_USE_EXC_INFO_STACK && PY_VERSION_HEX >= 0x030B00a4
    _PyErr_StackItem *exc_info = tstate->exc_info;
    tmp_value = exc_info->exc_value;
    exc_info->exc_value = *value;
    if (tmp_value == NULL || tmp_value == Py_None) {
        Py_XDECREF(tmp_value);
        tmp_value = NULL;
        tmp_type = NULL;
        tmp_tb = NULL;
    } else {
        tmp_type = (PyObject*) Py_TYPE(tmp_value);
        Py_INCREF(tmp_type);
        #if CYTHON_COMPILING_IN_CPYTHON
        tmp_tb = ((PyBaseExceptionObject*) tmp_value)->traceback;
        Py_XINCREF(tmp_tb);
        #else
        tmp_tb = PyException_GetTraceback(tmp_value);
        #endif
    }
  #elif CYTHON_USE_EXC_INFO_STACK
    _PyErr_StackItem *exc_info = tstate->exc_info;
    tmp_type = exc_info->exc_type;
    tmp_value = exc_info->exc_value;
    tmp_tb = exc_info->exc_traceback;
    exc_info->exc_type = *type;
    exc_info->exc_value = *value;
    exc_info->exc_traceback = *tb;
  #else
    tmp_type = tstate->exc_type;
    tmp_value = tstate->exc_value;
    tmp_tb = tstate->exc_traceback;
    tstate->exc_type = *type;
    tstate->exc_value = *value;
    tstate->exc_traceback = *tb;
  #endif
    *type = tmp_type;
    *value = tmp_value;
    *tb = tmp_tb;
}
#else
static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb) {
    PyObject *tmp_type, *tmp_value, *tmp_tb;
    PyErr_GetExcInfo(&tmp_type, &tmp_value, &tmp_tb);
    PyErr_SetExcInfo(*type, *value, *tb);
    *type = tmp_type;
    *value = tmp_value;
    *tb = tmp_tb;
}
#endif

/* GetItemInt */
static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) {
    PyObject *r;
    if (unlikely(!j)) return NULL;
    r = PyObject_GetItem(o, j);
    Py_DECREF(j);
    return r;
}
static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i,
                                                              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));
}

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

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

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

/* RaiseClosureNameError */
static void __Pyx_RaiseClosureNameError(const char *varname) {
    PyErr_Format(PyExc_NameError, "free variable '%s' referenced before assignment in enclosing scope", varname);
}

/* PyObjectCall2Args (used by PyObjectCallMethod1) */
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);
}

/* PyObjectCallMethod1 (used by append) */
#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
}

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

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

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

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

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

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

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

/* UnicodeConcatInPlace */
# if CYTHON_COMPILING_IN_CPYTHON
static int
__Pyx_unicode_modifiable(PyObject *unicode, int unsafe_shared)
{
    if (!__Pyx_IS_UNIQUELY_REFERENCED(unicode, unsafe_shared))
        return 0;
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX > 0x030F0000
    if (PyUnstable_Unicode_GET_CACHED_HASH(unicode) != -1)
        return 0;
#endif
    if (!PyUnicode_CheckExact(unicode))
        return 0;
    if (PyUnicode_CHECK_INTERNED(unicode))
        return 0;
    return 1;
}
static CYTHON_INLINE PyObject *__Pyx_PyUnicode_ConcatInPlaceImpl(PyObject **p_left, PyObject *right, int unsafe_shared
        #if CYTHON_REFNANNY
        , void* __pyx_refnanny
        #endif
    ) {
    PyObject *left = *p_left;
    Py_ssize_t left_len, right_len, new_len;
    if (unlikely(__Pyx_PyUnicode_READY(left) == -1))
        return NULL;
    if (unlikely(__Pyx_PyUnicode_READY(right) == -1))
        return NULL;
    left_len = PyUnicode_GET_LENGTH(left);
    if (left_len == 0) {
        Py_INCREF(right);
        return right;
    }
    right_len = PyUnicode_GET_LENGTH(right);
    if (right_len == 0) {
        Py_INCREF(left);
        return left;
    }
    if (unlikely(left_len > PY_SSIZE_T_MAX - right_len)) {
        PyErr_SetString(PyExc_OverflowError,
                        "strings are too large to concat");
        return NULL;
    }
    new_len = left_len + right_len;
    if (__Pyx_unicode_modifiable(left, unsafe_shared)
            && PyUnicode_CheckExact(right)
            && PyUnicode_KIND(right) <= PyUnicode_KIND(left)
            && !(PyUnicode_IS_ASCII(left) && !PyUnicode_IS_ASCII(right))) {
        int ret;
        __Pyx_GIVEREF(*p_left);
        ret = PyUnicode_Resize(p_left, new_len);
        __Pyx_GOTREF(*p_left);
        if (unlikely(ret != 0))
            return NULL;
        #if PY_VERSION_HEX >= 0x030d0000
        if (unlikely(PyUnicode_CopyCharacters(*p_left, left_len, right, 0, right_len) < 0)) return NULL;
        #else
        _PyUnicode_FastCopyCharacters(*p_left, left_len, right, 0, right_len);
        #endif
        __Pyx_INCREF(*p_left);
        __Pyx_GIVEREF(*p_left);
        return *p_left;
    } else {
        return __Pyx_PyUnicode_Concat(left, right);
    }
  }
#endif

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

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

/* PyObjectSetAttrStr */
#if CYTHON_USE_TYPE_SLOTS
static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value) {
    PyTypeObject* tp = Py_TYPE(obj);
    if (likely(tp->tp_setattro))
        return tp->tp_setattro(obj, attr_name, value);
    return PyObject_SetAttr(obj, attr_name, value);
}
#endif

/* PyLongBinop */
#if !CYTHON_COMPILING_IN_PYPY
static PyObject* __Pyx_Fallback___Pyx_PyLong_AddObjC(PyObject *op1, PyObject *op2, int inplace) {
    return (inplace ? PyNumber_InPlaceAdd : PyNumber_Add)(op1, op2);
}
#if CYTHON_USE_PYLONG_INTERNALS
static PyObject* __Pyx_Unpacked___Pyx_PyLong_AddObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check) {
    CYTHON_MAYBE_UNUSED_VAR(inplace);
    CYTHON_UNUSED_VAR(zerodivision_check);
    const long b = intval;
    long a;
    const PY_LONG_LONG llb = intval;
    PY_LONG_LONG lla;
    if (unlikely(__Pyx_PyLong_IsZero(op1))) {
        return __Pyx_NewRef(op2);
    }
    const int is_positive = __Pyx_PyLong_IsPos(op1);
    const digit* digits = __Pyx_PyLong_Digits(op1);
    const Py_ssize_t size = __Pyx_PyLong_DigitCount(op1);
    if (likely(size == 1)) {
        a = (long) digits[0];
        if (!is_positive) a *= -1;
    } else {
        switch (size) {
            case 2:
                if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
                    a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                    if (!is_positive) a *= -1;
                    goto calculate_long;
                } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) {
                    lla = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                    if (!is_positive) lla *= -1;
                    goto calculate_long_long;
                }
                break;
            case 3:
                if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
                    a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                    if (!is_positive) a *= -1;
                    goto calculate_long;
                } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) {
                    lla = (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) lla *= -1;
                    goto calculate_long_long;
                }
                break;
            case 4:
                if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
                    a = (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) a *= -1;
                    goto calculate_long;
                } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) {
                    lla = (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) lla *= -1;
                    goto calculate_long_long;
                }
                break;
        }
        return PyLong_Type.tp_as_number->nb_add(op1, op2);
    }
    calculate_long:
        {
            long x;
            x = a + b;
            return PyLong_FromLong(x);
        }
    calculate_long_long:
        {
            PY_LONG_LONG llx;
            llx = lla + llb;
            return PyLong_FromLongLong(llx);
        }
    
}
#endif
static PyObject* __Pyx_Float___Pyx_PyLong_AddObjC(PyObject *float_val, long intval, int zerodivision_check) {
    CYTHON_UNUSED_VAR(zerodivision_check);
    const long b = intval;
    double a = __Pyx_PyFloat_AS_DOUBLE(float_val);
        double result;
        
        result = ((double)a) + (double)b;
        return PyFloat_FromDouble(result);
}
static CYTHON_INLINE PyObject* __Pyx_PyLong_AddObjC(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(op1))) {
        return __Pyx_Unpacked___Pyx_PyLong_AddObjC(op1, op2, intval, inplace, zerodivision_check);
    }
    #endif
    if (PyFloat_CheckExact(op1)) {
        return __Pyx_Float___Pyx_PyLong_AddObjC(op1, intval, zerodivision_check);
    }
    return __Pyx_Fallback___Pyx_PyLong_AddObjC(op1, op2, inplace);
}
#endif

/* PyLongCompare */
static CYTHON_INLINE int __Pyx_PyLong_BoolEqObjC(PyObject *op1, PyObject *op2, long intval, long inplace) {
    CYTHON_MAYBE_UNUSED_VAR(intval);
    CYTHON_UNUSED_VAR(inplace);
    if (op1 == op2) {
        return 1;
    }
    #if CYTHON_USE_PYLONG_INTERNALS
    if (likely(PyLong_CheckExact(op1))) {
        int unequal;
        unsigned long uintval;
        Py_ssize_t size = __Pyx_PyLong_DigitCount(op1);
        const digit* digits = __Pyx_PyLong_Digits(op1);
        if (intval == 0) {
            return (__Pyx_PyLong_IsZero(op1) == 1);
        } else if (intval < 0) {
            if (__Pyx_PyLong_IsNonNeg(op1))
                return 0;
            intval = -intval;
        } else {
            if (__Pyx_PyLong_IsNeg(op1))
                return 0;
        }
        uintval = (unsigned long) intval;
#if PyLong_SHIFT * 4 < SIZEOF_LONG*8
        if (uintval >> (PyLong_SHIFT * 4)) {
            unequal = (size != 5) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
                 | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[3] != ((uintval >> (3 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[4] != ((uintval >> (4 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
        } else
#endif
#if PyLong_SHIFT * 3 < SIZEOF_LONG*8
        if (uintval >> (PyLong_SHIFT * 3)) {
            unequal = (size != 4) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
                 | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[3] != ((uintval >> (3 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
        } else
#endif
#if PyLong_SHIFT * 2 < SIZEOF_LONG*8
        if (uintval >> (PyLong_SHIFT * 2)) {
            unequal = (size != 3) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
                 | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
        } else
#endif
#if PyLong_SHIFT * 1 < SIZEOF_LONG*8
        if (uintval >> (PyLong_SHIFT * 1)) {
            unequal = (size != 2) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
                 | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
        } else
#endif
            unequal = (size != 1) || (((unsigned long) digits[0]) != (uintval & (unsigned long) PyLong_MASK));
        return (unequal == 0);
    }
    #endif
    if (PyFloat_CheckExact(op1)) {
        const long b = intval;
        double a = __Pyx_PyFloat_AS_DOUBLE(op1);
        return ((double)a == (double)b);
    }
    return __Pyx_PyObject_IsTrueAndDecref(
        PyObject_RichCompare(op1, op2, Py_EQ));
}

/* PyLongCompare */
static CYTHON_INLINE int __Pyx_PyLong_BoolNeObjC(PyObject *op1, PyObject *op2, long intval, long inplace) {
    CYTHON_MAYBE_UNUSED_VAR(intval);
    CYTHON_UNUSED_VAR(inplace);
    if (op1 == op2) {
        return 0;
    }
    #if CYTHON_USE_PYLONG_INTERNALS
    if (likely(PyLong_CheckExact(op1))) {
        int unequal;
        unsigned long uintval;
        Py_ssize_t size = __Pyx_PyLong_DigitCount(op1);
        const digit* digits = __Pyx_PyLong_Digits(op1);
        if (intval == 0) {
            return (__Pyx_PyLong_IsZero(op1) != 1);
        } else if (intval < 0) {
            if (__Pyx_PyLong_IsNonNeg(op1))
                return 1;
            intval = -intval;
        } else {
            if (__Pyx_PyLong_IsNeg(op1))
                return 1;
        }
        uintval = (unsigned long) intval;
#if PyLong_SHIFT * 4 < SIZEOF_LONG*8
        if (uintval >> (PyLong_SHIFT * 4)) {
            unequal = (size != 5) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
                 | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[3] != ((uintval >> (3 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[4] != ((uintval >> (4 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
        } else
#endif
#if PyLong_SHIFT * 3 < SIZEOF_LONG*8
        if (uintval >> (PyLong_SHIFT * 3)) {
            unequal = (size != 4) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
                 | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[3] != ((uintval >> (3 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
        } else
#endif
#if PyLong_SHIFT * 2 < SIZEOF_LONG*8
        if (uintval >> (PyLong_SHIFT * 2)) {
            unequal = (size != 3) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
                 | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
        } else
#endif
#if PyLong_SHIFT * 1 < SIZEOF_LONG*8
        if (uintval >> (PyLong_SHIFT * 1)) {
            unequal = (size != 2) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
                 | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
        } else
#endif
            unequal = (size != 1) || (((unsigned long) digits[0]) != (uintval & (unsigned long) PyLong_MASK));
        return (unequal != 0);
    }
    #endif
    if (PyFloat_CheckExact(op1)) {
        const long b = intval;
        double a = __Pyx_PyFloat_AS_DOUBLE(op1);
        return ((double)a != (double)b);
    }
    return __Pyx_PyObject_IsTrueAndDecref(
        PyObject_RichCompare(op1, op2, Py_NE));
}

/* pybytes_as_double (used by pyobject_as_double) */
static double __Pyx_SlowPyString_AsDouble(PyObject *obj) {
    PyObject *float_value = PyFloat_FromString(obj);
    if (likely(float_value)) {
        double value = __Pyx_PyFloat_AS_DOUBLE(float_value);
        Py_DECREF(float_value);
        return value;
    }
    return (double)-1;
}
static const char* __Pyx__PyBytes_AsDouble_Copy(const char* start, char* buffer, Py_ssize_t length) {
    int last_was_punctuation = 1;
    int parse_error_found = 0;
    Py_ssize_t i;
    for (i=0; i < length; i++) {
        char chr = start[i];
        int is_punctuation = (chr == '_') | (chr == '.') | (chr == 'e') | (chr == 'E');
        *buffer = chr;
        buffer += (chr != '_');
        parse_error_found |= last_was_punctuation & is_punctuation;
        last_was_punctuation = is_punctuation;
    }
    parse_error_found |= last_was_punctuation;
    *buffer = '\0';
    return unlikely(parse_error_found) ? NULL : buffer;
}
static double __Pyx__PyBytes_AsDouble_inf_nan(const char* start, Py_ssize_t length) {
    int matches = 1;
    char sign = start[0];
    int is_signed = (sign == '+') | (sign == '-');
    start += is_signed;
    length -= is_signed;
    switch (start[0]) {
        #ifdef Py_NAN
        case 'n':
        case 'N':
            if (unlikely(length != 3)) goto parse_failure;
            matches &= (start[1] == 'a' || start[1] == 'A');
            matches &= (start[2] == 'n' || start[2] == 'N');
            if (unlikely(!matches)) goto parse_failure;
            return (sign == '-') ? -Py_NAN : Py_NAN;
        #endif
        case 'i':
        case 'I':
            if (unlikely(length < 3)) goto parse_failure;
            matches &= (start[1] == 'n' || start[1] == 'N');
            matches &= (start[2] == 'f' || start[2] == 'F');
            if (likely(length == 3 && matches))
                return (sign == '-') ? -Py_HUGE_VAL : Py_HUGE_VAL;
            if (unlikely(length != 8)) goto parse_failure;
            matches &= (start[3] == 'i' || start[3] == 'I');
            matches &= (start[4] == 'n' || start[4] == 'N');
            matches &= (start[5] == 'i' || start[5] == 'I');
            matches &= (start[6] == 't' || start[6] == 'T');
            matches &= (start[7] == 'y' || start[7] == 'Y');
            if (unlikely(!matches)) goto parse_failure;
            return (sign == '-') ? -Py_HUGE_VAL : Py_HUGE_VAL;
        case '.': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9':
            break;
        default:
            goto parse_failure;
    }
    return 0.0;
parse_failure:
    return -1.0;
}
static CYTHON_INLINE int __Pyx__PyBytes_AsDouble_IsSpace(char ch) {
    return (ch == 0x20) | !((ch < 0x9) | (ch > 0xd));
}
CYTHON_UNUSED static double __Pyx__PyBytes_AsDouble(PyObject *obj, const char* start, Py_ssize_t length) {
    double value;
    Py_ssize_t i, digits;
    const char *last = start + length;
    char *end;
    while (__Pyx__PyBytes_AsDouble_IsSpace(*start))
        start++;
    while (start < last - 1 && __Pyx__PyBytes_AsDouble_IsSpace(last[-1]))
        last--;
    length = last - start;
    if (unlikely(length <= 0)) goto fallback;
    value = __Pyx__PyBytes_AsDouble_inf_nan(start, length);
    if (unlikely(value == -1.0)) goto fallback;
    if (value != 0.0) return value;
    digits = 0;
    for (i=0; i < length; digits += start[i++] != '_');
    if (likely(digits == length)) {
        value = PyOS_string_to_double(start, &end, NULL);
    } else if (digits < 40) {
        char number[40];
        last = __Pyx__PyBytes_AsDouble_Copy(start, number, length);
        if (unlikely(!last)) goto fallback;
        value = PyOS_string_to_double(number, &end, NULL);
    } else {
        char *number = (char*) PyMem_Malloc((digits + 1) * sizeof(char));
        if (unlikely(!number)) goto fallback;
        last = __Pyx__PyBytes_AsDouble_Copy(start, number, length);
        if (unlikely(!last)) {
            PyMem_Free(number);
            goto fallback;
        }
        value = PyOS_string_to_double(number, &end, NULL);
        PyMem_Free(number);
    }
    if (likely(end == last) || (value == (double)-1 && PyErr_Occurred())) {
        return value;
    }
fallback:
    return __Pyx_SlowPyString_AsDouble(obj);
}

/* pyobject_as_double */
static double __Pyx__PyObject_AsDouble(PyObject* obj) {
    if (PyUnicode_CheckExact(obj)) {
        return __Pyx_PyUnicode_AsDouble(obj);
    } else if (PyBytes_CheckExact(obj)) {
        return __Pyx_PyBytes_AsDouble(obj);
    } else if (PyByteArray_CheckExact(obj)) {
        return __Pyx_PyByteArray_AsDouble(obj);
    } else {
        PyObject* float_value;
#if !CYTHON_USE_TYPE_SLOTS
        float_value = PyNumber_Float(obj);  if ((0)) goto bad;
        (void)__Pyx_PyObject_CallOneArg;
#else
        PyNumberMethods *nb = Py_TYPE(obj)->tp_as_number;
        if (likely(nb) && likely(nb->nb_float)) {
            float_value = nb->nb_float(obj);
            if (likely(float_value) && unlikely(!PyFloat_Check(float_value))) {
                __Pyx_TypeName float_value_type_name = __Pyx_PyType_GetFullyQualifiedName(Py_TYPE(float_value));
                PyErr_Format(PyExc_TypeError,
                    "__float__ returned non-float (type " __Pyx_FMT_TYPENAME ")",
                    float_value_type_name);
                __Pyx_DECREF_TypeName(float_value_type_name);
                Py_DECREF(float_value);
                goto bad;
            }
        } else {
            float_value = __Pyx_PyObject_CallOneArg((PyObject*)&PyFloat_Type, obj);
        }
#endif
        if (likely(float_value)) {
            double value = __Pyx_PyFloat_AS_DOUBLE(float_value);
            Py_DECREF(float_value);
            return value;
        }
    }
bad:
    return (double)-1;
}

/* PyFloatBinop */
#if !CYTHON_COMPILING_IN_PYPY
static int __Pyx_PyFloat_BoolNeObjC(PyObject *op1, PyObject *op2, double floatval, int inplace, int zerodivision_check) {
    const double b = floatval;
    double a;
    CYTHON_UNUSED_VAR(inplace);
    CYTHON_UNUSED_VAR(zerodivision_check);
    if (op1 == op2) {
        return 0;
    }
    if (likely(PyFloat_CheckExact(op1))) {
        a = __Pyx_PyFloat_AS_DOUBLE(op1);
        
    } else
    if (likely(PyLong_CheckExact(op1))) {
        #if CYTHON_USE_PYLONG_INTERNALS
        if (__Pyx_PyLong_IsZero(op1)) {
            a = 0.0;
            
        } else if (__Pyx_PyLong_IsCompact(op1)) {
            a = (double) __Pyx_PyLong_CompactValue(op1);
        } else {
            const digit* digits = __Pyx_PyLong_Digits(op1);
            const Py_ssize_t size = __Pyx_PyLong_SignedDigitCount(op1);
            switch (size) {
                case -2:
                case 2:
                    if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (1 * PyLong_SHIFT < 53))) {
                        a = (double) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                        if ((8 * sizeof(unsigned long) < 53) || (2 * PyLong_SHIFT < 53) || (a < (double) ((PY_LONG_LONG)1 << 53))) {
                            if (size == -2)
                                a = -a;
                            break;
                        }
                    }
                    CYTHON_FALLTHROUGH;
                case -3:
                case 3:
                    if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (2 * PyLong_SHIFT < 53))) {
                        a = (double) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                        if ((8 * sizeof(unsigned long) < 53) || (3 * PyLong_SHIFT < 53) || (a < (double) ((PY_LONG_LONG)1 << 53))) {
                            if (size == -3)
                                a = -a;
                            break;
                        }
                    }
                    CYTHON_FALLTHROUGH;
                case -4:
                case 4:
                    if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (3 * PyLong_SHIFT < 53))) {
                        a = (double) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                        if ((8 * sizeof(unsigned long) < 53) || (4 * PyLong_SHIFT < 53) || (a < (double) ((PY_LONG_LONG)1 << 53))) {
                            if (size == -4)
                                a = -a;
                            break;
                        }
                    }
                    CYTHON_FALLTHROUGH;
                default:
        #endif
                    {
                        PyObject *res =
                    #if CYTHON_USE_TYPE_SLOTS || __PYX_LIMITED_VERSION_HEX >= 0x030A0000
                            __Pyx_PyType_GetSlot((&PyFloat_Type), tp_richcompare, richcmpfunc)
                    #else
                            PyObject_RichCompare
                    #endif
                        (op2, op1,
                         Py_NE);
                    return __Pyx_PyObject_IsTrueAndDecref(
                        res);
                    }
        #if CYTHON_USE_PYLONG_INTERNALS
            }
        }
        #endif
    } else {
        return __Pyx_PyObject_IsTrueAndDecref(
            PyObject_RichCompare(op1, op2, Py_NE));
    }
        if (a != b) {
            return 1;
        } else {
            return 0;
        }
}
#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;
}

/* py_abs */
#if CYTHON_USE_PYLONG_INTERNALS
static PyObject *__Pyx_PyLong_AbsNeg(PyObject *n) {
#if PY_VERSION_HEX >= 0x030C00A7
    if (likely(__Pyx_PyLong_IsCompact(n))) {
        return PyLong_FromSize_t(__Pyx_PyLong_CompactValueUnsigned(n));
    }
#else
    if (likely(Py_SIZE(n) == -1)) {
        return PyLong_FromUnsignedLong(__Pyx_PyLong_Digits(n)[0]);
    }
#endif
#if CYTHON_COMPILING_IN_CPYTHON
    {
        PyObject *copy = _PyLong_Copy((PyLongObject*)n);
        if (likely(copy)) {
            #if PY_VERSION_HEX >= 0x030C00A7
            ((PyLongObject*)copy)->long_value.lv_tag ^= ((PyLongObject*)copy)->long_value.lv_tag & _PyLong_SIGN_MASK;
            #else
            __Pyx_SET_SIZE(copy, -Py_SIZE(copy));
            #endif
        }
        return copy;
    }
#else
    return PyNumber_Negative(n);
#endif
}
#endif

/* PyLongBinop */
#if !CYTHON_COMPILING_IN_PYPY
static PyObject* __Pyx_Fallback___Pyx_PyLong_SubtractObjC(PyObject *op1, PyObject *op2, int inplace) {
    return (inplace ? PyNumber_InPlaceSubtract : PyNumber_Subtract)(op1, op2);
}
#if CYTHON_USE_PYLONG_INTERNALS
static PyObject* __Pyx_Unpacked___Pyx_PyLong_SubtractObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check) {
    CYTHON_MAYBE_UNUSED_VAR(inplace);
    CYTHON_UNUSED_VAR(zerodivision_check);
    const long b = intval;
    long a;
    const PY_LONG_LONG llb = intval;
    PY_LONG_LONG lla;
    if (unlikely(__Pyx_PyLong_IsZero(op1))) {
        return PyLong_FromLong(-intval);
    }
    const int is_positive = __Pyx_PyLong_IsPos(op1);
    const digit* digits = __Pyx_PyLong_Digits(op1);
    const Py_ssize_t size = __Pyx_PyLong_DigitCount(op1);
    if (likely(size == 1)) {
        a = (long) digits[0];
        if (!is_positive) a *= -1;
    } else {
        switch (size) {
            case 2:
                if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
                    a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                    if (!is_positive) a *= -1;
                    goto calculate_long;
                } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) {
                    lla = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                    if (!is_positive) lla *= -1;
                    goto calculate_long_long;
                }
                break;
            case 3:
                if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
                    a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                    if (!is_positive) a *= -1;
                    goto calculate_long;
                } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) {
                    lla = (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) lla *= -1;
                    goto calculate_long_long;
                }
                break;
            case 4:
                if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
                    a = (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) a *= -1;
                    goto calculate_long;
                } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) {
                    lla = (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) lla *= -1;
                    goto calculate_long_long;
                }
                break;
        }
        return PyLong_Type.tp_as_number->nb_subtract(op1, op2);
    }
    calculate_long:
        {
            long x;
            x = a - b;
            return PyLong_FromLong(x);
        }
    calculate_long_long:
        {
            PY_LONG_LONG llx;
            llx = lla - llb;
            return PyLong_FromLongLong(llx);
        }
    
}
#endif
static PyObject* __Pyx_Float___Pyx_PyLong_SubtractObjC(PyObject *float_val, long intval, int zerodivision_check) {
    CYTHON_UNUSED_VAR(zerodivision_check);
    const long b = intval;
    double a = __Pyx_PyFloat_AS_DOUBLE(float_val);
        double result;
        
        result = ((double)a) - (double)b;
        return PyFloat_FromDouble(result);
}
static CYTHON_INLINE PyObject* __Pyx_PyLong_SubtractObjC(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(op1))) {
        return __Pyx_Unpacked___Pyx_PyLong_SubtractObjC(op1, op2, intval, inplace, zerodivision_check);
    }
    #endif
    if (PyFloat_CheckExact(op1)) {
        return __Pyx_Float___Pyx_PyLong_SubtractObjC(op1, intval, zerodivision_check);
    }
    return __Pyx_Fallback___Pyx_PyLong_SubtractObjC(op1, op2, inplace);
}
#endif

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

/* pybuiltin_invalid (used by pyint_simplify) */
static void __Pyx_PyBuiltin_Invalid(PyObject *obj, const char *type_name, const char *argname) {
    __Pyx_TypeName obj_type_name = __Pyx_PyType_GetFullyQualifiedName(Py_TYPE(obj));
    if (argname) {
        PyErr_Format(PyExc_TypeError,
            "Argument '%.200s' has incorrect type (expected %.200s, got " __Pyx_FMT_TYPENAME ")",
            argname, type_name, obj_type_name
        );
    } else {
        PyErr_Format(PyExc_TypeError,
            "Expected %.200s, got " __Pyx_FMT_TYPENAME,
            type_name, obj_type_name
        );
    }
    __Pyx_DECREF_TypeName(obj_type_name);
}

/* pyint_simplify */
static CYTHON_INLINE int __Pyx_PyInt_FromNumber(PyObject **number_var, const char *argname, int accept_none) {
    PyObject *number = *number_var;
    if (likely((accept_none && number == Py_None) || PyLong_CheckExact(number))) {
        return 0;
    }
    PyObject *int_object;
    if (likely(PyNumber_Check(number))) {
        int_object = PyNumber_Long(number);
        if (unlikely(!int_object)) goto bad;
    } else {
        __Pyx_PyBuiltin_Invalid(number, "int", argname);
        goto bad;
    }
    *number_var = int_object;
    Py_DECREF(number);
    return 0;
bad:
    *number_var = NULL;
    Py_DECREF(number);
    return -1;
}

/* dict_setdefault (used by FetchCommonType) */
static CYTHON_INLINE PyObject *__Pyx_PyDict_SetDefault(PyObject *d, PyObject *key, PyObject *default_value) {
    PyObject* value;
#if 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);
#elif PY_VERSION_HEX >= 0x030d0000
    PyDict_SetDefaultRef(d, key, default_value, &value);
#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;
}

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

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

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

/* DelItemOnTypeDict (used by SetupReduce) */
static int __Pyx__DelItemOnTypeDict(PyTypeObject *tp, PyObject *k) {
    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_DelItem(tp_dict, k);
    if (likely(!result)) PyType_Modified(tp);
    return result;
}

/* SetupReduce */
static int __Pyx_setup_reduce_is_named(PyObject* meth, PyObject* name) {
  int ret;
  PyObject *name_attr;
  name_attr = __Pyx_PyObject_GetAttrStrNoError(meth, __pyx_mstate_global->__pyx_n_u_name_4);
  if (likely(name_attr)) {
      ret = PyObject_RichCompareBool(name_attr, name, Py_EQ);
  } else {
      ret = -1;
  }
  if (unlikely(ret < 0)) {
      PyErr_Clear();
      ret = 0;
  }
  Py_XDECREF(name_attr);
  return ret;
}
static int __Pyx_setup_reduce(PyObject* type_obj) {
    int ret = 0;
    PyObject *object_reduce = NULL;
    PyObject *object_getstate = NULL;
    PyObject *object_reduce_ex = NULL;
    PyObject *reduce = NULL;
    PyObject *reduce_ex = NULL;
    PyObject *reduce_cython = NULL;
    PyObject *setstate = NULL;
    PyObject *setstate_cython = NULL;
    PyObject *getstate = NULL;
#if CYTHON_USE_PYTYPE_LOOKUP
    getstate = _PyType_Lookup((PyTypeObject*)type_obj, __pyx_mstate_global->__pyx_n_u_getstate);
#else
    getstate = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_mstate_global->__pyx_n_u_getstate);
    if (!getstate && PyErr_Occurred()) {
        goto __PYX_BAD;
    }
#endif
    if (getstate) {
#if CYTHON_USE_PYTYPE_LOOKUP
        object_getstate = _PyType_Lookup(&PyBaseObject_Type, __pyx_mstate_global->__pyx_n_u_getstate);
#else
        object_getstate = __Pyx_PyObject_GetAttrStrNoError((PyObject*)&PyBaseObject_Type, __pyx_mstate_global->__pyx_n_u_getstate);
        if (!object_getstate && PyErr_Occurred()) {
            goto __PYX_BAD;
        }
#endif
        if (object_getstate != getstate) {
            goto __PYX_GOOD;
        }
    }
#if CYTHON_USE_PYTYPE_LOOKUP
    object_reduce_ex = _PyType_Lookup(&PyBaseObject_Type, __pyx_mstate_global->__pyx_n_u_reduce_ex); if (!object_reduce_ex) goto __PYX_BAD;
#else
    object_reduce_ex = __Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_mstate_global->__pyx_n_u_reduce_ex); if (!object_reduce_ex) goto __PYX_BAD;
#endif
    reduce_ex = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_mstate_global->__pyx_n_u_reduce_ex); if (unlikely(!reduce_ex)) goto __PYX_BAD;
    if (reduce_ex == object_reduce_ex) {
#if CYTHON_USE_PYTYPE_LOOKUP
        object_reduce = _PyType_Lookup(&PyBaseObject_Type, __pyx_mstate_global->__pyx_n_u_reduce); if (!object_reduce) goto __PYX_BAD;
#else
        object_reduce = __Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_mstate_global->__pyx_n_u_reduce); if (!object_reduce) goto __PYX_BAD;
#endif
        reduce = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_mstate_global->__pyx_n_u_reduce); if (unlikely(!reduce)) goto __PYX_BAD;
        if (reduce == object_reduce || __Pyx_setup_reduce_is_named(reduce, __pyx_mstate_global->__pyx_n_u_reduce_cython)) {
            reduce_cython = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_mstate_global->__pyx_n_u_reduce_cython);
            if (likely(reduce_cython)) {
                ret = __Pyx_SetItemOnTypeDict((PyTypeObject*)type_obj, __pyx_mstate_global->__pyx_n_u_reduce, reduce_cython); if (unlikely(ret < 0)) goto __PYX_BAD;
                ret = __Pyx_DelItemOnTypeDict((PyTypeObject*)type_obj, __pyx_mstate_global->__pyx_n_u_reduce_cython); if (unlikely(ret < 0)) goto __PYX_BAD;
            } else if (reduce == object_reduce || PyErr_Occurred()) {
                goto __PYX_BAD;
            }
            setstate = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_mstate_global->__pyx_n_u_setstate);
            if (!setstate) PyErr_Clear();
            if (!setstate || __Pyx_setup_reduce_is_named(setstate, __pyx_mstate_global->__pyx_n_u_setstate_cython)) {
                setstate_cython = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_mstate_global->__pyx_n_u_setstate_cython);
                if (likely(setstate_cython)) {
                    ret = __Pyx_SetItemOnTypeDict((PyTypeObject*)type_obj, __pyx_mstate_global->__pyx_n_u_setstate, setstate_cython); if (unlikely(ret < 0)) goto __PYX_BAD;
                    ret = __Pyx_DelItemOnTypeDict((PyTypeObject*)type_obj, __pyx_mstate_global->__pyx_n_u_setstate_cython); if (unlikely(ret < 0)) goto __PYX_BAD;
                } else if (!setstate || PyErr_Occurred()) {
                    goto __PYX_BAD;
                }
            }
            PyType_Modified((PyTypeObject*)type_obj);
        }
    }
    goto __PYX_GOOD;
__PYX_BAD:
    if (!PyErr_Occurred()) {
        __Pyx_TypeName type_obj_name =
            __Pyx_PyType_GetFullyQualifiedName((PyTypeObject*)type_obj);
        PyErr_Format(PyExc_RuntimeError,
            "Unable to initialize pickling for " __Pyx_FMT_TYPENAME, type_obj_name);
        __Pyx_DECREF_TypeName(type_obj_name);
    }
    ret = -1;
__PYX_GOOD:
#if !CYTHON_USE_PYTYPE_LOOKUP
    Py_XDECREF(object_reduce);
    Py_XDECREF(object_reduce_ex);
    Py_XDECREF(object_getstate);
    Py_XDECREF(getstate);
#endif
    Py_XDECREF(reduce);
    Py_XDECREF(reduce_ex);
    Py_XDECREF(reduce_cython);
    Py_XDECREF(setstate);
    Py_XDECREF(setstate_cython);
    return ret;
}

/* TypeImport */
#ifndef __PYX_HAVE_RT_ImportType_3_2_3
#define __PYX_HAVE_RT_ImportType_3_2_3
static PyTypeObject *__Pyx_ImportType_3_2_3(PyObject *module, const char *module_name, const char *class_name,
    size_t size, size_t alignment, enum __Pyx_ImportType_CheckSize_3_2_3 check_size)
{
    PyObject *result = 0;
    Py_ssize_t basicsize;
    Py_ssize_t itemsize;
#if defined(Py_LIMITED_API) || (defined(CYTHON_COMPILING_IN_LIMITED_API) && CYTHON_COMPILING_IN_LIMITED_API)
    PyObject *py_basicsize;
    PyObject *py_itemsize;
#endif
    result = PyObject_GetAttrString(module, class_name);
    if (!result)
        goto bad;
    if (!PyType_Check(result)) {
        PyErr_Format(PyExc_TypeError,
            "%.200s.%.200s is not a type object",
            module_name, class_name);
        goto bad;
    }
#if !( defined(Py_LIMITED_API) || (defined(CYTHON_COMPILING_IN_LIMITED_API) && CYTHON_COMPILING_IN_LIMITED_API) )
    basicsize = ((PyTypeObject *)result)->tp_basicsize;
    itemsize = ((PyTypeObject *)result)->tp_itemsize;
#else
    if (size == 0) {
        return (PyTypeObject *)result;
    }
    py_basicsize = PyObject_GetAttrString(result, "__basicsize__");
    if (!py_basicsize)
        goto bad;
    basicsize = PyLong_AsSsize_t(py_basicsize);
    Py_DECREF(py_basicsize);
    py_basicsize = 0;
    if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred())
        goto bad;
    py_itemsize = PyObject_GetAttrString(result, "__itemsize__");
    if (!py_itemsize)
        goto bad;
    itemsize = PyLong_AsSsize_t(py_itemsize);
    Py_DECREF(py_itemsize);
    py_itemsize = 0;
    if (itemsize == (Py_ssize_t)-1 && PyErr_Occurred())
        goto bad;
#endif
    if (itemsize) {
        if (size % alignment) {
            alignment = size % alignment;
        }
        if (itemsize < (Py_ssize_t)alignment)
            itemsize = (Py_ssize_t)alignment;
    }
    if ((size_t)(basicsize + itemsize) < size) {
        PyErr_Format(PyExc_ValueError,
            "%.200s.%.200s size changed, may indicate binary incompatibility. "
            "Expected %zd from C header, got %zd from PyObject",
            module_name, class_name, size, basicsize+itemsize);
        goto bad;
    }
    if (check_size == __Pyx_ImportType_CheckSize_Error_3_2_3 &&
            ((size_t)basicsize > size || (size_t)(basicsize + itemsize) < size)) {
        PyErr_Format(PyExc_ValueError,
            "%.200s.%.200s size changed, may indicate binary incompatibility. "
            "Expected %zd from C header, got %zd-%zd from PyObject",
            module_name, class_name, size, basicsize, basicsize+itemsize);
        goto bad;
    }
    else if (check_size == __Pyx_ImportType_CheckSize_Warn_3_2_3 && (size_t)basicsize > size) {
        if (PyErr_WarnFormat(NULL, 0,
                "%.200s.%.200s size changed, may indicate binary incompatibility. "
                "Expected %zd from C header, got %zd from PyObject",
                module_name, class_name, size, basicsize) < 0) {
            goto bad;
        }
    }
    return (PyTypeObject *)result;
bad:
    Py_XDECREF(result);
    return NULL;
}
#endif

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

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

/* PyObjectLookupSpecial (used by Py3ClassCreate) */
#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

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

/* CyFunctionClassCell */
static int __Pyx_CyFunction_InitClassCell(PyObject *cyfunctions, PyObject *classobj) {
    Py_ssize_t i, count = __Pyx_PyList_GET_SIZE(cyfunctions);
    #if !CYTHON_ASSUME_SAFE_SIZE
    if (unlikely(count < 0)) return -1;
    #endif
    for (i = 0; i < count; i++) {
        __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *)
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && !CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS
            PyList_GET_ITEM(cyfunctions, i);
#else
            __Pyx_PySequence_ITEM(cyfunctions, i);
        if (unlikely(!m))
            return -1;
#endif
        __Pyx_CyFunction_SetClassObj(m, classobj);
#if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && !CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS)
        Py_DECREF((PyObject*)m);
#endif
    }
    return 0;
}

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

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

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

/* CheckUnpickleChecksum */
static void __Pyx_RaiseUnpickleChecksumError(long checksum, long checksum1, long checksum2, long checksum3, const char *members) {
    PyObject *pickle_module = PyImport_ImportModule("pickle");
    if (unlikely(!pickle_module)) return;
    PyObject *pickle_error = PyObject_GetAttrString(pickle_module, "PickleError");
    Py_DECREF(pickle_module);
    if (unlikely(!pickle_error)) return;
    if (checksum2 == checksum1) {
        PyErr_Format(pickle_error, "Incompatible checksums (0x%x vs (0x%x) = (%s))",
            checksum, checksum1, members);
    } else if (checksum3 == checksum2) {
        PyErr_Format(pickle_error, "Incompatible checksums (0x%x vs (0x%x, 0x%x) = (%s))",
            checksum, checksum1, checksum2, members);
    } else {
        PyErr_Format(pickle_error, "Incompatible checksums (0x%x vs (0x%x, 0x%x, 0x%x) = (%s))",
            checksum, checksum1, checksum2, checksum3, members);
    }
    Py_DECREF(pickle_error);
}
static int __Pyx_CheckUnpickleChecksum(long checksum, long checksum1, long checksum2, long checksum3, const char *members) {
    int found = 0;
    found |= checksum1 == checksum;
    found |= checksum2 == checksum;
    found |= checksum3 == checksum;
    if (likely(found))
        return 0;
    __Pyx_RaiseUnpickleChecksumError(checksum, checksum1, checksum2, checksum3, members);
    return -1;
}

/* Declarations */
#if CYTHON_CCOMPLEX && (1) && (!0 || __cplusplus)
  #ifdef __cplusplus
    static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) {
      return ::std::complex< float >(x, y);
    }
  #else
    static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) {
      return x + y*(__pyx_t_float_complex)_Complex_I;
    }
  #endif
#else
    static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) {
      __pyx_t_float_complex z;
      z.real = x;
      z.imag = y;
      return z;
    }
#endif

/* Arithmetic */
#if CYTHON_CCOMPLEX && (1) && (!0 || __cplusplus)
#else
    static CYTHON_INLINE int __Pyx_c_eq_float(__pyx_t_float_complex a, __pyx_t_float_complex b) {
       return (a.real == b.real) && (a.imag == b.imag);
    }
    static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_sum_float(__pyx_t_float_complex a, __pyx_t_float_complex b) {
        __pyx_t_float_complex z;
        z.real = a.real + b.real;
        z.imag = a.imag + b.imag;
        return z;
    }
    static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_diff_float(__pyx_t_float_complex a, __pyx_t_float_complex b) {
        __pyx_t_float_complex z;
        z.real = a.real - b.real;
        z.imag = a.imag - b.imag;
        return z;
    }
    static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_prod_float(__pyx_t_float_complex a, __pyx_t_float_complex b) {
        __pyx_t_float_complex z;
        z.real = a.real * b.real - a.imag * b.imag;
        z.imag = a.real * b.imag + a.imag * b.real;
        return z;
    }
    #if 1
    static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_quot_float(__pyx_t_float_complex a, __pyx_t_float_complex b) {
        if (b.imag == 0) {
            return __pyx_t_float_complex_from_parts(a.real / b.real, a.imag / b.real);
        } else if (fabsf(b.real) >= fabsf(b.imag)) {
            if (b.real == 0 && b.imag == 0) {
                return __pyx_t_float_complex_from_parts(a.real / b.real, a.imag / b.imag);
            } else {
                float r = b.imag / b.real;
                float s = (float)(1.0) / (b.real + b.imag * r);
                return __pyx_t_float_complex_from_parts(
                    (a.real + a.imag * r) * s, (a.imag - a.real * r) * s);
            }
        } else {
            float r = b.real / b.imag;
            float s = (float)(1.0) / (b.imag + b.real * r);
            return __pyx_t_float_complex_from_parts(
                (a.real * r + a.imag) * s, (a.imag * r - a.real) * s);
        }
    }
    #else
    static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_quot_float(__pyx_t_float_complex a, __pyx_t_float_complex b) {
        if (b.imag == 0) {
            return __pyx_t_float_complex_from_parts(a.real / b.real, a.imag / b.real);
        } else {
            float denom = b.real * b.real + b.imag * b.imag;
            return __pyx_t_float_complex_from_parts(
                (a.real * b.real + a.imag * b.imag) / denom,
                (a.imag * b.real - a.real * b.imag) / denom);
        }
    }
    #endif
    static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_neg_float(__pyx_t_float_complex a) {
        __pyx_t_float_complex z;
        z.real = -a.real;
        z.imag = -a.imag;
        return z;
    }
    static CYTHON_INLINE int __Pyx_c_is_zero_float(__pyx_t_float_complex a) {
       return (a.real == 0) && (a.imag == 0);
    }
    static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_conj_float(__pyx_t_float_complex a) {
        __pyx_t_float_complex z;
        z.real =  a.real;
        z.imag = -a.imag;
        return z;
    }
    #if 1
        static CYTHON_INLINE float __Pyx_c_abs_float(__pyx_t_float_complex z) {
          #if !defined(HAVE_HYPOT) || defined(_MSC_VER)
            return sqrtf(z.real*z.real + z.imag*z.imag);
          #else
            return hypotf(z.real, z.imag);
          #endif
        }
        static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_pow_float(__pyx_t_float_complex a, __pyx_t_float_complex b) {
            __pyx_t_float_complex z;
            float r, lnr, theta, z_r, z_theta;
            if (b.imag == 0 && b.real == (int)b.real) {
                if (b.real < 0) {
                    float denom = a.real * a.real + a.imag * a.imag;
                    a.real = a.real / denom;
                    a.imag = -a.imag / denom;
                    b.real = -b.real;
                }
                switch ((int)b.real) {
                    case 0:
                        z.real = 1;
                        z.imag = 0;
                        return z;
                    case 1:
                        return a;
                    case 2:
                        return __Pyx_c_prod_float(a, a);
                    case 3:
                        z = __Pyx_c_prod_float(a, a);
                        return __Pyx_c_prod_float(z, a);
                    case 4:
                        z = __Pyx_c_prod_float(a, a);
                        return __Pyx_c_prod_float(z, z);
                }
            }
            if (a.imag == 0) {
                if (a.real == 0) {
                    return a;
                } else if ((b.imag == 0) && (a.real >= 0)) {
                    z.real = powf(a.real, b.real);
                    z.imag = 0;
                    return z;
                } else if (a.real > 0) {
                    r = a.real;
                    theta = 0;
                } else {
                    r = -a.real;
                    theta = atan2f(0.0, -1.0);
                }
            } else {
                r = __Pyx_c_abs_float(a);
                theta = atan2f(a.imag, a.real);
            }
            lnr = logf(r);
            z_r = expf(lnr * b.real - theta * b.imag);
            z_theta = theta * b.real + lnr * b.imag;
            z.real = z_r * cosf(z_theta);
            z.imag = z_r * sinf(z_theta);
            return z;
        }
    #endif
#endif

/* Declarations */
#if CYTHON_CCOMPLEX && (1) && (!0 || __cplusplus)
  #ifdef __cplusplus
    static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) {
      return ::std::complex< double >(x, y);
    }
  #else
    static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) {
      return x + y*(__pyx_t_double_complex)_Complex_I;
    }
  #endif
#else
    static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) {
      __pyx_t_double_complex z;
      z.real = x;
      z.imag = y;
      return z;
    }
#endif

/* Arithmetic */
#if CYTHON_CCOMPLEX && (1) && (!0 || __cplusplus)
#else
    static CYTHON_INLINE int __Pyx_c_eq_double(__pyx_t_double_complex a, __pyx_t_double_complex b) {
       return (a.real == b.real) && (a.imag == b.imag);
    }
    static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_sum_double(__pyx_t_double_complex a, __pyx_t_double_complex b) {
        __pyx_t_double_complex z;
        z.real = a.real + b.real;
        z.imag = a.imag + b.imag;
        return z;
    }
    static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_diff_double(__pyx_t_double_complex a, __pyx_t_double_complex b) {
        __pyx_t_double_complex z;
        z.real = a.real - b.real;
        z.imag = a.imag - b.imag;
        return z;
    }
    static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_prod_double(__pyx_t_double_complex a, __pyx_t_double_complex b) {
        __pyx_t_double_complex z;
        z.real = a.real * b.real - a.imag * b.imag;
        z.imag = a.real * b.imag + a.imag * b.real;
        return z;
    }
    #if 1
    static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_quot_double(__pyx_t_double_complex a, __pyx_t_double_complex b) {
        if (b.imag == 0) {
            return __pyx_t_double_complex_from_parts(a.real / b.real, a.imag / b.real);
        } else if (fabs(b.real) >= fabs(b.imag)) {
            if (b.real == 0 && b.imag == 0) {
                return __pyx_t_double_complex_from_parts(a.real / b.real, a.imag / b.imag);
            } else {
                double r = b.imag / b.real;
                double s = (double)(1.0) / (b.real + b.imag * r);
                return __pyx_t_double_complex_from_parts(
                    (a.real + a.imag * r) * s, (a.imag - a.real * r) * s);
            }
        } else {
            double r = b.real / b.imag;
            double s = (double)(1.0) / (b.imag + b.real * r);
            return __pyx_t_double_complex_from_parts(
                (a.real * r + a.imag) * s, (a.imag * r - a.real) * s);
        }
    }
    #else
    static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_quot_double(__pyx_t_double_complex a, __pyx_t_double_complex b) {
        if (b.imag == 0) {
            return __pyx_t_double_complex_from_parts(a.real / b.real, a.imag / b.real);
        } else {
            double denom = b.real * b.real + b.imag * b.imag;
            return __pyx_t_double_complex_from_parts(
                (a.real * b.real + a.imag * b.imag) / denom,
                (a.imag * b.real - a.real * b.imag) / denom);
        }
    }
    #endif
    static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_neg_double(__pyx_t_double_complex a) {
        __pyx_t_double_complex z;
        z.real = -a.real;
        z.imag = -a.imag;
        return z;
    }
    static CYTHON_INLINE int __Pyx_c_is_zero_double(__pyx_t_double_complex a) {
       return (a.real == 0) && (a.imag == 0);
    }
    static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_conj_double(__pyx_t_double_complex a) {
        __pyx_t_double_complex z;
        z.real =  a.real;
        z.imag = -a.imag;
        return z;
    }
    #if 1
        static CYTHON_INLINE double __Pyx_c_abs_double(__pyx_t_double_complex z) {
          #if !defined(HAVE_HYPOT) || defined(_MSC_VER)
            return sqrt(z.real*z.real + z.imag*z.imag);
          #else
            return hypot(z.real, z.imag);
          #endif
        }
        static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_pow_double(__pyx_t_double_complex a, __pyx_t_double_complex b) {
            __pyx_t_double_complex z;
            double r, lnr, theta, z_r, z_theta;
            if (b.imag == 0 && b.real == (int)b.real) {
                if (b.real < 0) {
                    double denom = a.real * a.real + a.imag * a.imag;
                    a.real = a.real / denom;
                    a.imag = -a.imag / denom;
                    b.real = -b.real;
                }
                switch ((int)b.real) {
                    case 0:
                        z.real = 1;
                        z.imag = 0;
                        return z;
                    case 1:
                        return a;
                    case 2:
                        return __Pyx_c_prod_double(a, a);
                    case 3:
                        z = __Pyx_c_prod_double(a, a);
                        return __Pyx_c_prod_double(z, a);
                    case 4:
                        z = __Pyx_c_prod_double(a, a);
                        return __Pyx_c_prod_double(z, z);
                }
            }
            if (a.imag == 0) {
                if (a.real == 0) {
                    return a;
                } else if ((b.imag == 0) && (a.real >= 0)) {
                    z.real = pow(a.real, b.real);
                    z.imag = 0;
                    return z;
                } else if (a.real > 0) {
                    r = a.real;
                    theta = 0;
                } else {
                    r = -a.real;
                    theta = atan2(0.0, -1.0);
                }
            } else {
                r = __Pyx_c_abs_double(a);
                theta = atan2(a.imag, a.real);
            }
            lnr = log(r);
            z_r = exp(lnr * b.real - theta * b.imag);
            z_theta = theta * b.real + lnr * b.imag;
            z.real = z_r * cos(z_theta);
            z.imag = z_r * sin(z_theta);
            return z;
        }
    #endif
#endif

/* Declarations */
#if CYTHON_CCOMPLEX && (1) && (!0 || __cplusplus)
  #ifdef __cplusplus
    static CYTHON_INLINE __pyx_t_long_double_complex __pyx_t_long_double_complex_from_parts(long double x, long double y) {
      return ::std::complex< long double >(x, y);
    }
  #else
    static CYTHON_INLINE __pyx_t_long_double_complex __pyx_t_long_double_complex_from_parts(long double x, long double y) {
      return x + y*(__pyx_t_long_double_complex)_Complex_I;
    }
  #endif
#else
    static CYTHON_INLINE __pyx_t_long_double_complex __pyx_t_long_double_complex_from_parts(long double x, long double y) {
      __pyx_t_long_double_complex z;
      z.real = x;
      z.imag = y;
      return z;
    }
#endif

/* Arithmetic */
#if CYTHON_CCOMPLEX && (1) && (!0 || __cplusplus)
#else
    static CYTHON_INLINE int __Pyx_c_eq_long__double(__pyx_t_long_double_complex a, __pyx_t_long_double_complex b) {
       return (a.real == b.real) && (a.imag == b.imag);
    }
    static CYTHON_INLINE __pyx_t_long_double_complex __Pyx_c_sum_long__double(__pyx_t_long_double_complex a, __pyx_t_long_double_complex b) {
        __pyx_t_long_double_complex z;
        z.real = a.real + b.real;
        z.imag = a.imag + b.imag;
        return z;
    }
    static CYTHON_INLINE __pyx_t_long_double_complex __Pyx_c_diff_long__double(__pyx_t_long_double_complex a, __pyx_t_long_double_complex b) {
        __pyx_t_long_double_complex z;
        z.real = a.real - b.real;
        z.imag = a.imag - b.imag;
        return z;
    }
    static CYTHON_INLINE __pyx_t_long_double_complex __Pyx_c_prod_long__double(__pyx_t_long_double_complex a, __pyx_t_long_double_complex b) {
        __pyx_t_long_double_complex z;
        z.real = a.real * b.real - a.imag * b.imag;
        z.imag = a.real * b.imag + a.imag * b.real;
        return z;
    }
    #if 1
    static CYTHON_INLINE __pyx_t_long_double_complex __Pyx_c_quot_long__double(__pyx_t_long_double_complex a, __pyx_t_long_double_complex b) {
        if (b.imag == 0) {
            return __pyx_t_long_double_complex_from_parts(a.real / b.real, a.imag / b.real);
        } else if (fabsl(b.real) >= fabsl(b.imag)) {
            if (b.real == 0 && b.imag == 0) {
                return __pyx_t_long_double_complex_from_parts(a.real / b.real, a.imag / b.imag);
            } else {
                long double r = b.imag / b.real;
                long double s = (long double)(1.0) / (b.real + b.imag * r);
                return __pyx_t_long_double_complex_from_parts(
                    (a.real + a.imag * r) * s, (a.imag - a.real * r) * s);
            }
        } else {
            long double r = b.real / b.imag;
            long double s = (long double)(1.0) / (b.imag + b.real * r);
            return __pyx_t_long_double_complex_from_parts(
                (a.real * r + a.imag) * s, (a.imag * r - a.real) * s);
        }
    }
    #else
    static CYTHON_INLINE __pyx_t_long_double_complex __Pyx_c_quot_long__double(__pyx_t_long_double_complex a, __pyx_t_long_double_complex b) {
        if (b.imag == 0) {
            return __pyx_t_long_double_complex_from_parts(a.real / b.real, a.imag / b.real);
        } else {
            long double denom = b.real * b.real + b.imag * b.imag;
            return __pyx_t_long_double_complex_from_parts(
                (a.real * b.real + a.imag * b.imag) / denom,
                (a.imag * b.real - a.real * b.imag) / denom);
        }
    }
    #endif
    static CYTHON_INLINE __pyx_t_long_double_complex __Pyx_c_neg_long__double(__pyx_t_long_double_complex a) {
        __pyx_t_long_double_complex z;
        z.real = -a.real;
        z.imag = -a.imag;
        return z;
    }
    static CYTHON_INLINE int __Pyx_c_is_zero_long__double(__pyx_t_long_double_complex a) {
       return (a.real == 0) && (a.imag == 0);
    }
    static CYTHON_INLINE __pyx_t_long_double_complex __Pyx_c_conj_long__double(__pyx_t_long_double_complex a) {
        __pyx_t_long_double_complex z;
        z.real =  a.real;
        z.imag = -a.imag;
        return z;
    }
    #if 1
        static CYTHON_INLINE long double __Pyx_c_abs_long__double(__pyx_t_long_double_complex z) {
          #if !defined(HAVE_HYPOT) || defined(_MSC_VER)
            return sqrtl(z.real*z.real + z.imag*z.imag);
          #else
            return hypotl(z.real, z.imag);
          #endif
        }
        static CYTHON_INLINE __pyx_t_long_double_complex __Pyx_c_pow_long__double(__pyx_t_long_double_complex a, __pyx_t_long_double_complex b) {
            __pyx_t_long_double_complex z;
            long double r, lnr, theta, z_r, z_theta;
            if (b.imag == 0 && b.real == (int)b.real) {
                if (b.real < 0) {
                    long double denom = a.real * a.real + a.imag * a.imag;
                    a.real = a.real / denom;
                    a.imag = -a.imag / denom;
                    b.real = -b.real;
                }
                switch ((int)b.real) {
                    case 0:
                        z.real = 1;
                        z.imag = 0;
                        return z;
                    case 1:
                        return a;
                    case 2:
                        return __Pyx_c_prod_long__double(a, a);
                    case 3:
                        z = __Pyx_c_prod_long__double(a, a);
                        return __Pyx_c_prod_long__double(z, a);
                    case 4:
                        z = __Pyx_c_prod_long__double(a, a);
                        return __Pyx_c_prod_long__double(z, z);
                }
            }
            if (a.imag == 0) {
                if (a.real == 0) {
                    return a;
                } else if ((b.imag == 0) && (a.real >= 0)) {
                    z.real = powl(a.real, b.real);
                    z.imag = 0;
                    return z;
                } else if (a.real > 0) {
                    r = a.real;
                    theta = 0;
                } else {
                    r = -a.real;
                    theta = atan2l(0.0, -1.0);
                }
            } else {
                r = __Pyx_c_abs_long__double(a);
                theta = atan2l(a.imag, a.real);
            }
            lnr = logl(r);
            z_r = expl(lnr * b.real - theta * b.imag);
            z_theta = theta * b.real + lnr * b.imag;
            z.real = z_r * cosl(z_theta);
            z.imag = z_r * sinl(z_theta);
            return z;
        }
    #endif
#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 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;
}

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

/* CIntToPy */
static CYTHON_INLINE PyObject* __Pyx_PyLong_From_unsigned_long(unsigned long value) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const unsigned long neg_one = (unsigned long) -1, const_zero = (unsigned 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(unsigned long) < sizeof(long)) {
            return PyLong_FromLong((long) value);
        } else if (sizeof(unsigned long) <= sizeof(unsigned long)) {
            return PyLong_FromUnsignedLong((unsigned long) value);
#if !CYTHON_COMPILING_IN_PYPY
        } else if (sizeof(unsigned long) <= sizeof(unsigned PY_LONG_LONG)) {
            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
#endif
        }
    } else {
        if (sizeof(unsigned long) <= sizeof(long)) {
            return PyLong_FromLong((long) value);
        } else if (sizeof(unsigned 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(unsigned 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(unsigned 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
    }
}

/* CIntToPy */
static CYTHON_INLINE PyObject* __Pyx_PyLong_From_PY_LONG_LONG(PY_LONG_LONG value) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const PY_LONG_LONG neg_one = (PY_LONG_LONG) -1, const_zero = (PY_LONG_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(PY_LONG_LONG) < sizeof(long)) {
            return PyLong_FromLong((long) value);
        } else if (sizeof(PY_LONG_LONG) <= sizeof(unsigned long)) {
            return PyLong_FromUnsignedLong((unsigned long) value);
#if !CYTHON_COMPILING_IN_PYPY
        } else if (sizeof(PY_LONG_LONG) <= sizeof(unsigned PY_LONG_LONG)) {
            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
#endif
        }
    } else {
        if (sizeof(PY_LONG_LONG) <= sizeof(long)) {
            return PyLong_FromLong((long) value);
        } else if (sizeof(PY_LONG_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(PY_LONG_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(PY_LONG_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
    }
}

/* CIntToPy */
static CYTHON_INLINE PyObject* __Pyx_PyLong_From_unsigned_PY_LONG_LONG(unsigned PY_LONG_LONG value) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const unsigned PY_LONG_LONG neg_one = (unsigned PY_LONG_LONG) -1, const_zero = (unsigned PY_LONG_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(unsigned PY_LONG_LONG) < sizeof(long)) {
            return PyLong_FromLong((long) value);
        } else if (sizeof(unsigned PY_LONG_LONG) <= sizeof(unsigned long)) {
            return PyLong_FromUnsignedLong((unsigned long) value);
#if !CYTHON_COMPILING_IN_PYPY
        } else if (sizeof(unsigned PY_LONG_LONG) <= sizeof(unsigned PY_LONG_LONG)) {
            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
#endif
        }
    } else {
        if (sizeof(unsigned PY_LONG_LONG) <= sizeof(long)) {
            return PyLong_FromLong((long) value);
        } else if (sizeof(unsigned PY_LONG_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(unsigned PY_LONG_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(unsigned PY_LONG_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 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;
}

/* 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_nc_type(nc_type value) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const nc_type neg_one = (nc_type) -1, const_zero = (nc_type) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
    if (is_unsigned) {
        if (sizeof(nc_type) < sizeof(long)) {
            return PyLong_FromLong((long) value);
        } else if (sizeof(nc_type) <= sizeof(unsigned long)) {
            return PyLong_FromUnsignedLong((unsigned long) value);
#if !CYTHON_COMPILING_IN_PYPY
        } else if (sizeof(nc_type) <= sizeof(unsigned PY_LONG_LONG)) {
            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
#endif
        }
    } else {
        if (sizeof(nc_type) <= sizeof(long)) {
            return PyLong_FromLong((long) value);
        } else if (sizeof(nc_type) <= 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(nc_type),
                                     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(nc_type));
        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 nc_type __Pyx_PyLong_As_nc_type(PyObject *x) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const nc_type neg_one = (nc_type) -1, const_zero = (nc_type) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
    if (unlikely(!PyLong_Check(x))) {
        nc_type val;
        PyObject *tmp = __Pyx_PyNumber_Long(x);
        if (!tmp) return (nc_type) -1;
        val = __Pyx_PyLong_As_nc_type(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(nc_type, __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(nc_type) > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(nc_type, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(nc_type) >= 2 * PyLong_SHIFT)) {
                            return (nc_type) (((((nc_type)digits[1]) << PyLong_SHIFT) | (nc_type)digits[0]));
                        }
                    }
                    break;
                case 3:
                    if ((8 * sizeof(nc_type) > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(nc_type, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(nc_type) >= 3 * PyLong_SHIFT)) {
                            return (nc_type) (((((((nc_type)digits[2]) << PyLong_SHIFT) | (nc_type)digits[1]) << PyLong_SHIFT) | (nc_type)digits[0]));
                        }
                    }
                    break;
                case 4:
                    if ((8 * sizeof(nc_type) > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(nc_type, 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(nc_type) >= 4 * PyLong_SHIFT)) {
                            return (nc_type) (((((((((nc_type)digits[3]) << PyLong_SHIFT) | (nc_type)digits[2]) << PyLong_SHIFT) | (nc_type)digits[1]) << PyLong_SHIFT) | (nc_type)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 (nc_type) -1;
            if (unlikely(result == 1))
                goto raise_neg_overflow;
        }
#endif
        if ((sizeof(nc_type) <= sizeof(unsigned long))) {
            __PYX_VERIFY_RETURN_INT_EXC(nc_type, unsigned long, PyLong_AsUnsignedLong(x))
        } else if ((sizeof(nc_type) <= sizeof(unsigned PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(nc_type, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
        }
    } else {
#if CYTHON_USE_PYLONG_INTERNALS
        if (__Pyx_PyLong_IsCompact(x)) {
            __PYX_VERIFY_RETURN_INT(nc_type, __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(nc_type) - 1 > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(nc_type, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(nc_type) - 1 > 2 * PyLong_SHIFT)) {
                            return (nc_type) (((nc_type)-1)*(((((nc_type)digits[1]) << PyLong_SHIFT) | (nc_type)digits[0])));
                        }
                    }
                    break;
                case 2:
                    if ((8 * sizeof(nc_type) > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(nc_type, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(nc_type) - 1 > 2 * PyLong_SHIFT)) {
                            return (nc_type) ((((((nc_type)digits[1]) << PyLong_SHIFT) | (nc_type)digits[0])));
                        }
                    }
                    break;
                case -3:
                    if ((8 * sizeof(nc_type) - 1 > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(nc_type, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(nc_type) - 1 > 3 * PyLong_SHIFT)) {
                            return (nc_type) (((nc_type)-1)*(((((((nc_type)digits[2]) << PyLong_SHIFT) | (nc_type)digits[1]) << PyLong_SHIFT) | (nc_type)digits[0])));
                        }
                    }
                    break;
                case 3:
                    if ((8 * sizeof(nc_type) > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(nc_type, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(nc_type) - 1 > 3 * PyLong_SHIFT)) {
                            return (nc_type) ((((((((nc_type)digits[2]) << PyLong_SHIFT) | (nc_type)digits[1]) << PyLong_SHIFT) | (nc_type)digits[0])));
                        }
                    }
                    break;
                case -4:
                    if ((8 * sizeof(nc_type) - 1 > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(nc_type, 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(nc_type) - 1 > 4 * PyLong_SHIFT)) {
                            return (nc_type) (((nc_type)-1)*(((((((((nc_type)digits[3]) << PyLong_SHIFT) | (nc_type)digits[2]) << PyLong_SHIFT) | (nc_type)digits[1]) << PyLong_SHIFT) | (nc_type)digits[0])));
                        }
                    }
                    break;
                case 4:
                    if ((8 * sizeof(nc_type) > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(nc_type, 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(nc_type) - 1 > 4 * PyLong_SHIFT)) {
                            return (nc_type) ((((((((((nc_type)digits[3]) << PyLong_SHIFT) | (nc_type)digits[2]) << PyLong_SHIFT) | (nc_type)digits[1]) << PyLong_SHIFT) | (nc_type)digits[0])));
                        }
                    }
                    break;
            }
        }
#endif
        if ((sizeof(nc_type) <= sizeof(long))) {
            __PYX_VERIFY_RETURN_INT_EXC(nc_type, long, PyLong_AsLong(x))
        } else if ((sizeof(nc_type) <= sizeof(PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(nc_type, PY_LONG_LONG, PyLong_AsLongLong(x))
        }
    }
    {
        nc_type 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 (nc_type) -1;
            assert(PyLong_CheckExact(v));
        }
        {
            int result = PyObject_RichCompareBool(v, Py_False, Py_LT);
            if (unlikely(result < 0)) {
                Py_DECREF(v);
                return (nc_type) -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 (nc_type) -1;
        } else {
            stepval = v;
        }
        v = NULL;
        val = (nc_type) 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(nc_type) * 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 |= ((nc_type) 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(nc_type) * 8) - bits - (is_unsigned ? 0 : 1);
            if (unlikely(idigit >= (1L << remaining_bits)))
                goto raise_overflow;
            val |= ((nc_type) idigit) << bits;
        }
        if (!is_unsigned) {
            if (unlikely(val & (((nc_type) 1) << (sizeof(nc_type) * 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 (nc_type) -1;
        return val;
    }
raise_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "value too large to convert to nc_type");
    return (nc_type) -1;
raise_neg_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "can't convert negative value to nc_type");
    return (nc_type) -1;
}

/* 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 ptrdiff_t __Pyx_PyLong_As_ptrdiff_t(PyObject *x) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const ptrdiff_t neg_one = (ptrdiff_t) -1, const_zero = (ptrdiff_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))) {
        ptrdiff_t val;
        PyObject *tmp = __Pyx_PyNumber_Long(x);
        if (!tmp) return (ptrdiff_t) -1;
        val = __Pyx_PyLong_As_ptrdiff_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(ptrdiff_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(ptrdiff_t) > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(ptrdiff_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(ptrdiff_t) >= 2 * PyLong_SHIFT)) {
                            return (ptrdiff_t) (((((ptrdiff_t)digits[1]) << PyLong_SHIFT) | (ptrdiff_t)digits[0]));
                        }
                    }
                    break;
                case 3:
                    if ((8 * sizeof(ptrdiff_t) > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(ptrdiff_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(ptrdiff_t) >= 3 * PyLong_SHIFT)) {
                            return (ptrdiff_t) (((((((ptrdiff_t)digits[2]) << PyLong_SHIFT) | (ptrdiff_t)digits[1]) << PyLong_SHIFT) | (ptrdiff_t)digits[0]));
                        }
                    }
                    break;
                case 4:
                    if ((8 * sizeof(ptrdiff_t) > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(ptrdiff_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(ptrdiff_t) >= 4 * PyLong_SHIFT)) {
                            return (ptrdiff_t) (((((((((ptrdiff_t)digits[3]) << PyLong_SHIFT) | (ptrdiff_t)digits[2]) << PyLong_SHIFT) | (ptrdiff_t)digits[1]) << PyLong_SHIFT) | (ptrdiff_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 (ptrdiff_t) -1;
            if (unlikely(result == 1))
                goto raise_neg_overflow;
        }
#endif
        if ((sizeof(ptrdiff_t) <= sizeof(unsigned long))) {
            __PYX_VERIFY_RETURN_INT_EXC(ptrdiff_t, unsigned long, PyLong_AsUnsignedLong(x))
        } else if ((sizeof(ptrdiff_t) <= sizeof(unsigned PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(ptrdiff_t, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
        }
    } else {
#if CYTHON_USE_PYLONG_INTERNALS
        if (__Pyx_PyLong_IsCompact(x)) {
            __PYX_VERIFY_RETURN_INT(ptrdiff_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(ptrdiff_t) - 1 > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(ptrdiff_t, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(ptrdiff_t) - 1 > 2 * PyLong_SHIFT)) {
                            return (ptrdiff_t) (((ptrdiff_t)-1)*(((((ptrdiff_t)digits[1]) << PyLong_SHIFT) | (ptrdiff_t)digits[0])));
                        }
                    }
                    break;
                case 2:
                    if ((8 * sizeof(ptrdiff_t) > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(ptrdiff_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(ptrdiff_t) - 1 > 2 * PyLong_SHIFT)) {
                            return (ptrdiff_t) ((((((ptrdiff_t)digits[1]) << PyLong_SHIFT) | (ptrdiff_t)digits[0])));
                        }
                    }
                    break;
                case -3:
                    if ((8 * sizeof(ptrdiff_t) - 1 > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(ptrdiff_t, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(ptrdiff_t) - 1 > 3 * PyLong_SHIFT)) {
                            return (ptrdiff_t) (((ptrdiff_t)-1)*(((((((ptrdiff_t)digits[2]) << PyLong_SHIFT) | (ptrdiff_t)digits[1]) << PyLong_SHIFT) | (ptrdiff_t)digits[0])));
                        }
                    }
                    break;
                case 3:
                    if ((8 * sizeof(ptrdiff_t) > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(ptrdiff_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(ptrdiff_t) - 1 > 3 * PyLong_SHIFT)) {
                            return (ptrdiff_t) ((((((((ptrdiff_t)digits[2]) << PyLong_SHIFT) | (ptrdiff_t)digits[1]) << PyLong_SHIFT) | (ptrdiff_t)digits[0])));
                        }
                    }
                    break;
                case -4:
                    if ((8 * sizeof(ptrdiff_t) - 1 > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(ptrdiff_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(ptrdiff_t) - 1 > 4 * PyLong_SHIFT)) {
                            return (ptrdiff_t) (((ptrdiff_t)-1)*(((((((((ptrdiff_t)digits[3]) << PyLong_SHIFT) | (ptrdiff_t)digits[2]) << PyLong_SHIFT) | (ptrdiff_t)digits[1]) << PyLong_SHIFT) | (ptrdiff_t)digits[0])));
                        }
                    }
                    break;
                case 4:
                    if ((8 * sizeof(ptrdiff_t) > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(ptrdiff_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(ptrdiff_t) - 1 > 4 * PyLong_SHIFT)) {
                            return (ptrdiff_t) ((((((((((ptrdiff_t)digits[3]) << PyLong_SHIFT) | (ptrdiff_t)digits[2]) << PyLong_SHIFT) | (ptrdiff_t)digits[1]) << PyLong_SHIFT) | (ptrdiff_t)digits[0])));
                        }
                    }
                    break;
            }
        }
#endif
        if ((sizeof(ptrdiff_t) <= sizeof(long))) {
            __PYX_VERIFY_RETURN_INT_EXC(ptrdiff_t, long, PyLong_AsLong(x))
        } else if ((sizeof(ptrdiff_t) <= sizeof(PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(ptrdiff_t, PY_LONG_LONG, PyLong_AsLongLong(x))
        }
    }
    {
        ptrdiff_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 (ptrdiff_t) -1;
            assert(PyLong_CheckExact(v));
        }
        {
            int result = PyObject_RichCompareBool(v, Py_False, Py_LT);
            if (unlikely(result < 0)) {
                Py_DECREF(v);
                return (ptrdiff_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 (ptrdiff_t) -1;
        } else {
            stepval = v;
        }
        v = NULL;
        val = (ptrdiff_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(ptrdiff_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 |= ((ptrdiff_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(ptrdiff_t) * 8) - bits - (is_unsigned ? 0 : 1);
            if (unlikely(idigit >= (1L << remaining_bits)))
                goto raise_overflow;
            val |= ((ptrdiff_t) idigit) << bits;
        }
        if (!is_unsigned) {
            if (unlikely(val & (((ptrdiff_t) 1) << (sizeof(ptrdiff_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 (ptrdiff_t) -1;
        return val;
    }
raise_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "value too large to convert to ptrdiff_t");
    return (ptrdiff_t) -1;
raise_neg_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "can't convert negative value to ptrdiff_t");
    return (ptrdiff_t) -1;
}

/* CIntToPy */
static CYTHON_INLINE PyObject* __Pyx_PyLong_From_npy_intp(npy_intp value) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const npy_intp neg_one = (npy_intp) -1, const_zero = (npy_intp) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
    if (is_unsigned) {
        if (sizeof(npy_intp) < sizeof(long)) {
            return PyLong_FromLong((long) value);
        } else if (sizeof(npy_intp) <= sizeof(unsigned long)) {
            return PyLong_FromUnsignedLong((unsigned long) value);
#if !CYTHON_COMPILING_IN_PYPY
        } else if (sizeof(npy_intp) <= sizeof(unsigned PY_LONG_LONG)) {
            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
#endif
        }
    } else {
        if (sizeof(npy_intp) <= sizeof(long)) {
            return PyLong_FromLong((long) value);
        } else if (sizeof(npy_intp) <= 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(npy_intp),
                                     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(npy_intp));
        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 npy_intp __Pyx_PyLong_As_npy_intp(PyObject *x) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const npy_intp neg_one = (npy_intp) -1, const_zero = (npy_intp) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
    if (unlikely(!PyLong_Check(x))) {
        npy_intp val;
        PyObject *tmp = __Pyx_PyNumber_Long(x);
        if (!tmp) return (npy_intp) -1;
        val = __Pyx_PyLong_As_npy_intp(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(npy_intp, __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(npy_intp) > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(npy_intp, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(npy_intp) >= 2 * PyLong_SHIFT)) {
                            return (npy_intp) (((((npy_intp)digits[1]) << PyLong_SHIFT) | (npy_intp)digits[0]));
                        }
                    }
                    break;
                case 3:
                    if ((8 * sizeof(npy_intp) > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(npy_intp, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(npy_intp) >= 3 * PyLong_SHIFT)) {
                            return (npy_intp) (((((((npy_intp)digits[2]) << PyLong_SHIFT) | (npy_intp)digits[1]) << PyLong_SHIFT) | (npy_intp)digits[0]));
                        }
                    }
                    break;
                case 4:
                    if ((8 * sizeof(npy_intp) > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(npy_intp, 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(npy_intp) >= 4 * PyLong_SHIFT)) {
                            return (npy_intp) (((((((((npy_intp)digits[3]) << PyLong_SHIFT) | (npy_intp)digits[2]) << PyLong_SHIFT) | (npy_intp)digits[1]) << PyLong_SHIFT) | (npy_intp)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 (npy_intp) -1;
            if (unlikely(result == 1))
                goto raise_neg_overflow;
        }
#endif
        if ((sizeof(npy_intp) <= sizeof(unsigned long))) {
            __PYX_VERIFY_RETURN_INT_EXC(npy_intp, unsigned long, PyLong_AsUnsignedLong(x))
        } else if ((sizeof(npy_intp) <= sizeof(unsigned PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(npy_intp, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
        }
    } else {
#if CYTHON_USE_PYLONG_INTERNALS
        if (__Pyx_PyLong_IsCompact(x)) {
            __PYX_VERIFY_RETURN_INT(npy_intp, __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(npy_intp) - 1 > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(npy_intp, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(npy_intp) - 1 > 2 * PyLong_SHIFT)) {
                            return (npy_intp) (((npy_intp)-1)*(((((npy_intp)digits[1]) << PyLong_SHIFT) | (npy_intp)digits[0])));
                        }
                    }
                    break;
                case 2:
                    if ((8 * sizeof(npy_intp) > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(npy_intp, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(npy_intp) - 1 > 2 * PyLong_SHIFT)) {
                            return (npy_intp) ((((((npy_intp)digits[1]) << PyLong_SHIFT) | (npy_intp)digits[0])));
                        }
                    }
                    break;
                case -3:
                    if ((8 * sizeof(npy_intp) - 1 > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(npy_intp, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(npy_intp) - 1 > 3 * PyLong_SHIFT)) {
                            return (npy_intp) (((npy_intp)-1)*(((((((npy_intp)digits[2]) << PyLong_SHIFT) | (npy_intp)digits[1]) << PyLong_SHIFT) | (npy_intp)digits[0])));
                        }
                    }
                    break;
                case 3:
                    if ((8 * sizeof(npy_intp) > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(npy_intp, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(npy_intp) - 1 > 3 * PyLong_SHIFT)) {
                            return (npy_intp) ((((((((npy_intp)digits[2]) << PyLong_SHIFT) | (npy_intp)digits[1]) << PyLong_SHIFT) | (npy_intp)digits[0])));
                        }
                    }
                    break;
                case -4:
                    if ((8 * sizeof(npy_intp) - 1 > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(npy_intp, 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(npy_intp) - 1 > 4 * PyLong_SHIFT)) {
                            return (npy_intp) (((npy_intp)-1)*(((((((((npy_intp)digits[3]) << PyLong_SHIFT) | (npy_intp)digits[2]) << PyLong_SHIFT) | (npy_intp)digits[1]) << PyLong_SHIFT) | (npy_intp)digits[0])));
                        }
                    }
                    break;
                case 4:
                    if ((8 * sizeof(npy_intp) > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(npy_intp, 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(npy_intp) - 1 > 4 * PyLong_SHIFT)) {
                            return (npy_intp) ((((((((((npy_intp)digits[3]) << PyLong_SHIFT) | (npy_intp)digits[2]) << PyLong_SHIFT) | (npy_intp)digits[1]) << PyLong_SHIFT) | (npy_intp)digits[0])));
                        }
                    }
                    break;
            }
        }
#endif
        if ((sizeof(npy_intp) <= sizeof(long))) {
            __PYX_VERIFY_RETURN_INT_EXC(npy_intp, long, PyLong_AsLong(x))
        } else if ((sizeof(npy_intp) <= sizeof(PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(npy_intp, PY_LONG_LONG, PyLong_AsLongLong(x))
        }
    }
    {
        npy_intp 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 (npy_intp) -1;
            assert(PyLong_CheckExact(v));
        }
        {
            int result = PyObject_RichCompareBool(v, Py_False, Py_LT);
            if (unlikely(result < 0)) {
                Py_DECREF(v);
                return (npy_intp) -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 (npy_intp) -1;
        } else {
            stepval = v;
        }
        v = NULL;
        val = (npy_intp) 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(npy_intp) * 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 |= ((npy_intp) 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(npy_intp) * 8) - bits - (is_unsigned ? 0 : 1);
            if (unlikely(idigit >= (1L << remaining_bits)))
                goto raise_overflow;
            val |= ((npy_intp) idigit) << bits;
        }
        if (!is_unsigned) {
            if (unlikely(val & (((npy_intp) 1) << (sizeof(npy_intp) * 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 (npy_intp) -1;
        return val;
    }
raise_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "value too large to convert to npy_intp");
    return (npy_intp) -1;
raise_neg_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "can't convert negative value to npy_intp");
    return (npy_intp) -1;
}

/* UpdateUnpickledDict */
static int __Pyx__UpdateUnpickledDict(PyObject *obj, PyObject *state, Py_ssize_t index) {
    PyObject *state_dict = __Pyx_PySequence_ITEM(state, index);
    if (unlikely(!state_dict)) {
        return -1;
    }
    int non_empty = PyObject_IsTrue(state_dict);
    if (non_empty == 0) {
        Py_DECREF(state_dict);
        return 0;
    } else if (unlikely(non_empty == -1)) {
        return -1;
    }
    PyObject *dict;
    #if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030A0000
    dict = PyObject_GetAttrString(obj, "__dict__");
    #else
    dict = PyObject_GenericGetDict(obj, NULL);
    #endif
    if (unlikely(!dict)) {
        Py_DECREF(state_dict);
        return -1;
    }
    int result;
    if (likely(PyDict_CheckExact(dict))) {
        result = PyDict_Update(dict, state_dict);
    } else {
        PyObject *obj_result = __Pyx_PyObject_CallMethod1(dict, __pyx_mstate_global->__pyx_n_u_update, state_dict);
        if (likely(obj_result)) {
            Py_DECREF(obj_result);
            result = 0;
        } else {
            result = -1;
        }
    }
    Py_DECREF(state_dict);
    Py_DECREF(dict);
    return result;
}
static int __Pyx_UpdateUnpickledDict(PyObject *obj, PyObject *state, Py_ssize_t index) {
    Py_ssize_t state_size = __Pyx_PyTuple_GET_SIZE(state);
    #if !CYTHON_ASSUME_SAFE_SIZE
    if (unlikely(state_size == -1)) return -1;
    #endif
    if (state_size <= index) {
        return 0;
    }
    return __Pyx__UpdateUnpickledDict(obj, state, index);
}

/* 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__23);
    }
    goto done;
}
#endif

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

/* IterNextPlain (used by CoroutineBase) */
#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030A0000
static PyObject *__Pyx_GetBuiltinNext_LimitedAPI(void) {
    if (unlikely(!__pyx_mstate_global->__Pyx_GetBuiltinNext_LimitedAPI_cache))
        __pyx_mstate_global->__Pyx_GetBuiltinNext_LimitedAPI_cache = __Pyx_GetBuiltinName(__pyx_mstate_global->__pyx_n_u_next);
    return __pyx_mstate_global->__Pyx_GetBuiltinNext_LimitedAPI_cache;
}
#endif
static CYTHON_INLINE PyObject *__Pyx_PyIter_Next_Plain(PyObject *iterator) {
#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030A0000
    PyObject *result;
    PyObject *next = __Pyx_GetBuiltinNext_LimitedAPI();
    if (unlikely(!next)) return NULL;
    result = PyObject_CallFunctionObjArgs(next, iterator, NULL);
    return result;
#else
    (void)__Pyx_GetBuiltinName; // only for early limited API
    iternextfunc iternext = __Pyx_PyObject_GetIterNextFunc(iterator);
    assert(iternext);
    return iternext(iterator);
#endif
}

/* ReturnWithStopIteration (used by CoroutineBase) */
static void __Pyx__ReturnWithStopIteration(PyObject* value, int async);
static CYTHON_INLINE void __Pyx_ReturnWithStopIteration(PyObject* value, int async, int iternext) {
    if (value == Py_None) {
        if (async || !iternext)
            PyErr_SetNone(async ? PyExc_StopAsyncIteration : PyExc_StopIteration);
        return;
    }
    __Pyx__ReturnWithStopIteration(value, async);
}
static void __Pyx__ReturnWithStopIteration(PyObject* value, int async) {
#if CYTHON_COMPILING_IN_CPYTHON
    __Pyx_PyThreadState_declare
#endif
    PyObject *exc;
    PyObject *exc_type = async ? PyExc_StopAsyncIteration : PyExc_StopIteration;
#if CYTHON_COMPILING_IN_CPYTHON
    if ((PY_VERSION_HEX >= (0x030C00A6)) || unlikely(PyTuple_Check(value) || PyExceptionInstance_Check(value))) {
        if (PY_VERSION_HEX >= (0x030e00A1)) {
            exc = __Pyx_PyObject_CallOneArg(exc_type, value);
        } else {
            PyObject *args_tuple = PyTuple_New(1);
            if (unlikely(!args_tuple)) return;
            Py_INCREF(value);
            PyTuple_SET_ITEM(args_tuple, 0, value);
            exc = PyObject_Call(exc_type, args_tuple, NULL);
            Py_DECREF(args_tuple);
        }
        if (unlikely(!exc)) return;
    } else {
        Py_INCREF(value);
        exc = value;
    }
    #if CYTHON_FAST_THREAD_STATE
    __Pyx_PyThreadState_assign
    #if CYTHON_USE_EXC_INFO_STACK
    if (!__pyx_tstate->exc_info->exc_value)
    #else
    if (!__pyx_tstate->exc_type)
    #endif
    {
        Py_INCREF(exc_type);
        __Pyx_ErrRestore(exc_type, exc, NULL);
        return;
    }
    #endif
#else
    exc = __Pyx_PyObject_CallOneArg(exc_type, value);
    if (unlikely(!exc)) return;
#endif
    PyErr_SetObject(exc_type, exc);
    Py_DECREF(exc);
}

/* CoroutineBase (used by Generator) */
#if !CYTHON_COMPILING_IN_LIMITED_API
#include <frameobject.h>
#if PY_VERSION_HEX >= 0x030b00a6 && !defined(PYPY_VERSION)
  #ifndef Py_BUILD_CORE
    #define Py_BUILD_CORE 1
  #endif
  #include "internal/pycore_frame.h"
#endif
#endif // CYTHON_COMPILING_IN_LIMITED_API
static CYTHON_INLINE void
__Pyx_Coroutine_Undelegate(__pyx_CoroutineObject *gen) {
#if CYTHON_USE_AM_SEND
    gen->yieldfrom_am_send = NULL;
#endif
    Py_CLEAR(gen->yieldfrom);
}
static int __Pyx_PyGen__FetchStopIterationValue(PyThreadState *__pyx_tstate, PyObject **pvalue) {
    PyObject *et, *ev, *tb;
    PyObject *value = NULL;
    CYTHON_UNUSED_VAR(__pyx_tstate);
    __Pyx_ErrFetch(&et, &ev, &tb);
    if (!et) {
        Py_XDECREF(tb);
        Py_XDECREF(ev);
        Py_INCREF(Py_None);
        *pvalue = Py_None;
        return 0;
    }
    if (likely(et == PyExc_StopIteration)) {
        if (!ev) {
            Py_INCREF(Py_None);
            value = Py_None;
        }
        else if (likely(__Pyx_IS_TYPE(ev, (PyTypeObject*)PyExc_StopIteration))) {
            #if CYTHON_COMPILING_IN_LIMITED_API || CYTHON_COMPILING_IN_GRAAL
            value = PyObject_GetAttr(ev, __pyx_mstate_global->__pyx_n_u_value);
            if (unlikely(!value)) goto limited_api_failure;
            #else
            value = ((PyStopIterationObject *)ev)->value;
            Py_INCREF(value);
            #endif
            Py_DECREF(ev);
        }
        else if (unlikely(PyTuple_Check(ev))) {
            Py_ssize_t tuple_size = __Pyx_PyTuple_GET_SIZE(ev);
            #if !CYTHON_ASSUME_SAFE_SIZE
            if (unlikely(tuple_size < 0)) {
                Py_XDECREF(tb);
                Py_DECREF(ev);
                Py_DECREF(et);
                return -1;
            }
            #endif
            if (tuple_size >= 1) {
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
                value = PyTuple_GET_ITEM(ev, 0);
                Py_INCREF(value);
#elif CYTHON_ASSUME_SAFE_MACROS
                value = PySequence_ITEM(ev, 0);
#else
                value = PySequence_GetItem(ev, 0);
                if (!value) goto limited_api_failure;
#endif
            } else {
                Py_INCREF(Py_None);
                value = Py_None;
            }
            Py_DECREF(ev);
        }
        else if (!__Pyx_TypeCheck(ev, (PyTypeObject*)PyExc_StopIteration)) {
            value = ev;
        }
        if (likely(value)) {
            Py_XDECREF(tb);
            Py_DECREF(et);
            *pvalue = value;
            return 0;
        }
    } else if (!__Pyx_PyErr_GivenExceptionMatches(et, PyExc_StopIteration)) {
        __Pyx_ErrRestore(et, ev, tb);
        return -1;
    }
    PyErr_NormalizeException(&et, &ev, &tb);
    if (unlikely(!PyObject_TypeCheck(ev, (PyTypeObject*)PyExc_StopIteration))) {
        __Pyx_ErrRestore(et, ev, tb);
        return -1;
    }
    Py_XDECREF(tb);
    Py_DECREF(et);
#if CYTHON_COMPILING_IN_LIMITED_API
    value = PyObject_GetAttr(ev, __pyx_mstate_global->__pyx_n_u_value);
#else
    value = ((PyStopIterationObject *)ev)->value;
    Py_INCREF(value);
#endif
    Py_DECREF(ev);
#if CYTHON_COMPILING_IN_LIMITED_API
    if (unlikely(!value)) return -1;
#endif
    *pvalue = value;
    return 0;
#if CYTHON_COMPILING_IN_LIMITED_API || CYTHON_COMPILING_IN_GRAAL || !CYTHON_ASSUME_SAFE_MACROS
  limited_api_failure:
    Py_XDECREF(et);
    Py_XDECREF(tb);
    Py_XDECREF(ev);
    return -1;
#endif
}
static CYTHON_INLINE
__Pyx_PySendResult __Pyx_Coroutine_status_from_result(PyObject **retval) {
    if (*retval) {
        return PYGEN_NEXT;
    } else if (likely(__Pyx_PyGen__FetchStopIterationValue(__Pyx_PyThreadState_Current, retval) == 0)) {
        return PYGEN_RETURN;
    } else {
        return PYGEN_ERROR;
    }
}
static CYTHON_INLINE
void __Pyx_Coroutine_ExceptionClear(__Pyx_ExcInfoStruct *exc_state) {
#if PY_VERSION_HEX >= 0x030B00a4
    Py_CLEAR(exc_state->exc_value);
#else
    PyObject *t, *v, *tb;
    t = exc_state->exc_type;
    v = exc_state->exc_value;
    tb = exc_state->exc_traceback;
    exc_state->exc_type = NULL;
    exc_state->exc_value = NULL;
    exc_state->exc_traceback = NULL;
    Py_XDECREF(t);
    Py_XDECREF(v);
    Py_XDECREF(tb);
#endif
}
#define __Pyx_Coroutine_AlreadyRunningError(gen)  (__Pyx__Coroutine_AlreadyRunningError(gen), (PyObject*)NULL)
static void __Pyx__Coroutine_AlreadyRunningError(__pyx_CoroutineObject *gen) {
    const char *msg;
    CYTHON_MAYBE_UNUSED_VAR(gen);
    if ((0)) {
    #ifdef __Pyx_Coroutine_USED
    } else if (__Pyx_Coroutine_Check((PyObject*)gen)) {
        msg = "coroutine already executing";
    #endif
    #ifdef __Pyx_AsyncGen_USED
    } else if (__Pyx_AsyncGen_CheckExact((PyObject*)gen)) {
        msg = "async generator already executing";
    #endif
    } else {
        msg = "generator already executing";
    }
    PyErr_SetString(PyExc_ValueError, msg);
}
static void __Pyx_Coroutine_AlreadyTerminatedError(PyObject *gen, PyObject *value, int closing) {
    CYTHON_MAYBE_UNUSED_VAR(gen);
    CYTHON_MAYBE_UNUSED_VAR(closing);
    #ifdef __Pyx_Coroutine_USED
    if (!closing && __Pyx_Coroutine_Check(gen)) {
        PyErr_SetString(PyExc_RuntimeError, "cannot reuse already awaited coroutine");
    } else
    #endif
    if (value) {
        #ifdef __Pyx_AsyncGen_USED
        if (__Pyx_AsyncGen_CheckExact(gen))
            PyErr_SetNone(PyExc_StopAsyncIteration);
        else
        #endif
        PyErr_SetNone(PyExc_StopIteration);
    }
}
static
__Pyx_PySendResult __Pyx_Coroutine_SendEx(__pyx_CoroutineObject *self, PyObject *value, PyObject **result, int closing) {
    __Pyx_PyThreadState_declare
    PyThreadState *tstate;
    __Pyx_ExcInfoStruct *exc_state;
    PyObject *retval;
    assert(__Pyx_Coroutine_get_is_running(self));  // Callers should ensure is_running
    if (unlikely(self->resume_label == -1)) {
        __Pyx_Coroutine_AlreadyTerminatedError((PyObject*)self, value, closing);
        return PYGEN_ERROR;
    }
#if CYTHON_FAST_THREAD_STATE
    __Pyx_PyThreadState_assign
    tstate = __pyx_tstate;
#else
    tstate = __Pyx_PyThreadState_Current;
#endif
    exc_state = &self->gi_exc_state;
    if (exc_state->exc_value) {
        #if CYTHON_COMPILING_IN_LIMITED_API || CYTHON_COMPILING_IN_PYPY
        #else
        PyObject *exc_tb;
        #if PY_VERSION_HEX >= 0x030B00a4 && !CYTHON_COMPILING_IN_CPYTHON
        exc_tb = PyException_GetTraceback(exc_state->exc_value);
        #elif PY_VERSION_HEX >= 0x030B00a4
        exc_tb = ((PyBaseExceptionObject*) exc_state->exc_value)->traceback;
        #else
        exc_tb = exc_state->exc_traceback;
        #endif
        if (exc_tb) {
            PyTracebackObject *tb = (PyTracebackObject *) exc_tb;
            PyFrameObject *f = tb->tb_frame;
            assert(f->f_back == NULL);
            #if PY_VERSION_HEX >= 0x030B00A1
            f->f_back = PyThreadState_GetFrame(tstate);
            #else
            Py_XINCREF(tstate->frame);
            f->f_back = tstate->frame;
            #endif
            #if PY_VERSION_HEX >= 0x030B00a4 && !CYTHON_COMPILING_IN_CPYTHON
            Py_DECREF(exc_tb);
            #endif
        }
        #endif
    }
#if CYTHON_USE_EXC_INFO_STACK
    exc_state->previous_item = tstate->exc_info;
    tstate->exc_info = exc_state;
#else
    if (exc_state->exc_type) {
        __Pyx_ExceptionSwap(&exc_state->exc_type, &exc_state->exc_value, &exc_state->exc_traceback);
    } else {
        __Pyx_Coroutine_ExceptionClear(exc_state);
        __Pyx_ExceptionSave(&exc_state->exc_type, &exc_state->exc_value, &exc_state->exc_traceback);
    }
#endif
    retval = self->body(self, tstate, value);
#if CYTHON_USE_EXC_INFO_STACK
    exc_state = &self->gi_exc_state;
    tstate->exc_info = exc_state->previous_item;
    exc_state->previous_item = NULL;
    __Pyx_Coroutine_ResetFrameBackpointer(exc_state);
#endif
    *result = retval;
    if (self->resume_label == -1) {
        return likely(retval) ? PYGEN_RETURN : PYGEN_ERROR;
    }
    return PYGEN_NEXT;
}
static CYTHON_INLINE void __Pyx_Coroutine_ResetFrameBackpointer(__Pyx_ExcInfoStruct *exc_state) {
#if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API
    CYTHON_UNUSED_VAR(exc_state);
#else
    PyObject *exc_tb;
    #if PY_VERSION_HEX >= 0x030B00a4
    if (!exc_state->exc_value) return;
    exc_tb = PyException_GetTraceback(exc_state->exc_value);
    #else
    exc_tb = exc_state->exc_traceback;
    #endif
    if (likely(exc_tb)) {
        PyTracebackObject *tb = (PyTracebackObject *) exc_tb;
        PyFrameObject *f = tb->tb_frame;
        Py_CLEAR(f->f_back);
        #if PY_VERSION_HEX >= 0x030B00a4
        Py_DECREF(exc_tb);
        #endif
    }
#endif
}
#define __Pyx_Coroutine_MethodReturnFromResult(gen, result, retval, iternext)\
    ((result) == PYGEN_NEXT ? (retval) : __Pyx__Coroutine_MethodReturnFromResult(gen, result, retval, iternext))
static PyObject *
__Pyx__Coroutine_MethodReturnFromResult(PyObject* gen, __Pyx_PySendResult result, PyObject *retval, int iternext) {
    CYTHON_MAYBE_UNUSED_VAR(gen);
    if (likely(result == PYGEN_RETURN)) {
        int is_async = 0;
        #ifdef __Pyx_AsyncGen_USED
        is_async = __Pyx_AsyncGen_CheckExact(gen);
        #endif
        __Pyx_ReturnWithStopIteration(retval, is_async, iternext);
        Py_XDECREF(retval);
    }
    return NULL;
}
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE
PyObject *__Pyx_PyGen_Send(PyGenObject *gen, PyObject *arg) {
#if PY_VERSION_HEX <= 0x030A00A1
    return _PyGen_Send(gen, arg);
#else
    PyObject *result;
    if (PyIter_Send((PyObject*)gen, arg ? arg : Py_None, &result) == PYGEN_RETURN) {
        if (PyAsyncGen_CheckExact(gen)) {
            assert(result == Py_None);
            PyErr_SetNone(PyExc_StopAsyncIteration);
        }
        else if (result == Py_None) {
            PyErr_SetNone(PyExc_StopIteration);
        }
        else {
#if PY_VERSION_HEX < 0x030d00A1
            _PyGen_SetStopIterationValue(result);
#else
            if (!PyTuple_Check(result) && !PyExceptionInstance_Check(result)) {
                PyErr_SetObject(PyExc_StopIteration, result);
            } else {
                PyObject *exc = __Pyx_PyObject_CallOneArg(PyExc_StopIteration, result);
                if (likely(exc != NULL)) {
                    PyErr_SetObject(PyExc_StopIteration, exc);
                    Py_DECREF(exc);
                }
            }
#endif
        }
        Py_DECREF(result);
        result = NULL;
    }
    return result;
#endif
}
#endif
static CYTHON_INLINE __Pyx_PySendResult
__Pyx_Coroutine_FinishDelegation(__pyx_CoroutineObject *gen, PyObject** retval) {
    __Pyx_PySendResult result;
    PyObject *val = NULL;
    assert(__Pyx_Coroutine_get_is_running(gen));
    __Pyx_Coroutine_Undelegate(gen);
    __Pyx_PyGen__FetchStopIterationValue(__Pyx_PyThreadState_Current, &val);
    result = __Pyx_Coroutine_SendEx(gen, val, retval, 0);
    Py_XDECREF(val);
    return result;
}
#if CYTHON_USE_AM_SEND
static __Pyx_PySendResult
__Pyx_Coroutine_SendToDelegate(__pyx_CoroutineObject *gen, __Pyx_pyiter_sendfunc gen_am_send, PyObject *value, PyObject **retval) {
    PyObject *ret = NULL;
    __Pyx_PySendResult delegate_result, result;
    assert(__Pyx_Coroutine_get_is_running(gen));
    delegate_result = gen_am_send(gen->yieldfrom, value, &ret);
    if (delegate_result == PYGEN_NEXT) {
        assert (ret != NULL);
        *retval = ret;
        return PYGEN_NEXT;
    }
    assert (delegate_result != PYGEN_ERROR || ret == NULL);
    __Pyx_Coroutine_Undelegate(gen);
    result = __Pyx_Coroutine_SendEx(gen, ret, retval, 0);
    Py_XDECREF(ret);
    return result;
}
#endif
static PyObject *__Pyx_Coroutine_Send(PyObject *self, PyObject *value) {
    PyObject *retval = NULL;
    __Pyx_PySendResult result = __Pyx_Coroutine_AmSend(self, value, &retval);
    return __Pyx_Coroutine_MethodReturnFromResult(self, result, retval, 0);
}
static __Pyx_PySendResult
__Pyx_Coroutine_AmSend(PyObject *self, PyObject *value, PyObject **retval) {
    __Pyx_PySendResult result;
    __pyx_CoroutineObject *gen = (__pyx_CoroutineObject*) self;
    if (unlikely(__Pyx_Coroutine_test_and_set_is_running(gen))) {
        *retval = __Pyx_Coroutine_AlreadyRunningError(gen);
        return PYGEN_ERROR;
    }
    #if CYTHON_USE_AM_SEND
    if (gen->yieldfrom_am_send) {
        result = __Pyx_Coroutine_SendToDelegate(gen, gen->yieldfrom_am_send, value, retval);
    } else
    #endif
    if (gen->yieldfrom) {
        PyObject *yf = gen->yieldfrom;
        PyObject *ret;
      #if !CYTHON_USE_AM_SEND
        #ifdef __Pyx_Generator_USED
        if (__Pyx_Generator_CheckExact(yf)) {
            ret = __Pyx_Coroutine_Send(yf, value);
        } else
        #endif
        #ifdef __Pyx_Coroutine_USED
        if (__Pyx_Coroutine_Check(yf)) {
            ret = __Pyx_Coroutine_Send(yf, value);
        } else
        #endif
        #ifdef __Pyx_AsyncGen_USED
        if (__pyx_PyAsyncGenASend_CheckExact(yf)) {
            ret = __Pyx_async_gen_asend_send(yf, value);
        } else
        #endif
        #if CYTHON_COMPILING_IN_CPYTHON
        if (PyGen_CheckExact(yf)) {
            ret = __Pyx_PyGen_Send((PyGenObject*)yf, value == Py_None ? NULL : value);
        } else
        if (PyCoro_CheckExact(yf)) {
            ret = __Pyx_PyGen_Send((PyGenObject*)yf, value == Py_None ? NULL : value);
        } else
        #endif
      #endif
        {
            #if !CYTHON_COMPILING_IN_LIMITED_API || __PYX_LIMITED_VERSION_HEX >= 0x03080000
            if (value == Py_None && PyIter_Check(yf))
                ret = __Pyx_PyIter_Next_Plain(yf);
            else
            #endif
                ret = __Pyx_PyObject_CallMethod1(yf, __pyx_mstate_global->__pyx_n_u_send, value);
        }
        if (likely(ret)) {
            __Pyx_Coroutine_unset_is_running(gen);
            *retval = ret;
            return PYGEN_NEXT;
        }
        result = __Pyx_Coroutine_FinishDelegation(gen, retval);
    } else {
        result = __Pyx_Coroutine_SendEx(gen, value, retval, 0);
    }
    __Pyx_Coroutine_unset_is_running(gen);
    return result;
}
static int __Pyx_Coroutine_CloseIter(__pyx_CoroutineObject *gen, PyObject *yf) {
    __Pyx_PySendResult result;
    PyObject *retval = NULL;
    CYTHON_UNUSED_VAR(gen);
    assert(__Pyx_Coroutine_get_is_running(gen));
    #ifdef __Pyx_Generator_USED
    if (__Pyx_Generator_CheckExact(yf)) {
        result = __Pyx_Coroutine_Close(yf, &retval);
    } else
    #endif
    #ifdef __Pyx_Coroutine_USED
    if (__Pyx_Coroutine_Check(yf)) {
        result = __Pyx_Coroutine_Close(yf, &retval);
    } else
    if (__Pyx_CoroutineAwait_CheckExact(yf)) {
        result = __Pyx_CoroutineAwait_Close((__pyx_CoroutineAwaitObject*)yf);
    } else
    #endif
    #ifdef __Pyx_AsyncGen_USED
    if (__pyx_PyAsyncGenASend_CheckExact(yf)) {
        retval = __Pyx_async_gen_asend_close(yf, NULL);
        result = PYGEN_RETURN;
    } else
    if (__pyx_PyAsyncGenAThrow_CheckExact(yf)) {
        retval = __Pyx_async_gen_athrow_close(yf, NULL);
        result = PYGEN_RETURN;
    } else
    #endif
    {
        PyObject *meth;
        result = PYGEN_RETURN;
        meth = __Pyx_PyObject_GetAttrStrNoError(yf, __pyx_mstate_global->__pyx_n_u_close);
        if (unlikely(!meth)) {
            if (unlikely(PyErr_Occurred())) {
                PyErr_WriteUnraisable(yf);
            }
        } else {
            retval = __Pyx_PyObject_CallNoArg(meth);
            Py_DECREF(meth);
            if (unlikely(!retval)) {
                result = PYGEN_ERROR;
            }
        }
    }
    Py_XDECREF(retval);
    return result == PYGEN_ERROR ? -1 : 0;
}
static PyObject *__Pyx_Generator_Next(PyObject *self) {
    __Pyx_PySendResult result;
    PyObject *retval = NULL;
    __pyx_CoroutineObject *gen = (__pyx_CoroutineObject*) self;
    if (unlikely(__Pyx_Coroutine_test_and_set_is_running(gen))) {
        return __Pyx_Coroutine_AlreadyRunningError(gen);
    }
    #if CYTHON_USE_AM_SEND
    if (gen->yieldfrom_am_send) {
        result = __Pyx_Coroutine_SendToDelegate(gen, gen->yieldfrom_am_send, Py_None, &retval);
    } else
    #endif
    if (gen->yieldfrom) {
        PyObject *yf = gen->yieldfrom;
        PyObject *ret;
        #ifdef __Pyx_Generator_USED
        if (__Pyx_Generator_CheckExact(yf)) {
            ret = __Pyx_Generator_Next(yf);
        } else
        #endif
        #ifdef __Pyx_Coroutine_USED
        if (__Pyx_Coroutine_CheckExact(yf)) {
            ret = __Pyx_Coroutine_Send(yf, Py_None);
        } else
        #endif
        #if CYTHON_COMPILING_IN_CPYTHON && (PY_VERSION_HEX < 0x030A00A3 || !CYTHON_USE_AM_SEND)
        if (PyGen_CheckExact(yf)) {
            ret = __Pyx_PyGen_Send((PyGenObject*)yf, NULL);
        } else
        #endif
            ret = __Pyx_PyIter_Next_Plain(yf);
        if (likely(ret)) {
            __Pyx_Coroutine_unset_is_running(gen);
            return ret;
        }
        result = __Pyx_Coroutine_FinishDelegation(gen, &retval);
    } else {
        result = __Pyx_Coroutine_SendEx(gen, Py_None, &retval, 0);
    }
    __Pyx_Coroutine_unset_is_running(gen);
    return __Pyx_Coroutine_MethodReturnFromResult(self, result, retval, 1);
}
static PyObject *__Pyx_Coroutine_Close_Method(PyObject *self, PyObject *arg) {
    PyObject *retval = NULL;
    __Pyx_PySendResult result;
    CYTHON_UNUSED_VAR(arg);
    result = __Pyx_Coroutine_Close(self, &retval);
    if (unlikely(result == PYGEN_ERROR))
        return NULL;
    Py_XDECREF(retval);
    Py_RETURN_NONE;
}
static __Pyx_PySendResult
__Pyx_Coroutine_Close(PyObject *self, PyObject **retval) {
    __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self;
    __Pyx_PySendResult result;
    PyObject *yf;
    int err = 0;
    if (unlikely(__Pyx_Coroutine_test_and_set_is_running(gen))) {
        *retval = __Pyx_Coroutine_AlreadyRunningError(gen);
        return PYGEN_ERROR;
    }
    yf = gen->yieldfrom;
    if (yf) {
        Py_INCREF(yf);
        err = __Pyx_Coroutine_CloseIter(gen, yf);
        __Pyx_Coroutine_Undelegate(gen);
        Py_DECREF(yf);
    }
    if (err == 0)
        PyErr_SetNone(PyExc_GeneratorExit);
    result = __Pyx_Coroutine_SendEx(gen, NULL, retval, 1);
    if (result == PYGEN_ERROR) {
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        __Pyx_Coroutine_unset_is_running(gen);
        if (!__Pyx_PyErr_Occurred()) {
            return PYGEN_RETURN;
        } else if (likely(__Pyx_PyErr_ExceptionMatches2(PyExc_GeneratorExit, PyExc_StopIteration))) {
            __Pyx_PyErr_Clear();
            return PYGEN_RETURN;
        }
        return PYGEN_ERROR;
    } else if (likely(result == PYGEN_RETURN && *retval == Py_None)) {
        __Pyx_Coroutine_unset_is_running(gen);
        return PYGEN_RETURN;
    } else {
        const char *msg;
        Py_DECREF(*retval);
        *retval = NULL;
        if ((0)) {
        #ifdef __Pyx_Coroutine_USED
        } else if (__Pyx_Coroutine_Check(self)) {
            msg = "coroutine ignored GeneratorExit";
        #endif
        #ifdef __Pyx_AsyncGen_USED
        } else if (__Pyx_AsyncGen_CheckExact(self)) {
            msg = "async generator ignored GeneratorExit";
        #endif
        } else {
            msg = "generator ignored GeneratorExit";
        }
        PyErr_SetString(PyExc_RuntimeError, msg);
        __Pyx_Coroutine_unset_is_running(gen);
        return PYGEN_ERROR;
    }
}
static PyObject *__Pyx__Coroutine_Throw(PyObject *self, PyObject *typ, PyObject *val, PyObject *tb,
                                        PyObject *args, int close_on_genexit) {
    __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self;
    PyObject *yf;
    if (unlikely(__Pyx_Coroutine_test_and_set_is_running(gen)))
        return __Pyx_Coroutine_AlreadyRunningError(gen);
    yf = gen->yieldfrom;
    if (yf) {
        __Pyx_PySendResult result;
        PyObject *ret;
        Py_INCREF(yf);
        if (__Pyx_PyErr_GivenExceptionMatches(typ, PyExc_GeneratorExit) && close_on_genexit) {
            int err = __Pyx_Coroutine_CloseIter(gen, yf);
            Py_DECREF(yf);
            __Pyx_Coroutine_Undelegate(gen);
            if (err < 0)
                goto propagate_exception;
            goto throw_here;
        }
        if (0
        #ifdef __Pyx_Generator_USED
            || __Pyx_Generator_CheckExact(yf)
        #endif
        #ifdef __Pyx_Coroutine_USED
            || __Pyx_Coroutine_Check(yf)
        #endif
            ) {
            ret = __Pyx__Coroutine_Throw(yf, typ, val, tb, args, close_on_genexit);
        #ifdef __Pyx_Coroutine_USED
        } else if (__Pyx_CoroutineAwait_CheckExact(yf)) {
            ret = __Pyx__Coroutine_Throw(((__pyx_CoroutineAwaitObject*)yf)->coroutine, typ, val, tb, args, close_on_genexit);
        #endif
        } else {
            PyObject *meth = __Pyx_PyObject_GetAttrStrNoError(yf, __pyx_mstate_global->__pyx_n_u_throw);
            if (unlikely(!meth)) {
                Py_DECREF(yf);
                if (unlikely(PyErr_Occurred())) {
                    __Pyx_Coroutine_unset_is_running(gen);
                    return NULL;
                }
                __Pyx_Coroutine_Undelegate(gen);
                goto throw_here;
            }
            if (likely(args)) {
                ret = __Pyx_PyObject_Call(meth, args, NULL);
            } else {
                PyObject *cargs[4] = {NULL, typ, val, tb};
                ret = __Pyx_PyObject_FastCall(meth, cargs+1, 3 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET);
            }
            Py_DECREF(meth);
        }
        Py_DECREF(yf);
        if (ret) {
            __Pyx_Coroutine_unset_is_running(gen);
            return ret;
        }
        result = __Pyx_Coroutine_FinishDelegation(gen, &ret);
        __Pyx_Coroutine_unset_is_running(gen);
        return __Pyx_Coroutine_MethodReturnFromResult(self, result, ret, 0);
    }
throw_here:
    __Pyx_Raise(typ, val, tb, NULL);
propagate_exception:
    {
        PyObject *retval = NULL;
        __Pyx_PySendResult result = __Pyx_Coroutine_SendEx(gen, NULL, &retval, 0);
        __Pyx_Coroutine_unset_is_running(gen);
        return __Pyx_Coroutine_MethodReturnFromResult(self, result, retval, 0);
    }
}
static PyObject *__Pyx_Coroutine_Throw(PyObject *self, PyObject *args) {
    PyObject *typ;
    PyObject *val = NULL;
    PyObject *tb = NULL;
    if (unlikely(!PyArg_UnpackTuple(args, "throw", 1, 3, &typ, &val, &tb)))
        return NULL;
    return __Pyx__Coroutine_Throw(self, typ, val, tb, args, 1);
}
static CYTHON_INLINE int __Pyx_Coroutine_traverse_excstate(__Pyx_ExcInfoStruct *exc_state, visitproc visit, void *arg) {
#if PY_VERSION_HEX >= 0x030B00a4
    Py_VISIT(exc_state->exc_value);
#else
    Py_VISIT(exc_state->exc_type);
    Py_VISIT(exc_state->exc_value);
    Py_VISIT(exc_state->exc_traceback);
#endif
    return 0;
}
static int __Pyx_Coroutine_traverse(__pyx_CoroutineObject *gen, visitproc visit, void *arg) {
    {
        int e = __Pyx_call_type_traverse((PyObject*)gen, 1, visit, arg);
        if (e) return e;
    }
    Py_VISIT(gen->closure);
    Py_VISIT(gen->classobj);
    Py_VISIT(gen->yieldfrom);
    return __Pyx_Coroutine_traverse_excstate(&gen->gi_exc_state, visit, arg);
}
static int __Pyx_Coroutine_clear(PyObject *self) {
    __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self;
    Py_CLEAR(gen->closure);
    Py_CLEAR(gen->classobj);
    __Pyx_Coroutine_Undelegate(gen);
    __Pyx_Coroutine_ExceptionClear(&gen->gi_exc_state);
#ifdef __Pyx_AsyncGen_USED
    if (__Pyx_AsyncGen_CheckExact(self)) {
        Py_CLEAR(((__pyx_PyAsyncGenObject*)gen)->ag_finalizer);
    }
#endif
    Py_CLEAR(gen->gi_code);
    Py_CLEAR(gen->gi_frame);
    Py_CLEAR(gen->gi_name);
    Py_CLEAR(gen->gi_qualname);
    Py_CLEAR(gen->gi_modulename);
    return 0;
}
static void __Pyx_Coroutine_dealloc(PyObject *self) {
    __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self;
    PyObject_GC_UnTrack(gen);
    #if PY_VERSION_HEX < 0x030C0000 || CYTHON_COMPILING_IN_LIMITED_API
    if (gen->gi_weakreflist != NULL)
    #endif
        PyObject_ClearWeakRefs(self);
    if (gen->resume_label >= 0) {
        PyObject_GC_Track(self);
#if CYTHON_USE_TP_FINALIZE
        if (unlikely(PyObject_CallFinalizerFromDealloc(self)))
#else
        {
            destructor del = __Pyx_PyObject_GetSlot(gen, tp_del, destructor);
            if (del) del(self);
        }
        if (unlikely(Py_REFCNT(self) > 0))
#endif
        {
            return;
        }
        PyObject_GC_UnTrack(self);
    }
#ifdef __Pyx_AsyncGen_USED
    if (__Pyx_AsyncGen_CheckExact(self)) {
        /* We have to handle this case for asynchronous generators
           right here, because this code has to be between UNTRACK
           and GC_Del. */
        Py_CLEAR(((__pyx_PyAsyncGenObject*)self)->ag_finalizer);
    }
#endif
    __Pyx_Coroutine_clear(self);
    __Pyx_PyHeapTypeObject_GC_Del(gen);
}
#if CYTHON_USE_TP_FINALIZE
static void __Pyx_Coroutine_del(PyObject *self) {
    PyObject *error_type, *error_value, *error_traceback;
    __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self;
    __Pyx_PyThreadState_declare
    if (gen->resume_label < 0) {
        return;
    }
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&error_type, &error_value, &error_traceback);
#ifdef __Pyx_AsyncGen_USED
    if (__Pyx_AsyncGen_CheckExact(self)) {
        __pyx_PyAsyncGenObject *agen = (__pyx_PyAsyncGenObject*)self;
        PyObject *finalizer = agen->ag_finalizer;
        if (finalizer && !agen->ag_closed) {
            PyObject *res = __Pyx_PyObject_CallOneArg(finalizer, self);
            if (unlikely(!res)) {
                PyErr_WriteUnraisable(self);
            } else {
                Py_DECREF(res);
            }
            __Pyx_ErrRestore(error_type, error_value, error_traceback);
            return;
        }
    }
#endif
    if (unlikely(gen->resume_label == 0 && !error_value)) {
#ifdef __Pyx_Coroutine_USED
#ifdef __Pyx_Generator_USED
    if (!__Pyx_Generator_CheckExact(self))
#endif
        {
        PyObject_GC_UnTrack(self);
        if (unlikely(PyErr_WarnFormat(PyExc_RuntimeWarning, 1, "coroutine '%.50S' was never awaited", gen->gi_qualname) < 0))
            PyErr_WriteUnraisable(self);
        PyObject_GC_Track(self);
        }
#endif
    } else {
        PyObject *retval = NULL;
        __Pyx_PySendResult result = __Pyx_Coroutine_Close(self, &retval);
        if (result == PYGEN_ERROR) {
            PyErr_WriteUnraisable(self);
        } else {
            Py_XDECREF(retval);
        }
    }
    __Pyx_ErrRestore(error_type, error_value, error_traceback);
}
#endif
static PyObject *
__Pyx_Coroutine_get_name(__pyx_CoroutineObject *self, void *context)
{
    PyObject *name = self->gi_name;
    CYTHON_UNUSED_VAR(context);
    if (unlikely(!name)) name = Py_None;
    Py_INCREF(name);
    return name;
}
static int
__Pyx_Coroutine_set_name(__pyx_CoroutineObject *self, 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_Py_XDECREF_SET(self->gi_name, value);
    return 0;
}
static PyObject *
__Pyx_Coroutine_get_qualname(__pyx_CoroutineObject *self, void *context)
{
    PyObject *name = self->gi_qualname;
    CYTHON_UNUSED_VAR(context);
    if (unlikely(!name)) name = Py_None;
    Py_INCREF(name);
    return name;
}
static int
__Pyx_Coroutine_set_qualname(__pyx_CoroutineObject *self, 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_Py_XDECREF_SET(self->gi_qualname, value);
    return 0;
}
static PyObject *
__Pyx__Coroutine_get_frame(__pyx_CoroutineObject *self)
{
#if !CYTHON_COMPILING_IN_LIMITED_API
    PyObject *frame;
    #if PY_VERSION_HEX >= 0x030d0000
    Py_BEGIN_CRITICAL_SECTION(self);
    #endif
    frame = self->gi_frame;
    if (!frame) {
        if (unlikely(!self->gi_code)) {
            Py_RETURN_NONE;
        }
        PyObject *globals = PyDict_New();
        if (unlikely(!globals)) return NULL;
        frame = (PyObject *) PyFrame_New(
            PyThreadState_Get(),            /*PyThreadState *tstate,*/
            (PyCodeObject*) self->gi_code,  /*PyCodeObject *code,*/
            globals,                        /*PyObject *globals,*/
            0                               /*PyObject *locals*/
        );
        Py_DECREF(globals);
        if (unlikely(!frame))
            return NULL;
        if (unlikely(self->gi_frame)) {
            Py_DECREF(frame);
            frame = self->gi_frame;
        } else {
            self->gi_frame = frame;
        }
    }
    Py_INCREF(frame);
    #if PY_VERSION_HEX >= 0x030d0000
    Py_END_CRITICAL_SECTION();
    #endif
    return frame;
#else
    CYTHON_UNUSED_VAR(self);
    Py_RETURN_NONE;
#endif
}
static PyObject *
__Pyx_Coroutine_get_frame(__pyx_CoroutineObject *self, void *context) {
    CYTHON_UNUSED_VAR(context);
    PyObject *frame = self->gi_frame;
    if (frame)
        return __Pyx_NewRef(frame);
    return __Pyx__Coroutine_get_frame(self);
}
static __pyx_CoroutineObject *__Pyx__Coroutine_New(
            PyTypeObject* type, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure,
            PyObject *name, PyObject *qualname, PyObject *module_name) {
    __pyx_CoroutineObject *gen = PyObject_GC_New(__pyx_CoroutineObject, type);
    if (unlikely(!gen))
        return NULL;
    return __Pyx__Coroutine_NewInit(gen, body, code, closure, name, qualname, module_name);
}
static __pyx_CoroutineObject *__Pyx__Coroutine_NewInit(
            __pyx_CoroutineObject *gen, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure,
            PyObject *name, PyObject *qualname, PyObject *module_name) {
    gen->body = body;
    gen->closure = closure;
    Py_XINCREF(closure);
    gen->is_running = 0;
    gen->resume_label = 0;
    gen->classobj = NULL;
    gen->yieldfrom = NULL;
    gen->yieldfrom_am_send = NULL;
    #if PY_VERSION_HEX >= 0x030B00a4 && !CYTHON_COMPILING_IN_LIMITED_API
    gen->gi_exc_state.exc_value = NULL;
    #else
    gen->gi_exc_state.exc_type = NULL;
    gen->gi_exc_state.exc_value = NULL;
    gen->gi_exc_state.exc_traceback = NULL;
    #endif
#if CYTHON_USE_EXC_INFO_STACK
    gen->gi_exc_state.previous_item = NULL;
#endif
#if PY_VERSION_HEX < 0x030C0000 || CYTHON_COMPILING_IN_LIMITED_API
    gen->gi_weakreflist = NULL;
#endif
    Py_XINCREF(qualname);
    gen->gi_qualname = qualname;
    Py_XINCREF(name);
    gen->gi_name = name;
    Py_XINCREF(module_name);
    gen->gi_modulename = module_name;
    Py_XINCREF(code);
    gen->gi_code = code;
    gen->gi_frame = NULL;
    PyObject_GC_Track(gen);
    return gen;
}
static char __Pyx_Coroutine_test_and_set_is_running(__pyx_CoroutineObject *gen) {
    char result;
    #if PY_VERSION_HEX >= 0x030d0000 && !CYTHON_COMPILING_IN_LIMITED_API
    Py_BEGIN_CRITICAL_SECTION(gen);
    #endif
    result = gen->is_running;
    gen->is_running = 1;
    #if PY_VERSION_HEX >= 0x030d0000 && !CYTHON_COMPILING_IN_LIMITED_API
    Py_END_CRITICAL_SECTION();
    #endif
    return result;
}
static void __Pyx_Coroutine_unset_is_running(__pyx_CoroutineObject *gen) {
    #if PY_VERSION_HEX >= 0x030d0000 && !CYTHON_COMPILING_IN_LIMITED_API
    Py_BEGIN_CRITICAL_SECTION(gen);
    #endif
    assert(gen->is_running);
    gen->is_running = 0;
    #if PY_VERSION_HEX >= 0x030d0000 && !CYTHON_COMPILING_IN_LIMITED_API
    Py_END_CRITICAL_SECTION();
    #endif
}
static char __Pyx_Coroutine_get_is_running(__pyx_CoroutineObject *gen) {
    char result;
    #if PY_VERSION_HEX >= 0x030d0000 && !CYTHON_COMPILING_IN_LIMITED_API
    Py_BEGIN_CRITICAL_SECTION(gen);
    #endif
    result = gen->is_running;
    #if PY_VERSION_HEX >= 0x030d0000 && !CYTHON_COMPILING_IN_LIMITED_API
    Py_END_CRITICAL_SECTION();
    #endif
    return result;
}
static PyObject *__Pyx_Coroutine_get_is_running_getter(PyObject *gen, void *closure) {
    CYTHON_UNUSED_VAR(closure);
    char result = __Pyx_Coroutine_get_is_running((__pyx_CoroutineObject*)gen);
    if (result) Py_RETURN_TRUE;
    else Py_RETURN_FALSE;
}
#if __PYX_HAS_PY_AM_SEND == 2
static void __Pyx_SetBackportTypeAmSend(PyTypeObject *type, __Pyx_PyAsyncMethodsStruct *static_amsend_methods, __Pyx_pyiter_sendfunc am_send) {
    Py_ssize_t ptr_offset = (char*)(type->tp_as_async) - (char*)type;
    if (ptr_offset < 0 || ptr_offset > type->tp_basicsize) {
        return;
    }
    memcpy((void*)static_amsend_methods, (void*)(type->tp_as_async), sizeof(*type->tp_as_async));
    static_amsend_methods->am_send = am_send;
    type->tp_as_async = __Pyx_SlotTpAsAsync(static_amsend_methods);
}
#endif
static PyObject *__Pyx_Coroutine_fail_reduce_ex(PyObject *self, PyObject *arg) {
    CYTHON_UNUSED_VAR(arg);
    __Pyx_TypeName self_type_name = __Pyx_PyType_GetFullyQualifiedName(Py_TYPE((PyObject*)self));
    PyErr_Format(PyExc_TypeError, "cannot pickle '" __Pyx_FMT_TYPENAME "' object",
                         self_type_name);
    __Pyx_DECREF_TypeName(self_type_name);
    return NULL;
}

/* Generator */
static PyMethodDef __pyx_Generator_methods[] = {
    {"send", (PyCFunction) __Pyx_Coroutine_Send, METH_O,
     PyDoc_STR("send(arg) -> send 'arg' into generator,\nreturn next yielded value or raise StopIteration.")},
    {"throw", (PyCFunction) __Pyx_Coroutine_Throw, METH_VARARGS,
     PyDoc_STR("throw(typ[,val[,tb]]) -> raise exception in generator,\nreturn next yielded value or raise StopIteration.")},
    {"close", (PyCFunction) __Pyx_Coroutine_Close_Method, METH_NOARGS,
     PyDoc_STR("close() -> raise GeneratorExit inside generator.")},
    {"__reduce_ex__", (PyCFunction) __Pyx_Coroutine_fail_reduce_ex, METH_O, 0},
    {"__reduce__", (PyCFunction) __Pyx_Coroutine_fail_reduce_ex, METH_NOARGS, 0},
    {0, 0, 0, 0}
};
static PyMemberDef __pyx_Generator_memberlist[] = {
    {"gi_yieldfrom", T_OBJECT, offsetof(__pyx_CoroutineObject, yieldfrom), READONLY,
     PyDoc_STR("object being iterated by 'yield from', or None")},
    {"gi_code", T_OBJECT, offsetof(__pyx_CoroutineObject, gi_code), READONLY, NULL},
    {"__module__", T_OBJECT, offsetof(__pyx_CoroutineObject, gi_modulename), 0, 0},
#if PY_VERSION_HEX < 0x030C0000 || CYTHON_COMPILING_IN_LIMITED_API
    {"__weaklistoffset__", T_PYSSIZET, offsetof(__pyx_CoroutineObject, gi_weakreflist), READONLY, 0},
#endif
    {0, 0, 0, 0, 0}
};
static PyGetSetDef __pyx_Generator_getsets[] = {
    {"__name__", (getter)__Pyx_Coroutine_get_name, (setter)__Pyx_Coroutine_set_name,
     PyDoc_STR("name of the generator"), 0},
    {"__qualname__", (getter)__Pyx_Coroutine_get_qualname, (setter)__Pyx_Coroutine_set_qualname,
     PyDoc_STR("qualified name of the generator"), 0},
    {"gi_frame", (getter)__Pyx_Coroutine_get_frame, NULL,
     PyDoc_STR("Frame of the generator"), 0},
    {"gi_running", __Pyx_Coroutine_get_is_running_getter, NULL, NULL, NULL},
    {0, 0, 0, 0, 0}
};
static PyType_Slot __pyx_GeneratorType_slots[] = {
    {Py_tp_dealloc, (void *)__Pyx_Coroutine_dealloc},
    {Py_tp_traverse, (void *)__Pyx_Coroutine_traverse},
    {Py_tp_iter, (void *)PyObject_SelfIter},
    {Py_tp_iternext, (void *)__Pyx_Generator_Next},
    {Py_tp_methods, (void *)__pyx_Generator_methods},
    {Py_tp_members, (void *)__pyx_Generator_memberlist},
    {Py_tp_getset, (void *)__pyx_Generator_getsets},
    {Py_tp_getattro, (void *) PyObject_GenericGetAttr},
#if CYTHON_USE_TP_FINALIZE
    {Py_tp_finalize, (void *)__Pyx_Coroutine_del},
#endif
#if __PYX_HAS_PY_AM_SEND == 1
    {Py_am_send, (void *)__Pyx_Coroutine_AmSend},
#endif
    {0, 0},
};
static PyType_Spec __pyx_GeneratorType_spec = {
    __PYX_TYPE_MODULE_PREFIX "generator",
    sizeof(__pyx_CoroutineObject),
    0,
#if PY_VERSION_HEX >= 0x030C0000 && !CYTHON_COMPILING_IN_LIMITED_API
    Py_TPFLAGS_MANAGED_WEAKREF |
#endif
    Py_TPFLAGS_IMMUTABLETYPE | Py_TPFLAGS_DISALLOW_INSTANTIATION |
    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | __Pyx_TPFLAGS_HAVE_AM_SEND,
    __pyx_GeneratorType_slots
};
#if __PYX_HAS_PY_AM_SEND == 2
static __Pyx_PyAsyncMethodsStruct __pyx_Generator_as_async;
#endif
static int __pyx_Generator_init(PyObject *module) {
    __pyx_mstatetype *mstate = __Pyx_PyModule_GetState(module);
    mstate->__pyx_GeneratorType = __Pyx_FetchCommonTypeFromSpec(
        mstate->__pyx_CommonTypesMetaclassType, module, &__pyx_GeneratorType_spec, NULL);
    if (unlikely(!mstate->__pyx_GeneratorType)) {
        return -1;
    }
#if __PYX_HAS_PY_AM_SEND == 2
    __Pyx_SetBackportTypeAmSend(mstate->__pyx_GeneratorType, &__pyx_Generator_as_async, &__Pyx_Coroutine_AmSend);
#endif
    return 0;
}
static PyObject *__Pyx_Generator_GetInlinedResult(PyObject *self) {
    __pyx_CoroutineObject *gen = (__pyx_CoroutineObject*) self;
    PyObject *retval = NULL;
    if (unlikely(__Pyx_Coroutine_test_and_set_is_running(gen))) {
        return __Pyx_Coroutine_AlreadyRunningError(gen);
    }
    __Pyx_PySendResult result = __Pyx_Coroutine_SendEx(gen, Py_None, &retval, 0);
    __Pyx_Coroutine_unset_is_running(gen);
    (void) result;
    assert (result == PYGEN_RETURN || result == PYGEN_ERROR);
    assert ((result == PYGEN_RETURN && retval != NULL) || (result == PYGEN_ERROR && retval == NULL));
    return retval;
}

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