1 /* Generated by Cython 0.29.13 */
2 
3 /* BEGIN: Cython Metadata
4 {
5     "distutils": {
6         "depends": [],
7         "name": "tables.hdf5extension",
8         "sources": [
9             "tables/hdf5extension.pyx"
10         ]
11     },
12     "module_name": "tables.hdf5extension"
13 }
14 END: Cython Metadata */
15 
16 #define PY_SSIZE_T_CLEAN
17 #include "Python.h"
18 #ifndef Py_PYTHON_H
19     #error Python headers needed to compile C extensions, please install development version of Python.
20 #elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
21     #error Cython requires Python 2.6+ or Python 3.3+.
22 #else
23 #define CYTHON_ABI "0_29_13"
24 #define CYTHON_HEX_VERSION 0x001D0DF0
25 #define CYTHON_FUTURE_DIVISION 0
26 #include <stddef.h>
27 #ifndef offsetof
28   #define offsetof(type, member) ( (size_t) & ((type*)0) -> member )
29 #endif
30 #if !defined(WIN32) && !defined(MS_WINDOWS)
31   #ifndef __stdcall
32     #define __stdcall
33   #endif
34   #ifndef __cdecl
35     #define __cdecl
36   #endif
37   #ifndef __fastcall
38     #define __fastcall
39   #endif
40 #endif
41 #ifndef DL_IMPORT
42   #define DL_IMPORT(t) t
43 #endif
44 #ifndef DL_EXPORT
45   #define DL_EXPORT(t) t
46 #endif
47 #define __PYX_COMMA ,
48 #ifndef HAVE_LONG_LONG
49   #if PY_VERSION_HEX >= 0x02070000
50     #define HAVE_LONG_LONG
51   #endif
52 #endif
53 #ifndef PY_LONG_LONG
54   #define PY_LONG_LONG LONG_LONG
55 #endif
56 #ifndef Py_HUGE_VAL
57   #define Py_HUGE_VAL HUGE_VAL
58 #endif
59 #ifdef PYPY_VERSION
60   #define CYTHON_COMPILING_IN_PYPY 1
61   #define CYTHON_COMPILING_IN_PYSTON 0
62   #define CYTHON_COMPILING_IN_CPYTHON 0
63   #undef CYTHON_USE_TYPE_SLOTS
64   #define CYTHON_USE_TYPE_SLOTS 0
65   #undef CYTHON_USE_PYTYPE_LOOKUP
66   #define CYTHON_USE_PYTYPE_LOOKUP 0
67   #if PY_VERSION_HEX < 0x03050000
68     #undef CYTHON_USE_ASYNC_SLOTS
69     #define CYTHON_USE_ASYNC_SLOTS 0
70   #elif !defined(CYTHON_USE_ASYNC_SLOTS)
71     #define CYTHON_USE_ASYNC_SLOTS 1
72   #endif
73   #undef CYTHON_USE_PYLIST_INTERNALS
74   #define CYTHON_USE_PYLIST_INTERNALS 0
75   #undef CYTHON_USE_UNICODE_INTERNALS
76   #define CYTHON_USE_UNICODE_INTERNALS 0
77   #undef CYTHON_USE_UNICODE_WRITER
78   #define CYTHON_USE_UNICODE_WRITER 0
79   #undef CYTHON_USE_PYLONG_INTERNALS
80   #define CYTHON_USE_PYLONG_INTERNALS 0
81   #undef CYTHON_AVOID_BORROWED_REFS
82   #define CYTHON_AVOID_BORROWED_REFS 1
83   #undef CYTHON_ASSUME_SAFE_MACROS
84   #define CYTHON_ASSUME_SAFE_MACROS 0
85   #undef CYTHON_UNPACK_METHODS
86   #define CYTHON_UNPACK_METHODS 0
87   #undef CYTHON_FAST_THREAD_STATE
88   #define CYTHON_FAST_THREAD_STATE 0
89   #undef CYTHON_FAST_PYCALL
90   #define CYTHON_FAST_PYCALL 0
91   #undef CYTHON_PEP489_MULTI_PHASE_INIT
92   #define CYTHON_PEP489_MULTI_PHASE_INIT 0
93   #undef CYTHON_USE_TP_FINALIZE
94   #define CYTHON_USE_TP_FINALIZE 0
95   #undef CYTHON_USE_DICT_VERSIONS
96   #define CYTHON_USE_DICT_VERSIONS 0
97   #undef CYTHON_USE_EXC_INFO_STACK
98   #define CYTHON_USE_EXC_INFO_STACK 0
99 #elif defined(PYSTON_VERSION)
100   #define CYTHON_COMPILING_IN_PYPY 0
101   #define CYTHON_COMPILING_IN_PYSTON 1
102   #define CYTHON_COMPILING_IN_CPYTHON 0
103   #ifndef CYTHON_USE_TYPE_SLOTS
104     #define CYTHON_USE_TYPE_SLOTS 1
105   #endif
106   #undef CYTHON_USE_PYTYPE_LOOKUP
107   #define CYTHON_USE_PYTYPE_LOOKUP 0
108   #undef CYTHON_USE_ASYNC_SLOTS
109   #define CYTHON_USE_ASYNC_SLOTS 0
110   #undef CYTHON_USE_PYLIST_INTERNALS
111   #define CYTHON_USE_PYLIST_INTERNALS 0
112   #ifndef CYTHON_USE_UNICODE_INTERNALS
113     #define CYTHON_USE_UNICODE_INTERNALS 1
114   #endif
115   #undef CYTHON_USE_UNICODE_WRITER
116   #define CYTHON_USE_UNICODE_WRITER 0
117   #undef CYTHON_USE_PYLONG_INTERNALS
118   #define CYTHON_USE_PYLONG_INTERNALS 0
119   #ifndef CYTHON_AVOID_BORROWED_REFS
120     #define CYTHON_AVOID_BORROWED_REFS 0
121   #endif
122   #ifndef CYTHON_ASSUME_SAFE_MACROS
123     #define CYTHON_ASSUME_SAFE_MACROS 1
124   #endif
125   #ifndef CYTHON_UNPACK_METHODS
126     #define CYTHON_UNPACK_METHODS 1
127   #endif
128   #undef CYTHON_FAST_THREAD_STATE
129   #define CYTHON_FAST_THREAD_STATE 0
130   #undef CYTHON_FAST_PYCALL
131   #define CYTHON_FAST_PYCALL 0
132   #undef CYTHON_PEP489_MULTI_PHASE_INIT
133   #define CYTHON_PEP489_MULTI_PHASE_INIT 0
134   #undef CYTHON_USE_TP_FINALIZE
135   #define CYTHON_USE_TP_FINALIZE 0
136   #undef CYTHON_USE_DICT_VERSIONS
137   #define CYTHON_USE_DICT_VERSIONS 0
138   #undef CYTHON_USE_EXC_INFO_STACK
139   #define CYTHON_USE_EXC_INFO_STACK 0
140 #else
141   #define CYTHON_COMPILING_IN_PYPY 0
142   #define CYTHON_COMPILING_IN_PYSTON 0
143   #define CYTHON_COMPILING_IN_CPYTHON 1
144   #ifndef CYTHON_USE_TYPE_SLOTS
145     #define CYTHON_USE_TYPE_SLOTS 1
146   #endif
147   #if PY_VERSION_HEX < 0x02070000
148     #undef CYTHON_USE_PYTYPE_LOOKUP
149     #define CYTHON_USE_PYTYPE_LOOKUP 0
150   #elif !defined(CYTHON_USE_PYTYPE_LOOKUP)
151     #define CYTHON_USE_PYTYPE_LOOKUP 1
152   #endif
153   #if PY_MAJOR_VERSION < 3
154     #undef CYTHON_USE_ASYNC_SLOTS
155     #define CYTHON_USE_ASYNC_SLOTS 0
156   #elif !defined(CYTHON_USE_ASYNC_SLOTS)
157     #define CYTHON_USE_ASYNC_SLOTS 1
158   #endif
159   #if PY_VERSION_HEX < 0x02070000
160     #undef CYTHON_USE_PYLONG_INTERNALS
161     #define CYTHON_USE_PYLONG_INTERNALS 0
162   #elif !defined(CYTHON_USE_PYLONG_INTERNALS)
163     #define CYTHON_USE_PYLONG_INTERNALS 1
164   #endif
165   #ifndef CYTHON_USE_PYLIST_INTERNALS
166     #define CYTHON_USE_PYLIST_INTERNALS 1
167   #endif
168   #ifndef CYTHON_USE_UNICODE_INTERNALS
169     #define CYTHON_USE_UNICODE_INTERNALS 1
170   #endif
171   #if PY_VERSION_HEX < 0x030300F0
172     #undef CYTHON_USE_UNICODE_WRITER
173     #define CYTHON_USE_UNICODE_WRITER 0
174   #elif !defined(CYTHON_USE_UNICODE_WRITER)
175     #define CYTHON_USE_UNICODE_WRITER 1
176   #endif
177   #ifndef CYTHON_AVOID_BORROWED_REFS
178     #define CYTHON_AVOID_BORROWED_REFS 0
179   #endif
180   #ifndef CYTHON_ASSUME_SAFE_MACROS
181     #define CYTHON_ASSUME_SAFE_MACROS 1
182   #endif
183   #ifndef CYTHON_UNPACK_METHODS
184     #define CYTHON_UNPACK_METHODS 1
185   #endif
186   #ifndef CYTHON_FAST_THREAD_STATE
187     #define CYTHON_FAST_THREAD_STATE 1
188   #endif
189   #ifndef CYTHON_FAST_PYCALL
190     #define CYTHON_FAST_PYCALL 1
191   #endif
192   #ifndef CYTHON_PEP489_MULTI_PHASE_INIT
193     #define CYTHON_PEP489_MULTI_PHASE_INIT (PY_VERSION_HEX >= 0x03050000)
194   #endif
195   #ifndef CYTHON_USE_TP_FINALIZE
196     #define CYTHON_USE_TP_FINALIZE (PY_VERSION_HEX >= 0x030400a1)
197   #endif
198   #ifndef CYTHON_USE_DICT_VERSIONS
199     #define CYTHON_USE_DICT_VERSIONS (PY_VERSION_HEX >= 0x030600B1)
200   #endif
201   #ifndef CYTHON_USE_EXC_INFO_STACK
202     #define CYTHON_USE_EXC_INFO_STACK (PY_VERSION_HEX >= 0x030700A3)
203   #endif
204 #endif
205 #if !defined(CYTHON_FAST_PYCCALL)
206 #define CYTHON_FAST_PYCCALL  (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1)
207 #endif
208 #if CYTHON_USE_PYLONG_INTERNALS
209   #include "longintrepr.h"
210   #undef SHIFT
211   #undef BASE
212   #undef MASK
213   #ifdef SIZEOF_VOID_P
214     enum { __pyx_check_sizeof_voidp = 1 / (int)(SIZEOF_VOID_P == sizeof(void*)) };
215   #endif
216 #endif
217 #ifndef __has_attribute
218   #define __has_attribute(x) 0
219 #endif
220 #ifndef __has_cpp_attribute
221   #define __has_cpp_attribute(x) 0
222 #endif
223 #ifndef CYTHON_RESTRICT
224   #if defined(__GNUC__)
225     #define CYTHON_RESTRICT __restrict__
226   #elif defined(_MSC_VER) && _MSC_VER >= 1400
227     #define CYTHON_RESTRICT __restrict
228   #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
229     #define CYTHON_RESTRICT restrict
230   #else
231     #define CYTHON_RESTRICT
232   #endif
233 #endif
234 #ifndef CYTHON_UNUSED
235 # if defined(__GNUC__)
236 #   if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
237 #     define CYTHON_UNUSED __attribute__ ((__unused__))
238 #   else
239 #     define CYTHON_UNUSED
240 #   endif
241 # elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER))
242 #   define CYTHON_UNUSED __attribute__ ((__unused__))
243 # else
244 #   define CYTHON_UNUSED
245 # endif
246 #endif
247 #ifndef CYTHON_MAYBE_UNUSED_VAR
248 #  if defined(__cplusplus)
CYTHON_MAYBE_UNUSED_VAR(const T &)249      template<class T> void CYTHON_MAYBE_UNUSED_VAR( const T& ) { }
250 #  else
251 #    define CYTHON_MAYBE_UNUSED_VAR(x) (void)(x)
252 #  endif
253 #endif
254 #ifndef CYTHON_NCP_UNUSED
255 # if CYTHON_COMPILING_IN_CPYTHON
256 #  define CYTHON_NCP_UNUSED
257 # else
258 #  define CYTHON_NCP_UNUSED CYTHON_UNUSED
259 # endif
260 #endif
261 #define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None)
262 #ifdef _MSC_VER
263     #ifndef _MSC_STDINT_H_
264         #if _MSC_VER < 1300
265            typedef unsigned char     uint8_t;
266            typedef unsigned int      uint32_t;
267         #else
268            typedef unsigned __int8   uint8_t;
269            typedef unsigned __int32  uint32_t;
270         #endif
271     #endif
272 #else
273    #include <stdint.h>
274 #endif
275 #ifndef CYTHON_FALLTHROUGH
276   #if defined(__cplusplus) && __cplusplus >= 201103L
277     #if __has_cpp_attribute(fallthrough)
278       #define CYTHON_FALLTHROUGH [[fallthrough]]
279     #elif __has_cpp_attribute(clang::fallthrough)
280       #define CYTHON_FALLTHROUGH [[clang::fallthrough]]
281     #elif __has_cpp_attribute(gnu::fallthrough)
282       #define CYTHON_FALLTHROUGH [[gnu::fallthrough]]
283     #endif
284   #endif
285   #ifndef CYTHON_FALLTHROUGH
286     #if __has_attribute(fallthrough)
287       #define CYTHON_FALLTHROUGH __attribute__((fallthrough))
288     #else
289       #define CYTHON_FALLTHROUGH
290     #endif
291   #endif
292   #if defined(__clang__ ) && defined(__apple_build_version__)
293     #if __apple_build_version__ < 7000000
294       #undef  CYTHON_FALLTHROUGH
295       #define CYTHON_FALLTHROUGH
296     #endif
297   #endif
298 #endif
299 
300 #ifndef CYTHON_INLINE
301   #if defined(__clang__)
302     #define CYTHON_INLINE __inline__ __attribute__ ((__unused__))
303   #elif defined(__GNUC__)
304     #define CYTHON_INLINE __inline__
305   #elif defined(_MSC_VER)
306     #define CYTHON_INLINE __inline
307   #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
308     #define CYTHON_INLINE inline
309   #else
310     #define CYTHON_INLINE
311   #endif
312 #endif
313 
314 #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x02070600 && !defined(Py_OptimizeFlag)
315   #define Py_OptimizeFlag 0
316 #endif
317 #define __PYX_BUILD_PY_SSIZE_T "n"
318 #define CYTHON_FORMAT_SSIZE_T "z"
319 #if PY_MAJOR_VERSION < 3
320   #define __Pyx_BUILTIN_MODULE_NAME "__builtin__"
321   #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
322           PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
323   #define __Pyx_DefaultClassType PyClass_Type
324 #else
325   #define __Pyx_BUILTIN_MODULE_NAME "builtins"
326 #if PY_VERSION_HEX >= 0x030800A4 && PY_VERSION_HEX < 0x030800B2
327   #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
328           PyCode_New(a, 0, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
329 #else
330   #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
331           PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
332 #endif
333   #define __Pyx_DefaultClassType PyType_Type
334 #endif
335 #ifndef Py_TPFLAGS_CHECKTYPES
336   #define Py_TPFLAGS_CHECKTYPES 0
337 #endif
338 #ifndef Py_TPFLAGS_HAVE_INDEX
339   #define Py_TPFLAGS_HAVE_INDEX 0
340 #endif
341 #ifndef Py_TPFLAGS_HAVE_NEWBUFFER
342   #define Py_TPFLAGS_HAVE_NEWBUFFER 0
343 #endif
344 #ifndef Py_TPFLAGS_HAVE_FINALIZE
345   #define Py_TPFLAGS_HAVE_FINALIZE 0
346 #endif
347 #ifndef METH_STACKLESS
348   #define METH_STACKLESS 0
349 #endif
350 #if PY_VERSION_HEX <= 0x030700A3 || !defined(METH_FASTCALL)
351   #ifndef METH_FASTCALL
352      #define METH_FASTCALL 0x80
353   #endif
354   typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject *const *args, Py_ssize_t nargs);
355   typedef PyObject *(*__Pyx_PyCFunctionFastWithKeywords) (PyObject *self, PyObject *const *args,
356                                                           Py_ssize_t nargs, PyObject *kwnames);
357 #else
358   #define __Pyx_PyCFunctionFast _PyCFunctionFast
359   #define __Pyx_PyCFunctionFastWithKeywords _PyCFunctionFastWithKeywords
360 #endif
361 #if CYTHON_FAST_PYCCALL
362 #define __Pyx_PyFastCFunction_Check(func)\
363     ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS | METH_STACKLESS)))))
364 #else
365 #define __Pyx_PyFastCFunction_Check(func) 0
366 #endif
367 #if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc)
368   #define PyObject_Malloc(s)   PyMem_Malloc(s)
369   #define PyObject_Free(p)     PyMem_Free(p)
370   #define PyObject_Realloc(p)  PyMem_Realloc(p)
371 #endif
372 #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030400A1
373   #define PyMem_RawMalloc(n)           PyMem_Malloc(n)
374   #define PyMem_RawRealloc(p, n)       PyMem_Realloc(p, n)
375   #define PyMem_RawFree(p)             PyMem_Free(p)
376 #endif
377 #if CYTHON_COMPILING_IN_PYSTON
378   #define __Pyx_PyCode_HasFreeVars(co)  PyCode_HasFreeVars(co)
379   #define __Pyx_PyFrame_SetLineNumber(frame, lineno) PyFrame_SetLineNumber(frame, lineno)
380 #else
381   #define __Pyx_PyCode_HasFreeVars(co)  (PyCode_GetNumFree(co) > 0)
382   #define __Pyx_PyFrame_SetLineNumber(frame, lineno)  (frame)->f_lineno = (lineno)
383 #endif
384 #if !CYTHON_FAST_THREAD_STATE || PY_VERSION_HEX < 0x02070000
385   #define __Pyx_PyThreadState_Current PyThreadState_GET()
386 #elif PY_VERSION_HEX >= 0x03060000
387   #define __Pyx_PyThreadState_Current _PyThreadState_UncheckedGet()
388 #elif PY_VERSION_HEX >= 0x03000000
389   #define __Pyx_PyThreadState_Current PyThreadState_GET()
390 #else
391   #define __Pyx_PyThreadState_Current _PyThreadState_Current
392 #endif
393 #if PY_VERSION_HEX < 0x030700A2 && !defined(PyThread_tss_create) && !defined(Py_tss_NEEDS_INIT)
394 #include "pythread.h"
395 #define Py_tss_NEEDS_INIT 0
396 typedef int Py_tss_t;
PyThread_tss_create(Py_tss_t * key)397 static CYTHON_INLINE int PyThread_tss_create(Py_tss_t *key) {
398   *key = PyThread_create_key();
399   return 0;
400 }
PyThread_tss_alloc(void)401 static CYTHON_INLINE Py_tss_t * PyThread_tss_alloc(void) {
402   Py_tss_t *key = (Py_tss_t *)PyObject_Malloc(sizeof(Py_tss_t));
403   *key = Py_tss_NEEDS_INIT;
404   return key;
405 }
PyThread_tss_free(Py_tss_t * key)406 static CYTHON_INLINE void PyThread_tss_free(Py_tss_t *key) {
407   PyObject_Free(key);
408 }
PyThread_tss_is_created(Py_tss_t * key)409 static CYTHON_INLINE int PyThread_tss_is_created(Py_tss_t *key) {
410   return *key != Py_tss_NEEDS_INIT;
411 }
PyThread_tss_delete(Py_tss_t * key)412 static CYTHON_INLINE void PyThread_tss_delete(Py_tss_t *key) {
413   PyThread_delete_key(*key);
414   *key = Py_tss_NEEDS_INIT;
415 }
PyThread_tss_set(Py_tss_t * key,void * value)416 static CYTHON_INLINE int PyThread_tss_set(Py_tss_t *key, void *value) {
417   return PyThread_set_key_value(*key, value);
418 }
PyThread_tss_get(Py_tss_t * key)419 static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) {
420   return PyThread_get_key_value(*key);
421 }
422 #endif
423 #if CYTHON_COMPILING_IN_CPYTHON || defined(_PyDict_NewPresized)
424 #define __Pyx_PyDict_NewPresized(n)  ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n))
425 #else
426 #define __Pyx_PyDict_NewPresized(n)  PyDict_New()
427 #endif
428 #if PY_MAJOR_VERSION >= 3 || CYTHON_FUTURE_DIVISION
429   #define __Pyx_PyNumber_Divide(x,y)         PyNumber_TrueDivide(x,y)
430   #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceTrueDivide(x,y)
431 #else
432   #define __Pyx_PyNumber_Divide(x,y)         PyNumber_Divide(x,y)
433   #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceDivide(x,y)
434 #endif
435 #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 && CYTHON_USE_UNICODE_INTERNALS
436 #define __Pyx_PyDict_GetItemStr(dict, name)  _PyDict_GetItem_KnownHash(dict, name, ((PyASCIIObject *) name)->hash)
437 #else
438 #define __Pyx_PyDict_GetItemStr(dict, name)  PyDict_GetItem(dict, name)
439 #endif
440 #if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND)
441   #define CYTHON_PEP393_ENABLED 1
442   #define __Pyx_PyUnicode_READY(op)       (likely(PyUnicode_IS_READY(op)) ?\
443                                               0 : _PyUnicode_Ready((PyObject *)(op)))
444   #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_LENGTH(u)
445   #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i)
446   #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u)   PyUnicode_MAX_CHAR_VALUE(u)
447   #define __Pyx_PyUnicode_KIND(u)         PyUnicode_KIND(u)
448   #define __Pyx_PyUnicode_DATA(u)         PyUnicode_DATA(u)
449   #define __Pyx_PyUnicode_READ(k, d, i)   PyUnicode_READ(k, d, i)
450   #define __Pyx_PyUnicode_WRITE(k, d, i, ch)  PyUnicode_WRITE(k, d, i, ch)
451   #define __Pyx_PyUnicode_IS_TRUE(u)      (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u)))
452 #else
453   #define CYTHON_PEP393_ENABLED 0
454   #define PyUnicode_1BYTE_KIND  1
455   #define PyUnicode_2BYTE_KIND  2
456   #define PyUnicode_4BYTE_KIND  4
457   #define __Pyx_PyUnicode_READY(op)       (0)
458   #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_SIZE(u)
459   #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i]))
460   #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u)   ((sizeof(Py_UNICODE) == 2) ? 65535 : 1114111)
461   #define __Pyx_PyUnicode_KIND(u)         (sizeof(Py_UNICODE))
462   #define __Pyx_PyUnicode_DATA(u)         ((void*)PyUnicode_AS_UNICODE(u))
463   #define __Pyx_PyUnicode_READ(k, d, i)   ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i]))
464   #define __Pyx_PyUnicode_WRITE(k, d, i, ch)  (((void)(k)), ((Py_UNICODE*)d)[i] = ch)
465   #define __Pyx_PyUnicode_IS_TRUE(u)      (0 != PyUnicode_GET_SIZE(u))
466 #endif
467 #if CYTHON_COMPILING_IN_PYPY
468   #define __Pyx_PyUnicode_Concat(a, b)      PyNumber_Add(a, b)
469   #define __Pyx_PyUnicode_ConcatSafe(a, b)  PyNumber_Add(a, b)
470 #else
471   #define __Pyx_PyUnicode_Concat(a, b)      PyUnicode_Concat(a, b)
472   #define __Pyx_PyUnicode_ConcatSafe(a, b)  ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\
473       PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b))
474 #endif
475 #if CYTHON_COMPILING_IN_PYPY && !defined(PyUnicode_Contains)
476   #define PyUnicode_Contains(u, s)  PySequence_Contains(u, s)
477 #endif
478 #if CYTHON_COMPILING_IN_PYPY && !defined(PyByteArray_Check)
479   #define PyByteArray_Check(obj)  PyObject_TypeCheck(obj, &PyByteArray_Type)
480 #endif
481 #if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Format)
482   #define PyObject_Format(obj, fmt)  PyObject_CallMethod(obj, "__format__", "O", fmt)
483 #endif
484 #define __Pyx_PyString_FormatSafe(a, b)   ((unlikely((a) == Py_None || (PyString_Check(b) && !PyString_CheckExact(b)))) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b))
485 #define __Pyx_PyUnicode_FormatSafe(a, b)  ((unlikely((a) == Py_None || (PyUnicode_Check(b) && !PyUnicode_CheckExact(b)))) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b))
486 #if PY_MAJOR_VERSION >= 3
487   #define __Pyx_PyString_Format(a, b)  PyUnicode_Format(a, b)
488 #else
489   #define __Pyx_PyString_Format(a, b)  PyString_Format(a, b)
490 #endif
491 #if PY_MAJOR_VERSION < 3 && !defined(PyObject_ASCII)
492   #define PyObject_ASCII(o)            PyObject_Repr(o)
493 #endif
494 #if PY_MAJOR_VERSION >= 3
495   #define PyBaseString_Type            PyUnicode_Type
496   #define PyStringObject               PyUnicodeObject
497   #define PyString_Type                PyUnicode_Type
498   #define PyString_Check               PyUnicode_Check
499   #define PyString_CheckExact          PyUnicode_CheckExact
500   #define PyObject_Unicode             PyObject_Str
501 #endif
502 #if PY_MAJOR_VERSION >= 3
503   #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj)
504   #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj)
505 #else
506   #define __Pyx_PyBaseString_Check(obj) (PyString_Check(obj) || PyUnicode_Check(obj))
507   #define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj))
508 #endif
509 #ifndef PySet_CheckExact
510   #define PySet_CheckExact(obj)        (Py_TYPE(obj) == &PySet_Type)
511 #endif
512 #if CYTHON_ASSUME_SAFE_MACROS
513   #define __Pyx_PySequence_SIZE(seq)  Py_SIZE(seq)
514 #else
515   #define __Pyx_PySequence_SIZE(seq)  PySequence_Size(seq)
516 #endif
517 #if PY_MAJOR_VERSION >= 3
518   #define PyIntObject                  PyLongObject
519   #define PyInt_Type                   PyLong_Type
520   #define PyInt_Check(op)              PyLong_Check(op)
521   #define PyInt_CheckExact(op)         PyLong_CheckExact(op)
522   #define PyInt_FromString             PyLong_FromString
523   #define PyInt_FromUnicode            PyLong_FromUnicode
524   #define PyInt_FromLong               PyLong_FromLong
525   #define PyInt_FromSize_t             PyLong_FromSize_t
526   #define PyInt_FromSsize_t            PyLong_FromSsize_t
527   #define PyInt_AsLong                 PyLong_AsLong
528   #define PyInt_AS_LONG                PyLong_AS_LONG
529   #define PyInt_AsSsize_t              PyLong_AsSsize_t
530   #define PyInt_AsUnsignedLongMask     PyLong_AsUnsignedLongMask
531   #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask
532   #define PyNumber_Int                 PyNumber_Long
533 #endif
534 #if PY_MAJOR_VERSION >= 3
535   #define PyBoolObject                 PyLongObject
536 #endif
537 #if PY_MAJOR_VERSION >= 3 && CYTHON_COMPILING_IN_PYPY
538   #ifndef PyUnicode_InternFromString
539     #define PyUnicode_InternFromString(s) PyUnicode_FromString(s)
540   #endif
541 #endif
542 #if PY_VERSION_HEX < 0x030200A4
543   typedef long Py_hash_t;
544   #define __Pyx_PyInt_FromHash_t PyInt_FromLong
545   #define __Pyx_PyInt_AsHash_t   PyInt_AsLong
546 #else
547   #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t
548   #define __Pyx_PyInt_AsHash_t   PyInt_AsSsize_t
549 #endif
550 #if PY_MAJOR_VERSION >= 3
551   #define __Pyx_PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : (Py_INCREF(func), func))
552 #else
553   #define __Pyx_PyMethod_New(func, self, klass) PyMethod_New(func, self, klass)
554 #endif
555 #if CYTHON_USE_ASYNC_SLOTS
556   #if PY_VERSION_HEX >= 0x030500B1
557     #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods
558     #define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async)
559   #else
560     #define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved))
561   #endif
562 #else
563   #define __Pyx_PyType_AsAsync(obj) NULL
564 #endif
565 #ifndef __Pyx_PyAsyncMethodsStruct
566     typedef struct {
567         unaryfunc am_await;
568         unaryfunc am_aiter;
569         unaryfunc am_anext;
570     } __Pyx_PyAsyncMethodsStruct;
571 #endif
572 
573 #if defined(WIN32) || defined(MS_WINDOWS)
574   #define _USE_MATH_DEFINES
575 #endif
576 #include <math.h>
577 #ifdef NAN
578 #define __PYX_NAN() ((float) NAN)
579 #else
__PYX_NAN()580 static CYTHON_INLINE float __PYX_NAN() {
581   float value;
582   memset(&value, 0xFF, sizeof(value));
583   return value;
584 }
585 #endif
586 #if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL)
587 #define __Pyx_truncl trunc
588 #else
589 #define __Pyx_truncl truncl
590 #endif
591 
592 
593 #define __PYX_ERR(f_index, lineno, Ln_error) \
594 { \
595   __pyx_filename = __pyx_f[f_index]; __pyx_lineno = lineno; __pyx_clineno = __LINE__; goto Ln_error; \
596 }
597 
598 #ifndef __PYX_EXTERN_C
599   #ifdef __cplusplus
600     #define __PYX_EXTERN_C extern "C"
601   #else
602     #define __PYX_EXTERN_C extern
603   #endif
604 #endif
605 
606 #define __PYX_HAVE__tables__hdf5extension
607 #define __PYX_HAVE_API__tables__hdf5extension
608 /* Early includes */
609 #include <string.h>
610 #include <stdio.h>
611 #include "numpy/arrayobject.h"
612 #include "numpy/ufuncobject.h"
613 #include "time.h"
614 #include "hdf5.h"
615 #include "H5ATTR.h"
616 #include "H5ARRAY.h"
617 #include "utils.h"
618 #include "typeconv.h"
619 #include "blosc_filter.h"
620 #include "pythread.h"
621 #include <stdlib.h>
622 #include "H5VLARRAY.h"
623 #ifdef _OPENMP
624 #include <omp.h>
625 #endif /* _OPENMP */
626 
627 #if defined(PYREX_WITHOUT_ASSERTIONS) && !defined(CYTHON_WITHOUT_ASSERTIONS)
628 #define CYTHON_WITHOUT_ASSERTIONS
629 #endif
630 
631 typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* encoding;
632                 const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry;
633 
634 #define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0
635 #define __PYX_DEFAULT_STRING_ENCODING_IS_UTF8 0
636 #define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT (PY_MAJOR_VERSION >= 3 && __PYX_DEFAULT_STRING_ENCODING_IS_UTF8)
637 #define __PYX_DEFAULT_STRING_ENCODING ""
638 #define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString
639 #define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize
640 #define __Pyx_uchar_cast(c) ((unsigned char)c)
641 #define __Pyx_long_cast(x) ((long)x)
642 #define __Pyx_fits_Py_ssize_t(v, type, is_signed)  (\
643     (sizeof(type) < sizeof(Py_ssize_t))  ||\
644     (sizeof(type) > sizeof(Py_ssize_t) &&\
645           likely(v < (type)PY_SSIZE_T_MAX ||\
646                  v == (type)PY_SSIZE_T_MAX)  &&\
647           (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\
648                                 v == (type)PY_SSIZE_T_MIN)))  ||\
649     (sizeof(type) == sizeof(Py_ssize_t) &&\
650           (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\
651                                v == (type)PY_SSIZE_T_MAX)))  )
__Pyx_is_valid_index(Py_ssize_t i,Py_ssize_t limit)652 static CYTHON_INLINE int __Pyx_is_valid_index(Py_ssize_t i, Py_ssize_t limit) {
653     return (size_t) i < (size_t) limit;
654 }
655 #if defined (__cplusplus) && __cplusplus >= 201103L
656     #include <cstdlib>
657     #define __Pyx_sst_abs(value) std::abs(value)
658 #elif SIZEOF_INT >= SIZEOF_SIZE_T
659     #define __Pyx_sst_abs(value) abs(value)
660 #elif SIZEOF_LONG >= SIZEOF_SIZE_T
661     #define __Pyx_sst_abs(value) labs(value)
662 #elif defined (_MSC_VER)
663     #define __Pyx_sst_abs(value) ((Py_ssize_t)_abs64(value))
664 #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
665     #define __Pyx_sst_abs(value) llabs(value)
666 #elif defined (__GNUC__)
667     #define __Pyx_sst_abs(value) __builtin_llabs(value)
668 #else
669     #define __Pyx_sst_abs(value) ((value<0) ? -value : value)
670 #endif
671 static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject*);
672 static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length);
673 #define __Pyx_PyByteArray_FromString(s) PyByteArray_FromStringAndSize((const char*)s, strlen((const char*)s))
674 #define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l)
675 #define __Pyx_PyBytes_FromString        PyBytes_FromString
676 #define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize
677 static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*);
678 #if PY_MAJOR_VERSION < 3
679     #define __Pyx_PyStr_FromString        __Pyx_PyBytes_FromString
680     #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize
681 #else
682     #define __Pyx_PyStr_FromString        __Pyx_PyUnicode_FromString
683     #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize
684 #endif
685 #define __Pyx_PyBytes_AsWritableString(s)     ((char*) PyBytes_AS_STRING(s))
686 #define __Pyx_PyBytes_AsWritableSString(s)    ((signed char*) PyBytes_AS_STRING(s))
687 #define __Pyx_PyBytes_AsWritableUString(s)    ((unsigned char*) PyBytes_AS_STRING(s))
688 #define __Pyx_PyBytes_AsString(s)     ((const char*) PyBytes_AS_STRING(s))
689 #define __Pyx_PyBytes_AsSString(s)    ((const signed char*) PyBytes_AS_STRING(s))
690 #define __Pyx_PyBytes_AsUString(s)    ((const unsigned char*) PyBytes_AS_STRING(s))
691 #define __Pyx_PyObject_AsWritableString(s)    ((char*) __Pyx_PyObject_AsString(s))
692 #define __Pyx_PyObject_AsWritableSString(s)    ((signed char*) __Pyx_PyObject_AsString(s))
693 #define __Pyx_PyObject_AsWritableUString(s)    ((unsigned char*) __Pyx_PyObject_AsString(s))
694 #define __Pyx_PyObject_AsSString(s)    ((const signed char*) __Pyx_PyObject_AsString(s))
695 #define __Pyx_PyObject_AsUString(s)    ((const unsigned char*) __Pyx_PyObject_AsString(s))
696 #define __Pyx_PyObject_FromCString(s)  __Pyx_PyObject_FromString((const char*)s)
697 #define __Pyx_PyBytes_FromCString(s)   __Pyx_PyBytes_FromString((const char*)s)
698 #define __Pyx_PyByteArray_FromCString(s)   __Pyx_PyByteArray_FromString((const char*)s)
699 #define __Pyx_PyStr_FromCString(s)     __Pyx_PyStr_FromString((const char*)s)
700 #define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s)
__Pyx_Py_UNICODE_strlen(const Py_UNICODE * u)701 static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) {
702     const Py_UNICODE *u_end = u;
703     while (*u_end++) ;
704     return (size_t)(u_end - u - 1);
705 }
706 #define __Pyx_PyUnicode_FromUnicode(u)       PyUnicode_FromUnicode(u, __Pyx_Py_UNICODE_strlen(u))
707 #define __Pyx_PyUnicode_FromUnicodeAndLength PyUnicode_FromUnicode
708 #define __Pyx_PyUnicode_AsUnicode            PyUnicode_AsUnicode
709 #define __Pyx_NewRef(obj) (Py_INCREF(obj), obj)
710 #define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None)
711 static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b);
712 static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
713 static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject*);
714 static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x);
715 #define __Pyx_PySequence_Tuple(obj)\
716     (likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj))
717 static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*);
718 static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t);
719 #if CYTHON_ASSUME_SAFE_MACROS
720 #define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x))
721 #else
722 #define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x)
723 #endif
724 #define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x))
725 #if PY_MAJOR_VERSION >= 3
726 #define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x))
727 #else
728 #define __Pyx_PyNumber_Int(x) (PyInt_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Int(x))
729 #endif
730 #define __Pyx_PyNumber_Float(x) (PyFloat_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Float(x))
731 #if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
732 static int __Pyx_sys_getdefaultencoding_not_ascii;
__Pyx_init_sys_getdefaultencoding_params(void)733 static int __Pyx_init_sys_getdefaultencoding_params(void) {
734     PyObject* sys;
735     PyObject* default_encoding = NULL;
736     PyObject* ascii_chars_u = NULL;
737     PyObject* ascii_chars_b = NULL;
738     const char* default_encoding_c;
739     sys = PyImport_ImportModule("sys");
740     if (!sys) goto bad;
741     default_encoding = PyObject_CallMethod(sys, (char*) "getdefaultencoding", NULL);
742     Py_DECREF(sys);
743     if (!default_encoding) goto bad;
744     default_encoding_c = PyBytes_AsString(default_encoding);
745     if (!default_encoding_c) goto bad;
746     if (strcmp(default_encoding_c, "ascii") == 0) {
747         __Pyx_sys_getdefaultencoding_not_ascii = 0;
748     } else {
749         char ascii_chars[128];
750         int c;
751         for (c = 0; c < 128; c++) {
752             ascii_chars[c] = c;
753         }
754         __Pyx_sys_getdefaultencoding_not_ascii = 1;
755         ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL);
756         if (!ascii_chars_u) goto bad;
757         ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL);
758         if (!ascii_chars_b || !PyBytes_Check(ascii_chars_b) || memcmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) {
759             PyErr_Format(
760                 PyExc_ValueError,
761                 "This module compiled with c_string_encoding=ascii, but default encoding '%.200s' is not a superset of ascii.",
762                 default_encoding_c);
763             goto bad;
764         }
765         Py_DECREF(ascii_chars_u);
766         Py_DECREF(ascii_chars_b);
767     }
768     Py_DECREF(default_encoding);
769     return 0;
770 bad:
771     Py_XDECREF(default_encoding);
772     Py_XDECREF(ascii_chars_u);
773     Py_XDECREF(ascii_chars_b);
774     return -1;
775 }
776 #endif
777 #if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3
778 #define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL)
779 #else
780 #define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL)
781 #if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT
782 static char* __PYX_DEFAULT_STRING_ENCODING;
__Pyx_init_sys_getdefaultencoding_params(void)783 static int __Pyx_init_sys_getdefaultencoding_params(void) {
784     PyObject* sys;
785     PyObject* default_encoding = NULL;
786     char* default_encoding_c;
787     sys = PyImport_ImportModule("sys");
788     if (!sys) goto bad;
789     default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL);
790     Py_DECREF(sys);
791     if (!default_encoding) goto bad;
792     default_encoding_c = PyBytes_AsString(default_encoding);
793     if (!default_encoding_c) goto bad;
794     __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c) + 1);
795     if (!__PYX_DEFAULT_STRING_ENCODING) goto bad;
796     strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c);
797     Py_DECREF(default_encoding);
798     return 0;
799 bad:
800     Py_XDECREF(default_encoding);
801     return -1;
802 }
803 #endif
804 #endif
805 
806 
807 /* Test for GCC > 2.95 */
808 #if defined(__GNUC__)     && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95)))
809   #define likely(x)   __builtin_expect(!!(x), 1)
810   #define unlikely(x) __builtin_expect(!!(x), 0)
811 #else /* !__GNUC__ or GCC < 2.95 */
812   #define likely(x)   (x)
813   #define unlikely(x) (x)
814 #endif /* __GNUC__ */
__Pyx_pretend_to_initialize(void * ptr)815 static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; }
816 
817 static PyObject *__pyx_m = NULL;
818 static PyObject *__pyx_d;
819 static PyObject *__pyx_b;
820 static PyObject *__pyx_cython_runtime = NULL;
821 static PyObject *__pyx_empty_tuple;
822 static PyObject *__pyx_empty_bytes;
823 static PyObject *__pyx_empty_unicode;
824 static int __pyx_lineno;
825 static int __pyx_clineno = 0;
826 static const char * __pyx_cfilenm= __FILE__;
827 static const char *__pyx_filename;
828 
829 /* Header.proto */
830 #if !defined(CYTHON_CCOMPLEX)
831   #if defined(__cplusplus)
832     #define CYTHON_CCOMPLEX 1
833   #elif defined(_Complex_I)
834     #define CYTHON_CCOMPLEX 1
835   #else
836     #define CYTHON_CCOMPLEX 0
837   #endif
838 #endif
839 #if CYTHON_CCOMPLEX
840   #ifdef __cplusplus
841     #include <complex>
842   #else
843     #include <complex.h>
844   #endif
845 #endif
846 #if CYTHON_CCOMPLEX && !defined(__cplusplus) && defined(__sun__) && defined(__GNUC__)
847   #undef _Complex_I
848   #define _Complex_I 1.0fj
849 #endif
850 
851 
852 static const char *__pyx_f[] = {
853   "tables/hdf5extension.pyx",
854   "stringsource",
855   "__init__.pxd",
856   "type.pxd",
857   "bool.pxd",
858   "complex.pxd",
859 };
860 /* NoFastGil.proto */
861 #define __Pyx_PyGILState_Ensure PyGILState_Ensure
862 #define __Pyx_PyGILState_Release PyGILState_Release
863 #define __Pyx_FastGIL_Remember()
864 #define __Pyx_FastGIL_Forget()
865 #define __Pyx_FastGilFuncInit()
866 
867 /* ForceInitThreads.proto */
868 #ifndef __PYX_FORCE_INIT_THREADS
869   #define __PYX_FORCE_INIT_THREADS 0
870 #endif
871 
872 
873 /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":776
874  * # in Cython to enable them only on the right systems.
875  *
876  * ctypedef npy_int8       int8_t             # <<<<<<<<<<<<<<
877  * ctypedef npy_int16      int16_t
878  * ctypedef npy_int32      int32_t
879  */
880 typedef npy_int8 __pyx_t_5numpy_int8_t;
881 
882 /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":777
883  *
884  * ctypedef npy_int8       int8_t
885  * ctypedef npy_int16      int16_t             # <<<<<<<<<<<<<<
886  * ctypedef npy_int32      int32_t
887  * ctypedef npy_int64      int64_t
888  */
889 typedef npy_int16 __pyx_t_5numpy_int16_t;
890 
891 /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":778
892  * ctypedef npy_int8       int8_t
893  * ctypedef npy_int16      int16_t
894  * ctypedef npy_int32      int32_t             # <<<<<<<<<<<<<<
895  * ctypedef npy_int64      int64_t
896  * #ctypedef npy_int96      int96_t
897  */
898 typedef npy_int32 __pyx_t_5numpy_int32_t;
899 
900 /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":779
901  * ctypedef npy_int16      int16_t
902  * ctypedef npy_int32      int32_t
903  * ctypedef npy_int64      int64_t             # <<<<<<<<<<<<<<
904  * #ctypedef npy_int96      int96_t
905  * #ctypedef npy_int128     int128_t
906  */
907 typedef npy_int64 __pyx_t_5numpy_int64_t;
908 
909 /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":783
910  * #ctypedef npy_int128     int128_t
911  *
912  * ctypedef npy_uint8      uint8_t             # <<<<<<<<<<<<<<
913  * ctypedef npy_uint16     uint16_t
914  * ctypedef npy_uint32     uint32_t
915  */
916 typedef npy_uint8 __pyx_t_5numpy_uint8_t;
917 
918 /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":784
919  *
920  * ctypedef npy_uint8      uint8_t
921  * ctypedef npy_uint16     uint16_t             # <<<<<<<<<<<<<<
922  * ctypedef npy_uint32     uint32_t
923  * ctypedef npy_uint64     uint64_t
924  */
925 typedef npy_uint16 __pyx_t_5numpy_uint16_t;
926 
927 /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":785
928  * ctypedef npy_uint8      uint8_t
929  * ctypedef npy_uint16     uint16_t
930  * ctypedef npy_uint32     uint32_t             # <<<<<<<<<<<<<<
931  * ctypedef npy_uint64     uint64_t
932  * #ctypedef npy_uint96     uint96_t
933  */
934 typedef npy_uint32 __pyx_t_5numpy_uint32_t;
935 
936 /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":786
937  * ctypedef npy_uint16     uint16_t
938  * ctypedef npy_uint32     uint32_t
939  * ctypedef npy_uint64     uint64_t             # <<<<<<<<<<<<<<
940  * #ctypedef npy_uint96     uint96_t
941  * #ctypedef npy_uint128    uint128_t
942  */
943 typedef npy_uint64 __pyx_t_5numpy_uint64_t;
944 
945 /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":790
946  * #ctypedef npy_uint128    uint128_t
947  *
948  * ctypedef npy_float32    float32_t             # <<<<<<<<<<<<<<
949  * ctypedef npy_float64    float64_t
950  * #ctypedef npy_float80    float80_t
951  */
952 typedef npy_float32 __pyx_t_5numpy_float32_t;
953 
954 /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":791
955  *
956  * ctypedef npy_float32    float32_t
957  * ctypedef npy_float64    float64_t             # <<<<<<<<<<<<<<
958  * #ctypedef npy_float80    float80_t
959  * #ctypedef npy_float128   float128_t
960  */
961 typedef npy_float64 __pyx_t_5numpy_float64_t;
962 
963 /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":800
964  * # The int types are mapped a bit surprising --
965  * # numpy.int corresponds to 'l' and numpy.long to 'q'
966  * ctypedef npy_long       int_t             # <<<<<<<<<<<<<<
967  * ctypedef npy_longlong   long_t
968  * ctypedef npy_longlong   longlong_t
969  */
970 typedef npy_long __pyx_t_5numpy_int_t;
971 
972 /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":801
973  * # numpy.int corresponds to 'l' and numpy.long to 'q'
974  * ctypedef npy_long       int_t
975  * ctypedef npy_longlong   long_t             # <<<<<<<<<<<<<<
976  * ctypedef npy_longlong   longlong_t
977  *
978  */
979 typedef npy_longlong __pyx_t_5numpy_long_t;
980 
981 /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":802
982  * ctypedef npy_long       int_t
983  * ctypedef npy_longlong   long_t
984  * ctypedef npy_longlong   longlong_t             # <<<<<<<<<<<<<<
985  *
986  * ctypedef npy_ulong      uint_t
987  */
988 typedef npy_longlong __pyx_t_5numpy_longlong_t;
989 
990 /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":804
991  * ctypedef npy_longlong   longlong_t
992  *
993  * ctypedef npy_ulong      uint_t             # <<<<<<<<<<<<<<
994  * ctypedef npy_ulonglong  ulong_t
995  * ctypedef npy_ulonglong  ulonglong_t
996  */
997 typedef npy_ulong __pyx_t_5numpy_uint_t;
998 
999 /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":805
1000  *
1001  * ctypedef npy_ulong      uint_t
1002  * ctypedef npy_ulonglong  ulong_t             # <<<<<<<<<<<<<<
1003  * ctypedef npy_ulonglong  ulonglong_t
1004  *
1005  */
1006 typedef npy_ulonglong __pyx_t_5numpy_ulong_t;
1007 
1008 /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":806
1009  * ctypedef npy_ulong      uint_t
1010  * ctypedef npy_ulonglong  ulong_t
1011  * ctypedef npy_ulonglong  ulonglong_t             # <<<<<<<<<<<<<<
1012  *
1013  * ctypedef npy_intp       intp_t
1014  */
1015 typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t;
1016 
1017 /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":808
1018  * ctypedef npy_ulonglong  ulonglong_t
1019  *
1020  * ctypedef npy_intp       intp_t             # <<<<<<<<<<<<<<
1021  * ctypedef npy_uintp      uintp_t
1022  *
1023  */
1024 typedef npy_intp __pyx_t_5numpy_intp_t;
1025 
1026 /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":809
1027  *
1028  * ctypedef npy_intp       intp_t
1029  * ctypedef npy_uintp      uintp_t             # <<<<<<<<<<<<<<
1030  *
1031  * ctypedef npy_double     float_t
1032  */
1033 typedef npy_uintp __pyx_t_5numpy_uintp_t;
1034 
1035 /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":811
1036  * ctypedef npy_uintp      uintp_t
1037  *
1038  * ctypedef npy_double     float_t             # <<<<<<<<<<<<<<
1039  * ctypedef npy_double     double_t
1040  * ctypedef npy_longdouble longdouble_t
1041  */
1042 typedef npy_double __pyx_t_5numpy_float_t;
1043 
1044 /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":812
1045  *
1046  * ctypedef npy_double     float_t
1047  * ctypedef npy_double     double_t             # <<<<<<<<<<<<<<
1048  * ctypedef npy_longdouble longdouble_t
1049  *
1050  */
1051 typedef npy_double __pyx_t_5numpy_double_t;
1052 
1053 /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":813
1054  * ctypedef npy_double     float_t
1055  * ctypedef npy_double     double_t
1056  * ctypedef npy_longdouble longdouble_t             # <<<<<<<<<<<<<<
1057  *
1058  * ctypedef npy_cfloat      cfloat_t
1059  */
1060 typedef npy_longdouble __pyx_t_5numpy_longdouble_t;
1061 /* Declarations.proto */
1062 #if CYTHON_CCOMPLEX
1063   #ifdef __cplusplus
1064     typedef ::std::complex< float > __pyx_t_float_complex;
1065   #else
1066     typedef float _Complex __pyx_t_float_complex;
1067   #endif
1068 #else
1069     typedef struct { float real, imag; } __pyx_t_float_complex;
1070 #endif
1071 static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float, float);
1072 
1073 /* Declarations.proto */
1074 #if CYTHON_CCOMPLEX
1075   #ifdef __cplusplus
1076     typedef ::std::complex< double > __pyx_t_double_complex;
1077   #else
1078     typedef double _Complex __pyx_t_double_complex;
1079   #endif
1080 #else
1081     typedef struct { double real, imag; } __pyx_t_double_complex;
1082 #endif
1083 static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double, double);
1084 
1085 
1086 /*--- Type declarations ---*/
1087 struct __pyx_obj_6tables_13hdf5extension_Node;
1088 struct __pyx_obj_6tables_13hdf5extension_Leaf;
1089 struct __pyx_obj_6tables_13hdf5extension_Array;
1090 struct __pyx_obj_6tables_13hdf5extension_File;
1091 struct __pyx_obj_6tables_13hdf5extension_AttributeSet;
1092 struct __pyx_obj_6tables_13hdf5extension_Group;
1093 struct __pyx_obj_6tables_13hdf5extension_VLArray;
1094 struct __pyx_obj_6tables_13hdf5extension_UnImplemented;
1095 
1096 /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":815
1097  * ctypedef npy_longdouble longdouble_t
1098  *
1099  * ctypedef npy_cfloat      cfloat_t             # <<<<<<<<<<<<<<
1100  * ctypedef npy_cdouble     cdouble_t
1101  * ctypedef npy_clongdouble clongdouble_t
1102  */
1103 typedef npy_cfloat __pyx_t_5numpy_cfloat_t;
1104 
1105 /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":816
1106  *
1107  * ctypedef npy_cfloat      cfloat_t
1108  * ctypedef npy_cdouble     cdouble_t             # <<<<<<<<<<<<<<
1109  * ctypedef npy_clongdouble clongdouble_t
1110  *
1111  */
1112 typedef npy_cdouble __pyx_t_5numpy_cdouble_t;
1113 
1114 /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":817
1115  * ctypedef npy_cfloat      cfloat_t
1116  * ctypedef npy_cdouble     cdouble_t
1117  * ctypedef npy_clongdouble clongdouble_t             # <<<<<<<<<<<<<<
1118  *
1119  * ctypedef npy_cdouble     complex_t
1120  */
1121 typedef npy_clongdouble __pyx_t_5numpy_clongdouble_t;
1122 
1123 /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":819
1124  * ctypedef npy_clongdouble clongdouble_t
1125  *
1126  * ctypedef npy_cdouble     complex_t             # <<<<<<<<<<<<<<
1127  *
1128  * cdef inline object PyArray_MultiIterNew1(a):
1129  */
1130 typedef npy_cdouble __pyx_t_5numpy_complex_t;
1131 
1132 /* "tables/hdf5extension.pxd":18
1133  *
1134  * # Declaration of instance variables for shared classes
1135  * cdef class Node:             # <<<<<<<<<<<<<<
1136  *   cdef object name
1137  *   cdef hid_t  parent_id
1138  */
1139 struct __pyx_obj_6tables_13hdf5extension_Node {
1140   PyObject_HEAD
1141   PyObject *name;
1142   hid_t parent_id;
1143 };
1144 
1145 
1146 /* "tables/hdf5extension.pxd":22
1147  *   cdef hid_t  parent_id
1148  *
1149  * cdef class Leaf(Node):             # <<<<<<<<<<<<<<
1150  *   cdef hid_t   dataset_id
1151  *   cdef hid_t   type_id
1152  */
1153 struct __pyx_obj_6tables_13hdf5extension_Leaf {
1154   struct __pyx_obj_6tables_13hdf5extension_Node __pyx_base;
1155   struct __pyx_vtabstruct_6tables_13hdf5extension_Leaf *__pyx_vtab;
1156   hid_t dataset_id;
1157   hid_t type_id;
1158   hid_t base_type_id;
1159   hid_t disk_type_id;
1160   hsize_t *dims;
1161 };
1162 
1163 
1164 /* "tables/hdf5extension.pxd":31
1165  *   cdef _convert_time64(self, ndarray nparr, int sense)
1166  *
1167  * cdef class Array(Leaf):             # <<<<<<<<<<<<<<
1168  *   cdef int      rank
1169  *   cdef hsize_t *maxdims
1170  */
1171 struct __pyx_obj_6tables_13hdf5extension_Array {
1172   struct __pyx_obj_6tables_13hdf5extension_Leaf __pyx_base;
1173   int rank;
1174   hsize_t *maxdims;
1175   hsize_t *dims_chunk;
1176 };
1177 
1178 
1179 /* "tables/hdf5extension.pyx":312
1180  * # Python classes)
1181  *
1182  * cdef class File:             # <<<<<<<<<<<<<<
1183  *   cdef hid_t   file_id
1184  *   cdef hid_t   access_plist
1185  */
1186 struct __pyx_obj_6tables_13hdf5extension_File {
1187   PyObject_HEAD
1188   hid_t file_id;
1189   hid_t access_plist;
1190   PyObject *name;
1191 };
1192 
1193 
1194 /* "tables/hdf5extension.pyx":633
1195  *
1196  *
1197  * cdef class AttributeSet:             # <<<<<<<<<<<<<<
1198  *   cdef object name
1199  *
1200  */
1201 struct __pyx_obj_6tables_13hdf5extension_AttributeSet {
1202   PyObject_HEAD
1203   PyObject *name;
1204 };
1205 
1206 
1207 /* "tables/hdf5extension.pyx":947
1208  *
1209  *
1210  * cdef class Group(Node):             # <<<<<<<<<<<<<<
1211  *   cdef hid_t   group_id
1212  *
1213  */
1214 struct __pyx_obj_6tables_13hdf5extension_Group {
1215   struct __pyx_obj_6tables_13hdf5extension_Node __pyx_base;
1216   hid_t group_id;
1217 };
1218 
1219 
1220 /* "tables/hdf5extension.pyx":1917
1221  *
1222  *
1223  * cdef class VLArray(Leaf):             # <<<<<<<<<<<<<<
1224  *   # Instance variables
1225  *   cdef hsize_t nrecords
1226  */
1227 struct __pyx_obj_6tables_13hdf5extension_VLArray {
1228   struct __pyx_obj_6tables_13hdf5extension_Leaf __pyx_base;
1229   hsize_t nrecords;
1230 };
1231 
1232 
1233 /* "tables/hdf5extension.pyx":2216
1234  *
1235  *
1236  * cdef class UnImplemented(Leaf):             # <<<<<<<<<<<<<<
1237  *
1238  *   def _open_unimplemented(self):
1239  */
1240 struct __pyx_obj_6tables_13hdf5extension_UnImplemented {
1241   struct __pyx_obj_6tables_13hdf5extension_Leaf __pyx_base;
1242 };
1243 
1244 
1245 
1246 /* "tables/hdf5extension.pyx":1111
1247  *
1248  *
1249  * cdef class Leaf(Node):             # <<<<<<<<<<<<<<
1250  *   # Instance variables declared in .pxd
1251  *
1252  */
1253 
1254 struct __pyx_vtabstruct_6tables_13hdf5extension_Leaf {
1255   PyObject *(*_get_type_ids)(struct __pyx_obj_6tables_13hdf5extension_Leaf *);
1256   PyObject *(*_convert_time64)(struct __pyx_obj_6tables_13hdf5extension_Leaf *, PyArrayObject *, int);
1257 };
1258 static struct __pyx_vtabstruct_6tables_13hdf5extension_Leaf *__pyx_vtabptr_6tables_13hdf5extension_Leaf;
1259 
1260 
1261 /* "tables/hdf5extension.pyx":1242
1262  *
1263  *
1264  * cdef class Array(Leaf):             # <<<<<<<<<<<<<<
1265  *   # Instance variables declared in .pxd
1266  *
1267  */
1268 
1269 struct __pyx_vtabstruct_6tables_13hdf5extension_Array {
1270   struct __pyx_vtabstruct_6tables_13hdf5extension_Leaf __pyx_base;
1271 };
1272 static struct __pyx_vtabstruct_6tables_13hdf5extension_Array *__pyx_vtabptr_6tables_13hdf5extension_Array;
1273 
1274 
1275 /* "tables/hdf5extension.pyx":1917
1276  *
1277  *
1278  * cdef class VLArray(Leaf):             # <<<<<<<<<<<<<<
1279  *   # Instance variables
1280  *   cdef hsize_t nrecords
1281  */
1282 
1283 struct __pyx_vtabstruct_6tables_13hdf5extension_VLArray {
1284   struct __pyx_vtabstruct_6tables_13hdf5extension_Leaf __pyx_base;
1285 };
1286 static struct __pyx_vtabstruct_6tables_13hdf5extension_VLArray *__pyx_vtabptr_6tables_13hdf5extension_VLArray;
1287 
1288 
1289 /* "tables/hdf5extension.pyx":2216
1290  *
1291  *
1292  * cdef class UnImplemented(Leaf):             # <<<<<<<<<<<<<<
1293  *
1294  *   def _open_unimplemented(self):
1295  */
1296 
1297 struct __pyx_vtabstruct_6tables_13hdf5extension_UnImplemented {
1298   struct __pyx_vtabstruct_6tables_13hdf5extension_Leaf __pyx_base;
1299 };
1300 static struct __pyx_vtabstruct_6tables_13hdf5extension_UnImplemented *__pyx_vtabptr_6tables_13hdf5extension_UnImplemented;
1301 
1302 /* --- Runtime support code (head) --- */
1303 /* Refnanny.proto */
1304 #ifndef CYTHON_REFNANNY
1305   #define CYTHON_REFNANNY 0
1306 #endif
1307 #if CYTHON_REFNANNY
1308   typedef struct {
1309     void (*INCREF)(void*, PyObject*, int);
1310     void (*DECREF)(void*, PyObject*, int);
1311     void (*GOTREF)(void*, PyObject*, int);
1312     void (*GIVEREF)(void*, PyObject*, int);
1313     void* (*SetupContext)(const char*, int, const char*);
1314     void (*FinishContext)(void**);
1315   } __Pyx_RefNannyAPIStruct;
1316   static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL;
1317   static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname);
1318   #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL;
1319 #ifdef WITH_THREAD
1320   #define __Pyx_RefNannySetupContext(name, acquire_gil)\
1321           if (acquire_gil) {\
1322               PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\
1323               __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\
1324               PyGILState_Release(__pyx_gilstate_save);\
1325           } else {\
1326               __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\
1327           }
1328 #else
1329   #define __Pyx_RefNannySetupContext(name, acquire_gil)\
1330           __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__)
1331 #endif
1332   #define __Pyx_RefNannyFinishContext()\
1333           __Pyx_RefNanny->FinishContext(&__pyx_refnanny)
1334   #define __Pyx_INCREF(r)  __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
1335   #define __Pyx_DECREF(r)  __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
1336   #define __Pyx_GOTREF(r)  __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
1337   #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
1338   #define __Pyx_XINCREF(r)  do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0)
1339   #define __Pyx_XDECREF(r)  do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0)
1340   #define __Pyx_XGOTREF(r)  do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0)
1341   #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0)
1342 #else
1343   #define __Pyx_RefNannyDeclarations
1344   #define __Pyx_RefNannySetupContext(name, acquire_gil)
1345   #define __Pyx_RefNannyFinishContext()
1346   #define __Pyx_INCREF(r) Py_INCREF(r)
1347   #define __Pyx_DECREF(r) Py_DECREF(r)
1348   #define __Pyx_GOTREF(r)
1349   #define __Pyx_GIVEREF(r)
1350   #define __Pyx_XINCREF(r) Py_XINCREF(r)
1351   #define __Pyx_XDECREF(r) Py_XDECREF(r)
1352   #define __Pyx_XGOTREF(r)
1353   #define __Pyx_XGIVEREF(r)
1354 #endif
1355 #define __Pyx_XDECREF_SET(r, v) do {\
1356         PyObject *tmp = (PyObject *) r;\
1357         r = v; __Pyx_XDECREF(tmp);\
1358     } while (0)
1359 #define __Pyx_DECREF_SET(r, v) do {\
1360         PyObject *tmp = (PyObject *) r;\
1361         r = v; __Pyx_DECREF(tmp);\
1362     } while (0)
1363 #define __Pyx_CLEAR(r)    do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0)
1364 #define __Pyx_XCLEAR(r)   do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0)
1365 
1366 /* PyObjectGetAttrStr.proto */
1367 #if CYTHON_USE_TYPE_SLOTS
1368 static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name);
1369 #else
1370 #define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n)
1371 #endif
1372 
1373 /* GetBuiltinName.proto */
1374 static PyObject *__Pyx_GetBuiltinName(PyObject *name);
1375 
1376 /* ListAppend.proto */
1377 #if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS
__Pyx_PyList_Append(PyObject * list,PyObject * x)1378 static CYTHON_INLINE int __Pyx_PyList_Append(PyObject* list, PyObject* x) {
1379     PyListObject* L = (PyListObject*) list;
1380     Py_ssize_t len = Py_SIZE(list);
1381     if (likely(L->allocated > len) & likely(len > (L->allocated >> 1))) {
1382         Py_INCREF(x);
1383         PyList_SET_ITEM(list, len, x);
1384         Py_SIZE(list) = len+1;
1385         return 0;
1386     }
1387     return PyList_Append(list, x);
1388 }
1389 #else
1390 #define __Pyx_PyList_Append(L,x) PyList_Append(L,x)
1391 #endif
1392 
1393 /* PyCFunctionFastCall.proto */
1394 #if CYTHON_FAST_PYCCALL
1395 static CYTHON_INLINE PyObject *__Pyx_PyCFunction_FastCall(PyObject *func, PyObject **args, Py_ssize_t nargs);
1396 #else
1397 #define __Pyx_PyCFunction_FastCall(func, args, nargs)  (assert(0), NULL)
1398 #endif
1399 
1400 /* PyFunctionFastCall.proto */
1401 #if CYTHON_FAST_PYCALL
1402 #define __Pyx_PyFunction_FastCall(func, args, nargs)\
1403     __Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL)
1404 #if 1 || PY_VERSION_HEX < 0x030600B1
1405 static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs);
1406 #else
1407 #define __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs) _PyFunction_FastCallDict(func, args, nargs, kwargs)
1408 #endif
1409 #define __Pyx_BUILD_ASSERT_EXPR(cond)\
1410     (sizeof(char [1 - 2*!(cond)]) - 1)
1411 #ifndef Py_MEMBER_SIZE
1412 #define Py_MEMBER_SIZE(type, member) sizeof(((type *)0)->member)
1413 #endif
1414   static size_t __pyx_pyframe_localsplus_offset = 0;
1415   #include "frameobject.h"
1416   #define __Pxy_PyFrame_Initialize_Offsets()\
1417     ((void)__Pyx_BUILD_ASSERT_EXPR(sizeof(PyFrameObject) == offsetof(PyFrameObject, f_localsplus) + Py_MEMBER_SIZE(PyFrameObject, f_localsplus)),\
1418      (void)(__pyx_pyframe_localsplus_offset = ((size_t)PyFrame_Type.tp_basicsize) - Py_MEMBER_SIZE(PyFrameObject, f_localsplus)))
1419   #define __Pyx_PyFrame_GetLocalsplus(frame)\
1420     (assert(__pyx_pyframe_localsplus_offset), (PyObject **)(((char *)(frame)) + __pyx_pyframe_localsplus_offset))
1421 #endif
1422 
1423 /* PyObjectCall.proto */
1424 #if CYTHON_COMPILING_IN_CPYTHON
1425 static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw);
1426 #else
1427 #define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw)
1428 #endif
1429 
1430 /* PyObjectCall2Args.proto */
1431 static CYTHON_UNUSED PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2);
1432 
1433 /* PyObjectCallMethO.proto */
1434 #if CYTHON_COMPILING_IN_CPYTHON
1435 static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg);
1436 #endif
1437 
1438 /* PyObjectCallOneArg.proto */
1439 static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg);
1440 
1441 /* PyObjectGetMethod.proto */
1442 static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method);
1443 
1444 /* PyObjectCallMethod1.proto */
1445 static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg);
1446 
1447 /* append.proto */
1448 static CYTHON_INLINE int __Pyx_PyObject_Append(PyObject* L, PyObject* x);
1449 
1450 /* PyDictVersioning.proto */
1451 #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS
1452 #define __PYX_DICT_VERSION_INIT  ((PY_UINT64_T) -1)
1453 #define __PYX_GET_DICT_VERSION(dict)  (((PyDictObject*)(dict))->ma_version_tag)
1454 #define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)\
1455     (version_var) = __PYX_GET_DICT_VERSION(dict);\
1456     (cache_var) = (value);
1457 #define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) {\
1458     static PY_UINT64_T __pyx_dict_version = 0;\
1459     static PyObject *__pyx_dict_cached_value = NULL;\
1460     if (likely(__PYX_GET_DICT_VERSION(DICT) == __pyx_dict_version)) {\
1461         (VAR) = __pyx_dict_cached_value;\
1462     } else {\
1463         (VAR) = __pyx_dict_cached_value = (LOOKUP);\
1464         __pyx_dict_version = __PYX_GET_DICT_VERSION(DICT);\
1465     }\
1466 }
1467 static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj);
1468 static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj);
1469 static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version);
1470 #else
1471 #define __PYX_GET_DICT_VERSION(dict)  (0)
1472 #define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)
1473 #define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP)  (VAR) = (LOOKUP);
1474 #endif
1475 
1476 /* GetModuleGlobalName.proto */
1477 #if CYTHON_USE_DICT_VERSIONS
1478 #define __Pyx_GetModuleGlobalName(var, name)  {\
1479     static PY_UINT64_T __pyx_dict_version = 0;\
1480     static PyObject *__pyx_dict_cached_value = NULL;\
1481     (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\
1482         (likely(__pyx_dict_cached_value) ? __Pyx_NewRef(__pyx_dict_cached_value) : __Pyx_GetBuiltinName(name)) :\
1483         __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\
1484 }
1485 #define __Pyx_GetModuleGlobalNameUncached(var, name)  {\
1486     PY_UINT64_T __pyx_dict_version;\
1487     PyObject *__pyx_dict_cached_value;\
1488     (var) = __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\
1489 }
1490 static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value);
1491 #else
1492 #define __Pyx_GetModuleGlobalName(var, name)  (var) = __Pyx__GetModuleGlobalName(name)
1493 #define __Pyx_GetModuleGlobalNameUncached(var, name)  (var) = __Pyx__GetModuleGlobalName(name)
1494 static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name);
1495 #endif
1496 
1497 /* PyThreadStateGet.proto */
1498 #if CYTHON_FAST_THREAD_STATE
1499 #define __Pyx_PyThreadState_declare  PyThreadState *__pyx_tstate;
1500 #define __Pyx_PyThreadState_assign  __pyx_tstate = __Pyx_PyThreadState_Current;
1501 #define __Pyx_PyErr_Occurred()  __pyx_tstate->curexc_type
1502 #else
1503 #define __Pyx_PyThreadState_declare
1504 #define __Pyx_PyThreadState_assign
1505 #define __Pyx_PyErr_Occurred()  PyErr_Occurred()
1506 #endif
1507 
1508 /* PyErrFetchRestore.proto */
1509 #if CYTHON_FAST_THREAD_STATE
1510 #define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL)
1511 #define __Pyx_ErrRestoreWithState(type, value, tb)  __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb)
1512 #define __Pyx_ErrFetchWithState(type, value, tb)    __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb)
1513 #define __Pyx_ErrRestore(type, value, tb)  __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb)
1514 #define __Pyx_ErrFetch(type, value, tb)    __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb)
1515 static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb);
1516 static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
1517 #if CYTHON_COMPILING_IN_CPYTHON
1518 #define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL))
1519 #else
1520 #define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc)
1521 #endif
1522 #else
1523 #define __Pyx_PyErr_Clear() PyErr_Clear()
1524 #define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc)
1525 #define __Pyx_ErrRestoreWithState(type, value, tb)  PyErr_Restore(type, value, tb)
1526 #define __Pyx_ErrFetchWithState(type, value, tb)  PyErr_Fetch(type, value, tb)
1527 #define __Pyx_ErrRestoreInState(tstate, type, value, tb)  PyErr_Restore(type, value, tb)
1528 #define __Pyx_ErrFetchInState(tstate, type, value, tb)  PyErr_Fetch(type, value, tb)
1529 #define __Pyx_ErrRestore(type, value, tb)  PyErr_Restore(type, value, tb)
1530 #define __Pyx_ErrFetch(type, value, tb)  PyErr_Fetch(type, value, tb)
1531 #endif
1532 
1533 /* RaiseException.proto */
1534 static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause);
1535 
1536 /* None.proto */
1537 static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname);
1538 
1539 /* GetTopmostException.proto */
1540 #if CYTHON_USE_EXC_INFO_STACK
1541 static _PyErr_StackItem * __Pyx_PyErr_GetTopmostException(PyThreadState *tstate);
1542 #endif
1543 
1544 /* SaveResetException.proto */
1545 #if CYTHON_FAST_THREAD_STATE
1546 #define __Pyx_ExceptionSave(type, value, tb)  __Pyx__ExceptionSave(__pyx_tstate, type, value, tb)
1547 static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
1548 #define __Pyx_ExceptionReset(type, value, tb)  __Pyx__ExceptionReset(__pyx_tstate, type, value, tb)
1549 static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb);
1550 #else
1551 #define __Pyx_ExceptionSave(type, value, tb)   PyErr_GetExcInfo(type, value, tb)
1552 #define __Pyx_ExceptionReset(type, value, tb)  PyErr_SetExcInfo(type, value, tb)
1553 #endif
1554 
1555 /* PyErrExceptionMatches.proto */
1556 #if CYTHON_FAST_THREAD_STATE
1557 #define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err)
1558 static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err);
1559 #else
1560 #define __Pyx_PyErr_ExceptionMatches(err)  PyErr_ExceptionMatches(err)
1561 #endif
1562 
1563 /* GetException.proto */
1564 #if CYTHON_FAST_THREAD_STATE
1565 #define __Pyx_GetException(type, value, tb)  __Pyx__GetException(__pyx_tstate, type, value, tb)
1566 static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
1567 #else
1568 static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb);
1569 #endif
1570 
1571 /* RaiseArgTupleInvalid.proto */
1572 static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact,
1573     Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found);
1574 
1575 /* RaiseDoubleKeywords.proto */
1576 static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name);
1577 
1578 /* ParseKeywords.proto */
1579 static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[],\
1580     PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args,\
1581     const char* function_name);
1582 
1583 /* DictGetItem.proto */
1584 #if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY
1585 static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key);
1586 #define __Pyx_PyObject_Dict_GetItem(obj, name)\
1587     (likely(PyDict_CheckExact(obj)) ?\
1588      __Pyx_PyDict_GetItem(obj, name) : PyObject_GetItem(obj, name))
1589 #else
1590 #define __Pyx_PyDict_GetItem(d, key) PyObject_GetItem(d, key)
1591 #define __Pyx_PyObject_Dict_GetItem(obj, name)  PyObject_GetItem(obj, name)
1592 #endif
1593 
1594 /* PySequenceContains.proto */
__Pyx_PySequence_ContainsTF(PyObject * item,PyObject * seq,int eq)1595 static CYTHON_INLINE int __Pyx_PySequence_ContainsTF(PyObject* item, PyObject* seq, int eq) {
1596     int result = PySequence_Contains(seq, item);
1597     return unlikely(result < 0) ? result : (result == (eq == Py_EQ));
1598 }
1599 
1600 /* IncludeStringH.proto */
1601 #include <string.h>
1602 
1603 /* BytesEquals.proto */
1604 static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals);
1605 
1606 /* UnicodeEquals.proto */
1607 static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals);
1608 
1609 /* StrEquals.proto */
1610 #if PY_MAJOR_VERSION >= 3
1611 #define __Pyx_PyString_Equals __Pyx_PyUnicode_Equals
1612 #else
1613 #define __Pyx_PyString_Equals __Pyx_PyBytes_Equals
1614 #endif
1615 
1616 /* dict_getitem_default.proto */
1617 static PyObject* __Pyx_PyDict_GetItemDefault(PyObject* d, PyObject* key, PyObject* default_value);
1618 
1619 /* UnpackUnboundCMethod.proto */
1620 typedef struct {
1621     PyObject *type;
1622     PyObject **method_name;
1623     PyCFunction func;
1624     PyObject *method;
1625     int flag;
1626 } __Pyx_CachedCFunction;
1627 
1628 /* CallUnboundCMethod1.proto */
1629 static PyObject* __Pyx__CallUnboundCMethod1(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg);
1630 #if CYTHON_COMPILING_IN_CPYTHON
1631 static CYTHON_INLINE PyObject* __Pyx_CallUnboundCMethod1(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg);
1632 #else
1633 #define __Pyx_CallUnboundCMethod1(cfunc, self, arg)  __Pyx__CallUnboundCMethod1(cfunc, self, arg)
1634 #endif
1635 
1636 /* CallUnboundCMethod2.proto */
1637 static PyObject* __Pyx__CallUnboundCMethod2(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg1, PyObject* arg2);
1638 #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030600B1
1639 static CYTHON_INLINE PyObject *__Pyx_CallUnboundCMethod2(__Pyx_CachedCFunction *cfunc, PyObject *self, PyObject *arg1, PyObject *arg2);
1640 #else
1641 #define __Pyx_CallUnboundCMethod2(cfunc, self, arg1, arg2)  __Pyx__CallUnboundCMethod2(cfunc, self, arg1, arg2)
1642 #endif
1643 
1644 /* PyObjectSetAttrStr.proto */
1645 #if CYTHON_USE_TYPE_SLOTS
1646 #define __Pyx_PyObject_DelAttrStr(o,n) __Pyx_PyObject_SetAttrStr(o, n, NULL)
1647 static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value);
1648 #else
1649 #define __Pyx_PyObject_DelAttrStr(o,n)   PyObject_DelAttr(o,n)
1650 #define __Pyx_PyObject_SetAttrStr(o,n,v) PyObject_SetAttr(o,n,v)
1651 #endif
1652 
1653 /* PyObjectCallNoArg.proto */
1654 #if CYTHON_COMPILING_IN_CPYTHON
1655 static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func);
1656 #else
1657 #define __Pyx_PyObject_CallNoArg(func) __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL)
1658 #endif
1659 
1660 /* WriteUnraisableException.proto */
1661 static void __Pyx_WriteUnraisable(const char *name, int clineno,
1662                                   int lineno, const char *filename,
1663                                   int full_traceback, int nogil);
1664 
1665 /* GetAttr.proto */
1666 static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *, PyObject *);
1667 
1668 /* GetAttr3.proto */
1669 static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *, PyObject *, PyObject *);
1670 
1671 /* RaiseTooManyValuesToUnpack.proto */
1672 static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected);
1673 
1674 /* RaiseNeedMoreValuesToUnpack.proto */
1675 static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index);
1676 
1677 /* IterFinish.proto */
1678 static CYTHON_INLINE int __Pyx_IterFinish(void);
1679 
1680 /* UnpackItemEndCheck.proto */
1681 static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected);
1682 
1683 /* GetItemInt.proto */
1684 #define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
1685     (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
1686     __Pyx_GetItemInt_Fast(o, (Py_ssize_t)i, is_list, wraparound, boundscheck) :\
1687     (is_list ? (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL) :\
1688                __Pyx_GetItemInt_Generic(o, to_py_func(i))))
1689 #define __Pyx_GetItemInt_List(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
1690     (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
1691     __Pyx_GetItemInt_List_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\
1692     (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL))
1693 static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i,
1694                                                               int wraparound, int boundscheck);
1695 #define __Pyx_GetItemInt_Tuple(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
1696     (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
1697     __Pyx_GetItemInt_Tuple_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\
1698     (PyErr_SetString(PyExc_IndexError, "tuple index out of range"), (PyObject*)NULL))
1699 static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i,
1700                                                               int wraparound, int boundscheck);
1701 static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j);
1702 static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
1703                                                      int is_list, int wraparound, int boundscheck);
1704 
1705 /* ObjectGetItem.proto */
1706 #if CYTHON_USE_TYPE_SLOTS
1707 static CYTHON_INLINE PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject* key);
1708 #else
1709 #define __Pyx_PyObject_GetItem(obj, key)  PyObject_GetItem(obj, key)
1710 #endif
1711 
1712 /* ListCompAppend.proto */
1713 #if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS
__Pyx_ListComp_Append(PyObject * list,PyObject * x)1714 static CYTHON_INLINE int __Pyx_ListComp_Append(PyObject* list, PyObject* x) {
1715     PyListObject* L = (PyListObject*) list;
1716     Py_ssize_t len = Py_SIZE(list);
1717     if (likely(L->allocated > len)) {
1718         Py_INCREF(x);
1719         PyList_SET_ITEM(list, len, x);
1720         Py_SIZE(list) = len+1;
1721         return 0;
1722     }
1723     return PyList_Append(list, x);
1724 }
1725 #else
1726 #define __Pyx_ListComp_Append(L,x) PyList_Append(L,x)
1727 #endif
1728 
1729 /* ExtTypeTest.proto */
1730 static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type);
1731 
1732 /* SwapException.proto */
1733 #if CYTHON_FAST_THREAD_STATE
1734 #define __Pyx_ExceptionSwap(type, value, tb)  __Pyx__ExceptionSwap(__pyx_tstate, type, value, tb)
1735 static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
1736 #else
1737 static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb);
1738 #endif
1739 
1740 /* ArgTypeTest.proto */
1741 #define __Pyx_ArgTypeTest(obj, type, none_allowed, name, exact)\
1742     ((likely((Py_TYPE(obj) == type) | (none_allowed && (obj == Py_None)))) ? 1 :\
1743         __Pyx__ArgTypeTest(obj, type, name, exact))
1744 static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact);
1745 
1746 /* SliceObject.proto */
1747 static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice(
1748         PyObject* obj, Py_ssize_t cstart, Py_ssize_t cstop,
1749         PyObject** py_start, PyObject** py_stop, PyObject** py_slice,
1750         int has_cstart, int has_cstop, int wraparound);
1751 
1752 /* PyIntCompare.proto */
1753 static CYTHON_INLINE PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, long intval, long inplace);
1754 
1755 /* HasAttr.proto */
1756 static CYTHON_INLINE int __Pyx_HasAttr(PyObject *, PyObject *);
1757 
1758 /* PyIntBinop.proto */
1759 #if !CYTHON_COMPILING_IN_PYPY
1760 static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check);
1761 #else
1762 #define __Pyx_PyInt_AddObjC(op1, op2, intval, inplace, zerodivision_check)\
1763     (inplace ? PyNumber_InPlaceAdd(op1, op2) : PyNumber_Add(op1, op2))
1764 #endif
1765 
1766 /* PyDictContains.proto */
__Pyx_PyDict_ContainsTF(PyObject * item,PyObject * dict,int eq)1767 static CYTHON_INLINE int __Pyx_PyDict_ContainsTF(PyObject* item, PyObject* dict, int eq) {
1768     int result = PyDict_Contains(dict, item);
1769     return unlikely(result < 0) ? result : (result == (eq == Py_EQ));
1770 }
1771 
1772 /* Import.proto */
1773 static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level);
1774 
1775 /* ImportFrom.proto */
1776 static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name);
1777 
1778 /* RaiseNoneIterError.proto */
1779 static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void);
1780 
1781 /* PyObject_GenericGetAttrNoDict.proto */
1782 #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
1783 static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name);
1784 #else
1785 #define __Pyx_PyObject_GenericGetAttrNoDict PyObject_GenericGetAttr
1786 #endif
1787 
1788 /* PyObject_GenericGetAttr.proto */
1789 #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
1790 static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name);
1791 #else
1792 #define __Pyx_PyObject_GenericGetAttr PyObject_GenericGetAttr
1793 #endif
1794 
1795 /* SetupReduce.proto */
1796 static int __Pyx_setup_reduce(PyObject* type_obj);
1797 
1798 /* SetVTable.proto */
1799 static int __Pyx_SetVtable(PyObject *dict, void *vtable);
1800 
1801 /* TypeImport.proto */
1802 #ifndef __PYX_HAVE_RT_ImportType_proto
1803 #define __PYX_HAVE_RT_ImportType_proto
1804 enum __Pyx_ImportType_CheckSize {
1805    __Pyx_ImportType_CheckSize_Error = 0,
1806    __Pyx_ImportType_CheckSize_Warn = 1,
1807    __Pyx_ImportType_CheckSize_Ignore = 2
1808 };
1809 static PyTypeObject *__Pyx_ImportType(PyObject* module, const char *module_name, const char *class_name, size_t size, enum __Pyx_ImportType_CheckSize check_size);
1810 #endif
1811 
1812 /* CLineInTraceback.proto */
1813 #ifdef CYTHON_CLINE_IN_TRACEBACK
1814 #define __Pyx_CLineForTraceback(tstate, c_line)  (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0)
1815 #else
1816 static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line);
1817 #endif
1818 
1819 /* CodeObjectCache.proto */
1820 typedef struct {
1821     PyCodeObject* code_object;
1822     int code_line;
1823 } __Pyx_CodeObjectCacheEntry;
1824 struct __Pyx_CodeObjectCache {
1825     int count;
1826     int max_count;
1827     __Pyx_CodeObjectCacheEntry* entries;
1828 };
1829 static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL};
1830 static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line);
1831 static PyCodeObject *__pyx_find_code_object(int code_line);
1832 static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object);
1833 
1834 /* AddTraceback.proto */
1835 static void __Pyx_AddTraceback(const char *funcname, int c_line,
1836                                int py_line, const char *filename);
1837 
1838 /* CIntToPy.proto */
1839 static CYTHON_INLINE PyObject* __Pyx_PyInt_From_hid_t(hid_t value);
1840 
1841 /* CIntToPy.proto */
1842 static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value);
1843 
1844 /* CIntToPy.proto */
1845 static CYTHON_INLINE PyObject* __Pyx_PyInt_From_hsize_t(hsize_t value);
1846 
1847 /* CIntToPy.proto */
1848 static CYTHON_INLINE PyObject* __Pyx_PyInt_From_uintptr_t(uintptr_t value);
1849 
1850 /* CIntToPy.proto */
1851 static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__H5T_class_t(enum H5T_class_t value);
1852 
1853 /* CIntToPy.proto */
1854 static CYTHON_INLINE PyObject* __Pyx_PyInt_From_htri_t(htri_t value);
1855 
1856 /* CIntToPy.proto */
1857 static CYTHON_INLINE PyObject* __Pyx_PyInt_From_haddr_t(haddr_t value);
1858 
1859 /* CIntToPy.proto */
1860 static CYTHON_INLINE PyObject* __Pyx_PyInt_From_unsigned_int(unsigned int value);
1861 
1862 /* CIntToPy.proto */
1863 static CYTHON_INLINE PyObject* __Pyx_PyInt_From_time_t(time_t value);
1864 
1865 /* CIntToPy.proto */
1866 static CYTHON_INLINE PyObject* __Pyx_PyInt_From_hbool_t(hbool_t value);
1867 
1868 /* CIntToPy.proto */
1869 static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__H5T_order_t(enum H5T_order_t value);
1870 
1871 /* CIntToPy.proto */
1872 static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__H5S_seloper_t(enum H5S_seloper_t value);
1873 
1874 /* CIntToPy.proto */
1875 static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value);
1876 
1877 /* RealImag.proto */
1878 #if CYTHON_CCOMPLEX
1879   #ifdef __cplusplus
1880     #define __Pyx_CREAL(z) ((z).real())
1881     #define __Pyx_CIMAG(z) ((z).imag())
1882   #else
1883     #define __Pyx_CREAL(z) (__real__(z))
1884     #define __Pyx_CIMAG(z) (__imag__(z))
1885   #endif
1886 #else
1887     #define __Pyx_CREAL(z) ((z).real)
1888     #define __Pyx_CIMAG(z) ((z).imag)
1889 #endif
1890 #if defined(__cplusplus) && CYTHON_CCOMPLEX\
1891         && (defined(_WIN32) || defined(__clang__) || (defined(__GNUC__) && (__GNUC__ >= 5 || __GNUC__ == 4 && __GNUC_MINOR__ >= 4 )) || __cplusplus >= 201103)
1892     #define __Pyx_SET_CREAL(z,x) ((z).real(x))
1893     #define __Pyx_SET_CIMAG(z,y) ((z).imag(y))
1894 #else
1895     #define __Pyx_SET_CREAL(z,x) __Pyx_CREAL(z) = (x)
1896     #define __Pyx_SET_CIMAG(z,y) __Pyx_CIMAG(z) = (y)
1897 #endif
1898 
1899 /* Arithmetic.proto */
1900 #if CYTHON_CCOMPLEX
1901     #define __Pyx_c_eq_float(a, b)   ((a)==(b))
1902     #define __Pyx_c_sum_float(a, b)  ((a)+(b))
1903     #define __Pyx_c_diff_float(a, b) ((a)-(b))
1904     #define __Pyx_c_prod_float(a, b) ((a)*(b))
1905     #define __Pyx_c_quot_float(a, b) ((a)/(b))
1906     #define __Pyx_c_neg_float(a)     (-(a))
1907   #ifdef __cplusplus
1908     #define __Pyx_c_is_zero_float(z) ((z)==(float)0)
1909     #define __Pyx_c_conj_float(z)    (::std::conj(z))
1910     #if 1
1911         #define __Pyx_c_abs_float(z)     (::std::abs(z))
1912         #define __Pyx_c_pow_float(a, b)  (::std::pow(a, b))
1913     #endif
1914   #else
1915     #define __Pyx_c_is_zero_float(z) ((z)==0)
1916     #define __Pyx_c_conj_float(z)    (conjf(z))
1917     #if 1
1918         #define __Pyx_c_abs_float(z)     (cabsf(z))
1919         #define __Pyx_c_pow_float(a, b)  (cpowf(a, b))
1920     #endif
1921  #endif
1922 #else
1923     static CYTHON_INLINE int __Pyx_c_eq_float(__pyx_t_float_complex, __pyx_t_float_complex);
1924     static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_sum_float(__pyx_t_float_complex, __pyx_t_float_complex);
1925     static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_diff_float(__pyx_t_float_complex, __pyx_t_float_complex);
1926     static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_prod_float(__pyx_t_float_complex, __pyx_t_float_complex);
1927     static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_quot_float(__pyx_t_float_complex, __pyx_t_float_complex);
1928     static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_neg_float(__pyx_t_float_complex);
1929     static CYTHON_INLINE int __Pyx_c_is_zero_float(__pyx_t_float_complex);
1930     static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_conj_float(__pyx_t_float_complex);
1931     #if 1
1932         static CYTHON_INLINE float __Pyx_c_abs_float(__pyx_t_float_complex);
1933         static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_pow_float(__pyx_t_float_complex, __pyx_t_float_complex);
1934     #endif
1935 #endif
1936 
1937 /* Arithmetic.proto */
1938 #if CYTHON_CCOMPLEX
1939     #define __Pyx_c_eq_double(a, b)   ((a)==(b))
1940     #define __Pyx_c_sum_double(a, b)  ((a)+(b))
1941     #define __Pyx_c_diff_double(a, b) ((a)-(b))
1942     #define __Pyx_c_prod_double(a, b) ((a)*(b))
1943     #define __Pyx_c_quot_double(a, b) ((a)/(b))
1944     #define __Pyx_c_neg_double(a)     (-(a))
1945   #ifdef __cplusplus
1946     #define __Pyx_c_is_zero_double(z) ((z)==(double)0)
1947     #define __Pyx_c_conj_double(z)    (::std::conj(z))
1948     #if 1
1949         #define __Pyx_c_abs_double(z)     (::std::abs(z))
1950         #define __Pyx_c_pow_double(a, b)  (::std::pow(a, b))
1951     #endif
1952   #else
1953     #define __Pyx_c_is_zero_double(z) ((z)==0)
1954     #define __Pyx_c_conj_double(z)    (conj(z))
1955     #if 1
1956         #define __Pyx_c_abs_double(z)     (cabs(z))
1957         #define __Pyx_c_pow_double(a, b)  (cpow(a, b))
1958     #endif
1959  #endif
1960 #else
1961     static CYTHON_INLINE int __Pyx_c_eq_double(__pyx_t_double_complex, __pyx_t_double_complex);
1962     static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_sum_double(__pyx_t_double_complex, __pyx_t_double_complex);
1963     static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_diff_double(__pyx_t_double_complex, __pyx_t_double_complex);
1964     static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_prod_double(__pyx_t_double_complex, __pyx_t_double_complex);
1965     static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_quot_double(__pyx_t_double_complex, __pyx_t_double_complex);
1966     static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_neg_double(__pyx_t_double_complex);
1967     static CYTHON_INLINE int __Pyx_c_is_zero_double(__pyx_t_double_complex);
1968     static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_conj_double(__pyx_t_double_complex);
1969     #if 1
1970         static CYTHON_INLINE double __Pyx_c_abs_double(__pyx_t_double_complex);
1971         static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_pow_double(__pyx_t_double_complex, __pyx_t_double_complex);
1972     #endif
1973 #endif
1974 
1975 /* CIntToPy.proto */
1976 static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__NPY_TYPES(enum NPY_TYPES value);
1977 
1978 /* CIntFromPy.proto */
1979 static CYTHON_INLINE hid_t __Pyx_PyInt_As_hid_t(PyObject *);
1980 
1981 /* CIntFromPy.proto */
1982 static CYTHON_INLINE hsize_t __Pyx_PyInt_As_hsize_t(PyObject *);
1983 
1984 /* CIntFromPy.proto */
1985 static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *);
1986 
1987 /* CIntFromPy.proto */
1988 static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *);
1989 
1990 /* CIntFromPy.proto */
1991 static CYTHON_INLINE size_t __Pyx_PyInt_As_size_t(PyObject *);
1992 
1993 /* CIntFromPy.proto */
1994 static CYTHON_INLINE hbool_t __Pyx_PyInt_As_hbool_t(PyObject *);
1995 
1996 /* CIntFromPy.proto */
1997 static CYTHON_INLINE enum H5F_scope_t __Pyx_PyInt_As_enum__H5F_scope_t(PyObject *);
1998 
1999 /* FastTypeChecks.proto */
2000 #if CYTHON_COMPILING_IN_CPYTHON
2001 #define __Pyx_TypeCheck(obj, type) __Pyx_IsSubtype(Py_TYPE(obj), (PyTypeObject *)type)
2002 static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b);
2003 static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject *type);
2004 static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *type1, PyObject *type2);
2005 #else
2006 #define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type)
2007 #define __Pyx_PyErr_GivenExceptionMatches(err, type) PyErr_GivenExceptionMatches(err, type)
2008 #define __Pyx_PyErr_GivenExceptionMatches2(err, type1, type2) (PyErr_GivenExceptionMatches(err, type1) || PyErr_GivenExceptionMatches(err, type2))
2009 #endif
2010 #define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception)
2011 
2012 /* CheckBinaryVersion.proto */
2013 static int __Pyx_check_binary_version(void);
2014 
2015 /* FunctionImport.proto */
2016 static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig);
2017 
2018 /* InitStrings.proto */
2019 static int __Pyx_InitStrings(__Pyx_StringTabEntry *t);
2020 
2021 static PyObject *__pyx_f_6tables_13hdf5extension_4Leaf__get_type_ids(struct __pyx_obj_6tables_13hdf5extension_Leaf *__pyx_v_self); /* proto*/
2022 static PyObject *__pyx_f_6tables_13hdf5extension_4Leaf__convert_time64(CYTHON_UNUSED struct __pyx_obj_6tables_13hdf5extension_Leaf *__pyx_v_self, PyArrayObject *__pyx_v_nparr, int __pyx_v_sense); /* proto*/
2023 
2024 /* Module declarations from 'cpython.buffer' */
2025 
2026 /* Module declarations from 'libc.string' */
2027 
2028 /* Module declarations from 'libc.stdio' */
2029 
2030 /* Module declarations from '__builtin__' */
2031 
2032 /* Module declarations from 'cpython.type' */
2033 static PyTypeObject *__pyx_ptype_7cpython_4type_type = 0;
2034 
2035 /* Module declarations from 'cpython.version' */
2036 
2037 /* Module declarations from 'cpython.exc' */
2038 
2039 /* Module declarations from 'cpython.module' */
2040 
2041 /* Module declarations from 'cpython.mem' */
2042 
2043 /* Module declarations from 'cpython.tuple' */
2044 
2045 /* Module declarations from 'cpython.list' */
2046 
2047 /* Module declarations from 'cpython.sequence' */
2048 
2049 /* Module declarations from 'cpython.mapping' */
2050 
2051 /* Module declarations from 'cpython.iterator' */
2052 
2053 /* Module declarations from 'cpython.number' */
2054 
2055 /* Module declarations from 'cpython.int' */
2056 
2057 /* Module declarations from '__builtin__' */
2058 
2059 /* Module declarations from 'cpython.bool' */
2060 static PyTypeObject *__pyx_ptype_7cpython_4bool_bool = 0;
2061 
2062 /* Module declarations from 'cpython.long' */
2063 
2064 /* Module declarations from 'cpython.float' */
2065 
2066 /* Module declarations from '__builtin__' */
2067 
2068 /* Module declarations from 'cpython.complex' */
2069 static PyTypeObject *__pyx_ptype_7cpython_7complex_complex = 0;
2070 
2071 /* Module declarations from 'cpython.string' */
2072 
2073 /* Module declarations from 'cpython.unicode' */
2074 
2075 /* Module declarations from 'cpython.dict' */
2076 
2077 /* Module declarations from 'cpython.instance' */
2078 
2079 /* Module declarations from 'cpython.function' */
2080 
2081 /* Module declarations from 'cpython.method' */
2082 
2083 /* Module declarations from 'cpython.weakref' */
2084 
2085 /* Module declarations from 'cpython.getargs' */
2086 
2087 /* Module declarations from 'cpython.pythread' */
2088 
2089 /* Module declarations from 'cpython.pystate' */
2090 
2091 /* Module declarations from 'cpython.cobject' */
2092 
2093 /* Module declarations from 'cpython.oldbuffer' */
2094 
2095 /* Module declarations from 'cpython.set' */
2096 
2097 /* Module declarations from 'cpython.bytes' */
2098 
2099 /* Module declarations from 'cpython.pycapsule' */
2100 
2101 /* Module declarations from 'cpython' */
2102 
2103 /* Module declarations from 'cpython.object' */
2104 
2105 /* Module declarations from 'cpython.ref' */
2106 
2107 /* Module declarations from 'numpy' */
2108 
2109 /* Module declarations from 'numpy' */
2110 static PyTypeObject *__pyx_ptype_5numpy_dtype = 0;
2111 static PyTypeObject *__pyx_ptype_5numpy_flatiter = 0;
2112 static PyTypeObject *__pyx_ptype_5numpy_broadcast = 0;
2113 static PyTypeObject *__pyx_ptype_5numpy_ndarray = 0;
2114 static PyTypeObject *__pyx_ptype_5numpy_ufunc = 0;
2115 static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *, char *, char *, int *); /*proto*/
2116 static CYTHON_INLINE int __pyx_f_5numpy_import_array(void); /*proto*/
2117 
2118 /* Module declarations from 'tables.definitions' */
2119 
2120 /* Module declarations from 'libc.stdlib' */
2121 
2122 /* Module declarations from 'tables.utilsextension' */
2123 static hsize_t *(*__pyx_f_6tables_14utilsextension_malloc_dims)(PyObject *); /*proto*/
2124 static hid_t (*__pyx_f_6tables_14utilsextension_get_native_type)(hid_t); /*proto*/
2125 static PyObject *(*__pyx_f_6tables_14utilsextension_cstr_to_pystr)(char const *); /*proto*/
2126 static int (*__pyx_f_6tables_14utilsextension_load_reference)(hid_t, hobj_ref_t *, size_t, PyArrayObject *); /*proto*/
2127 
2128 /* Module declarations from 'tables.hdf5extension' */
2129 static PyTypeObject *__pyx_ptype_6tables_13hdf5extension_Node = 0;
2130 static PyTypeObject *__pyx_ptype_6tables_13hdf5extension_Leaf = 0;
2131 static PyTypeObject *__pyx_ptype_6tables_13hdf5extension_Array = 0;
2132 static PyTypeObject *__pyx_ptype_6tables_13hdf5extension_File = 0;
2133 static PyTypeObject *__pyx_ptype_6tables_13hdf5extension_AttributeSet = 0;
2134 static PyTypeObject *__pyx_ptype_6tables_13hdf5extension_Group = 0;
2135 static PyTypeObject *__pyx_ptype_6tables_13hdf5extension_VLArray = 0;
2136 static PyTypeObject *__pyx_ptype_6tables_13hdf5extension_UnImplemented = 0;
2137 static int __pyx_v_6tables_13hdf5extension_H5T_CSET_DEFAULT;
2138 static hsize_t *__pyx_f_6tables_13hdf5extension_npy_malloc_dims(int, npy_intp *); /*proto*/
2139 static PyObject *__pyx_f_6tables_13hdf5extension_getshape(int, hsize_t *); /*proto*/
2140 static PyObject *__pyx_f_6tables_13hdf5extension_get_attribute_string_or_none(hid_t, char *); /*proto*/
2141 static PyObject *__pyx_f_6tables_13hdf5extension_get_dtype_scalar(hid_t, enum H5T_class_t, size_t); /*proto*/
2142 static PyObject *__pyx_f_6tables_13hdf5extension___pyx_unpickle_File__set_state(struct __pyx_obj_6tables_13hdf5extension_File *, PyObject *); /*proto*/
2143 static PyObject *__pyx_f_6tables_13hdf5extension___pyx_unpickle_AttributeSet__set_state(struct __pyx_obj_6tables_13hdf5extension_AttributeSet *, PyObject *); /*proto*/
2144 static PyObject *__pyx_f_6tables_13hdf5extension___pyx_unpickle_Node__set_state(struct __pyx_obj_6tables_13hdf5extension_Node *, PyObject *); /*proto*/
2145 static PyObject *__pyx_f_6tables_13hdf5extension___pyx_unpickle_Group__set_state(struct __pyx_obj_6tables_13hdf5extension_Group *, PyObject *); /*proto*/
2146 #define __Pyx_MODULE_NAME "tables.hdf5extension"
2147 extern int __pyx_module_is_main_tables__hdf5extension;
2148 int __pyx_module_is_main_tables__hdf5extension = 0;
2149 
2150 /* Implementation of 'tables.hdf5extension' */
2151 static PyObject *__pyx_builtin_TypeError;
2152 static PyObject *__pyx_builtin_ValueError;
2153 static PyObject *__pyx_builtin_RuntimeError;
2154 static PyObject *__pyx_builtin_range;
2155 static PyObject *__pyx_builtin_super;
2156 static PyObject *__pyx_builtin_sum;
2157 static PyObject *__pyx_builtin_enumerate;
2158 static PyObject *__pyx_builtin_map;
2159 static PyObject *__pyx_builtin_ImportError;
2160 static const char __pyx_k_[] = "";
2161 static const char __pyx_k_S[] = "S";
2162 static const char __pyx_k_U[] = "U";
2163 static const char __pyx_k_V[] = "V";
2164 static const char __pyx_k_a[] = "a";
2165 static const char __pyx_k_b[] = "b";
2166 static const char __pyx_k_c[] = "c";
2167 static const char __pyx_k_f[] = "f";
2168 static const char __pyx_k_i[] = "i";
2169 static const char __pyx_k_r[] = "r";
2170 static const char __pyx_k_s[] = "%s";
2171 static const char __pyx_k_u[] = "u";
2172 static const char __pyx_k_w[] = "w";
2173 static const char __pyx_k_O8[] = "O8";
2174 static const char __pyx_k__2[] = "\000";
2175 static const char __pyx_k_b1[] = "b1";
2176 static const char __pyx_k_i8[] = "i8";
2177 static const char __pyx_k_os[] = "os";
2178 static const char __pyx_k_rc[] = "rc";
2179 static const char __pyx_k_AND[] = "AND";
2180 static const char __pyx_k_S_s[] = "S%s";
2181 static const char __pyx_k_f_s[] = "f%s";
2182 static const char __pyx_k_get[] = "get";
2183 static const char __pyx_k_i_s[] = "i%s";
2184 static const char __pyx_k_idx[] = "idx";
2185 static const char __pyx_k_map[] = "map";
2186 static const char __pyx_k_new[] = "__new__";
2187 static const char __pyx_k_r_2[] = "r+";
2188 static const char __pyx_k_sum[] = "sum";
2189 static const char __pyx_k_u_s[] = "u%s";
2190 static const char __pyx_k_Atom[] = "Atom";
2191 static const char __pyx_k_File[] = "File";
2192 static const char __pyx_k_Leaf[] = "Leaf";
2193 static const char __pyx_k_NOTB[] = "NOTB";
2194 static const char __pyx_k_Node[] = "Node";
2195 static const char __pyx_k_addr[] = "addr";
2196 static const char __pyx_k_atom[] = "atom";
2197 static const char __pyx_k_base[] = "base";
2198 static const char __pyx_k_copy[] = "copy";
2199 static const char __pyx_k_dflt[] = "dflt";
2200 static const char __pyx_k_dict[] = "__dict__";
2201 static const char __pyx_k_h5bt[] = "h5bt";
2202 static const char __pyx_k_init[] = "init";
2203 static const char __pyx_k_intp[] = "intp";
2204 static const char __pyx_k_kind[] = "kind";
2205 static const char __pyx_k_m_h5[] = "-m.h5";
2206 static const char __pyx_k_main[] = "__main__";
2207 static const char __pyx_k_mode[] = "mode";
2208 static const char __pyx_k_name[] = "name";
2209 static const char __pyx_k_node[] = "node";
2210 static const char __pyx_k_nrow[] = "nrow";
2211 static const char __pyx_k_path[] = "path";
2212 static const char __pyx_k_r_h5[] = "-r.h5";
2213 static const char __pyx_k_size[] = "size";
2214 static const char __pyx_k_step[] = "step";
2215 static const char __pyx_k_stop[] = "stop";
2216 static const char __pyx_k_test[] = "__test__";
2217 static const char __pyx_k_time[] = "time";
2218 static const char __pyx_k_type[] = "type";
2219 static const char __pyx_k_warn[] = "warn";
2220 static const char __pyx_k_Array[] = "Array";
2221 static const char __pyx_k_Group[] = "Group";
2222 static const char __pyx_k_Table[] = "Table";
2223 static const char __pyx_k_array[] = "array";
2224 static const char __pyx_k_atime[] = "atime";
2225 static const char __pyx_k_btime[] = "btime";
2226 static const char __pyx_k_bytes[] = "bytes_";
2227 static const char __pyx_k_class[] = "__class__";
2228 static const char __pyx_k_count[] = "count";
2229 static const char __pyx_k_ctime[] = "ctime";
2230 static const char __pyx_k_dtype[] = "dtype";
2231 static const char __pyx_k_dumps[] = "dumps";
2232 static const char __pyx_k_empty[] = "empty";
2233 static const char __pyx_k_flags[] = "flags";
2234 static const char __pyx_k_flush[] = "flush";
2235 static const char __pyx_k_g_new[] = "_g_new";
2236 static const char __pyx_k_int32[] = "int32";
2237 static const char __pyx_k_mtime[] = "mtime";
2238 static const char __pyx_k_nparr[] = "nparr";
2239 static const char __pyx_k_nrows[] = "nrows";
2240 static const char __pyx_k_numpy[] = "numpy";
2241 static const char __pyx_k_range[] = "range";
2242 static const char __pyx_k_shape[] = "shape";
2243 static const char __pyx_k_start[] = "start";
2244 static const char __pyx_k_stepl[] = "stepl";
2245 static const char __pyx_k_stopl[] = "stopl";
2246 static const char __pyx_k_super[] = "super";
2247 static const char __pyx_k_title[] = "title";
2248 static const char __pyx_k_utf_8[] = "utf-8";
2249 static const char __pyx_k_v_new[] = "_v_new";
2250 static const char __pyx_k_value[] = "value";
2251 static const char __pyx_k_where[] = "where";
2252 static const char __pyx_k_zeros[] = "zeros";
2253 static const char __pyx_k_CArray[] = "CArray";
2254 static const char __pyx_k_DRIVER[] = "DRIVER";
2255 static const char __pyx_k_EArray[] = "EArray";
2256 static const char __pyx_k_append[] = "append";
2257 static const char __pyx_k_astype[] = "astype";
2258 static const char __pyx_k_buffer[] = "buffer";
2259 static const char __pyx_k_coords[] = "coords";
2260 static const char __pyx_k_countl[] = "countl";
2261 static const char __pyx_k_encode[] = "encode";
2262 static const char __pyx_k_exists[] = "exists";
2263 static const char __pyx_k_extdim[] = "extdim";
2264 static const char __pyx_k_import[] = "__import__";
2265 static const char __pyx_k_insert[] = "insert";
2266 static const char __pyx_k_name_2[] = "__name__";
2267 static const char __pyx_k_object[] = "object";
2268 static const char __pyx_k_params[] = "params";
2269 static const char __pyx_k_pickle[] = "pickle";
2270 static const char __pyx_k_pymode[] = "pymode";
2271 static const char __pyx_k_reduce[] = "__reduce__";
2272 static const char __pyx_k_rstrip[] = "rstrip";
2273 static const char __pyx_k_startl[] = "startl";
2274 static const char __pyx_k_time64[] = "time64";
2275 static const char __pyx_k_update[] = "update";
2276 static const char __pyx_k_v_file[] = "_v_file";
2277 static const char __pyx_k_v_name[] = "_v_name";
2278 static const char __pyx_k_v_node[] = "_v_node";
2279 static const char __pyx_k_ObjInfo[] = "ObjInfo";
2280 static const char __pyx_k_Unknown[] = "Unknown";
2281 static const char __pyx_k_VLArray[] = "VLArray";
2282 static const char __pyx_k_cPickle[] = "cPickle";
2283 static const char __pyx_k_complib[] = "complib";
2284 static const char __pyx_k_filters[] = "filters";
2285 static const char __pyx_k_generic[] = "generic";
2286 static const char __pyx_k_maindim[] = "maindim";
2287 static const char __pyx_k_ndarray[] = "ndarray";
2288 static const char __pyx_k_newname[] = "newname";
2289 static const char __pyx_k_oldname[] = "oldname";
2290 static const char __pyx_k_strides[] = "strides";
2291 static const char __pyx_k_unicode[] = "unicode_";
2292 static const char __pyx_k_v_dtype[] = "_v_dtype";
2293 static const char __pyx_k_SizeType[] = "SizeType";
2294 static const char __pyx_k_SoftLink[] = "SoftLink";
2295 static const char __pyx_k_attrname[] = "attrname";
2296 static const char __pyx_k_byteswap[] = "byteswap";
2297 static const char __pyx_k_getstate[] = "__getstate__";
2298 static const char __pyx_k_isPTFile[] = "_isPTFile";
2299 static const char __pyx_k_nobjects[] = "nobjects";
2300 static const char __pyx_k_ptparams[] = "ptparams";
2301 static const char __pyx_k_pyx_type[] = "__pyx_type";
2302 static const char __pyx_k_setstate[] = "__setstate__";
2303 static const char __pyx_k_space_id[] = "space_id";
2304 static const char __pyx_k_v_parent[] = "_v_parent";
2305 static const char __pyx_k_warnings[] = "warnings";
2306 static const char __pyx_k_H5FD_CORE[] = "H5FD_CORE";
2307 static const char __pyx_k_H5FD_SEC2[] = "H5FD_SEC2";
2308 static const char __pyx_k_NamedType[] = "NamedType";
2309 static const char __pyx_k_TypeError[] = "TypeError";
2310 static const char __pyx_k_attr_name[] = "attr_name";
2311 static const char __pyx_k_byteorder[] = "byteorder";
2312 static const char __pyx_k_c_classid[] = "_c_classid";
2313 static const char __pyx_k_complevel[] = "complevel";
2314 static const char __pyx_k_enumerate[] = "enumerate";
2315 static const char __pyx_k_leaf_name[] = "leaf_name";
2316 static const char __pyx_k_newparent[] = "newparent";
2317 static const char __pyx_k_oldparent[] = "oldparent";
2318 static const char __pyx_k_pyx_state[] = "__pyx_state";
2319 static const char __pyx_k_reduce_ex[] = "__reduce_ex__";
2320 static const char __pyx_k_reference[] = "reference";
2321 static const char __pyx_k_selection[] = "selection";
2322 static const char __pyx_k_v_version[] = "_v_version";
2323 static const char __pyx_k_writeable[] = "writeable";
2324 static const char __pyx_k_H5FD_SPLIT[] = "H5FD_SPLIT";
2325 static const char __pyx_k_H5FD_STDIO[] = "H5FD_STDIO";
2326 static const char __pyx_k_NoSuchNode[] = "NoSuchNode";
2327 static const char __pyx_k_ValueError[] = "ValueError";
2328 static const char __pyx_k_atomicsize[] = "_atomicsize";
2329 static const char __pyx_k_atomictype[] = "_atomictype";
2330 static const char __pyx_k_byteorders[] = "byteorders";
2331 static const char __pyx_k_chunkshape[] = "chunkshape";
2332 static const char __pyx_k_fletcher32[] = "fletcher32";
2333 static const char __pyx_k_from_dtype[] = "from_dtype";
2334 static const char __pyx_k_group_name[] = "group_name";
2335 static const char __pyx_k_namedtuple[] = "namedtuple";
2336 static const char __pyx_k_pyx_result[] = "__pyx_result";
2337 static const char __pyx_k_pyx_vtable[] = "__pyx_vtable__";
2338 static const char __pyx_k_v_objectid[] = "_v_objectid";
2339 static const char __pyx_k_v_pathname[] = "_v_pathname";
2340 static const char __pyx_k_H5FD_DIRECT[] = "H5FD_DIRECT";
2341 static const char __pyx_k_ImportError[] = "ImportError";
2342 static const char __pyx_k_PickleError[] = "PickleError";
2343 static const char __pyx_k_atomicdtype[] = "_atomicdtype";
2344 static const char __pyx_k_atomicshape[] = "_atomicshape";
2345 static const char __pyx_k_collections[] = "collections";
2346 static const char __pyx_k_newpathname[] = "newpathname";
2347 static const char __pyx_k_oldpathname[] = "oldpathname";
2348 static const char __pyx_k_tables_atom[] = "tables.atom";
2349 static const char __pyx_k_AttributeSet[] = "AttributeSet";
2350 static const char __pyx_k_ExternalLink[] = "ExternalLink";
2351 static const char __pyx_k_H5FD_WINDOWS[] = "H5FD_WINDOWS";
2352 static const char __pyx_k_HDF5ExtError[] = "HDF5ExtError";
2353 static const char __pyx_k_RuntimeError[] = "RuntimeError";
2354 static const char __pyx_k_pyx_checksum[] = "__pyx_checksum";
2355 static const char __pyx_k_stringsource[] = "stringsource";
2356 static const char __pyx_k_tables_utils[] = "tables.utils";
2357 static const char __pyx_k_ObjTimestamps[] = "ObjTimestamps";
2358 static const char __pyx_k_UnImplemented[] = "UnImplemented";
2359 static const char __pyx_k_reduce_cython[] = "__reduce_cython__";
2360 static const char __pyx_k_pttype_to_hdf5[] = "pttype_to_hdf5";
2361 static const char __pyx_k_DataTypeWarning[] = "DataTypeWarning";
2362 static const char __pyx_k_USER_BLOCK_SIZE[] = "USER_BLOCK_SIZE";
2363 static const char __pyx_k_encode_filename[] = "encode_filename";
2364 static const char __pyx_k_pyx_PickleError[] = "__pyx_PickleError";
2365 static const char __pyx_k_setstate_cython[] = "__setstate_cython__";
2366 static const char __pyx_k_v_unimplemented[] = "_v_unimplemented";
2367 static const char __pyx_k_CHUNK_CACHE_SIZE[] = "CHUNK_CACHE_SIZE";
2368 static const char __pyx_k_descr_from_dtype[] = "descr_from_dtype";
2369 static const char __pyx_k_pt_special_kinds[] = "pt_special_kinds";
2370 static const char __pyx_k_pure_numpy_types[] = "pure_numpy_types";
2371 static const char __pyx_k_want_track_times[] = "_want_track_times";
2372 static const char __pyx_k_DRIVER_CORE_IMAGE[] = "DRIVER_CORE_IMAGE";
2373 static const char __pyx_k_MAX_BLOSC_THREADS[] = "MAX_BLOSC_THREADS";
2374 static const char __pyx_k_atom_to_hdf5_type[] = "atom_to_hdf5_type";
2375 static const char __pyx_k_check_file_access[] = "check_file_access";
2376 static const char __pyx_k_correct_byteorder[] = "correct_byteorder";
2377 static const char __pyx_k_perform_selection[] = "perform_selection";
2378 static const char __pyx_k_pyx_unpickle_File[] = "__pyx_unpickle_File";
2379 static const char __pyx_k_pyx_unpickle_Node[] = "__pyx_unpickle_Node";
2380 static const char __pyx_k_supported_drivers[] = "_supported_drivers";
2381 static const char __pyx_k_tables_exceptions[] = "tables.exceptions";
2382 static const char __pyx_k_CHUNK_CACHE_NELMTS[] = "CHUNK_CACHE_NELMTS";
2383 static const char __pyx_k_HAVE_DIRECT_DRIVER[] = "HAVE_DIRECT_DRIVER";
2384 static const char __pyx_k_PYTABLES_SYS_ATTRS[] = "PYTABLES_SYS_ATTRS";
2385 static const char __pyx_k_cline_in_traceback[] = "cline_in_traceback";
2386 static const char __pyx_k_create_nested_type[] = "create_nested_type";
2387 static const char __pyx_k_platform_byteorder[] = "platform_byteorder";
2388 static const char __pyx_k_pyx_unpickle_Group[] = "__pyx_unpickle_Group";
2389 static const char __pyx_k_shuffle_bitshuffle[] = "shuffle_bitshuffle";
2390 static const char __pyx_k_tables_description[] = "tables.description";
2391 static const char __pyx_k_CHUNK_CACHE_PREEMPT[] = "CHUNK_CACHE_PREEMPT";
2392 static const char __pyx_k_HAVE_WINDOWS_DRIVER[] = "HAVE_WINDOWS_DRIVER";
2393 static const char __pyx_k_METADATA_CACHE_SIZE[] = "METADATA_CACHE_SIZE";
2394 static const char __pyx_k_atom_from_hdf5_type[] = "atom_from_hdf5_type";
2395 static const char __pyx_k_hdf5_to_np_ext_type[] = "hdf5_to_np_ext_type";
2396 static const char __pyx_k_DRIVER_SPLIT_RAW_EXT[] = "DRIVER_SPLIT_RAW_EXT";
2397 static const char __pyx_k_Invalid_dataset_id_s[] = "Invalid dataset id %s";
2398 static const char __pyx_k_hdf5_class_to_string[] = "hdf5_class_to_string";
2399 static const char __pyx_k_tables_hdf5extension[] = "tables.hdf5extension";
2400 static const char __pyx_k_DRIVER_CORE_INCREMENT[] = "DRIVER_CORE_INCREMENT";
2401 static const char __pyx_k_DRIVER_SPLIT_META_EXT[] = "DRIVER_SPLIT_META_EXT";
2402 static const char __pyx_k_set_blosc_max_threads[] = "set_blosc_max_threads";
2403 static const char __pyx_k_tables_utilsextension[] = "tables.utilsextension";
2404 static const char __pyx_k_Can_t_open_the_group_s[] = "Can't open the group: '%s'.";
2405 static const char __pyx_k_Problems_getting_ndims[] = "Problems getting ndims!";
2406 static const char __pyx_k_Unexpected_classname_s[] = "Unexpected classname: %s";
2407 static const char __pyx_k_DRIVER_DIRECT_ALIGNMENT[] = "DRIVER_DIRECT_ALIGNMENT";
2408 static const char __pyx_k_DRIVER_DIRECT_CBUF_SIZE[] = "DRIVER_DIRECT_CBUF_SIZE";
2409 static const char __pyx_k_Problems_creating_the_s[] = "Problems creating the %s.";
2410 static const char __pyx_k_Can_t_create_the_group_s[] = "Can't create the group %s.";
2411 static const char __pyx_k_DRIVER_DIRECT_BLOCK_SIZE[] = "DRIVER_DIRECT_BLOCK_SIZE";
2412 static const char __pyx_k_Unable_to_get_array_info[] = "Unable to get array info.";
2413 static const char __pyx_k_DRIVER_CORE_BACKING_STORE[] = "DRIVER_CORE_BACKING_STORE";
2414 static const char __pyx_k_npext_prefixes_to_ptkinds[] = "npext_prefixes_to_ptkinds";
2415 static const char __pyx_k_pyx_unpickle_AttributeSet[] = "__pyx_unpickle_AttributeSet";
2416 static const char __pyx_k_Non_existing_node_s_under_s[] = "Non-existing node ``%s`` under ``%s``";
2417 static const char __pyx_k_Problems_closing_the_file_s[] = "Problems closing the file '%s'";
2418 static const char __pyx_k_ndarray_is_not_C_contiguous[] = "ndarray is not C contiguous";
2419 static const char __pyx_k_Problems_closing_the_Group_s[] = "Problems closing the Group %s";
2420 static const char __pyx_k_Unable_to_open_create_file_s[] = "Unable to open/create file '%s'";
2421 static const char __pyx_k_Unable_to_set_the_file_image[] = "Unable to set the file image";
2422 static const char __pyx_k_problems_deleting_the_node_s[] = "problems deleting the node ``%s``";
2423 static const char __pyx_k_Problems_creating_the_VLArray[] = "Problems creating the VLArray.";
2424 static const char __pyx_k_Problems_modifying_the_record[] = "Problems modifying the record.";
2425 static const char __pyx_k_Problems_appending_the_records[] = "Problems appending the records.";
2426 static const char __pyx_k_Problems_truncating_the_leaf_s[] = "Problems truncating the leaf: %s";
2427 static const char __pyx_k_Can_t_set_attribute_s_in_node_s[] = "Can't set attribute '%s' in node:\n %s.";
2428 static const char __pyx_k_Invalid_or_not_supported_driver[] = "Invalid or not supported driver: '%s'";
2429 static const char __pyx_k_Problems_appending_the_elements[] = "Problems appending the elements";
2430 static const char __pyx_k_Problems_creating_the_s_invalid[] = "Problems creating the %s: invalid disk type ID for atom %s";
2431 static const char __pyx_k_Problems_moving_the_node_s_to_s[] = "Problems moving the node %s to %s";
2432 static const char __pyx_k_Problems_reading_the_array_data[] = "Problems reading the array data.";
2433 static const char __pyx_k_Problems_writing_the_array_data[] = "Problems writing the array data.";
2434 static const char __pyx_k_Support_for_image_files_is_only[] = "Support for image files is only available in HDF5 >= 1.8.9";
2435 static const char __pyx_k_The_DRIVER_CORE_IMAGE_must_be_a[] = "The DRIVER_CORE_IMAGE must be a string of bytes";
2436 static const char __pyx_k_The_DRIVER_CORE_IMAGE_parameter[] = "The DRIVER_CORE_IMAGE parameter will be ignored by the '%s' driver";
2437 static const char __pyx_k_Unable_to_get_object_info_for_s[] = "Unable to get object info for '%s'";
2438 static const char __pyx_k_an_invalid_mode_string_s_passed[] = "an invalid mode string ``%s`` passed the ``check_file_access()`` test; please report this to the authors";
2439 static const char __pyx_k_numpy_core_multiarray_failed_to[] = "numpy.core.multiarray failed to import";
2440 static const char __pyx_k_unknown_dtype_code_in_numpy_pxd[] = "unknown dtype code in numpy.pxd (%d)";
2441 static const char __pyx_k_variable_length_strings_are_not[] = "variable length strings are not supported yet";
2442 static const char __pyx_k_Asking_for_a_range_of_rows_excee[] = "Asking for a range of rows exceeding the available ones!.";
2443 static const char __pyx_k_Attribute_s_exists_in_node_s_but[] = "Attribute %s exists in node %s, but can't get it.";
2444 static const char __pyx_k_Can_t_get_dims_info_on_attribute[] = "Can't get dims info on attribute %s in node %s.";
2445 static const char __pyx_k_Can_t_get_type_info_on_attribute[] = "Can't get type info on attribute %s in node %s.";
2446 static const char __pyx_k_Can_t_read_attribute_s_in_node_s[] = "Can't read attribute %s in node %s.";
2447 static const char __pyx_k_Cannot_append_to_the_reference_t[] = "Cannot append to the reference types";
2448 static const char __pyx_k_Cannot_write_reference_types_yet[] = "Cannot write reference types yet";
2449 static const char __pyx_k_Could_not_get_dataset_creation_p[] = "Could not get dataset creation property list from dataset id %s";
2450 static const char __pyx_k_Could_not_get_dataset_track_time[] = "Could not get dataset track_times property from dataset id %s";
2451 static const char __pyx_k_Cython_interface_between_several[] = "Cython interface between several PyTables classes and HDF5 library.\n\nClasses (type extensions):\n\n    File\n    AttributeSet\n    Node\n    Leaf\n    Group\n    Array\n    VLArray\n    UnImplemented\n\nFunctions:\n\nMisc variables:\n\n";
2452 static const char __pyx_k_Format_string_allocated_too_shor[] = "Format string allocated too short, see comment in numpy.pxd";
2453 static const char __pyx_k_Incompatible_checksums_s_vs_0x13[] = "Incompatible checksums (%s vs 0x1360bff = (group_id, name, parent_id))";
2454 static const char __pyx_k_Incompatible_checksums_s_vs_0x38[] = "Incompatible checksums (%s vs 0x381b6b9 = (name, parent_id))";
2455 static const char __pyx_k_Incompatible_checksums_s_vs_0xb0[] = "Incompatible checksums (%s vs 0xb068931 = (name))";
2456 static const char __pyx_k_Incompatible_checksums_s_vs_0xfb[] = "Incompatible checksums (%s vs 0xfba3a2d = (access_plist, file_id, name))";
2457 static const char __pyx_k_Internal_error_modifying_the_ele[] = "Internal error modifying the elements (H5ARRAYwrite_records returned errorcode -%i)";
2458 static const char __pyx_k_Non_native_byte_order_not_suppor[] = "Non-native byte order not supported";
2459 static const char __pyx_k_Problems_getting_file_descriptor[] = "Problems getting file descriptor for file ``%s``";
2460 static const char __pyx_k_The_H5FD_DIRECT_driver_is_not_av[] = "The H5FD_DIRECT driver is not available";
2461 static const char __pyx_k_The_H5FD_WINDOWS_driver_is_not_a[] = "The H5FD_WINDOWS driver is not available";
2462 static const char __pyx_k_The_HDF5_file_already_esists_the[] = "The HDF5 file already esists: the USER_BLOCK_SIZE will be ignored";
2463 static const char __pyx_k_The_USER_BLOCK_SIZE_must_be_a_po[] = "The USER_BLOCK_SIZE must be a power od 2 greather than 512 or zero";
2464 static const char __pyx_k_Unable_to_allecote_meomory_fir_t[] = "Unable to allecote meomory fir the file image";
2465 static const char __pyx_k_Unable_to_get_the_creation_prope[] = "Unable to get the creation property list";
2466 static const char __pyx_k_Unable_to_retrieve_the_HDF5_file[] = "Unable to retrieve the HDF5 file size";
2467 static const char __pyx_k_Unable_to_retrieve_the_file_imag[] = "Unable to retrieve the file image. Plese note that not all drivers provide support for image files.";
2468 static const char __pyx_k_Unable_to_retrieve_the_size_of_t[] = "Unable to retrieve the size of the buffer for the file image.  Plese note that not all drivers provide support for image files.";
2469 static const char __pyx_k_Unable_to_set_the_file_access_pr[] = "Unable to set the file access property list";
2470 static const char __pyx_k_Unable_to_set_the_user_block_siz[] = "Unable to set the user block size";
2471 static const char __pyx_k_Unsupported_type_for_attribute_s[] = "Unsupported type for attribute '%s' in node '%s'. Offending HDF5 class: %d";
2472 static const char __pyx_k_VLArray__read_array_Problems_rea[] = "VLArray._read_array: Problems reading the array data.";
2473 static const char __pyx_k_VLArray__read_array_error_freein[] = "VLArray._read_array: error freeing the data buffer.";
2474 static const char __pyx_k_ndarray_is_not_Fortran_contiguou[] = "ndarray is not Fortran contiguous";
2475 static const char __pyx_k_numpy_core_umath_failed_to_impor[] = "numpy.core.umath failed to import";
2476 static const char __pyx_k_self_dims_cannot_be_converted_to[] = "self.dims cannot be converted to a Python object for pickling";
2477 static const char __pyx_k_self_dims_self_dims_chunk_self_m[] = "self.dims,self.dims_chunk,self.maxdims cannot be converted to a Python object for pickling";
2478 static const char __pyx_k_unable_to_retrieve_the_user_bloc[] = "unable to retrieve the user block size";
2479 static const char __pyx_k_Problems_creating_the_s_invalid_2[] = "Problems creating the %s: invalid base type ID for atom %s";
2480 static const char __pyx_k_Attribute_s_exists_in_node_s_but_2[] = "Attribute '%s' exists in node '%s', but cannot be deleted.";
2481 static const char __pyx_k_Format_string_allocated_too_shor_2[] = "Format string allocated too short.";
2482 static PyObject *__pyx_kp_b_;
2483 static PyObject *__pyx_kp_s_;
2484 static PyObject *__pyx_kp_u_;
2485 static PyObject *__pyx_n_s_AND;
2486 static PyObject *__pyx_n_s_Array;
2487 static PyObject *__pyx_kp_s_Asking_for_a_range_of_rows_excee;
2488 static PyObject *__pyx_n_s_Atom;
2489 static PyObject *__pyx_n_s_AttributeSet;
2490 static PyObject *__pyx_kp_s_Attribute_s_exists_in_node_s_but;
2491 static PyObject *__pyx_kp_s_Attribute_s_exists_in_node_s_but_2;
2492 static PyObject *__pyx_n_s_CArray;
2493 static PyObject *__pyx_n_s_CHUNK_CACHE_NELMTS;
2494 static PyObject *__pyx_n_s_CHUNK_CACHE_PREEMPT;
2495 static PyObject *__pyx_n_s_CHUNK_CACHE_SIZE;
2496 static PyObject *__pyx_kp_s_Can_t_create_the_group_s;
2497 static PyObject *__pyx_kp_s_Can_t_get_dims_info_on_attribute;
2498 static PyObject *__pyx_kp_s_Can_t_get_type_info_on_attribute;
2499 static PyObject *__pyx_kp_s_Can_t_open_the_group_s;
2500 static PyObject *__pyx_kp_s_Can_t_read_attribute_s_in_node_s;
2501 static PyObject *__pyx_kp_s_Can_t_set_attribute_s_in_node_s;
2502 static PyObject *__pyx_kp_s_Cannot_append_to_the_reference_t;
2503 static PyObject *__pyx_kp_s_Cannot_write_reference_types_yet;
2504 static PyObject *__pyx_kp_s_Could_not_get_dataset_creation_p;
2505 static PyObject *__pyx_kp_s_Could_not_get_dataset_track_time;
2506 static PyObject *__pyx_n_s_DRIVER;
2507 static PyObject *__pyx_n_s_DRIVER_CORE_BACKING_STORE;
2508 static PyObject *__pyx_n_s_DRIVER_CORE_IMAGE;
2509 static PyObject *__pyx_n_s_DRIVER_CORE_INCREMENT;
2510 static PyObject *__pyx_n_s_DRIVER_DIRECT_ALIGNMENT;
2511 static PyObject *__pyx_n_s_DRIVER_DIRECT_BLOCK_SIZE;
2512 static PyObject *__pyx_n_s_DRIVER_DIRECT_CBUF_SIZE;
2513 static PyObject *__pyx_n_s_DRIVER_SPLIT_META_EXT;
2514 static PyObject *__pyx_n_s_DRIVER_SPLIT_RAW_EXT;
2515 static PyObject *__pyx_n_s_DataTypeWarning;
2516 static PyObject *__pyx_n_s_EArray;
2517 static PyObject *__pyx_n_s_ExternalLink;
2518 static PyObject *__pyx_n_s_File;
2519 static PyObject *__pyx_kp_u_Format_string_allocated_too_shor;
2520 static PyObject *__pyx_kp_u_Format_string_allocated_too_shor_2;
2521 static PyObject *__pyx_n_s_Group;
2522 static PyObject *__pyx_n_s_H5FD_CORE;
2523 static PyObject *__pyx_n_s_H5FD_DIRECT;
2524 static PyObject *__pyx_n_s_H5FD_SEC2;
2525 static PyObject *__pyx_n_s_H5FD_SPLIT;
2526 static PyObject *__pyx_n_s_H5FD_STDIO;
2527 static PyObject *__pyx_n_s_H5FD_WINDOWS;
2528 static PyObject *__pyx_n_s_HAVE_DIRECT_DRIVER;
2529 static PyObject *__pyx_n_s_HAVE_WINDOWS_DRIVER;
2530 static PyObject *__pyx_n_s_HDF5ExtError;
2531 static PyObject *__pyx_n_s_ImportError;
2532 static PyObject *__pyx_kp_s_Incompatible_checksums_s_vs_0x13;
2533 static PyObject *__pyx_kp_s_Incompatible_checksums_s_vs_0x38;
2534 static PyObject *__pyx_kp_s_Incompatible_checksums_s_vs_0xb0;
2535 static PyObject *__pyx_kp_s_Incompatible_checksums_s_vs_0xfb;
2536 static PyObject *__pyx_kp_s_Internal_error_modifying_the_ele;
2537 static PyObject *__pyx_kp_s_Invalid_dataset_id_s;
2538 static PyObject *__pyx_kp_s_Invalid_or_not_supported_driver;
2539 static PyObject *__pyx_n_s_Leaf;
2540 static PyObject *__pyx_n_s_MAX_BLOSC_THREADS;
2541 static PyObject *__pyx_n_s_METADATA_CACHE_SIZE;
2542 static PyObject *__pyx_n_s_NOTB;
2543 static PyObject *__pyx_n_s_NamedType;
2544 static PyObject *__pyx_n_s_NoSuchNode;
2545 static PyObject *__pyx_n_s_Node;
2546 static PyObject *__pyx_kp_s_Non_existing_node_s_under_s;
2547 static PyObject *__pyx_kp_u_Non_native_byte_order_not_suppor;
2548 static PyObject *__pyx_n_s_O8;
2549 static PyObject *__pyx_n_s_ObjInfo;
2550 static PyObject *__pyx_n_s_ObjTimestamps;
2551 static PyObject *__pyx_n_s_PYTABLES_SYS_ATTRS;
2552 static PyObject *__pyx_n_s_PickleError;
2553 static PyObject *__pyx_kp_s_Problems_appending_the_elements;
2554 static PyObject *__pyx_kp_s_Problems_appending_the_records;
2555 static PyObject *__pyx_kp_s_Problems_closing_the_Group_s;
2556 static PyObject *__pyx_kp_s_Problems_closing_the_file_s;
2557 static PyObject *__pyx_kp_s_Problems_creating_the_VLArray;
2558 static PyObject *__pyx_kp_s_Problems_creating_the_s;
2559 static PyObject *__pyx_kp_s_Problems_creating_the_s_invalid;
2560 static PyObject *__pyx_kp_s_Problems_creating_the_s_invalid_2;
2561 static PyObject *__pyx_kp_s_Problems_getting_file_descriptor;
2562 static PyObject *__pyx_kp_s_Problems_getting_ndims;
2563 static PyObject *__pyx_kp_s_Problems_modifying_the_record;
2564 static PyObject *__pyx_kp_s_Problems_moving_the_node_s_to_s;
2565 static PyObject *__pyx_kp_s_Problems_reading_the_array_data;
2566 static PyObject *__pyx_kp_s_Problems_truncating_the_leaf_s;
2567 static PyObject *__pyx_kp_s_Problems_writing_the_array_data;
2568 static PyObject *__pyx_n_s_RuntimeError;
2569 static PyObject *__pyx_n_s_S;
2570 static PyObject *__pyx_kp_s_S_s;
2571 static PyObject *__pyx_n_s_SizeType;
2572 static PyObject *__pyx_n_s_SoftLink;
2573 static PyObject *__pyx_kp_s_Support_for_image_files_is_only;
2574 static PyObject *__pyx_n_s_Table;
2575 static PyObject *__pyx_kp_s_The_DRIVER_CORE_IMAGE_must_be_a;
2576 static PyObject *__pyx_kp_s_The_DRIVER_CORE_IMAGE_parameter;
2577 static PyObject *__pyx_kp_s_The_H5FD_DIRECT_driver_is_not_av;
2578 static PyObject *__pyx_kp_s_The_H5FD_WINDOWS_driver_is_not_a;
2579 static PyObject *__pyx_kp_s_The_HDF5_file_already_esists_the;
2580 static PyObject *__pyx_kp_s_The_USER_BLOCK_SIZE_must_be_a_po;
2581 static PyObject *__pyx_n_s_TypeError;
2582 static PyObject *__pyx_n_s_U;
2583 static PyObject *__pyx_n_s_USER_BLOCK_SIZE;
2584 static PyObject *__pyx_n_s_UnImplemented;
2585 static PyObject *__pyx_kp_s_Unable_to_allecote_meomory_fir_t;
2586 static PyObject *__pyx_kp_s_Unable_to_get_array_info;
2587 static PyObject *__pyx_kp_s_Unable_to_get_object_info_for_s;
2588 static PyObject *__pyx_kp_s_Unable_to_get_the_creation_prope;
2589 static PyObject *__pyx_kp_s_Unable_to_open_create_file_s;
2590 static PyObject *__pyx_kp_s_Unable_to_retrieve_the_HDF5_file;
2591 static PyObject *__pyx_kp_s_Unable_to_retrieve_the_file_imag;
2592 static PyObject *__pyx_kp_s_Unable_to_retrieve_the_size_of_t;
2593 static PyObject *__pyx_kp_s_Unable_to_set_the_file_access_pr;
2594 static PyObject *__pyx_kp_s_Unable_to_set_the_file_image;
2595 static PyObject *__pyx_kp_s_Unable_to_set_the_user_block_siz;
2596 static PyObject *__pyx_kp_s_Unexpected_classname_s;
2597 static PyObject *__pyx_n_s_Unknown;
2598 static PyObject *__pyx_kp_s_Unsupported_type_for_attribute_s;
2599 static PyObject *__pyx_n_s_V;
2600 static PyObject *__pyx_n_s_VLArray;
2601 static PyObject *__pyx_kp_s_VLArray__read_array_Problems_rea;
2602 static PyObject *__pyx_kp_s_VLArray__read_array_error_freein;
2603 static PyObject *__pyx_n_s_ValueError;
2604 static PyObject *__pyx_kp_b__2;
2605 static PyObject *__pyx_n_s_a;
2606 static PyObject *__pyx_n_s_addr;
2607 static PyObject *__pyx_kp_s_an_invalid_mode_string_s_passed;
2608 static PyObject *__pyx_n_s_append;
2609 static PyObject *__pyx_n_s_array;
2610 static PyObject *__pyx_n_s_astype;
2611 static PyObject *__pyx_n_s_atime;
2612 static PyObject *__pyx_n_s_atom;
2613 static PyObject *__pyx_n_s_atom_from_hdf5_type;
2614 static PyObject *__pyx_n_s_atom_to_hdf5_type;
2615 static PyObject *__pyx_n_s_atomicdtype;
2616 static PyObject *__pyx_n_s_atomicshape;
2617 static PyObject *__pyx_n_s_atomicsize;
2618 static PyObject *__pyx_n_s_atomictype;
2619 static PyObject *__pyx_n_s_attr_name;
2620 static PyObject *__pyx_n_s_attrname;
2621 static PyObject *__pyx_n_s_b;
2622 static PyObject *__pyx_n_s_b1;
2623 static PyObject *__pyx_n_s_base;
2624 static PyObject *__pyx_n_s_btime;
2625 static PyObject *__pyx_n_s_buffer;
2626 static PyObject *__pyx_n_s_byteorder;
2627 static PyObject *__pyx_n_s_byteorders;
2628 static PyObject *__pyx_n_s_bytes;
2629 static PyObject *__pyx_n_s_byteswap;
2630 static PyObject *__pyx_n_s_c;
2631 static PyObject *__pyx_n_s_cPickle;
2632 static PyObject *__pyx_n_s_c_classid;
2633 static PyObject *__pyx_n_s_check_file_access;
2634 static PyObject *__pyx_n_s_chunkshape;
2635 static PyObject *__pyx_n_s_class;
2636 static PyObject *__pyx_n_s_cline_in_traceback;
2637 static PyObject *__pyx_n_s_collections;
2638 static PyObject *__pyx_n_s_complevel;
2639 static PyObject *__pyx_n_s_complib;
2640 static PyObject *__pyx_n_s_coords;
2641 static PyObject *__pyx_n_s_copy;
2642 static PyObject *__pyx_n_s_correct_byteorder;
2643 static PyObject *__pyx_n_s_count;
2644 static PyObject *__pyx_n_s_countl;
2645 static PyObject *__pyx_n_s_create_nested_type;
2646 static PyObject *__pyx_n_s_ctime;
2647 static PyObject *__pyx_n_s_descr_from_dtype;
2648 static PyObject *__pyx_n_s_dflt;
2649 static PyObject *__pyx_n_s_dict;
2650 static PyObject *__pyx_n_s_dtype;
2651 static PyObject *__pyx_n_s_dumps;
2652 static PyObject *__pyx_n_s_empty;
2653 static PyObject *__pyx_n_s_encode;
2654 static PyObject *__pyx_n_s_encode_filename;
2655 static PyObject *__pyx_n_s_enumerate;
2656 static PyObject *__pyx_n_s_exists;
2657 static PyObject *__pyx_n_s_extdim;
2658 static PyObject *__pyx_n_s_f;
2659 static PyObject *__pyx_kp_s_f_s;
2660 static PyObject *__pyx_n_s_filters;
2661 static PyObject *__pyx_n_s_flags;
2662 static PyObject *__pyx_n_s_fletcher32;
2663 static PyObject *__pyx_n_s_flush;
2664 static PyObject *__pyx_n_s_from_dtype;
2665 static PyObject *__pyx_n_s_g_new;
2666 static PyObject *__pyx_n_s_generic;
2667 static PyObject *__pyx_n_s_get;
2668 static PyObject *__pyx_n_s_getstate;
2669 static PyObject *__pyx_n_s_group_name;
2670 static PyObject *__pyx_n_s_h5bt;
2671 static PyObject *__pyx_n_s_hdf5_class_to_string;
2672 static PyObject *__pyx_n_s_hdf5_to_np_ext_type;
2673 static PyObject *__pyx_n_s_i;
2674 static PyObject *__pyx_n_s_i8;
2675 static PyObject *__pyx_kp_s_i_s;
2676 static PyObject *__pyx_n_s_idx;
2677 static PyObject *__pyx_n_s_import;
2678 static PyObject *__pyx_n_s_init;
2679 static PyObject *__pyx_n_s_insert;
2680 static PyObject *__pyx_n_s_int32;
2681 static PyObject *__pyx_n_s_intp;
2682 static PyObject *__pyx_n_s_isPTFile;
2683 static PyObject *__pyx_n_s_kind;
2684 static PyObject *__pyx_n_s_leaf_name;
2685 static PyObject *__pyx_kp_s_m_h5;
2686 static PyObject *__pyx_n_s_main;
2687 static PyObject *__pyx_n_s_maindim;
2688 static PyObject *__pyx_n_s_map;
2689 static PyObject *__pyx_n_s_mode;
2690 static PyObject *__pyx_n_s_mtime;
2691 static PyObject *__pyx_n_s_name;
2692 static PyObject *__pyx_n_s_name_2;
2693 static PyObject *__pyx_n_s_namedtuple;
2694 static PyObject *__pyx_n_s_ndarray;
2695 static PyObject *__pyx_kp_u_ndarray_is_not_C_contiguous;
2696 static PyObject *__pyx_kp_u_ndarray_is_not_Fortran_contiguou;
2697 static PyObject *__pyx_n_s_new;
2698 static PyObject *__pyx_n_s_newname;
2699 static PyObject *__pyx_n_s_newparent;
2700 static PyObject *__pyx_n_s_newpathname;
2701 static PyObject *__pyx_n_s_nobjects;
2702 static PyObject *__pyx_n_s_node;
2703 static PyObject *__pyx_n_s_nparr;
2704 static PyObject *__pyx_n_s_npext_prefixes_to_ptkinds;
2705 static PyObject *__pyx_n_s_nrow;
2706 static PyObject *__pyx_n_s_nrows;
2707 static PyObject *__pyx_n_s_numpy;
2708 static PyObject *__pyx_kp_s_numpy_core_multiarray_failed_to;
2709 static PyObject *__pyx_kp_s_numpy_core_umath_failed_to_impor;
2710 static PyObject *__pyx_n_s_object;
2711 static PyObject *__pyx_n_s_oldname;
2712 static PyObject *__pyx_n_s_oldparent;
2713 static PyObject *__pyx_n_s_oldpathname;
2714 static PyObject *__pyx_n_s_os;
2715 static PyObject *__pyx_n_s_params;
2716 static PyObject *__pyx_n_s_path;
2717 static PyObject *__pyx_n_s_perform_selection;
2718 static PyObject *__pyx_n_s_pickle;
2719 static PyObject *__pyx_n_s_platform_byteorder;
2720 static PyObject *__pyx_kp_s_problems_deleting_the_node_s;
2721 static PyObject *__pyx_n_s_pt_special_kinds;
2722 static PyObject *__pyx_n_s_ptparams;
2723 static PyObject *__pyx_n_s_pttype_to_hdf5;
2724 static PyObject *__pyx_n_s_pure_numpy_types;
2725 static PyObject *__pyx_n_s_pymode;
2726 static PyObject *__pyx_n_s_pyx_PickleError;
2727 static PyObject *__pyx_n_s_pyx_checksum;
2728 static PyObject *__pyx_n_s_pyx_result;
2729 static PyObject *__pyx_n_s_pyx_state;
2730 static PyObject *__pyx_n_s_pyx_type;
2731 static PyObject *__pyx_n_s_pyx_unpickle_AttributeSet;
2732 static PyObject *__pyx_n_s_pyx_unpickle_File;
2733 static PyObject *__pyx_n_s_pyx_unpickle_Group;
2734 static PyObject *__pyx_n_s_pyx_unpickle_Node;
2735 static PyObject *__pyx_n_s_pyx_vtable;
2736 static PyObject *__pyx_n_s_r;
2737 static PyObject *__pyx_kp_s_r_2;
2738 static PyObject *__pyx_kp_s_r_h5;
2739 static PyObject *__pyx_n_s_range;
2740 static PyObject *__pyx_n_s_rc;
2741 static PyObject *__pyx_n_s_reduce;
2742 static PyObject *__pyx_n_s_reduce_cython;
2743 static PyObject *__pyx_n_s_reduce_ex;
2744 static PyObject *__pyx_n_s_reference;
2745 static PyObject *__pyx_n_s_rstrip;
2746 static PyObject *__pyx_kp_s_s;
2747 static PyObject *__pyx_n_s_selection;
2748 static PyObject *__pyx_kp_s_self_dims_cannot_be_converted_to;
2749 static PyObject *__pyx_kp_s_self_dims_self_dims_chunk_self_m;
2750 static PyObject *__pyx_n_s_set_blosc_max_threads;
2751 static PyObject *__pyx_n_s_setstate;
2752 static PyObject *__pyx_n_s_setstate_cython;
2753 static PyObject *__pyx_n_s_shape;
2754 static PyObject *__pyx_n_s_shuffle_bitshuffle;
2755 static PyObject *__pyx_n_s_size;
2756 static PyObject *__pyx_n_s_space_id;
2757 static PyObject *__pyx_n_s_start;
2758 static PyObject *__pyx_n_s_startl;
2759 static PyObject *__pyx_n_s_step;
2760 static PyObject *__pyx_n_s_stepl;
2761 static PyObject *__pyx_n_s_stop;
2762 static PyObject *__pyx_n_s_stopl;
2763 static PyObject *__pyx_n_s_strides;
2764 static PyObject *__pyx_kp_s_stringsource;
2765 static PyObject *__pyx_n_s_sum;
2766 static PyObject *__pyx_n_s_super;
2767 static PyObject *__pyx_n_s_supported_drivers;
2768 static PyObject *__pyx_n_s_tables_atom;
2769 static PyObject *__pyx_n_s_tables_description;
2770 static PyObject *__pyx_n_s_tables_exceptions;
2771 static PyObject *__pyx_n_s_tables_hdf5extension;
2772 static PyObject *__pyx_n_s_tables_utils;
2773 static PyObject *__pyx_n_s_tables_utilsextension;
2774 static PyObject *__pyx_n_s_test;
2775 static PyObject *__pyx_n_s_time;
2776 static PyObject *__pyx_n_s_time64;
2777 static PyObject *__pyx_n_s_title;
2778 static PyObject *__pyx_n_s_type;
2779 static PyObject *__pyx_n_s_u;
2780 static PyObject *__pyx_kp_s_u_s;
2781 static PyObject *__pyx_kp_s_unable_to_retrieve_the_user_bloc;
2782 static PyObject *__pyx_n_s_unicode;
2783 static PyObject *__pyx_kp_u_unknown_dtype_code_in_numpy_pxd;
2784 static PyObject *__pyx_n_s_update;
2785 static PyObject *__pyx_kp_s_utf_8;
2786 static PyObject *__pyx_n_s_v_dtype;
2787 static PyObject *__pyx_n_s_v_file;
2788 static PyObject *__pyx_n_s_v_name;
2789 static PyObject *__pyx_n_s_v_new;
2790 static PyObject *__pyx_n_s_v_node;
2791 static PyObject *__pyx_n_s_v_objectid;
2792 static PyObject *__pyx_n_s_v_parent;
2793 static PyObject *__pyx_n_s_v_pathname;
2794 static PyObject *__pyx_n_s_v_unimplemented;
2795 static PyObject *__pyx_n_s_v_version;
2796 static PyObject *__pyx_n_s_value;
2797 static PyObject *__pyx_kp_s_variable_length_strings_are_not;
2798 static PyObject *__pyx_n_s_w;
2799 static PyObject *__pyx_n_s_want_track_times;
2800 static PyObject *__pyx_n_s_warn;
2801 static PyObject *__pyx_n_s_warnings;
2802 static PyObject *__pyx_n_s_where;
2803 static PyObject *__pyx_n_s_writeable;
2804 static PyObject *__pyx_n_s_zeros;
2805 static PyObject *__pyx_pf_6tables_13hdf5extension_4File__g_new(struct __pyx_obj_6tables_13hdf5extension_File *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_pymode, PyObject *__pyx_v_params); /* proto */
2806 static PyObject *__pyx_pf_6tables_13hdf5extension_4File_2get_file_image(struct __pyx_obj_6tables_13hdf5extension_File *__pyx_v_self); /* proto */
2807 static PyObject *__pyx_pf_6tables_13hdf5extension_4File_4get_filesize(struct __pyx_obj_6tables_13hdf5extension_File *__pyx_v_self); /* proto */
2808 static PyObject *__pyx_pf_6tables_13hdf5extension_4File_6get_userblock_size(struct __pyx_obj_6tables_13hdf5extension_File *__pyx_v_self); /* proto */
2809 static PyObject *__pyx_pf_6tables_13hdf5extension_4File_8_get_file_id(struct __pyx_obj_6tables_13hdf5extension_File *__pyx_v_self); /* proto */
2810 static PyObject *__pyx_pf_6tables_13hdf5extension_4File_10fileno(struct __pyx_obj_6tables_13hdf5extension_File *__pyx_v_self); /* proto */
2811 static PyObject *__pyx_pf_6tables_13hdf5extension_4File_12_flush_file(struct __pyx_obj_6tables_13hdf5extension_File *__pyx_v_self, PyObject *__pyx_v_scope); /* proto */
2812 static PyObject *__pyx_pf_6tables_13hdf5extension_4File_14_close_file(struct __pyx_obj_6tables_13hdf5extension_File *__pyx_v_self); /* proto */
2813 static void __pyx_pf_6tables_13hdf5extension_4File_16__dealloc__(struct __pyx_obj_6tables_13hdf5extension_File *__pyx_v_self); /* proto */
2814 static PyObject *__pyx_pf_6tables_13hdf5extension_4File_18__reduce_cython__(struct __pyx_obj_6tables_13hdf5extension_File *__pyx_v_self); /* proto */
2815 static PyObject *__pyx_pf_6tables_13hdf5extension_4File_20__setstate_cython__(struct __pyx_obj_6tables_13hdf5extension_File *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
2816 static PyObject *__pyx_pf_6tables_13hdf5extension_12AttributeSet__g_new(struct __pyx_obj_6tables_13hdf5extension_AttributeSet *__pyx_v_self, PyObject *__pyx_v_node); /* proto */
2817 static PyObject *__pyx_pf_6tables_13hdf5extension_12AttributeSet_2_g_list_attr(CYTHON_UNUSED struct __pyx_obj_6tables_13hdf5extension_AttributeSet *__pyx_v_self, PyObject *__pyx_v_node); /* proto */
2818 static PyObject *__pyx_pf_6tables_13hdf5extension_12AttributeSet_4_g_setattr(struct __pyx_obj_6tables_13hdf5extension_AttributeSet *__pyx_v_self, PyObject *__pyx_v_node, PyObject *__pyx_v_name, PyObject *__pyx_v_value); /* proto */
2819 static PyObject *__pyx_pf_6tables_13hdf5extension_12AttributeSet_6_g_getattr(struct __pyx_obj_6tables_13hdf5extension_AttributeSet *__pyx_v_self, PyObject *__pyx_v_node, PyObject *__pyx_v_attrname); /* proto */
2820 static PyObject *__pyx_pf_6tables_13hdf5extension_12AttributeSet_8_g_remove(struct __pyx_obj_6tables_13hdf5extension_AttributeSet *__pyx_v_self, PyObject *__pyx_v_node, PyObject *__pyx_v_attrname); /* proto */
2821 static PyObject *__pyx_pf_6tables_13hdf5extension_12AttributeSet_10__reduce_cython__(struct __pyx_obj_6tables_13hdf5extension_AttributeSet *__pyx_v_self); /* proto */
2822 static PyObject *__pyx_pf_6tables_13hdf5extension_12AttributeSet_12__setstate_cython__(struct __pyx_obj_6tables_13hdf5extension_AttributeSet *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
2823 static PyObject *__pyx_pf_6tables_13hdf5extension_4Node__g_new(struct __pyx_obj_6tables_13hdf5extension_Node *__pyx_v_self, PyObject *__pyx_v_where, PyObject *__pyx_v_name, CYTHON_UNUSED PyObject *__pyx_v_init); /* proto */
2824 static PyObject *__pyx_pf_6tables_13hdf5extension_4Node_2_g_delete(struct __pyx_obj_6tables_13hdf5extension_Node *__pyx_v_self, PyObject *__pyx_v_parent); /* proto */
2825 static void __pyx_pf_6tables_13hdf5extension_4Node_4__dealloc__(struct __pyx_obj_6tables_13hdf5extension_Node *__pyx_v_self); /* proto */
2826 static PyObject *__pyx_pf_6tables_13hdf5extension_4Node_6_get_obj_info(struct __pyx_obj_6tables_13hdf5extension_Node *__pyx_v_self); /* proto */
2827 static PyObject *__pyx_pf_6tables_13hdf5extension_4Node_8_get_obj_timestamps(struct __pyx_obj_6tables_13hdf5extension_Node *__pyx_v_self); /* proto */
2828 static PyObject *__pyx_pf_6tables_13hdf5extension_4Node_10__reduce_cython__(struct __pyx_obj_6tables_13hdf5extension_Node *__pyx_v_self); /* proto */
2829 static PyObject *__pyx_pf_6tables_13hdf5extension_4Node_12__setstate_cython__(struct __pyx_obj_6tables_13hdf5extension_Node *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
2830 static PyObject *__pyx_pf_6tables_13hdf5extension_5Group__g_create(struct __pyx_obj_6tables_13hdf5extension_Group *__pyx_v_self); /* proto */
2831 static PyObject *__pyx_pf_6tables_13hdf5extension_5Group_2_g_open(struct __pyx_obj_6tables_13hdf5extension_Group *__pyx_v_self); /* proto */
2832 static PyObject *__pyx_pf_6tables_13hdf5extension_5Group_4_g_get_objinfo(struct __pyx_obj_6tables_13hdf5extension_Group *__pyx_v_self, PyObject *__pyx_v_h5name); /* proto */
2833 static PyObject *__pyx_pf_6tables_13hdf5extension_5Group_6_g_list_group(struct __pyx_obj_6tables_13hdf5extension_Group *__pyx_v_self, PyObject *__pyx_v_parent); /* proto */
2834 static PyObject *__pyx_pf_6tables_13hdf5extension_5Group_8_g_get_gchild_attr(struct __pyx_obj_6tables_13hdf5extension_Group *__pyx_v_self, PyObject *__pyx_v_group_name, PyObject *__pyx_v_attr_name); /* proto */
2835 static PyObject *__pyx_pf_6tables_13hdf5extension_5Group_10_g_get_lchild_attr(struct __pyx_obj_6tables_13hdf5extension_Group *__pyx_v_self, PyObject *__pyx_v_leaf_name, PyObject *__pyx_v_attr_name); /* proto */
2836 static PyObject *__pyx_pf_6tables_13hdf5extension_5Group_12_g_flush_group(struct __pyx_obj_6tables_13hdf5extension_Group *__pyx_v_self); /* proto */
2837 static PyObject *__pyx_pf_6tables_13hdf5extension_5Group_14_g_close_group(struct __pyx_obj_6tables_13hdf5extension_Group *__pyx_v_self); /* proto */
2838 static PyObject *__pyx_pf_6tables_13hdf5extension_5Group_16_g_move_node(CYTHON_UNUSED struct __pyx_obj_6tables_13hdf5extension_Group *__pyx_v_self, hid_t __pyx_v_oldparent, PyObject *__pyx_v_oldname, hid_t __pyx_v_newparent, PyObject *__pyx_v_newname, PyObject *__pyx_v_oldpathname, PyObject *__pyx_v_newpathname); /* proto */
2839 static PyObject *__pyx_pf_6tables_13hdf5extension_5Group_18__reduce_cython__(struct __pyx_obj_6tables_13hdf5extension_Group *__pyx_v_self); /* proto */
2840 static PyObject *__pyx_pf_6tables_13hdf5extension_5Group_20__setstate_cython__(struct __pyx_obj_6tables_13hdf5extension_Group *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
2841 static PyObject *__pyx_pf_6tables_13hdf5extension_4Leaf__get_storage_size(struct __pyx_obj_6tables_13hdf5extension_Leaf *__pyx_v_self); /* proto */
2842 static PyObject *__pyx_pf_6tables_13hdf5extension_4Leaf_2_get_obj_track_times(struct __pyx_obj_6tables_13hdf5extension_Leaf *__pyx_v_self); /* proto */
2843 static PyObject *__pyx_pf_6tables_13hdf5extension_4Leaf_4_g_new(struct __pyx_obj_6tables_13hdf5extension_Leaf *__pyx_v_self, PyObject *__pyx_v_where, PyObject *__pyx_v_name, PyObject *__pyx_v_init); /* proto */
2844 static PyObject *__pyx_pf_6tables_13hdf5extension_4Leaf_6_g_truncate(struct __pyx_obj_6tables_13hdf5extension_Leaf *__pyx_v_self, hsize_t __pyx_v_size); /* proto */
2845 static PyObject *__pyx_pf_6tables_13hdf5extension_4Leaf_8_g_flush(struct __pyx_obj_6tables_13hdf5extension_Leaf *__pyx_v_self); /* proto */
2846 static PyObject *__pyx_pf_6tables_13hdf5extension_4Leaf_10_g_close(struct __pyx_obj_6tables_13hdf5extension_Leaf *__pyx_v_self); /* proto */
2847 static PyObject *__pyx_pf_6tables_13hdf5extension_4Leaf_12__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_6tables_13hdf5extension_Leaf *__pyx_v_self); /* proto */
2848 static PyObject *__pyx_pf_6tables_13hdf5extension_4Leaf_14__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_6tables_13hdf5extension_Leaf *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
2849 static PyObject *__pyx_pf_6tables_13hdf5extension_5Array__create_array(struct __pyx_obj_6tables_13hdf5extension_Array *__pyx_v_self, PyArrayObject *__pyx_v_nparr, PyObject *__pyx_v_title, PyObject *__pyx_v_atom); /* proto */
2850 static PyObject *__pyx_pf_6tables_13hdf5extension_5Array_2_create_carray(struct __pyx_obj_6tables_13hdf5extension_Array *__pyx_v_self, PyObject *__pyx_v_title); /* proto */
2851 static PyObject *__pyx_pf_6tables_13hdf5extension_5Array_4_open_array(struct __pyx_obj_6tables_13hdf5extension_Array *__pyx_v_self); /* proto */
2852 static PyObject *__pyx_pf_6tables_13hdf5extension_5Array_6_append(struct __pyx_obj_6tables_13hdf5extension_Array *__pyx_v_self, PyArrayObject *__pyx_v_nparr); /* proto */
2853 static PyObject *__pyx_pf_6tables_13hdf5extension_5Array_8_read_array(struct __pyx_obj_6tables_13hdf5extension_Array *__pyx_v_self, hsize_t __pyx_v_start, hsize_t __pyx_v_stop, hsize_t __pyx_v_step, PyArrayObject *__pyx_v_nparr); /* proto */
2854 static PyObject *__pyx_pf_6tables_13hdf5extension_5Array_10_g_read_slice(struct __pyx_obj_6tables_13hdf5extension_Array *__pyx_v_self, PyArrayObject *__pyx_v_startl, PyArrayObject *__pyx_v_stopl, PyArrayObject *__pyx_v_stepl, PyArrayObject *__pyx_v_nparr); /* proto */
2855 static PyObject *__pyx_pf_6tables_13hdf5extension_5Array_12_g_read_coords(struct __pyx_obj_6tables_13hdf5extension_Array *__pyx_v_self, PyArrayObject *__pyx_v_coords, PyArrayObject *__pyx_v_nparr); /* proto */
2856 static PyObject *__pyx_pf_6tables_13hdf5extension_5Array_14perform_selection(struct __pyx_obj_6tables_13hdf5extension_Array *__pyx_v_self, PyObject *__pyx_v_space_id, PyObject *__pyx_v_start, PyObject *__pyx_v_count, PyObject *__pyx_v_step, PyObject *__pyx_v_idx, PyObject *__pyx_v_mode); /* proto */
2857 static PyObject *__pyx_pf_6tables_13hdf5extension_5Array_16_g_read_selection(struct __pyx_obj_6tables_13hdf5extension_Array *__pyx_v_self, PyObject *__pyx_v_selection, PyArrayObject *__pyx_v_nparr); /* proto */
2858 static PyObject *__pyx_pf_6tables_13hdf5extension_5Array_18_g_write_slice(struct __pyx_obj_6tables_13hdf5extension_Array *__pyx_v_self, PyArrayObject *__pyx_v_startl, PyArrayObject *__pyx_v_stepl, PyArrayObject *__pyx_v_countl, PyArrayObject *__pyx_v_nparr); /* proto */
2859 static PyObject *__pyx_pf_6tables_13hdf5extension_5Array_20_g_write_coords(struct __pyx_obj_6tables_13hdf5extension_Array *__pyx_v_self, PyArrayObject *__pyx_v_coords, PyArrayObject *__pyx_v_nparr); /* proto */
2860 static PyObject *__pyx_pf_6tables_13hdf5extension_5Array_22_g_write_selection(struct __pyx_obj_6tables_13hdf5extension_Array *__pyx_v_self, PyObject *__pyx_v_selection, PyArrayObject *__pyx_v_nparr); /* proto */
2861 static void __pyx_pf_6tables_13hdf5extension_5Array_24__dealloc__(struct __pyx_obj_6tables_13hdf5extension_Array *__pyx_v_self); /* proto */
2862 static PyObject *__pyx_pf_6tables_13hdf5extension_5Array_26__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_6tables_13hdf5extension_Array *__pyx_v_self); /* proto */
2863 static PyObject *__pyx_pf_6tables_13hdf5extension_5Array_28__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_6tables_13hdf5extension_Array *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
2864 static PyObject *__pyx_pf_6tables_13hdf5extension_7VLArray__create_array(struct __pyx_obj_6tables_13hdf5extension_VLArray *__pyx_v_self, PyObject *__pyx_v_title); /* proto */
2865 static PyObject *__pyx_pf_6tables_13hdf5extension_7VLArray_2_open_array(struct __pyx_obj_6tables_13hdf5extension_VLArray *__pyx_v_self); /* proto */
2866 static PyObject *__pyx_pf_6tables_13hdf5extension_7VLArray_4_append(struct __pyx_obj_6tables_13hdf5extension_VLArray *__pyx_v_self, PyArrayObject *__pyx_v_nparr, int __pyx_v_nobjects); /* proto */
2867 static PyObject *__pyx_pf_6tables_13hdf5extension_7VLArray_6_modify(struct __pyx_obj_6tables_13hdf5extension_VLArray *__pyx_v_self, hsize_t __pyx_v_nrow, PyArrayObject *__pyx_v_nparr, int __pyx_v_nobjects); /* proto */
2868 static PyObject *__pyx_pf_6tables_13hdf5extension_7VLArray_8_get_memory_size(struct __pyx_obj_6tables_13hdf5extension_VLArray *__pyx_v_self); /* proto */
2869 static PyObject *__pyx_pf_6tables_13hdf5extension_7VLArray_10_read_array(struct __pyx_obj_6tables_13hdf5extension_VLArray *__pyx_v_self, hsize_t __pyx_v_start, hsize_t __pyx_v_stop, hsize_t __pyx_v_step); /* proto */
2870 static PyObject *__pyx_pf_6tables_13hdf5extension_7VLArray_12get_row_size(struct __pyx_obj_6tables_13hdf5extension_VLArray *__pyx_v_self, PyObject *__pyx_v_row); /* proto */
2871 static PyObject *__pyx_pf_6tables_13hdf5extension_7VLArray_14__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_6tables_13hdf5extension_VLArray *__pyx_v_self); /* proto */
2872 static PyObject *__pyx_pf_6tables_13hdf5extension_7VLArray_16__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_6tables_13hdf5extension_VLArray *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
2873 static PyObject *__pyx_pf_6tables_13hdf5extension_13UnImplemented__open_unimplemented(struct __pyx_obj_6tables_13hdf5extension_UnImplemented *__pyx_v_self); /* proto */
2874 static PyObject *__pyx_pf_6tables_13hdf5extension_13UnImplemented_2_g_close(struct __pyx_obj_6tables_13hdf5extension_UnImplemented *__pyx_v_self); /* proto */
2875 static PyObject *__pyx_pf_6tables_13hdf5extension_13UnImplemented_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_6tables_13hdf5extension_UnImplemented *__pyx_v_self); /* proto */
2876 static PyObject *__pyx_pf_6tables_13hdf5extension_13UnImplemented_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_6tables_13hdf5extension_UnImplemented *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
2877 static PyObject *__pyx_pf_6tables_13hdf5extension___pyx_unpickle_File(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
2878 static PyObject *__pyx_pf_6tables_13hdf5extension_2__pyx_unpickle_AttributeSet(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
2879 static PyObject *__pyx_pf_6tables_13hdf5extension_4__pyx_unpickle_Node(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
2880 static PyObject *__pyx_pf_6tables_13hdf5extension_6__pyx_unpickle_Group(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
2881 static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags); /* proto */
2882 static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_self, Py_buffer *__pyx_v_info); /* proto */
2883 static PyObject *__pyx_tp_new_6tables_13hdf5extension_Node(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
2884 static PyObject *__pyx_tp_new_6tables_13hdf5extension_Leaf(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
2885 static PyObject *__pyx_tp_new_6tables_13hdf5extension_Array(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
2886 static PyObject *__pyx_tp_new_6tables_13hdf5extension_File(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
2887 static PyObject *__pyx_tp_new_6tables_13hdf5extension_AttributeSet(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
2888 static PyObject *__pyx_tp_new_6tables_13hdf5extension_Group(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
2889 static PyObject *__pyx_tp_new_6tables_13hdf5extension_VLArray(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
2890 static PyObject *__pyx_tp_new_6tables_13hdf5extension_UnImplemented(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
2891 static __Pyx_CachedCFunction __pyx_umethod_PyDict_Type_get = {0, &__pyx_n_s_get, 0, 0, 0};
2892 static PyObject *__pyx_int_0;
2893 static PyObject *__pyx_int_1;
2894 static PyObject *__pyx_int_20319231;
2895 static PyObject *__pyx_int_58832569;
2896 static PyObject *__pyx_int_184977713;
2897 static PyObject *__pyx_int_263862829;
2898 static PyObject *__pyx_int_neg_1;
2899 static PyObject *__pyx_tuple__3;
2900 static PyObject *__pyx_tuple__4;
2901 static PyObject *__pyx_tuple__5;
2902 static PyObject *__pyx_tuple__6;
2903 static PyObject *__pyx_tuple__7;
2904 static PyObject *__pyx_tuple__8;
2905 static PyObject *__pyx_tuple__9;
2906 static PyObject *__pyx_tuple__10;
2907 static PyObject *__pyx_tuple__11;
2908 static PyObject *__pyx_tuple__12;
2909 static PyObject *__pyx_tuple__13;
2910 static PyObject *__pyx_tuple__14;
2911 static PyObject *__pyx_tuple__15;
2912 static PyObject *__pyx_tuple__16;
2913 static PyObject *__pyx_tuple__17;
2914 static PyObject *__pyx_tuple__18;
2915 static PyObject *__pyx_tuple__19;
2916 static PyObject *__pyx_tuple__20;
2917 static PyObject *__pyx_tuple__21;
2918 static PyObject *__pyx_tuple__22;
2919 static PyObject *__pyx_tuple__23;
2920 static PyObject *__pyx_tuple__24;
2921 static PyObject *__pyx_tuple__25;
2922 static PyObject *__pyx_tuple__26;
2923 static PyObject *__pyx_tuple__27;
2924 static PyObject *__pyx_tuple__28;
2925 static PyObject *__pyx_tuple__29;
2926 static PyObject *__pyx_tuple__30;
2927 static PyObject *__pyx_tuple__32;
2928 static PyObject *__pyx_tuple__34;
2929 static PyObject *__pyx_tuple__36;
2930 static PyObject *__pyx_codeobj__31;
2931 static PyObject *__pyx_codeobj__33;
2932 static PyObject *__pyx_codeobj__35;
2933 static PyObject *__pyx_codeobj__37;
2934 /* Late includes */
2935 
2936 /* "tables/hdf5extension.pyx":186
2937  * # Helper functions
2938  *
2939  * cdef hsize_t *npy_malloc_dims(int rank, npy_intp *pdims):             # <<<<<<<<<<<<<<
2940  *   """Returns a malloced hsize_t dims from a npy_intp *pdims."""
2941  *
2942  */
2943 
__pyx_f_6tables_13hdf5extension_npy_malloc_dims(int __pyx_v_rank,npy_intp * __pyx_v_pdims)2944 static hsize_t *__pyx_f_6tables_13hdf5extension_npy_malloc_dims(int __pyx_v_rank, npy_intp *__pyx_v_pdims) {
2945   int __pyx_v_i;
2946   hsize_t *__pyx_v_dims;
2947   hsize_t *__pyx_r;
2948   __Pyx_RefNannyDeclarations
2949   int __pyx_t_1;
2950   int __pyx_t_2;
2951   __Pyx_RefNannySetupContext("npy_malloc_dims", 0);
2952 
2953   /* "tables/hdf5extension.pyx":192
2954  *   cdef hsize_t *dims
2955  *
2956  *   dims = NULL             # <<<<<<<<<<<<<<
2957  *   if rank > 0:
2958  *     dims = <hsize_t *>malloc(rank * sizeof(hsize_t))
2959  */
2960   __pyx_v_dims = NULL;
2961 
2962   /* "tables/hdf5extension.pyx":193
2963  *
2964  *   dims = NULL
2965  *   if rank > 0:             # <<<<<<<<<<<<<<
2966  *     dims = <hsize_t *>malloc(rank * sizeof(hsize_t))
2967  *     for i from 0 <= i < rank:
2968  */
2969   __pyx_t_1 = ((__pyx_v_rank > 0) != 0);
2970   if (__pyx_t_1) {
2971 
2972     /* "tables/hdf5extension.pyx":194
2973  *   dims = NULL
2974  *   if rank > 0:
2975  *     dims = <hsize_t *>malloc(rank * sizeof(hsize_t))             # <<<<<<<<<<<<<<
2976  *     for i from 0 <= i < rank:
2977  *       dims[i] = pdims[i]
2978  */
2979     __pyx_v_dims = ((hsize_t *)malloc((__pyx_v_rank * (sizeof(hsize_t)))));
2980 
2981     /* "tables/hdf5extension.pyx":195
2982  *   if rank > 0:
2983  *     dims = <hsize_t *>malloc(rank * sizeof(hsize_t))
2984  *     for i from 0 <= i < rank:             # <<<<<<<<<<<<<<
2985  *       dims[i] = pdims[i]
2986  *   return dims
2987  */
2988     __pyx_t_2 = __pyx_v_rank;
2989     for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_2; __pyx_v_i++) {
2990 
2991       /* "tables/hdf5extension.pyx":196
2992  *     dims = <hsize_t *>malloc(rank * sizeof(hsize_t))
2993  *     for i from 0 <= i < rank:
2994  *       dims[i] = pdims[i]             # <<<<<<<<<<<<<<
2995  *   return dims
2996  *
2997  */
2998       (__pyx_v_dims[__pyx_v_i]) = (__pyx_v_pdims[__pyx_v_i]);
2999     }
3000 
3001     /* "tables/hdf5extension.pyx":193
3002  *
3003  *   dims = NULL
3004  *   if rank > 0:             # <<<<<<<<<<<<<<
3005  *     dims = <hsize_t *>malloc(rank * sizeof(hsize_t))
3006  *     for i from 0 <= i < rank:
3007  */
3008   }
3009 
3010   /* "tables/hdf5extension.pyx":197
3011  *     for i from 0 <= i < rank:
3012  *       dims[i] = pdims[i]
3013  *   return dims             # <<<<<<<<<<<<<<
3014  *
3015  *
3016  */
3017   __pyx_r = __pyx_v_dims;
3018   goto __pyx_L0;
3019 
3020   /* "tables/hdf5extension.pyx":186
3021  * # Helper functions
3022  *
3023  * cdef hsize_t *npy_malloc_dims(int rank, npy_intp *pdims):             # <<<<<<<<<<<<<<
3024  *   """Returns a malloced hsize_t dims from a npy_intp *pdims."""
3025  *
3026  */
3027 
3028   /* function exit code */
3029   __pyx_L0:;
3030   __Pyx_RefNannyFinishContext();
3031   return __pyx_r;
3032 }
3033 
3034 /* "tables/hdf5extension.pyx":200
3035  *
3036  *
3037  * cdef object getshape(int rank, hsize_t *dims):             # <<<<<<<<<<<<<<
3038  *   """Return a shape (tuple) from a dims C array of rank dimensions."""
3039  *
3040  */
3041 
__pyx_f_6tables_13hdf5extension_getshape(int __pyx_v_rank,hsize_t * __pyx_v_dims)3042 static PyObject *__pyx_f_6tables_13hdf5extension_getshape(int __pyx_v_rank, hsize_t *__pyx_v_dims) {
3043   int __pyx_v_i;
3044   PyObject *__pyx_v_shape = 0;
3045   PyObject *__pyx_r = NULL;
3046   __Pyx_RefNannyDeclarations
3047   PyObject *__pyx_t_1 = NULL;
3048   int __pyx_t_2;
3049   PyObject *__pyx_t_3 = NULL;
3050   PyObject *__pyx_t_4 = NULL;
3051   PyObject *__pyx_t_5 = NULL;
3052   int __pyx_t_6;
3053   __Pyx_RefNannySetupContext("getshape", 0);
3054 
3055   /* "tables/hdf5extension.pyx":206
3056  *   cdef object shape
3057  *
3058  *   shape = []             # <<<<<<<<<<<<<<
3059  *   for i from 0 <= i < rank:
3060  *     shape.append(SizeType(dims[i]))
3061  */
3062   __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 206, __pyx_L1_error)
3063   __Pyx_GOTREF(__pyx_t_1);
3064   __pyx_v_shape = __pyx_t_1;
3065   __pyx_t_1 = 0;
3066 
3067   /* "tables/hdf5extension.pyx":207
3068  *
3069  *   shape = []
3070  *   for i from 0 <= i < rank:             # <<<<<<<<<<<<<<
3071  *     shape.append(SizeType(dims[i]))
3072  *
3073  */
3074   __pyx_t_2 = __pyx_v_rank;
3075   for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_2; __pyx_v_i++) {
3076 
3077     /* "tables/hdf5extension.pyx":208
3078  *   shape = []
3079  *   for i from 0 <= i < rank:
3080  *     shape.append(SizeType(dims[i]))             # <<<<<<<<<<<<<<
3081  *
3082  *   return tuple(shape)
3083  */
3084     __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_SizeType); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 208, __pyx_L1_error)
3085     __Pyx_GOTREF(__pyx_t_3);
3086     __pyx_t_4 = __Pyx_PyInt_From_hsize_t((__pyx_v_dims[__pyx_v_i])); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 208, __pyx_L1_error)
3087     __Pyx_GOTREF(__pyx_t_4);
3088     __pyx_t_5 = NULL;
3089     if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
3090       __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
3091       if (likely(__pyx_t_5)) {
3092         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
3093         __Pyx_INCREF(__pyx_t_5);
3094         __Pyx_INCREF(function);
3095         __Pyx_DECREF_SET(__pyx_t_3, function);
3096       }
3097     }
3098     __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4);
3099     __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
3100     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
3101     if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 208, __pyx_L1_error)
3102     __Pyx_GOTREF(__pyx_t_1);
3103     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3104     __pyx_t_6 = __Pyx_PyObject_Append(__pyx_v_shape, __pyx_t_1); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 208, __pyx_L1_error)
3105     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
3106   }
3107 
3108   /* "tables/hdf5extension.pyx":210
3109  *     shape.append(SizeType(dims[i]))
3110  *
3111  *   return tuple(shape)             # <<<<<<<<<<<<<<
3112  *
3113  *
3114  */
3115   __Pyx_XDECREF(__pyx_r);
3116   __pyx_t_1 = __Pyx_PySequence_Tuple(__pyx_v_shape); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 210, __pyx_L1_error)
3117   __Pyx_GOTREF(__pyx_t_1);
3118   __pyx_r = __pyx_t_1;
3119   __pyx_t_1 = 0;
3120   goto __pyx_L0;
3121 
3122   /* "tables/hdf5extension.pyx":200
3123  *
3124  *
3125  * cdef object getshape(int rank, hsize_t *dims):             # <<<<<<<<<<<<<<
3126  *   """Return a shape (tuple) from a dims C array of rank dimensions."""
3127  *
3128  */
3129 
3130   /* function exit code */
3131   __pyx_L1_error:;
3132   __Pyx_XDECREF(__pyx_t_1);
3133   __Pyx_XDECREF(__pyx_t_3);
3134   __Pyx_XDECREF(__pyx_t_4);
3135   __Pyx_XDECREF(__pyx_t_5);
3136   __Pyx_AddTraceback("tables.hdf5extension.getshape", __pyx_clineno, __pyx_lineno, __pyx_filename);
3137   __pyx_r = 0;
3138   __pyx_L0:;
3139   __Pyx_XDECREF(__pyx_v_shape);
3140   __Pyx_XGIVEREF(__pyx_r);
3141   __Pyx_RefNannyFinishContext();
3142   return __pyx_r;
3143 }
3144 
3145 /* "tables/hdf5extension.pyx":214
3146  *
3147  * # Helper function for quickly fetch an attribute string
3148  * cdef object get_attribute_string_or_none(hid_t node_id, char* attr_name):             # <<<<<<<<<<<<<<
3149  *   """Returns a string/unicode attribute if it exists in node_id.
3150  *
3151  */
3152 
__pyx_f_6tables_13hdf5extension_get_attribute_string_or_none(hid_t __pyx_v_node_id,char * __pyx_v_attr_name)3153 static PyObject *__pyx_f_6tables_13hdf5extension_get_attribute_string_or_none(hid_t __pyx_v_node_id, char *__pyx_v_attr_name) {
3154   char *__pyx_v_attr_value;
3155   int __pyx_v_cset;
3156   PyObject *__pyx_v_retvalue = 0;
3157   hsize_t __pyx_v_size;
3158   PyObject *__pyx_r = NULL;
3159   __Pyx_RefNannyDeclarations
3160   int __pyx_t_1;
3161   PyObject *__pyx_t_2 = NULL;
3162   PyObject *__pyx_t_3 = NULL;
3163   PyObject *__pyx_t_4 = NULL;
3164   int __pyx_t_5;
3165   __Pyx_RefNannySetupContext("get_attribute_string_or_none", 0);
3166 
3167   /* "tables/hdf5extension.pyx":223
3168  *
3169  *   cdef char *attr_value
3170  *   cdef int cset = H5T_CSET_DEFAULT             # <<<<<<<<<<<<<<
3171  *   cdef object retvalue
3172  *   cdef hsize_t size
3173  */
3174   __pyx_v_cset = __pyx_v_6tables_13hdf5extension_H5T_CSET_DEFAULT;
3175 
3176   /* "tables/hdf5extension.pyx":227
3177  *   cdef hsize_t size
3178  *
3179  *   attr_value = NULL             # <<<<<<<<<<<<<<
3180  *   retvalue = None   # Default value
3181  *   if H5ATTRfind_attribute(node_id, attr_name):
3182  */
3183   __pyx_v_attr_value = NULL;
3184 
3185   /* "tables/hdf5extension.pyx":228
3186  *
3187  *   attr_value = NULL
3188  *   retvalue = None   # Default value             # <<<<<<<<<<<<<<
3189  *   if H5ATTRfind_attribute(node_id, attr_name):
3190  *     size = H5ATTRget_attribute_string(node_id, attr_name, &attr_value, &cset)
3191  */
3192   __Pyx_INCREF(Py_None);
3193   __pyx_v_retvalue = Py_None;
3194 
3195   /* "tables/hdf5extension.pyx":229
3196  *   attr_value = NULL
3197  *   retvalue = None   # Default value
3198  *   if H5ATTRfind_attribute(node_id, attr_name):             # <<<<<<<<<<<<<<
3199  *     size = H5ATTRget_attribute_string(node_id, attr_name, &attr_value, &cset)
3200  *     if size == 0:
3201  */
3202   __pyx_t_1 = (H5ATTRfind_attribute(__pyx_v_node_id, __pyx_v_attr_name) != 0);
3203   if (__pyx_t_1) {
3204 
3205     /* "tables/hdf5extension.pyx":230
3206  *   retvalue = None   # Default value
3207  *   if H5ATTRfind_attribute(node_id, attr_name):
3208  *     size = H5ATTRget_attribute_string(node_id, attr_name, &attr_value, &cset)             # <<<<<<<<<<<<<<
3209  *     if size == 0:
3210  *       if cset == H5T_CSET_UTF8:
3211  */
3212     __pyx_v_size = H5ATTRget_attribute_string(__pyx_v_node_id, __pyx_v_attr_name, (&__pyx_v_attr_value), (&__pyx_v_cset));
3213 
3214     /* "tables/hdf5extension.pyx":231
3215  *   if H5ATTRfind_attribute(node_id, attr_name):
3216  *     size = H5ATTRget_attribute_string(node_id, attr_name, &attr_value, &cset)
3217  *     if size == 0:             # <<<<<<<<<<<<<<
3218  *       if cset == H5T_CSET_UTF8:
3219  *         retvalue = numpy.unicode_(u'')
3220  */
3221     __pyx_t_1 = ((__pyx_v_size == 0) != 0);
3222     if (__pyx_t_1) {
3223 
3224       /* "tables/hdf5extension.pyx":232
3225  *     size = H5ATTRget_attribute_string(node_id, attr_name, &attr_value, &cset)
3226  *     if size == 0:
3227  *       if cset == H5T_CSET_UTF8:             # <<<<<<<<<<<<<<
3228  *         retvalue = numpy.unicode_(u'')
3229  *       else:
3230  */
3231       __pyx_t_1 = ((__pyx_v_cset == H5T_CSET_UTF8) != 0);
3232       if (__pyx_t_1) {
3233 
3234         /* "tables/hdf5extension.pyx":233
3235  *     if size == 0:
3236  *       if cset == H5T_CSET_UTF8:
3237  *         retvalue = numpy.unicode_(u'')             # <<<<<<<<<<<<<<
3238  *       else:
3239  *         retvalue = numpy.bytes_(b'')
3240  */
3241         __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 233, __pyx_L1_error)
3242         __Pyx_GOTREF(__pyx_t_3);
3243         __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 233, __pyx_L1_error)
3244         __Pyx_GOTREF(__pyx_t_4);
3245         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3246         __pyx_t_3 = NULL;
3247         if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
3248           __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
3249           if (likely(__pyx_t_3)) {
3250             PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
3251             __Pyx_INCREF(__pyx_t_3);
3252             __Pyx_INCREF(function);
3253             __Pyx_DECREF_SET(__pyx_t_4, function);
3254           }
3255         }
3256         __pyx_t_2 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_3, __pyx_kp_u_) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_kp_u_);
3257         __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
3258         if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 233, __pyx_L1_error)
3259         __Pyx_GOTREF(__pyx_t_2);
3260         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
3261         __Pyx_DECREF_SET(__pyx_v_retvalue, __pyx_t_2);
3262         __pyx_t_2 = 0;
3263 
3264         /* "tables/hdf5extension.pyx":232
3265  *     size = H5ATTRget_attribute_string(node_id, attr_name, &attr_value, &cset)
3266  *     if size == 0:
3267  *       if cset == H5T_CSET_UTF8:             # <<<<<<<<<<<<<<
3268  *         retvalue = numpy.unicode_(u'')
3269  *       else:
3270  */
3271         goto __pyx_L5;
3272       }
3273 
3274       /* "tables/hdf5extension.pyx":235
3275  *         retvalue = numpy.unicode_(u'')
3276  *       else:
3277  *         retvalue = numpy.bytes_(b'')             # <<<<<<<<<<<<<<
3278  *     elif cset == H5T_CSET_UTF8:
3279  *       if size == 1 and attr_value[0] == 0:
3280  */
3281       /*else*/ {
3282         __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 235, __pyx_L1_error)
3283         __Pyx_GOTREF(__pyx_t_4);
3284         __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_bytes); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 235, __pyx_L1_error)
3285         __Pyx_GOTREF(__pyx_t_3);
3286         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
3287         __pyx_t_4 = NULL;
3288         if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
3289           __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
3290           if (likely(__pyx_t_4)) {
3291             PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
3292             __Pyx_INCREF(__pyx_t_4);
3293             __Pyx_INCREF(function);
3294             __Pyx_DECREF_SET(__pyx_t_3, function);
3295           }
3296         }
3297         __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_kp_b_) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_kp_b_);
3298         __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
3299         if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 235, __pyx_L1_error)
3300         __Pyx_GOTREF(__pyx_t_2);
3301         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3302         __Pyx_DECREF_SET(__pyx_v_retvalue, __pyx_t_2);
3303         __pyx_t_2 = 0;
3304       }
3305       __pyx_L5:;
3306 
3307       /* "tables/hdf5extension.pyx":231
3308  *   if H5ATTRfind_attribute(node_id, attr_name):
3309  *     size = H5ATTRget_attribute_string(node_id, attr_name, &attr_value, &cset)
3310  *     if size == 0:             # <<<<<<<<<<<<<<
3311  *       if cset == H5T_CSET_UTF8:
3312  *         retvalue = numpy.unicode_(u'')
3313  */
3314       goto __pyx_L4;
3315     }
3316 
3317     /* "tables/hdf5extension.pyx":236
3318  *       else:
3319  *         retvalue = numpy.bytes_(b'')
3320  *     elif cset == H5T_CSET_UTF8:             # <<<<<<<<<<<<<<
3321  *       if size == 1 and attr_value[0] == 0:
3322  *         # compatibility with PyTables <= 3.1.1
3323  */
3324     __pyx_t_1 = ((__pyx_v_cset == H5T_CSET_UTF8) != 0);
3325     if (__pyx_t_1) {
3326 
3327       /* "tables/hdf5extension.pyx":237
3328  *         retvalue = numpy.bytes_(b'')
3329  *     elif cset == H5T_CSET_UTF8:
3330  *       if size == 1 and attr_value[0] == 0:             # <<<<<<<<<<<<<<
3331  *         # compatibility with PyTables <= 3.1.1
3332  *         retvalue = numpy.unicode_(u'')
3333  */
3334       __pyx_t_5 = ((__pyx_v_size == 1) != 0);
3335       if (__pyx_t_5) {
3336       } else {
3337         __pyx_t_1 = __pyx_t_5;
3338         goto __pyx_L7_bool_binop_done;
3339       }
3340       __pyx_t_5 = (((__pyx_v_attr_value[0]) == 0) != 0);
3341       __pyx_t_1 = __pyx_t_5;
3342       __pyx_L7_bool_binop_done:;
3343       if (__pyx_t_1) {
3344 
3345         /* "tables/hdf5extension.pyx":239
3346  *       if size == 1 and attr_value[0] == 0:
3347  *         # compatibility with PyTables <= 3.1.1
3348  *         retvalue = numpy.unicode_(u'')             # <<<<<<<<<<<<<<
3349  *       retvalue = PyUnicode_DecodeUTF8(attr_value, size, NULL)
3350  *       retvalue = numpy.unicode_(retvalue)
3351  */
3352         __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 239, __pyx_L1_error)
3353         __Pyx_GOTREF(__pyx_t_3);
3354         __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 239, __pyx_L1_error)
3355         __Pyx_GOTREF(__pyx_t_4);
3356         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3357         __pyx_t_3 = NULL;
3358         if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
3359           __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
3360           if (likely(__pyx_t_3)) {
3361             PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
3362             __Pyx_INCREF(__pyx_t_3);
3363             __Pyx_INCREF(function);
3364             __Pyx_DECREF_SET(__pyx_t_4, function);
3365           }
3366         }
3367         __pyx_t_2 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_3, __pyx_kp_u_) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_kp_u_);
3368         __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
3369         if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 239, __pyx_L1_error)
3370         __Pyx_GOTREF(__pyx_t_2);
3371         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
3372         __Pyx_DECREF_SET(__pyx_v_retvalue, __pyx_t_2);
3373         __pyx_t_2 = 0;
3374 
3375         /* "tables/hdf5extension.pyx":237
3376  *         retvalue = numpy.bytes_(b'')
3377  *     elif cset == H5T_CSET_UTF8:
3378  *       if size == 1 and attr_value[0] == 0:             # <<<<<<<<<<<<<<
3379  *         # compatibility with PyTables <= 3.1.1
3380  *         retvalue = numpy.unicode_(u'')
3381  */
3382       }
3383 
3384       /* "tables/hdf5extension.pyx":240
3385  *         # compatibility with PyTables <= 3.1.1
3386  *         retvalue = numpy.unicode_(u'')
3387  *       retvalue = PyUnicode_DecodeUTF8(attr_value, size, NULL)             # <<<<<<<<<<<<<<
3388  *       retvalue = numpy.unicode_(retvalue)
3389  *     else:
3390  */
3391       __pyx_t_2 = PyUnicode_DecodeUTF8(__pyx_v_attr_value, __pyx_v_size, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 240, __pyx_L1_error)
3392       __Pyx_GOTREF(__pyx_t_2);
3393       __Pyx_DECREF_SET(__pyx_v_retvalue, __pyx_t_2);
3394       __pyx_t_2 = 0;
3395 
3396       /* "tables/hdf5extension.pyx":241
3397  *         retvalue = numpy.unicode_(u'')
3398  *       retvalue = PyUnicode_DecodeUTF8(attr_value, size, NULL)
3399  *       retvalue = numpy.unicode_(retvalue)             # <<<<<<<<<<<<<<
3400  *     else:
3401  *       retvalue = PyBytes_FromStringAndSize(attr_value, size)
3402  */
3403       __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 241, __pyx_L1_error)
3404       __Pyx_GOTREF(__pyx_t_4);
3405       __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 241, __pyx_L1_error)
3406       __Pyx_GOTREF(__pyx_t_3);
3407       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
3408       __pyx_t_4 = NULL;
3409       if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
3410         __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
3411         if (likely(__pyx_t_4)) {
3412           PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
3413           __Pyx_INCREF(__pyx_t_4);
3414           __Pyx_INCREF(function);
3415           __Pyx_DECREF_SET(__pyx_t_3, function);
3416         }
3417       }
3418       __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_retvalue) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_retvalue);
3419       __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
3420       if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 241, __pyx_L1_error)
3421       __Pyx_GOTREF(__pyx_t_2);
3422       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3423       __Pyx_DECREF_SET(__pyx_v_retvalue, __pyx_t_2);
3424       __pyx_t_2 = 0;
3425 
3426       /* "tables/hdf5extension.pyx":236
3427  *       else:
3428  *         retvalue = numpy.bytes_(b'')
3429  *     elif cset == H5T_CSET_UTF8:             # <<<<<<<<<<<<<<
3430  *       if size == 1 and attr_value[0] == 0:
3431  *         # compatibility with PyTables <= 3.1.1
3432  */
3433       goto __pyx_L4;
3434     }
3435 
3436     /* "tables/hdf5extension.pyx":243
3437  *       retvalue = numpy.unicode_(retvalue)
3438  *     else:
3439  *       retvalue = PyBytes_FromStringAndSize(attr_value, size)             # <<<<<<<<<<<<<<
3440  *       # AV: oct 2012
3441  *       # since now we use the string size got form HDF5 we have to stip
3442  */
3443     /*else*/ {
3444       __pyx_t_2 = PyBytes_FromStringAndSize(__pyx_v_attr_value, __pyx_v_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 243, __pyx_L1_error)
3445       __Pyx_GOTREF(__pyx_t_2);
3446       __Pyx_DECREF_SET(__pyx_v_retvalue, __pyx_t_2);
3447       __pyx_t_2 = 0;
3448 
3449       /* "tables/hdf5extension.pyx":251
3450  *       # strlen(attr_value) is the actual length of the attibute
3451  *       # and numpy.bytes_(attr_value) can give a truncated pickle string
3452  *       retvalue = retvalue.rstrip(b'\x00')             # <<<<<<<<<<<<<<
3453  *       retvalue = numpy.bytes_(retvalue)
3454  *
3455  */
3456       __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_retvalue, __pyx_n_s_rstrip); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 251, __pyx_L1_error)
3457       __Pyx_GOTREF(__pyx_t_3);
3458       __pyx_t_4 = NULL;
3459       if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
3460         __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
3461         if (likely(__pyx_t_4)) {
3462           PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
3463           __Pyx_INCREF(__pyx_t_4);
3464           __Pyx_INCREF(function);
3465           __Pyx_DECREF_SET(__pyx_t_3, function);
3466         }
3467       }
3468       __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_kp_b__2) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_kp_b__2);
3469       __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
3470       if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 251, __pyx_L1_error)
3471       __Pyx_GOTREF(__pyx_t_2);
3472       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3473       __Pyx_DECREF_SET(__pyx_v_retvalue, __pyx_t_2);
3474       __pyx_t_2 = 0;
3475 
3476       /* "tables/hdf5extension.pyx":252
3477  *       # and numpy.bytes_(attr_value) can give a truncated pickle string
3478  *       retvalue = retvalue.rstrip(b'\x00')
3479  *       retvalue = numpy.bytes_(retvalue)             # <<<<<<<<<<<<<<
3480  *
3481  *     # Important to release attr_value, because it has been malloc'ed!
3482  */
3483       __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 252, __pyx_L1_error)
3484       __Pyx_GOTREF(__pyx_t_3);
3485       __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_bytes); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 252, __pyx_L1_error)
3486       __Pyx_GOTREF(__pyx_t_4);
3487       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3488       __pyx_t_3 = NULL;
3489       if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
3490         __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
3491         if (likely(__pyx_t_3)) {
3492           PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
3493           __Pyx_INCREF(__pyx_t_3);
3494           __Pyx_INCREF(function);
3495           __Pyx_DECREF_SET(__pyx_t_4, function);
3496         }
3497       }
3498       __pyx_t_2 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_3, __pyx_v_retvalue) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_retvalue);
3499       __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
3500       if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 252, __pyx_L1_error)
3501       __Pyx_GOTREF(__pyx_t_2);
3502       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
3503       __Pyx_DECREF_SET(__pyx_v_retvalue, __pyx_t_2);
3504       __pyx_t_2 = 0;
3505     }
3506     __pyx_L4:;
3507 
3508     /* "tables/hdf5extension.pyx":255
3509  *
3510  *     # Important to release attr_value, because it has been malloc'ed!
3511  *     if attr_value:             # <<<<<<<<<<<<<<
3512  *       free(<void *>attr_value)
3513  *
3514  */
3515     __pyx_t_1 = (__pyx_v_attr_value != 0);
3516     if (__pyx_t_1) {
3517 
3518       /* "tables/hdf5extension.pyx":256
3519  *     # Important to release attr_value, because it has been malloc'ed!
3520  *     if attr_value:
3521  *       free(<void *>attr_value)             # <<<<<<<<<<<<<<
3522  *
3523  *   return retvalue
3524  */
3525       free(((void *)__pyx_v_attr_value));
3526 
3527       /* "tables/hdf5extension.pyx":255
3528  *
3529  *     # Important to release attr_value, because it has been malloc'ed!
3530  *     if attr_value:             # <<<<<<<<<<<<<<
3531  *       free(<void *>attr_value)
3532  *
3533  */
3534     }
3535 
3536     /* "tables/hdf5extension.pyx":229
3537  *   attr_value = NULL
3538  *   retvalue = None   # Default value
3539  *   if H5ATTRfind_attribute(node_id, attr_name):             # <<<<<<<<<<<<<<
3540  *     size = H5ATTRget_attribute_string(node_id, attr_name, &attr_value, &cset)
3541  *     if size == 0:
3542  */
3543   }
3544 
3545   /* "tables/hdf5extension.pyx":258
3546  *       free(<void *>attr_value)
3547  *
3548  *   return retvalue             # <<<<<<<<<<<<<<
3549  *
3550  *
3551  */
3552   __Pyx_XDECREF(__pyx_r);
3553   __Pyx_INCREF(__pyx_v_retvalue);
3554   __pyx_r = __pyx_v_retvalue;
3555   goto __pyx_L0;
3556 
3557   /* "tables/hdf5extension.pyx":214
3558  *
3559  * # Helper function for quickly fetch an attribute string
3560  * cdef object get_attribute_string_or_none(hid_t node_id, char* attr_name):             # <<<<<<<<<<<<<<
3561  *   """Returns a string/unicode attribute if it exists in node_id.
3562  *
3563  */
3564 
3565   /* function exit code */
3566   __pyx_L1_error:;
3567   __Pyx_XDECREF(__pyx_t_2);
3568   __Pyx_XDECREF(__pyx_t_3);
3569   __Pyx_XDECREF(__pyx_t_4);
3570   __Pyx_AddTraceback("tables.hdf5extension.get_attribute_string_or_none", __pyx_clineno, __pyx_lineno, __pyx_filename);
3571   __pyx_r = 0;
3572   __pyx_L0:;
3573   __Pyx_XDECREF(__pyx_v_retvalue);
3574   __Pyx_XGIVEREF(__pyx_r);
3575   __Pyx_RefNannyFinishContext();
3576   return __pyx_r;
3577 }
3578 
3579 /* "tables/hdf5extension.pyx":262
3580  *
3581  * # Get the numpy dtype scalar attribute from an HDF5 type as fast as possible
3582  * cdef object get_dtype_scalar(hid_t type_id, H5T_class_t class_id,             # <<<<<<<<<<<<<<
3583  *                              size_t itemsize):
3584  *   cdef H5T_sign_t sign
3585  */
3586 
__pyx_f_6tables_13hdf5extension_get_dtype_scalar(hid_t __pyx_v_type_id,enum H5T_class_t __pyx_v_class_id,size_t __pyx_v_itemsize)3587 static PyObject *__pyx_f_6tables_13hdf5extension_get_dtype_scalar(hid_t __pyx_v_type_id, enum H5T_class_t __pyx_v_class_id, size_t __pyx_v_itemsize) {
3588   enum H5T_sign_t __pyx_v_sign;
3589   PyObject *__pyx_v_stype = 0;
3590   PyObject *__pyx_v_ntype = NULL;
3591   PyObject *__pyx_r = NULL;
3592   __Pyx_RefNannyDeclarations
3593   int __pyx_t_1;
3594   PyObject *__pyx_t_2 = NULL;
3595   PyObject *__pyx_t_3 = NULL;
3596   PyObject *__pyx_t_4 = NULL;
3597   PyObject *__pyx_t_5 = NULL;
3598   PyObject *__pyx_t_6 = NULL;
3599   PyObject *__pyx_t_7 = NULL;
3600   int __pyx_t_8;
3601   __Pyx_RefNannySetupContext("get_dtype_scalar", 0);
3602 
3603   /* "tables/hdf5extension.pyx":267
3604  *   cdef object stype
3605  *
3606  *   if class_id == H5T_BITFIELD:             # <<<<<<<<<<<<<<
3607  *     stype = "b1"
3608  *   elif class_id == H5T_INTEGER:
3609  */
3610   switch (__pyx_v_class_id) {
3611     case H5T_BITFIELD:
3612 
3613     /* "tables/hdf5extension.pyx":268
3614  *
3615  *   if class_id == H5T_BITFIELD:
3616  *     stype = "b1"             # <<<<<<<<<<<<<<
3617  *   elif class_id == H5T_INTEGER:
3618  *     # Get the sign
3619  */
3620     __Pyx_INCREF(__pyx_n_s_b1);
3621     __pyx_v_stype = __pyx_n_s_b1;
3622 
3623     /* "tables/hdf5extension.pyx":267
3624  *   cdef object stype
3625  *
3626  *   if class_id == H5T_BITFIELD:             # <<<<<<<<<<<<<<
3627  *     stype = "b1"
3628  *   elif class_id == H5T_INTEGER:
3629  */
3630     break;
3631     case H5T_INTEGER:
3632 
3633     /* "tables/hdf5extension.pyx":271
3634  *   elif class_id == H5T_INTEGER:
3635  *     # Get the sign
3636  *     sign = H5Tget_sign(type_id)             # <<<<<<<<<<<<<<
3637  *     if (sign > 0):
3638  *       stype = "i%s" % (itemsize)
3639  */
3640     __pyx_v_sign = H5Tget_sign(__pyx_v_type_id);
3641 
3642     /* "tables/hdf5extension.pyx":272
3643  *     # Get the sign
3644  *     sign = H5Tget_sign(type_id)
3645  *     if (sign > 0):             # <<<<<<<<<<<<<<
3646  *       stype = "i%s" % (itemsize)
3647  *     else:
3648  */
3649     __pyx_t_1 = ((__pyx_v_sign > 0) != 0);
3650     if (__pyx_t_1) {
3651 
3652       /* "tables/hdf5extension.pyx":273
3653  *     sign = H5Tget_sign(type_id)
3654  *     if (sign > 0):
3655  *       stype = "i%s" % (itemsize)             # <<<<<<<<<<<<<<
3656  *     else:
3657  *       stype = "u%s" % (itemsize)
3658  */
3659       __pyx_t_2 = __Pyx_PyInt_FromSize_t(__pyx_v_itemsize); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 273, __pyx_L1_error)
3660       __Pyx_GOTREF(__pyx_t_2);
3661       __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_i_s, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 273, __pyx_L1_error)
3662       __Pyx_GOTREF(__pyx_t_3);
3663       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
3664       __pyx_v_stype = __pyx_t_3;
3665       __pyx_t_3 = 0;
3666 
3667       /* "tables/hdf5extension.pyx":272
3668  *     # Get the sign
3669  *     sign = H5Tget_sign(type_id)
3670  *     if (sign > 0):             # <<<<<<<<<<<<<<
3671  *       stype = "i%s" % (itemsize)
3672  *     else:
3673  */
3674       goto __pyx_L3;
3675     }
3676 
3677     /* "tables/hdf5extension.pyx":275
3678  *       stype = "i%s" % (itemsize)
3679  *     else:
3680  *       stype = "u%s" % (itemsize)             # <<<<<<<<<<<<<<
3681  *   elif class_id ==  H5T_FLOAT:
3682  *     stype = "f%s" % (itemsize)
3683  */
3684     /*else*/ {
3685       __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_itemsize); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 275, __pyx_L1_error)
3686       __Pyx_GOTREF(__pyx_t_3);
3687       __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_u_s, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 275, __pyx_L1_error)
3688       __Pyx_GOTREF(__pyx_t_2);
3689       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3690       __pyx_v_stype = __pyx_t_2;
3691       __pyx_t_2 = 0;
3692     }
3693     __pyx_L3:;
3694 
3695     /* "tables/hdf5extension.pyx":269
3696  *   if class_id == H5T_BITFIELD:
3697  *     stype = "b1"
3698  *   elif class_id == H5T_INTEGER:             # <<<<<<<<<<<<<<
3699  *     # Get the sign
3700  *     sign = H5Tget_sign(type_id)
3701  */
3702     break;
3703     case H5T_FLOAT:
3704 
3705     /* "tables/hdf5extension.pyx":277
3706  *       stype = "u%s" % (itemsize)
3707  *   elif class_id ==  H5T_FLOAT:
3708  *     stype = "f%s" % (itemsize)             # <<<<<<<<<<<<<<
3709  *   elif class_id ==  H5T_STRING:
3710  *     if H5Tis_variable_str(type_id):
3711  */
3712     __pyx_t_2 = __Pyx_PyInt_FromSize_t(__pyx_v_itemsize); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 277, __pyx_L1_error)
3713     __Pyx_GOTREF(__pyx_t_2);
3714     __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_f_s, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 277, __pyx_L1_error)
3715     __Pyx_GOTREF(__pyx_t_3);
3716     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
3717     __pyx_v_stype = __pyx_t_3;
3718     __pyx_t_3 = 0;
3719 
3720     /* "tables/hdf5extension.pyx":276
3721  *     else:
3722  *       stype = "u%s" % (itemsize)
3723  *   elif class_id ==  H5T_FLOAT:             # <<<<<<<<<<<<<<
3724  *     stype = "f%s" % (itemsize)
3725  *   elif class_id ==  H5T_STRING:
3726  */
3727     break;
3728     case H5T_STRING:
3729 
3730     /* "tables/hdf5extension.pyx":279
3731  *     stype = "f%s" % (itemsize)
3732  *   elif class_id ==  H5T_STRING:
3733  *     if H5Tis_variable_str(type_id):             # <<<<<<<<<<<<<<
3734  *       raise TypeError("variable length strings are not supported yet")
3735  *     stype = "S%s" % (itemsize)
3736  */
3737     __pyx_t_1 = (H5Tis_variable_str(__pyx_v_type_id) != 0);
3738     if (unlikely(__pyx_t_1)) {
3739 
3740       /* "tables/hdf5extension.pyx":280
3741  *   elif class_id ==  H5T_STRING:
3742  *     if H5Tis_variable_str(type_id):
3743  *       raise TypeError("variable length strings are not supported yet")             # <<<<<<<<<<<<<<
3744  *     stype = "S%s" % (itemsize)
3745  *
3746  */
3747       __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 280, __pyx_L1_error)
3748       __Pyx_GOTREF(__pyx_t_3);
3749       __Pyx_Raise(__pyx_t_3, 0, 0, 0);
3750       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3751       __PYX_ERR(0, 280, __pyx_L1_error)
3752 
3753       /* "tables/hdf5extension.pyx":279
3754  *     stype = "f%s" % (itemsize)
3755  *   elif class_id ==  H5T_STRING:
3756  *     if H5Tis_variable_str(type_id):             # <<<<<<<<<<<<<<
3757  *       raise TypeError("variable length strings are not supported yet")
3758  *     stype = "S%s" % (itemsize)
3759  */
3760     }
3761 
3762     /* "tables/hdf5extension.pyx":281
3763  *     if H5Tis_variable_str(type_id):
3764  *       raise TypeError("variable length strings are not supported yet")
3765  *     stype = "S%s" % (itemsize)             # <<<<<<<<<<<<<<
3766  *
3767  *   # Try to get a NumPy type.  If this can't be done, return None.
3768  */
3769     __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_itemsize); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 281, __pyx_L1_error)
3770     __Pyx_GOTREF(__pyx_t_3);
3771     __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_S_s, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 281, __pyx_L1_error)
3772     __Pyx_GOTREF(__pyx_t_2);
3773     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3774     __pyx_v_stype = __pyx_t_2;
3775     __pyx_t_2 = 0;
3776 
3777     /* "tables/hdf5extension.pyx":278
3778  *   elif class_id ==  H5T_FLOAT:
3779  *     stype = "f%s" % (itemsize)
3780  *   elif class_id ==  H5T_STRING:             # <<<<<<<<<<<<<<
3781  *     if H5Tis_variable_str(type_id):
3782  *       raise TypeError("variable length strings are not supported yet")
3783  */
3784     break;
3785     default: break;
3786   }
3787 
3788   /* "tables/hdf5extension.pyx":284
3789  *
3790  *   # Try to get a NumPy type.  If this can't be done, return None.
3791  *   try:             # <<<<<<<<<<<<<<
3792  *     ntype = numpy.dtype(stype)
3793  *   except TypeError:
3794  */
3795   {
3796     __Pyx_PyThreadState_declare
3797     __Pyx_PyThreadState_assign
3798     __Pyx_ExceptionSave(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6);
3799     __Pyx_XGOTREF(__pyx_t_4);
3800     __Pyx_XGOTREF(__pyx_t_5);
3801     __Pyx_XGOTREF(__pyx_t_6);
3802     /*try:*/ {
3803 
3804       /* "tables/hdf5extension.pyx":285
3805  *   # Try to get a NumPy type.  If this can't be done, return None.
3806  *   try:
3807  *     ntype = numpy.dtype(stype)             # <<<<<<<<<<<<<<
3808  *   except TypeError:
3809  *     ntype = None
3810  */
3811       __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 285, __pyx_L5_error)
3812       __Pyx_GOTREF(__pyx_t_3);
3813       __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_dtype); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 285, __pyx_L5_error)
3814       __Pyx_GOTREF(__pyx_t_7);
3815       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3816       if (unlikely(!__pyx_v_stype)) { __Pyx_RaiseUnboundLocalError("stype"); __PYX_ERR(0, 285, __pyx_L5_error) }
3817       __pyx_t_3 = NULL;
3818       if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
3819         __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_7);
3820         if (likely(__pyx_t_3)) {
3821           PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
3822           __Pyx_INCREF(__pyx_t_3);
3823           __Pyx_INCREF(function);
3824           __Pyx_DECREF_SET(__pyx_t_7, function);
3825         }
3826       }
3827       __pyx_t_2 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_3, __pyx_v_stype) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_stype);
3828       __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
3829       if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 285, __pyx_L5_error)
3830       __Pyx_GOTREF(__pyx_t_2);
3831       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
3832       __pyx_v_ntype = __pyx_t_2;
3833       __pyx_t_2 = 0;
3834 
3835       /* "tables/hdf5extension.pyx":284
3836  *
3837  *   # Try to get a NumPy type.  If this can't be done, return None.
3838  *   try:             # <<<<<<<<<<<<<<
3839  *     ntype = numpy.dtype(stype)
3840  *   except TypeError:
3841  */
3842     }
3843     __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
3844     __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
3845     __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
3846     goto __pyx_L10_try_end;
3847     __pyx_L5_error:;
3848     __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
3849     __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
3850     __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
3851 
3852     /* "tables/hdf5extension.pyx":286
3853  *   try:
3854  *     ntype = numpy.dtype(stype)
3855  *   except TypeError:             # <<<<<<<<<<<<<<
3856  *     ntype = None
3857  *   return ntype
3858  */
3859     __pyx_t_8 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_TypeError);
3860     if (__pyx_t_8) {
3861       __Pyx_AddTraceback("tables.hdf5extension.get_dtype_scalar", __pyx_clineno, __pyx_lineno, __pyx_filename);
3862       if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_7, &__pyx_t_3) < 0) __PYX_ERR(0, 286, __pyx_L7_except_error)
3863       __Pyx_GOTREF(__pyx_t_2);
3864       __Pyx_GOTREF(__pyx_t_7);
3865       __Pyx_GOTREF(__pyx_t_3);
3866 
3867       /* "tables/hdf5extension.pyx":287
3868  *     ntype = numpy.dtype(stype)
3869  *   except TypeError:
3870  *     ntype = None             # <<<<<<<<<<<<<<
3871  *   return ntype
3872  *
3873  */
3874       __Pyx_INCREF(Py_None);
3875       __Pyx_XDECREF_SET(__pyx_v_ntype, Py_None);
3876       __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
3877       __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
3878       __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
3879       goto __pyx_L6_exception_handled;
3880     }
3881     goto __pyx_L7_except_error;
3882     __pyx_L7_except_error:;
3883 
3884     /* "tables/hdf5extension.pyx":284
3885  *
3886  *   # Try to get a NumPy type.  If this can't be done, return None.
3887  *   try:             # <<<<<<<<<<<<<<
3888  *     ntype = numpy.dtype(stype)
3889  *   except TypeError:
3890  */
3891     __Pyx_XGIVEREF(__pyx_t_4);
3892     __Pyx_XGIVEREF(__pyx_t_5);
3893     __Pyx_XGIVEREF(__pyx_t_6);
3894     __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6);
3895     goto __pyx_L1_error;
3896     __pyx_L6_exception_handled:;
3897     __Pyx_XGIVEREF(__pyx_t_4);
3898     __Pyx_XGIVEREF(__pyx_t_5);
3899     __Pyx_XGIVEREF(__pyx_t_6);
3900     __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6);
3901     __pyx_L10_try_end:;
3902   }
3903 
3904   /* "tables/hdf5extension.pyx":288
3905  *   except TypeError:
3906  *     ntype = None
3907  *   return ntype             # <<<<<<<<<<<<<<
3908  *
3909  *
3910  */
3911   __Pyx_XDECREF(__pyx_r);
3912   __Pyx_INCREF(__pyx_v_ntype);
3913   __pyx_r = __pyx_v_ntype;
3914   goto __pyx_L0;
3915 
3916   /* "tables/hdf5extension.pyx":262
3917  *
3918  * # Get the numpy dtype scalar attribute from an HDF5 type as fast as possible
3919  * cdef object get_dtype_scalar(hid_t type_id, H5T_class_t class_id,             # <<<<<<<<<<<<<<
3920  *                              size_t itemsize):
3921  *   cdef H5T_sign_t sign
3922  */
3923 
3924   /* function exit code */
3925   __pyx_L1_error:;
3926   __Pyx_XDECREF(__pyx_t_2);
3927   __Pyx_XDECREF(__pyx_t_3);
3928   __Pyx_XDECREF(__pyx_t_7);
3929   __Pyx_AddTraceback("tables.hdf5extension.get_dtype_scalar", __pyx_clineno, __pyx_lineno, __pyx_filename);
3930   __pyx_r = 0;
3931   __pyx_L0:;
3932   __Pyx_XDECREF(__pyx_v_stype);
3933   __Pyx_XDECREF(__pyx_v_ntype);
3934   __Pyx_XGIVEREF(__pyx_r);
3935   __Pyx_RefNannyFinishContext();
3936   return __pyx_r;
3937 }
3938 
3939 /* "tables/hdf5extension.pyx":317
3940  *   cdef object  name
3941  *
3942  *   def _g_new(self, name, pymode, **params):             # <<<<<<<<<<<<<<
3943  *     cdef herr_t err = 0
3944  *     cdef hid_t access_plist, create_plist = H5P_DEFAULT
3945  */
3946 
3947 /* Python wrapper */
3948 static PyObject *__pyx_pw_6tables_13hdf5extension_4File_1_g_new(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
__pyx_pw_6tables_13hdf5extension_4File_1_g_new(PyObject * __pyx_v_self,PyObject * __pyx_args,PyObject * __pyx_kwds)3949 static PyObject *__pyx_pw_6tables_13hdf5extension_4File_1_g_new(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
3950   PyObject *__pyx_v_name = 0;
3951   PyObject *__pyx_v_pymode = 0;
3952   PyObject *__pyx_v_params = 0;
3953   PyObject *__pyx_r = 0;
3954   __Pyx_RefNannyDeclarations
3955   __Pyx_RefNannySetupContext("_g_new (wrapper)", 0);
3956   __pyx_v_params = PyDict_New(); if (unlikely(!__pyx_v_params)) return NULL;
3957   __Pyx_GOTREF(__pyx_v_params);
3958   {
3959     static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_name,&__pyx_n_s_pymode,0};
3960     PyObject* values[2] = {0,0};
3961     if (unlikely(__pyx_kwds)) {
3962       Py_ssize_t kw_args;
3963       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
3964       switch (pos_args) {
3965         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
3966         CYTHON_FALLTHROUGH;
3967         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
3968         CYTHON_FALLTHROUGH;
3969         case  0: break;
3970         default: goto __pyx_L5_argtuple_error;
3971       }
3972       kw_args = PyDict_Size(__pyx_kwds);
3973       switch (pos_args) {
3974         case  0:
3975         if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
3976         else goto __pyx_L5_argtuple_error;
3977         CYTHON_FALLTHROUGH;
3978         case  1:
3979         if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pymode)) != 0)) kw_args--;
3980         else {
3981           __Pyx_RaiseArgtupleInvalid("_g_new", 1, 2, 2, 1); __PYX_ERR(0, 317, __pyx_L3_error)
3982         }
3983       }
3984       if (unlikely(kw_args > 0)) {
3985         if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_params, values, pos_args, "_g_new") < 0)) __PYX_ERR(0, 317, __pyx_L3_error)
3986       }
3987     } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
3988       goto __pyx_L5_argtuple_error;
3989     } else {
3990       values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
3991       values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
3992     }
3993     __pyx_v_name = values[0];
3994     __pyx_v_pymode = values[1];
3995   }
3996   goto __pyx_L4_argument_unpacking_done;
3997   __pyx_L5_argtuple_error:;
3998   __Pyx_RaiseArgtupleInvalid("_g_new", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 317, __pyx_L3_error)
3999   __pyx_L3_error:;
4000   __Pyx_DECREF(__pyx_v_params); __pyx_v_params = 0;
4001   __Pyx_AddTraceback("tables.hdf5extension.File._g_new", __pyx_clineno, __pyx_lineno, __pyx_filename);
4002   __Pyx_RefNannyFinishContext();
4003   return NULL;
4004   __pyx_L4_argument_unpacking_done:;
4005   __pyx_r = __pyx_pf_6tables_13hdf5extension_4File__g_new(((struct __pyx_obj_6tables_13hdf5extension_File *)__pyx_v_self), __pyx_v_name, __pyx_v_pymode, __pyx_v_params);
4006 
4007   /* function exit code */
4008   __Pyx_XDECREF(__pyx_v_params);
4009   __Pyx_RefNannyFinishContext();
4010   return __pyx_r;
4011 }
4012 
__pyx_pf_6tables_13hdf5extension_4File__g_new(struct __pyx_obj_6tables_13hdf5extension_File * __pyx_v_self,PyObject * __pyx_v_name,PyObject * __pyx_v_pymode,PyObject * __pyx_v_params)4013 static PyObject *__pyx_pf_6tables_13hdf5extension_4File__g_new(struct __pyx_obj_6tables_13hdf5extension_File *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_pymode, PyObject *__pyx_v_params) {
4014   herr_t __pyx_v_err;
4015   hid_t __pyx_v_access_plist;
4016   hid_t __pyx_v_create_plist;
4017   hid_t __pyx_v_meta_plist_id;
4018   hid_t __pyx_v_raw_plist_id;
4019   size_t __pyx_v_img_buf_len;
4020   size_t __pyx_v_user_block_size;
4021   void *__pyx_v_img_buf_p;
4022   PyObject *__pyx_v_encname = 0;
4023   PyObject *__pyx_v_driver = NULL;
4024   PyObject *__pyx_v_meta_ext = NULL;
4025   PyObject *__pyx_v_raw_ext = NULL;
4026   PyObject *__pyx_v_meta_name = NULL;
4027   PyObject *__pyx_v_raw_name = NULL;
4028   PyObject *__pyx_v_enc_meta_ext = NULL;
4029   PyObject *__pyx_v_enc_raw_ext = NULL;
4030   PyObject *__pyx_v_image = NULL;
4031   PyObject *__pyx_v_n = NULL;
4032   PyObject *__pyx_v_backing_store = NULL;
4033   PyObject *__pyx_v_exists = NULL;
4034   PyObject *__pyx_v_is_pow_of_2 = NULL;
4035   PyObject *__pyx_v_e = NULL;
4036   PyObject *__pyx_r = NULL;
4037   __Pyx_RefNannyDeclarations
4038   PyObject *__pyx_t_1 = NULL;
4039   int __pyx_t_2;
4040   int __pyx_t_3;
4041   int __pyx_t_4;
4042   PyObject *__pyx_t_5 = NULL;
4043   PyObject *__pyx_t_6 = NULL;
4044   PyObject *__pyx_t_7 = NULL;
4045   Py_ssize_t __pyx_t_8;
4046   int __pyx_t_9;
4047   PyObject *__pyx_t_10 = NULL;
4048   size_t __pyx_t_11;
4049   double __pyx_t_12;
4050   size_t __pyx_t_13;
4051   size_t __pyx_t_14;
4052   hbool_t __pyx_t_15;
4053   char *__pyx_t_16;
4054   char *__pyx_t_17;
4055   __Pyx_RefNannySetupContext("_g_new", 0);
4056 
4057   /* "tables/hdf5extension.pyx":318
4058  *
4059  *   def _g_new(self, name, pymode, **params):
4060  *     cdef herr_t err = 0             # <<<<<<<<<<<<<<
4061  *     cdef hid_t access_plist, create_plist = H5P_DEFAULT
4062  *     cdef hid_t meta_plist_id = H5P_DEFAULT, raw_plist_id = H5P_DEFAULT
4063  */
4064   __pyx_v_err = 0;
4065 
4066   /* "tables/hdf5extension.pyx":319
4067  *   def _g_new(self, name, pymode, **params):
4068  *     cdef herr_t err = 0
4069  *     cdef hid_t access_plist, create_plist = H5P_DEFAULT             # <<<<<<<<<<<<<<
4070  *     cdef hid_t meta_plist_id = H5P_DEFAULT, raw_plist_id = H5P_DEFAULT
4071  *     cdef size_t img_buf_len = 0, user_block_size = 0
4072  */
4073   __pyx_v_create_plist = H5P_DEFAULT;
4074 
4075   /* "tables/hdf5extension.pyx":320
4076  *     cdef herr_t err = 0
4077  *     cdef hid_t access_plist, create_plist = H5P_DEFAULT
4078  *     cdef hid_t meta_plist_id = H5P_DEFAULT, raw_plist_id = H5P_DEFAULT             # <<<<<<<<<<<<<<
4079  *     cdef size_t img_buf_len = 0, user_block_size = 0
4080  *     cdef void *img_buf_p = NULL
4081  */
4082   __pyx_v_meta_plist_id = H5P_DEFAULT;
4083   __pyx_v_raw_plist_id = H5P_DEFAULT;
4084 
4085   /* "tables/hdf5extension.pyx":321
4086  *     cdef hid_t access_plist, create_plist = H5P_DEFAULT
4087  *     cdef hid_t meta_plist_id = H5P_DEFAULT, raw_plist_id = H5P_DEFAULT
4088  *     cdef size_t img_buf_len = 0, user_block_size = 0             # <<<<<<<<<<<<<<
4089  *     cdef void *img_buf_p = NULL
4090  *     cdef bytes encname
4091  */
4092   __pyx_v_img_buf_len = 0;
4093   __pyx_v_user_block_size = 0;
4094 
4095   /* "tables/hdf5extension.pyx":322
4096  *     cdef hid_t meta_plist_id = H5P_DEFAULT, raw_plist_id = H5P_DEFAULT
4097  *     cdef size_t img_buf_len = 0, user_block_size = 0
4098  *     cdef void *img_buf_p = NULL             # <<<<<<<<<<<<<<
4099  *     cdef bytes encname
4100  *     #cdef bytes logfile_name
4101  */
4102   __pyx_v_img_buf_p = NULL;
4103 
4104   /* "tables/hdf5extension.pyx":327
4105  *
4106  *     # Check if we can handle the driver
4107  *     driver = params["DRIVER"]             # <<<<<<<<<<<<<<
4108  *     if driver is not None and driver not in _supported_drivers:
4109  *       raise ValueError("Invalid or not supported driver: '%s'" % driver)
4110  */
4111   __pyx_t_1 = __Pyx_PyDict_GetItem(__pyx_v_params, __pyx_n_s_DRIVER); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 327, __pyx_L1_error)
4112   __Pyx_GOTREF(__pyx_t_1);
4113   __pyx_v_driver = __pyx_t_1;
4114   __pyx_t_1 = 0;
4115 
4116   /* "tables/hdf5extension.pyx":328
4117  *     # Check if we can handle the driver
4118  *     driver = params["DRIVER"]
4119  *     if driver is not None and driver not in _supported_drivers:             # <<<<<<<<<<<<<<
4120  *       raise ValueError("Invalid or not supported driver: '%s'" % driver)
4121  *     if driver == "H5FD_SPLIT":
4122  */
4123   __pyx_t_3 = (__pyx_v_driver != Py_None);
4124   __pyx_t_4 = (__pyx_t_3 != 0);
4125   if (__pyx_t_4) {
4126   } else {
4127     __pyx_t_2 = __pyx_t_4;
4128     goto __pyx_L4_bool_binop_done;
4129   }
4130   __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_supported_drivers); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 328, __pyx_L1_error)
4131   __Pyx_GOTREF(__pyx_t_1);
4132   __pyx_t_4 = (__Pyx_PySequence_ContainsTF(__pyx_v_driver, __pyx_t_1, Py_NE)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 328, __pyx_L1_error)
4133   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
4134   __pyx_t_3 = (__pyx_t_4 != 0);
4135   __pyx_t_2 = __pyx_t_3;
4136   __pyx_L4_bool_binop_done:;
4137   if (unlikely(__pyx_t_2)) {
4138 
4139     /* "tables/hdf5extension.pyx":329
4140  *     driver = params["DRIVER"]
4141  *     if driver is not None and driver not in _supported_drivers:
4142  *       raise ValueError("Invalid or not supported driver: '%s'" % driver)             # <<<<<<<<<<<<<<
4143  *     if driver == "H5FD_SPLIT":
4144  *       meta_ext = params.get("DRIVER_SPLIT_META_EXT", "-m.h5")
4145  */
4146     __pyx_t_1 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Invalid_or_not_supported_driver, __pyx_v_driver); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 329, __pyx_L1_error)
4147     __Pyx_GOTREF(__pyx_t_1);
4148     __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 329, __pyx_L1_error)
4149     __Pyx_GOTREF(__pyx_t_5);
4150     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
4151     __Pyx_Raise(__pyx_t_5, 0, 0, 0);
4152     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
4153     __PYX_ERR(0, 329, __pyx_L1_error)
4154 
4155     /* "tables/hdf5extension.pyx":328
4156  *     # Check if we can handle the driver
4157  *     driver = params["DRIVER"]
4158  *     if driver is not None and driver not in _supported_drivers:             # <<<<<<<<<<<<<<
4159  *       raise ValueError("Invalid or not supported driver: '%s'" % driver)
4160  *     if driver == "H5FD_SPLIT":
4161  */
4162   }
4163 
4164   /* "tables/hdf5extension.pyx":330
4165  *     if driver is not None and driver not in _supported_drivers:
4166  *       raise ValueError("Invalid or not supported driver: '%s'" % driver)
4167  *     if driver == "H5FD_SPLIT":             # <<<<<<<<<<<<<<
4168  *       meta_ext = params.get("DRIVER_SPLIT_META_EXT", "-m.h5")
4169  *       raw_ext = params.get("DRIVER_SPLIT_RAW_EXT", "-r.h5")
4170  */
4171   __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_driver, __pyx_n_s_H5FD_SPLIT, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 330, __pyx_L1_error)
4172   if (__pyx_t_2) {
4173 
4174     /* "tables/hdf5extension.pyx":331
4175  *       raise ValueError("Invalid or not supported driver: '%s'" % driver)
4176  *     if driver == "H5FD_SPLIT":
4177  *       meta_ext = params.get("DRIVER_SPLIT_META_EXT", "-m.h5")             # <<<<<<<<<<<<<<
4178  *       raw_ext = params.get("DRIVER_SPLIT_RAW_EXT", "-r.h5")
4179  *       meta_name = meta_ext % name if "%s" in meta_ext else name + meta_ext
4180  */
4181     __pyx_t_5 = __Pyx_PyDict_GetItemDefault(__pyx_v_params, __pyx_n_s_DRIVER_SPLIT_META_EXT, __pyx_kp_s_m_h5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 331, __pyx_L1_error)
4182     __Pyx_GOTREF(__pyx_t_5);
4183     __pyx_v_meta_ext = __pyx_t_5;
4184     __pyx_t_5 = 0;
4185 
4186     /* "tables/hdf5extension.pyx":332
4187  *     if driver == "H5FD_SPLIT":
4188  *       meta_ext = params.get("DRIVER_SPLIT_META_EXT", "-m.h5")
4189  *       raw_ext = params.get("DRIVER_SPLIT_RAW_EXT", "-r.h5")             # <<<<<<<<<<<<<<
4190  *       meta_name = meta_ext % name if "%s" in meta_ext else name + meta_ext
4191  *       raw_name = raw_ext % name if "%s" in raw_ext else name + raw_ext
4192  */
4193     __pyx_t_5 = __Pyx_PyDict_GetItemDefault(__pyx_v_params, __pyx_n_s_DRIVER_SPLIT_RAW_EXT, __pyx_kp_s_r_h5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 332, __pyx_L1_error)
4194     __Pyx_GOTREF(__pyx_t_5);
4195     __pyx_v_raw_ext = __pyx_t_5;
4196     __pyx_t_5 = 0;
4197 
4198     /* "tables/hdf5extension.pyx":333
4199  *       meta_ext = params.get("DRIVER_SPLIT_META_EXT", "-m.h5")
4200  *       raw_ext = params.get("DRIVER_SPLIT_RAW_EXT", "-r.h5")
4201  *       meta_name = meta_ext % name if "%s" in meta_ext else name + meta_ext             # <<<<<<<<<<<<<<
4202  *       raw_name = raw_ext % name if "%s" in raw_ext else name + raw_ext
4203  *       enc_meta_ext = encode_filename(meta_ext)
4204  */
4205     __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_kp_s_s, __pyx_v_meta_ext, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 333, __pyx_L1_error)
4206     if ((__pyx_t_2 != 0)) {
4207       __pyx_t_1 = PyNumber_Remainder(__pyx_v_meta_ext, __pyx_v_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 333, __pyx_L1_error)
4208       __Pyx_GOTREF(__pyx_t_1);
4209       __pyx_t_5 = __pyx_t_1;
4210       __pyx_t_1 = 0;
4211     } else {
4212       __pyx_t_1 = PyNumber_Add(__pyx_v_name, __pyx_v_meta_ext); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 333, __pyx_L1_error)
4213       __Pyx_GOTREF(__pyx_t_1);
4214       __pyx_t_5 = __pyx_t_1;
4215       __pyx_t_1 = 0;
4216     }
4217     __pyx_v_meta_name = __pyx_t_5;
4218     __pyx_t_5 = 0;
4219 
4220     /* "tables/hdf5extension.pyx":334
4221  *       raw_ext = params.get("DRIVER_SPLIT_RAW_EXT", "-r.h5")
4222  *       meta_name = meta_ext % name if "%s" in meta_ext else name + meta_ext
4223  *       raw_name = raw_ext % name if "%s" in raw_ext else name + raw_ext             # <<<<<<<<<<<<<<
4224  *       enc_meta_ext = encode_filename(meta_ext)
4225  *       enc_raw_ext = encode_filename(raw_ext)
4226  */
4227     __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_kp_s_s, __pyx_v_raw_ext, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 334, __pyx_L1_error)
4228     if ((__pyx_t_2 != 0)) {
4229       __pyx_t_1 = PyNumber_Remainder(__pyx_v_raw_ext, __pyx_v_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 334, __pyx_L1_error)
4230       __Pyx_GOTREF(__pyx_t_1);
4231       __pyx_t_5 = __pyx_t_1;
4232       __pyx_t_1 = 0;
4233     } else {
4234       __pyx_t_1 = PyNumber_Add(__pyx_v_name, __pyx_v_raw_ext); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 334, __pyx_L1_error)
4235       __Pyx_GOTREF(__pyx_t_1);
4236       __pyx_t_5 = __pyx_t_1;
4237       __pyx_t_1 = 0;
4238     }
4239     __pyx_v_raw_name = __pyx_t_5;
4240     __pyx_t_5 = 0;
4241 
4242     /* "tables/hdf5extension.pyx":335
4243  *       meta_name = meta_ext % name if "%s" in meta_ext else name + meta_ext
4244  *       raw_name = raw_ext % name if "%s" in raw_ext else name + raw_ext
4245  *       enc_meta_ext = encode_filename(meta_ext)             # <<<<<<<<<<<<<<
4246  *       enc_raw_ext = encode_filename(raw_ext)
4247  *
4248  */
4249     __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_encode_filename); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 335, __pyx_L1_error)
4250     __Pyx_GOTREF(__pyx_t_1);
4251     __pyx_t_6 = NULL;
4252     if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
4253       __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1);
4254       if (likely(__pyx_t_6)) {
4255         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
4256         __Pyx_INCREF(__pyx_t_6);
4257         __Pyx_INCREF(function);
4258         __Pyx_DECREF_SET(__pyx_t_1, function);
4259       }
4260     }
4261     __pyx_t_5 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_6, __pyx_v_meta_ext) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_meta_ext);
4262     __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
4263     if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 335, __pyx_L1_error)
4264     __Pyx_GOTREF(__pyx_t_5);
4265     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
4266     __pyx_v_enc_meta_ext = __pyx_t_5;
4267     __pyx_t_5 = 0;
4268 
4269     /* "tables/hdf5extension.pyx":336
4270  *       raw_name = raw_ext % name if "%s" in raw_ext else name + raw_ext
4271  *       enc_meta_ext = encode_filename(meta_ext)
4272  *       enc_raw_ext = encode_filename(raw_ext)             # <<<<<<<<<<<<<<
4273  *
4274  *     # Create a new file using default properties
4275  */
4276     __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_encode_filename); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 336, __pyx_L1_error)
4277     __Pyx_GOTREF(__pyx_t_1);
4278     __pyx_t_6 = NULL;
4279     if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
4280       __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1);
4281       if (likely(__pyx_t_6)) {
4282         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
4283         __Pyx_INCREF(__pyx_t_6);
4284         __Pyx_INCREF(function);
4285         __Pyx_DECREF_SET(__pyx_t_1, function);
4286       }
4287     }
4288     __pyx_t_5 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_6, __pyx_v_raw_ext) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_raw_ext);
4289     __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
4290     if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 336, __pyx_L1_error)
4291     __Pyx_GOTREF(__pyx_t_5);
4292     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
4293     __pyx_v_enc_raw_ext = __pyx_t_5;
4294     __pyx_t_5 = 0;
4295 
4296     /* "tables/hdf5extension.pyx":330
4297  *     if driver is not None and driver not in _supported_drivers:
4298  *       raise ValueError("Invalid or not supported driver: '%s'" % driver)
4299  *     if driver == "H5FD_SPLIT":             # <<<<<<<<<<<<<<
4300  *       meta_ext = params.get("DRIVER_SPLIT_META_EXT", "-m.h5")
4301  *       raw_ext = params.get("DRIVER_SPLIT_RAW_EXT", "-r.h5")
4302  */
4303   }
4304 
4305   /* "tables/hdf5extension.pyx":339
4306  *
4307  *     # Create a new file using default properties
4308  *     self.name = name             # <<<<<<<<<<<<<<
4309  *
4310  *     # Encode the filename in case it is unicode
4311  */
4312   __Pyx_INCREF(__pyx_v_name);
4313   __Pyx_GIVEREF(__pyx_v_name);
4314   __Pyx_GOTREF(__pyx_v_self->name);
4315   __Pyx_DECREF(__pyx_v_self->name);
4316   __pyx_v_self->name = __pyx_v_name;
4317 
4318   /* "tables/hdf5extension.pyx":342
4319  *
4320  *     # Encode the filename in case it is unicode
4321  *     encname = encode_filename(name)             # <<<<<<<<<<<<<<
4322  *
4323  *     # These fields can be seen from Python.
4324  */
4325   __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_encode_filename); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 342, __pyx_L1_error)
4326   __Pyx_GOTREF(__pyx_t_1);
4327   __pyx_t_6 = NULL;
4328   if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
4329     __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1);
4330     if (likely(__pyx_t_6)) {
4331       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
4332       __Pyx_INCREF(__pyx_t_6);
4333       __Pyx_INCREF(function);
4334       __Pyx_DECREF_SET(__pyx_t_1, function);
4335     }
4336   }
4337   __pyx_t_5 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_6, __pyx_v_name) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_name);
4338   __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
4339   if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 342, __pyx_L1_error)
4340   __Pyx_GOTREF(__pyx_t_5);
4341   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
4342   if (!(likely(PyBytes_CheckExact(__pyx_t_5))||((__pyx_t_5) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_5)->tp_name), 0))) __PYX_ERR(0, 342, __pyx_L1_error)
4343   __pyx_v_encname = ((PyObject*)__pyx_t_5);
4344   __pyx_t_5 = 0;
4345 
4346   /* "tables/hdf5extension.pyx":345
4347  *
4348  *     # These fields can be seen from Python.
4349  *     self._v_new = None  # this will be computed later             # <<<<<<<<<<<<<<
4350  *     # """Is this file going to be created from scratch?"""
4351  *
4352  */
4353   if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_v_new, Py_None) < 0) __PYX_ERR(0, 345, __pyx_L1_error)
4354 
4355   /* "tables/hdf5extension.pyx":348
4356  *     # """Is this file going to be created from scratch?"""
4357  *
4358  *     self._isPTFile = True  # assume a PyTables file by default             # <<<<<<<<<<<<<<
4359  *     # """Does this HDF5 file have a PyTables format?"""
4360  *
4361  */
4362   if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_isPTFile, Py_True) < 0) __PYX_ERR(0, 348, __pyx_L1_error)
4363 
4364   /* "tables/hdf5extension.pyx":351
4365  *     # """Does this HDF5 file have a PyTables format?"""
4366  *
4367  *     assert pymode in ('r', 'r+', 'a', 'w'), ("an invalid mode string ``%s`` "             # <<<<<<<<<<<<<<
4368  *            "passed the ``check_file_access()`` test; "
4369  *            "please report this to the authors" % pymode)
4370  */
4371   #ifndef CYTHON_WITHOUT_ASSERTIONS
4372   if (unlikely(!Py_OptimizeFlag)) {
4373     __Pyx_INCREF(__pyx_v_pymode);
4374     __pyx_t_5 = __pyx_v_pymode;
4375     __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_n_s_r, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 351, __pyx_L1_error)
4376     if (!__pyx_t_3) {
4377     } else {
4378       __pyx_t_2 = __pyx_t_3;
4379       goto __pyx_L7_bool_binop_done;
4380     }
4381     __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_kp_s_r_2, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 351, __pyx_L1_error)
4382     if (!__pyx_t_3) {
4383     } else {
4384       __pyx_t_2 = __pyx_t_3;
4385       goto __pyx_L7_bool_binop_done;
4386     }
4387     __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_n_s_a, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 351, __pyx_L1_error)
4388     if (!__pyx_t_3) {
4389     } else {
4390       __pyx_t_2 = __pyx_t_3;
4391       goto __pyx_L7_bool_binop_done;
4392     }
4393     __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_n_s_w, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 351, __pyx_L1_error)
4394     __pyx_t_2 = __pyx_t_3;
4395     __pyx_L7_bool_binop_done:;
4396     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
4397     if (unlikely(!(__pyx_t_2 != 0))) {
4398 
4399       /* "tables/hdf5extension.pyx":353
4400  *     assert pymode in ('r', 'r+', 'a', 'w'), ("an invalid mode string ``%s`` "
4401  *            "passed the ``check_file_access()`` test; "
4402  *            "please report this to the authors" % pymode)             # <<<<<<<<<<<<<<
4403  *
4404  *     image = params.get('DRIVER_CORE_IMAGE')
4405  */
4406       __pyx_t_5 = __Pyx_PyString_FormatSafe(__pyx_kp_s_an_invalid_mode_string_s_passed, __pyx_v_pymode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 353, __pyx_L1_error)
4407       __Pyx_GOTREF(__pyx_t_5);
4408       PyErr_SetObject(PyExc_AssertionError, __pyx_t_5);
4409       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
4410       __PYX_ERR(0, 351, __pyx_L1_error)
4411     }
4412   }
4413   #endif
4414 
4415   /* "tables/hdf5extension.pyx":355
4416  *            "please report this to the authors" % pymode)
4417  *
4418  *     image = params.get('DRIVER_CORE_IMAGE')             # <<<<<<<<<<<<<<
4419  *     if image:
4420  *       if driver != "H5FD_CORE":
4421  */
4422   __pyx_t_5 = __Pyx_PyDict_GetItemDefault(__pyx_v_params, __pyx_n_s_DRIVER_CORE_IMAGE, Py_None); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 355, __pyx_L1_error)
4423   __Pyx_GOTREF(__pyx_t_5);
4424   __pyx_v_image = __pyx_t_5;
4425   __pyx_t_5 = 0;
4426 
4427   /* "tables/hdf5extension.pyx":356
4428  *
4429  *     image = params.get('DRIVER_CORE_IMAGE')
4430  *     if image:             # <<<<<<<<<<<<<<
4431  *       if driver != "H5FD_CORE":
4432  *         warnings.warn("The DRIVER_CORE_IMAGE parameter will be ignored by "
4433  */
4434   __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_image); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 356, __pyx_L1_error)
4435   if (__pyx_t_2) {
4436 
4437     /* "tables/hdf5extension.pyx":357
4438  *     image = params.get('DRIVER_CORE_IMAGE')
4439  *     if image:
4440  *       if driver != "H5FD_CORE":             # <<<<<<<<<<<<<<
4441  *         warnings.warn("The DRIVER_CORE_IMAGE parameter will be ignored by "
4442  *                       "the '%s' driver" % driver)
4443  */
4444     __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_driver, __pyx_n_s_H5FD_CORE, Py_NE)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 357, __pyx_L1_error)
4445     if (__pyx_t_2) {
4446 
4447       /* "tables/hdf5extension.pyx":358
4448  *     if image:
4449  *       if driver != "H5FD_CORE":
4450  *         warnings.warn("The DRIVER_CORE_IMAGE parameter will be ignored by "             # <<<<<<<<<<<<<<
4451  *                       "the '%s' driver" % driver)
4452  *       elif not PyBytes_Check(image):
4453  */
4454       __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_warnings); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 358, __pyx_L1_error)
4455       __Pyx_GOTREF(__pyx_t_1);
4456       __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_warn); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 358, __pyx_L1_error)
4457       __Pyx_GOTREF(__pyx_t_6);
4458       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
4459 
4460       /* "tables/hdf5extension.pyx":359
4461  *       if driver != "H5FD_CORE":
4462  *         warnings.warn("The DRIVER_CORE_IMAGE parameter will be ignored by "
4463  *                       "the '%s' driver" % driver)             # <<<<<<<<<<<<<<
4464  *       elif not PyBytes_Check(image):
4465  *         raise TypeError("The DRIVER_CORE_IMAGE must be a string of bytes")
4466  */
4467       __pyx_t_1 = __Pyx_PyString_FormatSafe(__pyx_kp_s_The_DRIVER_CORE_IMAGE_parameter, __pyx_v_driver); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 359, __pyx_L1_error)
4468       __Pyx_GOTREF(__pyx_t_1);
4469       __pyx_t_7 = NULL;
4470       if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
4471         __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
4472         if (likely(__pyx_t_7)) {
4473           PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
4474           __Pyx_INCREF(__pyx_t_7);
4475           __Pyx_INCREF(function);
4476           __Pyx_DECREF_SET(__pyx_t_6, function);
4477         }
4478       }
4479       __pyx_t_5 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_7, __pyx_t_1) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_1);
4480       __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
4481       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
4482       if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 358, __pyx_L1_error)
4483       __Pyx_GOTREF(__pyx_t_5);
4484       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
4485       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
4486 
4487       /* "tables/hdf5extension.pyx":357
4488  *     image = params.get('DRIVER_CORE_IMAGE')
4489  *     if image:
4490  *       if driver != "H5FD_CORE":             # <<<<<<<<<<<<<<
4491  *         warnings.warn("The DRIVER_CORE_IMAGE parameter will be ignored by "
4492  *                       "the '%s' driver" % driver)
4493  */
4494       goto __pyx_L12;
4495     }
4496 
4497     /* "tables/hdf5extension.pyx":360
4498  *         warnings.warn("The DRIVER_CORE_IMAGE parameter will be ignored by "
4499  *                       "the '%s' driver" % driver)
4500  *       elif not PyBytes_Check(image):             # <<<<<<<<<<<<<<
4501  *         raise TypeError("The DRIVER_CORE_IMAGE must be a string of bytes")
4502  *       elif not H5_HAVE_IMAGE_FILE:
4503  */
4504     __pyx_t_2 = ((!(PyBytes_Check(__pyx_v_image) != 0)) != 0);
4505     if (unlikely(__pyx_t_2)) {
4506 
4507       /* "tables/hdf5extension.pyx":361
4508  *                       "the '%s' driver" % driver)
4509  *       elif not PyBytes_Check(image):
4510  *         raise TypeError("The DRIVER_CORE_IMAGE must be a string of bytes")             # <<<<<<<<<<<<<<
4511  *       elif not H5_HAVE_IMAGE_FILE:
4512  *         raise RuntimeError("Support for image files is only available in "
4513  */
4514       __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 361, __pyx_L1_error)
4515       __Pyx_GOTREF(__pyx_t_5);
4516       __Pyx_Raise(__pyx_t_5, 0, 0, 0);
4517       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
4518       __PYX_ERR(0, 361, __pyx_L1_error)
4519 
4520       /* "tables/hdf5extension.pyx":360
4521  *         warnings.warn("The DRIVER_CORE_IMAGE parameter will be ignored by "
4522  *                       "the '%s' driver" % driver)
4523  *       elif not PyBytes_Check(image):             # <<<<<<<<<<<<<<
4524  *         raise TypeError("The DRIVER_CORE_IMAGE must be a string of bytes")
4525  *       elif not H5_HAVE_IMAGE_FILE:
4526  */
4527     }
4528 
4529     /* "tables/hdf5extension.pyx":362
4530  *       elif not PyBytes_Check(image):
4531  *         raise TypeError("The DRIVER_CORE_IMAGE must be a string of bytes")
4532  *       elif not H5_HAVE_IMAGE_FILE:             # <<<<<<<<<<<<<<
4533  *         raise RuntimeError("Support for image files is only available in "
4534  *                            "HDF5 >= 1.8.9")
4535  */
4536     __pyx_t_2 = ((!(H5_HAVE_IMAGE_FILE != 0)) != 0);
4537     if (unlikely(__pyx_t_2)) {
4538 
4539       /* "tables/hdf5extension.pyx":363
4540  *         raise TypeError("The DRIVER_CORE_IMAGE must be a string of bytes")
4541  *       elif not H5_HAVE_IMAGE_FILE:
4542  *         raise RuntimeError("Support for image files is only available in "             # <<<<<<<<<<<<<<
4543  *                            "HDF5 >= 1.8.9")
4544  *
4545  */
4546       __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 363, __pyx_L1_error)
4547       __Pyx_GOTREF(__pyx_t_5);
4548       __Pyx_Raise(__pyx_t_5, 0, 0, 0);
4549       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
4550       __PYX_ERR(0, 363, __pyx_L1_error)
4551 
4552       /* "tables/hdf5extension.pyx":362
4553  *       elif not PyBytes_Check(image):
4554  *         raise TypeError("The DRIVER_CORE_IMAGE must be a string of bytes")
4555  *       elif not H5_HAVE_IMAGE_FILE:             # <<<<<<<<<<<<<<
4556  *         raise RuntimeError("Support for image files is only available in "
4557  *                            "HDF5 >= 1.8.9")
4558  */
4559     }
4560     __pyx_L12:;
4561 
4562     /* "tables/hdf5extension.pyx":356
4563  *
4564  *     image = params.get('DRIVER_CORE_IMAGE')
4565  *     if image:             # <<<<<<<<<<<<<<
4566  *       if driver != "H5FD_CORE":
4567  *         warnings.warn("The DRIVER_CORE_IMAGE parameter will be ignored by "
4568  */
4569   }
4570 
4571   /* "tables/hdf5extension.pyx":368
4572  *     # After the following check we can be quite sure
4573  *     # that the file or directory exists and permissions are right.
4574  *     if driver == "H5FD_SPLIT":             # <<<<<<<<<<<<<<
4575  *       for n in meta_name, raw_name:
4576  *         check_file_access(n, pymode)
4577  */
4578   __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_driver, __pyx_n_s_H5FD_SPLIT, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 368, __pyx_L1_error)
4579   if (__pyx_t_2) {
4580 
4581     /* "tables/hdf5extension.pyx":369
4582  *     # that the file or directory exists and permissions are right.
4583  *     if driver == "H5FD_SPLIT":
4584  *       for n in meta_name, raw_name:             # <<<<<<<<<<<<<<
4585  *         check_file_access(n, pymode)
4586  *     else:
4587  */
4588     if (unlikely(!__pyx_v_meta_name)) { __Pyx_RaiseUnboundLocalError("meta_name"); __PYX_ERR(0, 369, __pyx_L1_error) }
4589     if (unlikely(!__pyx_v_raw_name)) { __Pyx_RaiseUnboundLocalError("raw_name"); __PYX_ERR(0, 369, __pyx_L1_error) }
4590     __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 369, __pyx_L1_error)
4591     __Pyx_GOTREF(__pyx_t_5);
4592     __Pyx_INCREF(__pyx_v_meta_name);
4593     __Pyx_GIVEREF(__pyx_v_meta_name);
4594     PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_meta_name);
4595     __Pyx_INCREF(__pyx_v_raw_name);
4596     __Pyx_GIVEREF(__pyx_v_raw_name);
4597     PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_raw_name);
4598     __pyx_t_6 = __pyx_t_5; __Pyx_INCREF(__pyx_t_6); __pyx_t_8 = 0;
4599     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
4600     for (;;) {
4601       if (__pyx_t_8 >= 2) break;
4602       #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
4603       __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_8); __Pyx_INCREF(__pyx_t_5); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 369, __pyx_L1_error)
4604       #else
4605       __pyx_t_5 = PySequence_ITEM(__pyx_t_6, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 369, __pyx_L1_error)
4606       __Pyx_GOTREF(__pyx_t_5);
4607       #endif
4608       __Pyx_XDECREF_SET(__pyx_v_n, __pyx_t_5);
4609       __pyx_t_5 = 0;
4610 
4611       /* "tables/hdf5extension.pyx":370
4612  *     if driver == "H5FD_SPLIT":
4613  *       for n in meta_name, raw_name:
4614  *         check_file_access(n, pymode)             # <<<<<<<<<<<<<<
4615  *     else:
4616  *       backing_store = params.get("DRIVER_CORE_BACKING_STORE", 1)
4617  */
4618       __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_check_file_access); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 370, __pyx_L1_error)
4619       __Pyx_GOTREF(__pyx_t_1);
4620       __pyx_t_7 = NULL;
4621       __pyx_t_9 = 0;
4622       if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
4623         __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1);
4624         if (likely(__pyx_t_7)) {
4625           PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
4626           __Pyx_INCREF(__pyx_t_7);
4627           __Pyx_INCREF(function);
4628           __Pyx_DECREF_SET(__pyx_t_1, function);
4629           __pyx_t_9 = 1;
4630         }
4631       }
4632       #if CYTHON_FAST_PYCALL
4633       if (PyFunction_Check(__pyx_t_1)) {
4634         PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_v_n, __pyx_v_pymode};
4635         __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 370, __pyx_L1_error)
4636         __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
4637         __Pyx_GOTREF(__pyx_t_5);
4638       } else
4639       #endif
4640       #if CYTHON_FAST_PYCCALL
4641       if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
4642         PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_v_n, __pyx_v_pymode};
4643         __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 370, __pyx_L1_error)
4644         __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
4645         __Pyx_GOTREF(__pyx_t_5);
4646       } else
4647       #endif
4648       {
4649         __pyx_t_10 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 370, __pyx_L1_error)
4650         __Pyx_GOTREF(__pyx_t_10);
4651         if (__pyx_t_7) {
4652           __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_7); __pyx_t_7 = NULL;
4653         }
4654         __Pyx_INCREF(__pyx_v_n);
4655         __Pyx_GIVEREF(__pyx_v_n);
4656         PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_9, __pyx_v_n);
4657         __Pyx_INCREF(__pyx_v_pymode);
4658         __Pyx_GIVEREF(__pyx_v_pymode);
4659         PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_9, __pyx_v_pymode);
4660         __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_10, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 370, __pyx_L1_error)
4661         __Pyx_GOTREF(__pyx_t_5);
4662         __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
4663       }
4664       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
4665       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
4666 
4667       /* "tables/hdf5extension.pyx":369
4668  *     # that the file or directory exists and permissions are right.
4669  *     if driver == "H5FD_SPLIT":
4670  *       for n in meta_name, raw_name:             # <<<<<<<<<<<<<<
4671  *         check_file_access(n, pymode)
4672  *     else:
4673  */
4674     }
4675     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
4676 
4677     /* "tables/hdf5extension.pyx":368
4678  *     # After the following check we can be quite sure
4679  *     # that the file or directory exists and permissions are right.
4680  *     if driver == "H5FD_SPLIT":             # <<<<<<<<<<<<<<
4681  *       for n in meta_name, raw_name:
4682  *         check_file_access(n, pymode)
4683  */
4684     goto __pyx_L13;
4685   }
4686 
4687   /* "tables/hdf5extension.pyx":372
4688  *         check_file_access(n, pymode)
4689  *     else:
4690  *       backing_store = params.get("DRIVER_CORE_BACKING_STORE", 1)             # <<<<<<<<<<<<<<
4691  *       if driver != "H5FD_CORE" or backing_store:
4692  *         check_file_access(name, pymode)
4693  */
4694   /*else*/ {
4695     __pyx_t_6 = __Pyx_PyDict_GetItemDefault(__pyx_v_params, __pyx_n_s_DRIVER_CORE_BACKING_STORE, __pyx_int_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 372, __pyx_L1_error)
4696     __Pyx_GOTREF(__pyx_t_6);
4697     __pyx_v_backing_store = __pyx_t_6;
4698     __pyx_t_6 = 0;
4699 
4700     /* "tables/hdf5extension.pyx":373
4701  *     else:
4702  *       backing_store = params.get("DRIVER_CORE_BACKING_STORE", 1)
4703  *       if driver != "H5FD_CORE" or backing_store:             # <<<<<<<<<<<<<<
4704  *         check_file_access(name, pymode)
4705  *
4706  */
4707     __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_v_driver, __pyx_n_s_H5FD_CORE, Py_NE)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 373, __pyx_L1_error)
4708     if (!__pyx_t_3) {
4709     } else {
4710       __pyx_t_2 = __pyx_t_3;
4711       goto __pyx_L17_bool_binop_done;
4712     }
4713     __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_backing_store); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 373, __pyx_L1_error)
4714     __pyx_t_2 = __pyx_t_3;
4715     __pyx_L17_bool_binop_done:;
4716     if (__pyx_t_2) {
4717 
4718       /* "tables/hdf5extension.pyx":374
4719  *       backing_store = params.get("DRIVER_CORE_BACKING_STORE", 1)
4720  *       if driver != "H5FD_CORE" or backing_store:
4721  *         check_file_access(name, pymode)             # <<<<<<<<<<<<<<
4722  *
4723  *     # Should a new file be created?
4724  */
4725       __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_check_file_access); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 374, __pyx_L1_error)
4726       __Pyx_GOTREF(__pyx_t_5);
4727       __pyx_t_1 = NULL;
4728       __pyx_t_9 = 0;
4729       if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
4730         __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_5);
4731         if (likely(__pyx_t_1)) {
4732           PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
4733           __Pyx_INCREF(__pyx_t_1);
4734           __Pyx_INCREF(function);
4735           __Pyx_DECREF_SET(__pyx_t_5, function);
4736           __pyx_t_9 = 1;
4737         }
4738       }
4739       #if CYTHON_FAST_PYCALL
4740       if (PyFunction_Check(__pyx_t_5)) {
4741         PyObject *__pyx_temp[3] = {__pyx_t_1, __pyx_v_name, __pyx_v_pymode};
4742         __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 374, __pyx_L1_error)
4743         __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
4744         __Pyx_GOTREF(__pyx_t_6);
4745       } else
4746       #endif
4747       #if CYTHON_FAST_PYCCALL
4748       if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
4749         PyObject *__pyx_temp[3] = {__pyx_t_1, __pyx_v_name, __pyx_v_pymode};
4750         __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 374, __pyx_L1_error)
4751         __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
4752         __Pyx_GOTREF(__pyx_t_6);
4753       } else
4754       #endif
4755       {
4756         __pyx_t_10 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 374, __pyx_L1_error)
4757         __Pyx_GOTREF(__pyx_t_10);
4758         if (__pyx_t_1) {
4759           __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_1); __pyx_t_1 = NULL;
4760         }
4761         __Pyx_INCREF(__pyx_v_name);
4762         __Pyx_GIVEREF(__pyx_v_name);
4763         PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_9, __pyx_v_name);
4764         __Pyx_INCREF(__pyx_v_pymode);
4765         __Pyx_GIVEREF(__pyx_v_pymode);
4766         PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_9, __pyx_v_pymode);
4767         __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_10, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 374, __pyx_L1_error)
4768         __Pyx_GOTREF(__pyx_t_6);
4769         __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
4770       }
4771       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
4772       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
4773 
4774       /* "tables/hdf5extension.pyx":373
4775  *     else:
4776  *       backing_store = params.get("DRIVER_CORE_BACKING_STORE", 1)
4777  *       if driver != "H5FD_CORE" or backing_store:             # <<<<<<<<<<<<<<
4778  *         check_file_access(name, pymode)
4779  *
4780  */
4781     }
4782   }
4783   __pyx_L13:;
4784 
4785   /* "tables/hdf5extension.pyx":377
4786  *
4787  *     # Should a new file be created?
4788  *     if image:             # <<<<<<<<<<<<<<
4789  *       exists = True
4790  *     elif driver == "H5FD_SPLIT":
4791  */
4792   __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_image); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 377, __pyx_L1_error)
4793   if (__pyx_t_2) {
4794 
4795     /* "tables/hdf5extension.pyx":378
4796  *     # Should a new file be created?
4797  *     if image:
4798  *       exists = True             # <<<<<<<<<<<<<<
4799  *     elif driver == "H5FD_SPLIT":
4800  *       exists = os.path.exists(meta_name) and os.path.exists(raw_name)
4801  */
4802     __Pyx_INCREF(Py_True);
4803     __pyx_v_exists = Py_True;
4804 
4805     /* "tables/hdf5extension.pyx":377
4806  *
4807  *     # Should a new file be created?
4808  *     if image:             # <<<<<<<<<<<<<<
4809  *       exists = True
4810  *     elif driver == "H5FD_SPLIT":
4811  */
4812     goto __pyx_L19;
4813   }
4814 
4815   /* "tables/hdf5extension.pyx":379
4816  *     if image:
4817  *       exists = True
4818  *     elif driver == "H5FD_SPLIT":             # <<<<<<<<<<<<<<
4819  *       exists = os.path.exists(meta_name) and os.path.exists(raw_name)
4820  *     else:
4821  */
4822   __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_driver, __pyx_n_s_H5FD_SPLIT, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 379, __pyx_L1_error)
4823   if (__pyx_t_2) {
4824 
4825     /* "tables/hdf5extension.pyx":380
4826  *       exists = True
4827  *     elif driver == "H5FD_SPLIT":
4828  *       exists = os.path.exists(meta_name) and os.path.exists(raw_name)             # <<<<<<<<<<<<<<
4829  *     else:
4830  *       exists = os.path.exists(name)
4831  */
4832     __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_os); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 380, __pyx_L1_error)
4833     __Pyx_GOTREF(__pyx_t_10);
4834     __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_path); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 380, __pyx_L1_error)
4835     __Pyx_GOTREF(__pyx_t_1);
4836     __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
4837     __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_exists); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 380, __pyx_L1_error)
4838     __Pyx_GOTREF(__pyx_t_10);
4839     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
4840     if (unlikely(!__pyx_v_meta_name)) { __Pyx_RaiseUnboundLocalError("meta_name"); __PYX_ERR(0, 380, __pyx_L1_error) }
4841     __pyx_t_1 = NULL;
4842     if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_10))) {
4843       __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_10);
4844       if (likely(__pyx_t_1)) {
4845         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
4846         __Pyx_INCREF(__pyx_t_1);
4847         __Pyx_INCREF(function);
4848         __Pyx_DECREF_SET(__pyx_t_10, function);
4849       }
4850     }
4851     __pyx_t_5 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_10, __pyx_t_1, __pyx_v_meta_name) : __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_v_meta_name);
4852     __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
4853     if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 380, __pyx_L1_error)
4854     __Pyx_GOTREF(__pyx_t_5);
4855     __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
4856     __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 380, __pyx_L1_error)
4857     if (__pyx_t_2) {
4858       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
4859     } else {
4860       __Pyx_INCREF(__pyx_t_5);
4861       __pyx_t_6 = __pyx_t_5;
4862       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
4863       goto __pyx_L20_bool_binop_done;
4864     }
4865     __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_os); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 380, __pyx_L1_error)
4866     __Pyx_GOTREF(__pyx_t_10);
4867     __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_path); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 380, __pyx_L1_error)
4868     __Pyx_GOTREF(__pyx_t_1);
4869     __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
4870     __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_exists); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 380, __pyx_L1_error)
4871     __Pyx_GOTREF(__pyx_t_10);
4872     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
4873     if (unlikely(!__pyx_v_raw_name)) { __Pyx_RaiseUnboundLocalError("raw_name"); __PYX_ERR(0, 380, __pyx_L1_error) }
4874     __pyx_t_1 = NULL;
4875     if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_10))) {
4876       __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_10);
4877       if (likely(__pyx_t_1)) {
4878         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
4879         __Pyx_INCREF(__pyx_t_1);
4880         __Pyx_INCREF(function);
4881         __Pyx_DECREF_SET(__pyx_t_10, function);
4882       }
4883     }
4884     __pyx_t_5 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_10, __pyx_t_1, __pyx_v_raw_name) : __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_v_raw_name);
4885     __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
4886     if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 380, __pyx_L1_error)
4887     __Pyx_GOTREF(__pyx_t_5);
4888     __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
4889     __Pyx_INCREF(__pyx_t_5);
4890     __pyx_t_6 = __pyx_t_5;
4891     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
4892     __pyx_L20_bool_binop_done:;
4893     __pyx_v_exists = __pyx_t_6;
4894     __pyx_t_6 = 0;
4895 
4896     /* "tables/hdf5extension.pyx":379
4897  *     if image:
4898  *       exists = True
4899  *     elif driver == "H5FD_SPLIT":             # <<<<<<<<<<<<<<
4900  *       exists = os.path.exists(meta_name) and os.path.exists(raw_name)
4901  *     else:
4902  */
4903     goto __pyx_L19;
4904   }
4905 
4906   /* "tables/hdf5extension.pyx":382
4907  *       exists = os.path.exists(meta_name) and os.path.exists(raw_name)
4908  *     else:
4909  *       exists = os.path.exists(name)             # <<<<<<<<<<<<<<
4910  *     self._v_new = not (pymode in ('r', 'r+') or (pymode == 'a' and exists))
4911  *
4912  */
4913   /*else*/ {
4914     __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_os); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 382, __pyx_L1_error)
4915     __Pyx_GOTREF(__pyx_t_5);
4916     __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_path); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 382, __pyx_L1_error)
4917     __Pyx_GOTREF(__pyx_t_10);
4918     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
4919     __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_exists); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 382, __pyx_L1_error)
4920     __Pyx_GOTREF(__pyx_t_5);
4921     __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
4922     __pyx_t_10 = NULL;
4923     if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
4924       __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_5);
4925       if (likely(__pyx_t_10)) {
4926         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
4927         __Pyx_INCREF(__pyx_t_10);
4928         __Pyx_INCREF(function);
4929         __Pyx_DECREF_SET(__pyx_t_5, function);
4930       }
4931     }
4932     __pyx_t_6 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_10, __pyx_v_name) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_name);
4933     __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
4934     if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 382, __pyx_L1_error)
4935     __Pyx_GOTREF(__pyx_t_6);
4936     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
4937     __pyx_v_exists = __pyx_t_6;
4938     __pyx_t_6 = 0;
4939   }
4940   __pyx_L19:;
4941 
4942   /* "tables/hdf5extension.pyx":383
4943  *     else:
4944  *       exists = os.path.exists(name)
4945  *     self._v_new = not (pymode in ('r', 'r+') or (pymode == 'a' and exists))             # <<<<<<<<<<<<<<
4946  *
4947  *     user_block_size = params.get("USER_BLOCK_SIZE", 0)
4948  */
4949   __Pyx_INCREF(__pyx_v_pymode);
4950   __pyx_t_6 = __pyx_v_pymode;
4951   __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_t_6, __pyx_n_s_r, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 383, __pyx_L1_error)
4952   if (!__pyx_t_4) {
4953   } else {
4954     __pyx_t_3 = __pyx_t_4;
4955     goto __pyx_L24_bool_binop_done;
4956   }
4957   __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_t_6, __pyx_kp_s_r_2, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 383, __pyx_L1_error)
4958   __pyx_t_3 = __pyx_t_4;
4959   __pyx_L24_bool_binop_done:;
4960   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
4961   __pyx_t_4 = (__pyx_t_3 != 0);
4962   if (!__pyx_t_4) {
4963   } else {
4964     __pyx_t_2 = __pyx_t_4;
4965     goto __pyx_L22_bool_binop_done;
4966   }
4967   __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_v_pymode, __pyx_n_s_a, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 383, __pyx_L1_error)
4968   if (__pyx_t_4) {
4969   } else {
4970     __pyx_t_2 = __pyx_t_4;
4971     goto __pyx_L22_bool_binop_done;
4972   }
4973   __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_exists); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 383, __pyx_L1_error)
4974   __pyx_t_2 = __pyx_t_4;
4975   __pyx_L22_bool_binop_done:;
4976   __pyx_t_6 = __Pyx_PyBool_FromLong((!__pyx_t_2)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 383, __pyx_L1_error)
4977   __Pyx_GOTREF(__pyx_t_6);
4978   if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_v_new, __pyx_t_6) < 0) __PYX_ERR(0, 383, __pyx_L1_error)
4979   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
4980 
4981   /* "tables/hdf5extension.pyx":385
4982  *     self._v_new = not (pymode in ('r', 'r+') or (pymode == 'a' and exists))
4983  *
4984  *     user_block_size = params.get("USER_BLOCK_SIZE", 0)             # <<<<<<<<<<<<<<
4985  *     if user_block_size and not self._v_new:
4986  *         warnings.warn("The HDF5 file already esists: the USER_BLOCK_SIZE "
4987  */
4988   __pyx_t_6 = __Pyx_PyDict_GetItemDefault(__pyx_v_params, __pyx_n_s_USER_BLOCK_SIZE, __pyx_int_0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 385, __pyx_L1_error)
4989   __Pyx_GOTREF(__pyx_t_6);
4990   __pyx_t_11 = __Pyx_PyInt_As_size_t(__pyx_t_6); if (unlikely((__pyx_t_11 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 385, __pyx_L1_error)
4991   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
4992   __pyx_v_user_block_size = __pyx_t_11;
4993 
4994   /* "tables/hdf5extension.pyx":386
4995  *
4996  *     user_block_size = params.get("USER_BLOCK_SIZE", 0)
4997  *     if user_block_size and not self._v_new:             # <<<<<<<<<<<<<<
4998  *         warnings.warn("The HDF5 file already esists: the USER_BLOCK_SIZE "
4999  *                       "will be ignored")
5000  */
5001   __pyx_t_4 = (__pyx_v_user_block_size != 0);
5002   if (__pyx_t_4) {
5003   } else {
5004     __pyx_t_2 = __pyx_t_4;
5005     goto __pyx_L28_bool_binop_done;
5006   }
5007   __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_v_new); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 386, __pyx_L1_error)
5008   __Pyx_GOTREF(__pyx_t_6);
5009   __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 386, __pyx_L1_error)
5010   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
5011   __pyx_t_3 = ((!__pyx_t_4) != 0);
5012   __pyx_t_2 = __pyx_t_3;
5013   __pyx_L28_bool_binop_done:;
5014   if (__pyx_t_2) {
5015 
5016     /* "tables/hdf5extension.pyx":387
5017  *     user_block_size = params.get("USER_BLOCK_SIZE", 0)
5018  *     if user_block_size and not self._v_new:
5019  *         warnings.warn("The HDF5 file already esists: the USER_BLOCK_SIZE "             # <<<<<<<<<<<<<<
5020  *                       "will be ignored")
5021  *     elif user_block_size:
5022  */
5023     __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_warnings); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 387, __pyx_L1_error)
5024     __Pyx_GOTREF(__pyx_t_5);
5025     __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_warn); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 387, __pyx_L1_error)
5026     __Pyx_GOTREF(__pyx_t_10);
5027     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
5028     __pyx_t_5 = NULL;
5029     if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_10))) {
5030       __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_10);
5031       if (likely(__pyx_t_5)) {
5032         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
5033         __Pyx_INCREF(__pyx_t_5);
5034         __Pyx_INCREF(function);
5035         __Pyx_DECREF_SET(__pyx_t_10, function);
5036       }
5037     }
5038     __pyx_t_6 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_10, __pyx_t_5, __pyx_kp_s_The_HDF5_file_already_esists_the) : __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_kp_s_The_HDF5_file_already_esists_the);
5039     __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
5040     if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 387, __pyx_L1_error)
5041     __Pyx_GOTREF(__pyx_t_6);
5042     __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
5043     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
5044 
5045     /* "tables/hdf5extension.pyx":386
5046  *
5047  *     user_block_size = params.get("USER_BLOCK_SIZE", 0)
5048  *     if user_block_size and not self._v_new:             # <<<<<<<<<<<<<<
5049  *         warnings.warn("The HDF5 file already esists: the USER_BLOCK_SIZE "
5050  *                       "will be ignored")
5051  */
5052     goto __pyx_L27;
5053   }
5054 
5055   /* "tables/hdf5extension.pyx":389
5056  *         warnings.warn("The HDF5 file already esists: the USER_BLOCK_SIZE "
5057  *                       "will be ignored")
5058  *     elif user_block_size:             # <<<<<<<<<<<<<<
5059  *       user_block_size = int(user_block_size)
5060  *       is_pow_of_2 = ((user_block_size & (user_block_size - 1)) == 0)
5061  */
5062   __pyx_t_2 = (__pyx_v_user_block_size != 0);
5063   if (__pyx_t_2) {
5064 
5065     /* "tables/hdf5extension.pyx":391
5066  *     elif user_block_size:
5067  *       user_block_size = int(user_block_size)
5068  *       is_pow_of_2 = ((user_block_size & (user_block_size - 1)) == 0)             # <<<<<<<<<<<<<<
5069  *       if user_block_size < 512 or not is_pow_of_2:
5070  *         raise ValueError("The USER_BLOCK_SIZE must be a power od 2 greather "
5071  */
5072     __pyx_t_6 = __Pyx_PyBool_FromLong(((__pyx_v_user_block_size & (__pyx_v_user_block_size - 1)) == 0)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 391, __pyx_L1_error)
5073     __Pyx_GOTREF(__pyx_t_6);
5074     __pyx_v_is_pow_of_2 = __pyx_t_6;
5075     __pyx_t_6 = 0;
5076 
5077     /* "tables/hdf5extension.pyx":392
5078  *       user_block_size = int(user_block_size)
5079  *       is_pow_of_2 = ((user_block_size & (user_block_size - 1)) == 0)
5080  *       if user_block_size < 512 or not is_pow_of_2:             # <<<<<<<<<<<<<<
5081  *         raise ValueError("The USER_BLOCK_SIZE must be a power od 2 greather "
5082  *                          "than 512 or zero")
5083  */
5084     __pyx_t_3 = ((__pyx_v_user_block_size < 0x200) != 0);
5085     if (!__pyx_t_3) {
5086     } else {
5087       __pyx_t_2 = __pyx_t_3;
5088       goto __pyx_L31_bool_binop_done;
5089     }
5090     __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_is_pow_of_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 392, __pyx_L1_error)
5091     __pyx_t_4 = ((!__pyx_t_3) != 0);
5092     __pyx_t_2 = __pyx_t_4;
5093     __pyx_L31_bool_binop_done:;
5094     if (unlikely(__pyx_t_2)) {
5095 
5096       /* "tables/hdf5extension.pyx":393
5097  *       is_pow_of_2 = ((user_block_size & (user_block_size - 1)) == 0)
5098  *       if user_block_size < 512 or not is_pow_of_2:
5099  *         raise ValueError("The USER_BLOCK_SIZE must be a power od 2 greather "             # <<<<<<<<<<<<<<
5100  *                          "than 512 or zero")
5101  *
5102  */
5103       __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 393, __pyx_L1_error)
5104       __Pyx_GOTREF(__pyx_t_6);
5105       __Pyx_Raise(__pyx_t_6, 0, 0, 0);
5106       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
5107       __PYX_ERR(0, 393, __pyx_L1_error)
5108 
5109       /* "tables/hdf5extension.pyx":392
5110  *       user_block_size = int(user_block_size)
5111  *       is_pow_of_2 = ((user_block_size & (user_block_size - 1)) == 0)
5112  *       if user_block_size < 512 or not is_pow_of_2:             # <<<<<<<<<<<<<<
5113  *         raise ValueError("The USER_BLOCK_SIZE must be a power od 2 greather "
5114  *                          "than 512 or zero")
5115  */
5116     }
5117 
5118     /* "tables/hdf5extension.pyx":397
5119  *
5120  *       # File creation property list
5121  *       create_plist = H5Pcreate(H5P_FILE_CREATE)             # <<<<<<<<<<<<<<
5122  *       err = H5Pset_userblock(create_plist, user_block_size)
5123  *       if err < 0:
5124  */
5125     __pyx_v_create_plist = H5Pcreate(H5P_FILE_CREATE);
5126 
5127     /* "tables/hdf5extension.pyx":398
5128  *       # File creation property list
5129  *       create_plist = H5Pcreate(H5P_FILE_CREATE)
5130  *       err = H5Pset_userblock(create_plist, user_block_size)             # <<<<<<<<<<<<<<
5131  *       if err < 0:
5132  *         H5Pclose(create_plist)
5133  */
5134     __pyx_v_err = H5Pset_userblock(__pyx_v_create_plist, __pyx_v_user_block_size);
5135 
5136     /* "tables/hdf5extension.pyx":399
5137  *       create_plist = H5Pcreate(H5P_FILE_CREATE)
5138  *       err = H5Pset_userblock(create_plist, user_block_size)
5139  *       if err < 0:             # <<<<<<<<<<<<<<
5140  *         H5Pclose(create_plist)
5141  *         raise HDF5ExtError("Unable to set the user block size")
5142  */
5143     __pyx_t_2 = ((__pyx_v_err < 0) != 0);
5144     if (unlikely(__pyx_t_2)) {
5145 
5146       /* "tables/hdf5extension.pyx":400
5147  *       err = H5Pset_userblock(create_plist, user_block_size)
5148  *       if err < 0:
5149  *         H5Pclose(create_plist)             # <<<<<<<<<<<<<<
5150  *         raise HDF5ExtError("Unable to set the user block size")
5151  *
5152  */
5153       (void)(H5Pclose(__pyx_v_create_plist));
5154 
5155       /* "tables/hdf5extension.pyx":401
5156  *       if err < 0:
5157  *         H5Pclose(create_plist)
5158  *         raise HDF5ExtError("Unable to set the user block size")             # <<<<<<<<<<<<<<
5159  *
5160  *     # File access property list
5161  */
5162       __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_HDF5ExtError); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 401, __pyx_L1_error)
5163       __Pyx_GOTREF(__pyx_t_10);
5164       __pyx_t_5 = NULL;
5165       if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_10))) {
5166         __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_10);
5167         if (likely(__pyx_t_5)) {
5168           PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
5169           __Pyx_INCREF(__pyx_t_5);
5170           __Pyx_INCREF(function);
5171           __Pyx_DECREF_SET(__pyx_t_10, function);
5172         }
5173       }
5174       __pyx_t_6 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_10, __pyx_t_5, __pyx_kp_s_Unable_to_set_the_user_block_siz) : __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_kp_s_Unable_to_set_the_user_block_siz);
5175       __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
5176       if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 401, __pyx_L1_error)
5177       __Pyx_GOTREF(__pyx_t_6);
5178       __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
5179       __Pyx_Raise(__pyx_t_6, 0, 0, 0);
5180       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
5181       __PYX_ERR(0, 401, __pyx_L1_error)
5182 
5183       /* "tables/hdf5extension.pyx":399
5184  *       create_plist = H5Pcreate(H5P_FILE_CREATE)
5185  *       err = H5Pset_userblock(create_plist, user_block_size)
5186  *       if err < 0:             # <<<<<<<<<<<<<<
5187  *         H5Pclose(create_plist)
5188  *         raise HDF5ExtError("Unable to set the user block size")
5189  */
5190     }
5191 
5192     /* "tables/hdf5extension.pyx":389
5193  *         warnings.warn("The HDF5 file already esists: the USER_BLOCK_SIZE "
5194  *                       "will be ignored")
5195  *     elif user_block_size:             # <<<<<<<<<<<<<<
5196  *       user_block_size = int(user_block_size)
5197  *       is_pow_of_2 = ((user_block_size & (user_block_size - 1)) == 0)
5198  */
5199   }
5200   __pyx_L27:;
5201 
5202   /* "tables/hdf5extension.pyx":404
5203  *
5204  *     # File access property list
5205  *     access_plist = H5Pcreate(H5P_FILE_ACCESS)             # <<<<<<<<<<<<<<
5206  *
5207  *     # Set parameters for chunk cache
5208  */
5209   __pyx_v_access_plist = H5Pcreate(H5P_FILE_ACCESS);
5210 
5211   /* "tables/hdf5extension.pyx":408
5212  *     # Set parameters for chunk cache
5213  *     H5Pset_cache(access_plist, 0,
5214  *                  params["CHUNK_CACHE_NELMTS"],             # <<<<<<<<<<<<<<
5215  *                  params["CHUNK_CACHE_SIZE"],
5216  *                  params["CHUNK_CACHE_PREEMPT"])
5217  */
5218   __pyx_t_6 = __Pyx_PyDict_GetItem(__pyx_v_params, __pyx_n_s_CHUNK_CACHE_NELMTS); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 408, __pyx_L1_error)
5219   __Pyx_GOTREF(__pyx_t_6);
5220   __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_t_6); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 408, __pyx_L1_error)
5221   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
5222 
5223   /* "tables/hdf5extension.pyx":409
5224  *     H5Pset_cache(access_plist, 0,
5225  *                  params["CHUNK_CACHE_NELMTS"],
5226  *                  params["CHUNK_CACHE_SIZE"],             # <<<<<<<<<<<<<<
5227  *                  params["CHUNK_CACHE_PREEMPT"])
5228  *
5229  */
5230   __pyx_t_6 = __Pyx_PyDict_GetItem(__pyx_v_params, __pyx_n_s_CHUNK_CACHE_SIZE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 409, __pyx_L1_error)
5231   __Pyx_GOTREF(__pyx_t_6);
5232   __pyx_t_11 = __Pyx_PyInt_As_size_t(__pyx_t_6); if (unlikely((__pyx_t_11 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 409, __pyx_L1_error)
5233   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
5234 
5235   /* "tables/hdf5extension.pyx":410
5236  *                  params["CHUNK_CACHE_NELMTS"],
5237  *                  params["CHUNK_CACHE_SIZE"],
5238  *                  params["CHUNK_CACHE_PREEMPT"])             # <<<<<<<<<<<<<<
5239  *
5240  *     # Set the I/O driver
5241  */
5242   __pyx_t_6 = __Pyx_PyDict_GetItem(__pyx_v_params, __pyx_n_s_CHUNK_CACHE_PREEMPT); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 410, __pyx_L1_error)
5243   __Pyx_GOTREF(__pyx_t_6);
5244   __pyx_t_12 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_12 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 410, __pyx_L1_error)
5245   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
5246 
5247   /* "tables/hdf5extension.pyx":407
5248  *
5249  *     # Set parameters for chunk cache
5250  *     H5Pset_cache(access_plist, 0,             # <<<<<<<<<<<<<<
5251  *                  params["CHUNK_CACHE_NELMTS"],
5252  *                  params["CHUNK_CACHE_SIZE"],
5253  */
5254   (void)(H5Pset_cache(__pyx_v_access_plist, 0, __pyx_t_9, __pyx_t_11, __pyx_t_12));
5255 
5256   /* "tables/hdf5extension.pyx":413
5257  *
5258  *     # Set the I/O driver
5259  *     if driver == "H5FD_SEC2":             # <<<<<<<<<<<<<<
5260  *       err = H5Pset_fapl_sec2(access_plist)
5261  *     elif driver == "H5FD_DIRECT":
5262  */
5263   __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_driver, __pyx_n_s_H5FD_SEC2, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 413, __pyx_L1_error)
5264   if (__pyx_t_2) {
5265 
5266     /* "tables/hdf5extension.pyx":414
5267  *     # Set the I/O driver
5268  *     if driver == "H5FD_SEC2":
5269  *       err = H5Pset_fapl_sec2(access_plist)             # <<<<<<<<<<<<<<
5270  *     elif driver == "H5FD_DIRECT":
5271  *       if not H5_HAVE_DIRECT_DRIVER:
5272  */
5273     __pyx_v_err = H5Pset_fapl_sec2(__pyx_v_access_plist);
5274 
5275     /* "tables/hdf5extension.pyx":413
5276  *
5277  *     # Set the I/O driver
5278  *     if driver == "H5FD_SEC2":             # <<<<<<<<<<<<<<
5279  *       err = H5Pset_fapl_sec2(access_plist)
5280  *     elif driver == "H5FD_DIRECT":
5281  */
5282     goto __pyx_L34;
5283   }
5284 
5285   /* "tables/hdf5extension.pyx":415
5286  *     if driver == "H5FD_SEC2":
5287  *       err = H5Pset_fapl_sec2(access_plist)
5288  *     elif driver == "H5FD_DIRECT":             # <<<<<<<<<<<<<<
5289  *       if not H5_HAVE_DIRECT_DRIVER:
5290  *         H5Pclose(create_plist)
5291  */
5292   __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_driver, __pyx_n_s_H5FD_DIRECT, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 415, __pyx_L1_error)
5293   if (__pyx_t_2) {
5294 
5295     /* "tables/hdf5extension.pyx":416
5296  *       err = H5Pset_fapl_sec2(access_plist)
5297  *     elif driver == "H5FD_DIRECT":
5298  *       if not H5_HAVE_DIRECT_DRIVER:             # <<<<<<<<<<<<<<
5299  *         H5Pclose(create_plist)
5300  *         H5Pclose(access_plist)
5301  */
5302     __pyx_t_2 = ((!(H5_HAVE_DIRECT_DRIVER != 0)) != 0);
5303     if (unlikely(__pyx_t_2)) {
5304 
5305       /* "tables/hdf5extension.pyx":417
5306  *     elif driver == "H5FD_DIRECT":
5307  *       if not H5_HAVE_DIRECT_DRIVER:
5308  *         H5Pclose(create_plist)             # <<<<<<<<<<<<<<
5309  *         H5Pclose(access_plist)
5310  *         raise RuntimeError("The H5FD_DIRECT driver is not available")
5311  */
5312       (void)(H5Pclose(__pyx_v_create_plist));
5313 
5314       /* "tables/hdf5extension.pyx":418
5315  *       if not H5_HAVE_DIRECT_DRIVER:
5316  *         H5Pclose(create_plist)
5317  *         H5Pclose(access_plist)             # <<<<<<<<<<<<<<
5318  *         raise RuntimeError("The H5FD_DIRECT driver is not available")
5319  *       err = pt_H5Pset_fapl_direct(access_plist,
5320  */
5321       (void)(H5Pclose(__pyx_v_access_plist));
5322 
5323       /* "tables/hdf5extension.pyx":419
5324  *         H5Pclose(create_plist)
5325  *         H5Pclose(access_plist)
5326  *         raise RuntimeError("The H5FD_DIRECT driver is not available")             # <<<<<<<<<<<<<<
5327  *       err = pt_H5Pset_fapl_direct(access_plist,
5328  *                                   params["DRIVER_DIRECT_ALIGNMENT"],
5329  */
5330       __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 419, __pyx_L1_error)
5331       __Pyx_GOTREF(__pyx_t_6);
5332       __Pyx_Raise(__pyx_t_6, 0, 0, 0);
5333       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
5334       __PYX_ERR(0, 419, __pyx_L1_error)
5335 
5336       /* "tables/hdf5extension.pyx":416
5337  *       err = H5Pset_fapl_sec2(access_plist)
5338  *     elif driver == "H5FD_DIRECT":
5339  *       if not H5_HAVE_DIRECT_DRIVER:             # <<<<<<<<<<<<<<
5340  *         H5Pclose(create_plist)
5341  *         H5Pclose(access_plist)
5342  */
5343     }
5344 
5345     /* "tables/hdf5extension.pyx":421
5346  *         raise RuntimeError("The H5FD_DIRECT driver is not available")
5347  *       err = pt_H5Pset_fapl_direct(access_plist,
5348  *                                   params["DRIVER_DIRECT_ALIGNMENT"],             # <<<<<<<<<<<<<<
5349  *                                   params["DRIVER_DIRECT_BLOCK_SIZE"],
5350  *                                   params["DRIVER_DIRECT_CBUF_SIZE"])
5351  */
5352     __pyx_t_6 = __Pyx_PyDict_GetItem(__pyx_v_params, __pyx_n_s_DRIVER_DIRECT_ALIGNMENT); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 421, __pyx_L1_error)
5353     __Pyx_GOTREF(__pyx_t_6);
5354     __pyx_t_11 = __Pyx_PyInt_As_size_t(__pyx_t_6); if (unlikely((__pyx_t_11 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 421, __pyx_L1_error)
5355     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
5356 
5357     /* "tables/hdf5extension.pyx":422
5358  *       err = pt_H5Pset_fapl_direct(access_plist,
5359  *                                   params["DRIVER_DIRECT_ALIGNMENT"],
5360  *                                   params["DRIVER_DIRECT_BLOCK_SIZE"],             # <<<<<<<<<<<<<<
5361  *                                   params["DRIVER_DIRECT_CBUF_SIZE"])
5362  *     #elif driver == "H5FD_LOG":
5363  */
5364     __pyx_t_6 = __Pyx_PyDict_GetItem(__pyx_v_params, __pyx_n_s_DRIVER_DIRECT_BLOCK_SIZE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 422, __pyx_L1_error)
5365     __Pyx_GOTREF(__pyx_t_6);
5366     __pyx_t_13 = __Pyx_PyInt_As_size_t(__pyx_t_6); if (unlikely((__pyx_t_13 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 422, __pyx_L1_error)
5367     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
5368 
5369     /* "tables/hdf5extension.pyx":423
5370  *                                   params["DRIVER_DIRECT_ALIGNMENT"],
5371  *                                   params["DRIVER_DIRECT_BLOCK_SIZE"],
5372  *                                   params["DRIVER_DIRECT_CBUF_SIZE"])             # <<<<<<<<<<<<<<
5373  *     #elif driver == "H5FD_LOG":
5374  *     #  if "DRIVER_LOG_FILE" not in params:
5375  */
5376     __pyx_t_6 = __Pyx_PyDict_GetItem(__pyx_v_params, __pyx_n_s_DRIVER_DIRECT_CBUF_SIZE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 423, __pyx_L1_error)
5377     __Pyx_GOTREF(__pyx_t_6);
5378     __pyx_t_14 = __Pyx_PyInt_As_size_t(__pyx_t_6); if (unlikely((__pyx_t_14 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 423, __pyx_L1_error)
5379     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
5380 
5381     /* "tables/hdf5extension.pyx":420
5382  *         H5Pclose(access_plist)
5383  *         raise RuntimeError("The H5FD_DIRECT driver is not available")
5384  *       err = pt_H5Pset_fapl_direct(access_plist,             # <<<<<<<<<<<<<<
5385  *                                   params["DRIVER_DIRECT_ALIGNMENT"],
5386  *                                   params["DRIVER_DIRECT_BLOCK_SIZE"],
5387  */
5388     __pyx_v_err = pt_H5Pset_fapl_direct(__pyx_v_access_plist, __pyx_t_11, __pyx_t_13, __pyx_t_14);
5389 
5390     /* "tables/hdf5extension.pyx":415
5391  *     if driver == "H5FD_SEC2":
5392  *       err = H5Pset_fapl_sec2(access_plist)
5393  *     elif driver == "H5FD_DIRECT":             # <<<<<<<<<<<<<<
5394  *       if not H5_HAVE_DIRECT_DRIVER:
5395  *         H5Pclose(create_plist)
5396  */
5397     goto __pyx_L34;
5398   }
5399 
5400   /* "tables/hdf5extension.pyx":434
5401  *     #                        params["DRIVER_LOG_FLAGS"],
5402  *     #                        params["DRIVER_LOG_BUF_SIZE"])
5403  *     elif driver == "H5FD_WINDOWS":             # <<<<<<<<<<<<<<
5404  *       if not H5_HAVE_WINDOWS_DRIVER:
5405  *         H5Pclose(access_plist)
5406  */
5407   __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_driver, __pyx_n_s_H5FD_WINDOWS, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 434, __pyx_L1_error)
5408   if (__pyx_t_2) {
5409 
5410     /* "tables/hdf5extension.pyx":435
5411  *     #                        params["DRIVER_LOG_BUF_SIZE"])
5412  *     elif driver == "H5FD_WINDOWS":
5413  *       if not H5_HAVE_WINDOWS_DRIVER:             # <<<<<<<<<<<<<<
5414  *         H5Pclose(access_plist)
5415  *         H5Pclose(create_plist)
5416  */
5417     __pyx_t_2 = ((!(H5_HAVE_WINDOWS_DRIVER != 0)) != 0);
5418     if (unlikely(__pyx_t_2)) {
5419 
5420       /* "tables/hdf5extension.pyx":436
5421  *     elif driver == "H5FD_WINDOWS":
5422  *       if not H5_HAVE_WINDOWS_DRIVER:
5423  *         H5Pclose(access_plist)             # <<<<<<<<<<<<<<
5424  *         H5Pclose(create_plist)
5425  *         raise RuntimeError("The H5FD_WINDOWS driver is not available")
5426  */
5427       (void)(H5Pclose(__pyx_v_access_plist));
5428 
5429       /* "tables/hdf5extension.pyx":437
5430  *       if not H5_HAVE_WINDOWS_DRIVER:
5431  *         H5Pclose(access_plist)
5432  *         H5Pclose(create_plist)             # <<<<<<<<<<<<<<
5433  *         raise RuntimeError("The H5FD_WINDOWS driver is not available")
5434  *       err = pt_H5Pset_fapl_windows(access_plist)
5435  */
5436       (void)(H5Pclose(__pyx_v_create_plist));
5437 
5438       /* "tables/hdf5extension.pyx":438
5439  *         H5Pclose(access_plist)
5440  *         H5Pclose(create_plist)
5441  *         raise RuntimeError("The H5FD_WINDOWS driver is not available")             # <<<<<<<<<<<<<<
5442  *       err = pt_H5Pset_fapl_windows(access_plist)
5443  *     elif driver == "H5FD_STDIO":
5444  */
5445       __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 438, __pyx_L1_error)
5446       __Pyx_GOTREF(__pyx_t_6);
5447       __Pyx_Raise(__pyx_t_6, 0, 0, 0);
5448       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
5449       __PYX_ERR(0, 438, __pyx_L1_error)
5450 
5451       /* "tables/hdf5extension.pyx":435
5452  *     #                        params["DRIVER_LOG_BUF_SIZE"])
5453  *     elif driver == "H5FD_WINDOWS":
5454  *       if not H5_HAVE_WINDOWS_DRIVER:             # <<<<<<<<<<<<<<
5455  *         H5Pclose(access_plist)
5456  *         H5Pclose(create_plist)
5457  */
5458     }
5459 
5460     /* "tables/hdf5extension.pyx":439
5461  *         H5Pclose(create_plist)
5462  *         raise RuntimeError("The H5FD_WINDOWS driver is not available")
5463  *       err = pt_H5Pset_fapl_windows(access_plist)             # <<<<<<<<<<<<<<
5464  *     elif driver == "H5FD_STDIO":
5465  *       err = H5Pset_fapl_stdio(access_plist)
5466  */
5467     __pyx_v_err = pt_H5Pset_fapl_windows(__pyx_v_access_plist);
5468 
5469     /* "tables/hdf5extension.pyx":434
5470  *     #                        params["DRIVER_LOG_FLAGS"],
5471  *     #                        params["DRIVER_LOG_BUF_SIZE"])
5472  *     elif driver == "H5FD_WINDOWS":             # <<<<<<<<<<<<<<
5473  *       if not H5_HAVE_WINDOWS_DRIVER:
5474  *         H5Pclose(access_plist)
5475  */
5476     goto __pyx_L34;
5477   }
5478 
5479   /* "tables/hdf5extension.pyx":440
5480  *         raise RuntimeError("The H5FD_WINDOWS driver is not available")
5481  *       err = pt_H5Pset_fapl_windows(access_plist)
5482  *     elif driver == "H5FD_STDIO":             # <<<<<<<<<<<<<<
5483  *       err = H5Pset_fapl_stdio(access_plist)
5484  *     elif driver == "H5FD_CORE":
5485  */
5486   __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_driver, __pyx_n_s_H5FD_STDIO, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 440, __pyx_L1_error)
5487   if (__pyx_t_2) {
5488 
5489     /* "tables/hdf5extension.pyx":441
5490  *       err = pt_H5Pset_fapl_windows(access_plist)
5491  *     elif driver == "H5FD_STDIO":
5492  *       err = H5Pset_fapl_stdio(access_plist)             # <<<<<<<<<<<<<<
5493  *     elif driver == "H5FD_CORE":
5494  *       err = H5Pset_fapl_core(access_plist,
5495  */
5496     __pyx_v_err = H5Pset_fapl_stdio(__pyx_v_access_plist);
5497 
5498     /* "tables/hdf5extension.pyx":440
5499  *         raise RuntimeError("The H5FD_WINDOWS driver is not available")
5500  *       err = pt_H5Pset_fapl_windows(access_plist)
5501  *     elif driver == "H5FD_STDIO":             # <<<<<<<<<<<<<<
5502  *       err = H5Pset_fapl_stdio(access_plist)
5503  *     elif driver == "H5FD_CORE":
5504  */
5505     goto __pyx_L34;
5506   }
5507 
5508   /* "tables/hdf5extension.pyx":442
5509  *     elif driver == "H5FD_STDIO":
5510  *       err = H5Pset_fapl_stdio(access_plist)
5511  *     elif driver == "H5FD_CORE":             # <<<<<<<<<<<<<<
5512  *       err = H5Pset_fapl_core(access_plist,
5513  *                              params["DRIVER_CORE_INCREMENT"],
5514  */
5515   __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_driver, __pyx_n_s_H5FD_CORE, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 442, __pyx_L1_error)
5516   if (__pyx_t_2) {
5517 
5518     /* "tables/hdf5extension.pyx":444
5519  *     elif driver == "H5FD_CORE":
5520  *       err = H5Pset_fapl_core(access_plist,
5521  *                              params["DRIVER_CORE_INCREMENT"],             # <<<<<<<<<<<<<<
5522  *                              backing_store)
5523  *       if image:
5524  */
5525     __pyx_t_6 = __Pyx_PyDict_GetItem(__pyx_v_params, __pyx_n_s_DRIVER_CORE_INCREMENT); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 444, __pyx_L1_error)
5526     __Pyx_GOTREF(__pyx_t_6);
5527     __pyx_t_14 = __Pyx_PyInt_As_size_t(__pyx_t_6); if (unlikely((__pyx_t_14 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 444, __pyx_L1_error)
5528     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
5529 
5530     /* "tables/hdf5extension.pyx":445
5531  *       err = H5Pset_fapl_core(access_plist,
5532  *                              params["DRIVER_CORE_INCREMENT"],
5533  *                              backing_store)             # <<<<<<<<<<<<<<
5534  *       if image:
5535  *         img_buf_len = len(image)
5536  */
5537     if (unlikely(!__pyx_v_backing_store)) { __Pyx_RaiseUnboundLocalError("backing_store"); __PYX_ERR(0, 445, __pyx_L1_error) }
5538     __pyx_t_15 = __Pyx_PyInt_As_hbool_t(__pyx_v_backing_store); if (unlikely((__pyx_t_15 == ((hbool_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 445, __pyx_L1_error)
5539 
5540     /* "tables/hdf5extension.pyx":443
5541  *       err = H5Pset_fapl_stdio(access_plist)
5542  *     elif driver == "H5FD_CORE":
5543  *       err = H5Pset_fapl_core(access_plist,             # <<<<<<<<<<<<<<
5544  *                              params["DRIVER_CORE_INCREMENT"],
5545  *                              backing_store)
5546  */
5547     __pyx_v_err = H5Pset_fapl_core(__pyx_v_access_plist, __pyx_t_14, __pyx_t_15);
5548 
5549     /* "tables/hdf5extension.pyx":446
5550  *                              params["DRIVER_CORE_INCREMENT"],
5551  *                              backing_store)
5552  *       if image:             # <<<<<<<<<<<<<<
5553  *         img_buf_len = len(image)
5554  *         img_buf_p = <void *>PyBytes_AsString(image)
5555  */
5556     __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_image); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 446, __pyx_L1_error)
5557     if (__pyx_t_2) {
5558 
5559       /* "tables/hdf5extension.pyx":447
5560  *                              backing_store)
5561  *       if image:
5562  *         img_buf_len = len(image)             # <<<<<<<<<<<<<<
5563  *         img_buf_p = <void *>PyBytes_AsString(image)
5564  *         err = pt_H5Pset_file_image(access_plist, img_buf_p, img_buf_len)
5565  */
5566       __pyx_t_8 = PyObject_Length(__pyx_v_image); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(0, 447, __pyx_L1_error)
5567       __pyx_v_img_buf_len = __pyx_t_8;
5568 
5569       /* "tables/hdf5extension.pyx":448
5570  *       if image:
5571  *         img_buf_len = len(image)
5572  *         img_buf_p = <void *>PyBytes_AsString(image)             # <<<<<<<<<<<<<<
5573  *         err = pt_H5Pset_file_image(access_plist, img_buf_p, img_buf_len)
5574  *         if err < 0:
5575  */
5576       __pyx_t_16 = PyBytes_AsString(__pyx_v_image); if (unlikely(__pyx_t_16 == ((char *)NULL))) __PYX_ERR(0, 448, __pyx_L1_error)
5577       __pyx_v_img_buf_p = ((void *)__pyx_t_16);
5578 
5579       /* "tables/hdf5extension.pyx":449
5580  *         img_buf_len = len(image)
5581  *         img_buf_p = <void *>PyBytes_AsString(image)
5582  *         err = pt_H5Pset_file_image(access_plist, img_buf_p, img_buf_len)             # <<<<<<<<<<<<<<
5583  *         if err < 0:
5584  *           H5Pclose(create_plist)
5585  */
5586       __pyx_v_err = pt_H5Pset_file_image(__pyx_v_access_plist, __pyx_v_img_buf_p, __pyx_v_img_buf_len);
5587 
5588       /* "tables/hdf5extension.pyx":450
5589  *         img_buf_p = <void *>PyBytes_AsString(image)
5590  *         err = pt_H5Pset_file_image(access_plist, img_buf_p, img_buf_len)
5591  *         if err < 0:             # <<<<<<<<<<<<<<
5592  *           H5Pclose(create_plist)
5593  *           H5Pclose(access_plist)
5594  */
5595       __pyx_t_2 = ((__pyx_v_err < 0) != 0);
5596       if (unlikely(__pyx_t_2)) {
5597 
5598         /* "tables/hdf5extension.pyx":451
5599  *         err = pt_H5Pset_file_image(access_plist, img_buf_p, img_buf_len)
5600  *         if err < 0:
5601  *           H5Pclose(create_plist)             # <<<<<<<<<<<<<<
5602  *           H5Pclose(access_plist)
5603  *           raise HDF5ExtError("Unable to set the file image")
5604  */
5605         (void)(H5Pclose(__pyx_v_create_plist));
5606 
5607         /* "tables/hdf5extension.pyx":452
5608  *         if err < 0:
5609  *           H5Pclose(create_plist)
5610  *           H5Pclose(access_plist)             # <<<<<<<<<<<<<<
5611  *           raise HDF5ExtError("Unable to set the file image")
5612  *
5613  */
5614         (void)(H5Pclose(__pyx_v_access_plist));
5615 
5616         /* "tables/hdf5extension.pyx":453
5617  *           H5Pclose(create_plist)
5618  *           H5Pclose(access_plist)
5619  *           raise HDF5ExtError("Unable to set the file image")             # <<<<<<<<<<<<<<
5620  *
5621  *     #elif driver == "H5FD_FAMILY":
5622  */
5623         __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_HDF5ExtError); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 453, __pyx_L1_error)
5624         __Pyx_GOTREF(__pyx_t_10);
5625         __pyx_t_5 = NULL;
5626         if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_10))) {
5627           __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_10);
5628           if (likely(__pyx_t_5)) {
5629             PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
5630             __Pyx_INCREF(__pyx_t_5);
5631             __Pyx_INCREF(function);
5632             __Pyx_DECREF_SET(__pyx_t_10, function);
5633           }
5634         }
5635         __pyx_t_6 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_10, __pyx_t_5, __pyx_kp_s_Unable_to_set_the_file_image) : __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_kp_s_Unable_to_set_the_file_image);
5636         __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
5637         if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 453, __pyx_L1_error)
5638         __Pyx_GOTREF(__pyx_t_6);
5639         __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
5640         __Pyx_Raise(__pyx_t_6, 0, 0, 0);
5641         __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
5642         __PYX_ERR(0, 453, __pyx_L1_error)
5643 
5644         /* "tables/hdf5extension.pyx":450
5645  *         img_buf_p = <void *>PyBytes_AsString(image)
5646  *         err = pt_H5Pset_file_image(access_plist, img_buf_p, img_buf_len)
5647  *         if err < 0:             # <<<<<<<<<<<<<<
5648  *           H5Pclose(create_plist)
5649  *           H5Pclose(access_plist)
5650  */
5651       }
5652 
5653       /* "tables/hdf5extension.pyx":446
5654  *                              params["DRIVER_CORE_INCREMENT"],
5655  *                              backing_store)
5656  *       if image:             # <<<<<<<<<<<<<<
5657  *         img_buf_len = len(image)
5658  *         img_buf_p = <void *>PyBytes_AsString(image)
5659  */
5660     }
5661 
5662     /* "tables/hdf5extension.pyx":442
5663  *     elif driver == "H5FD_STDIO":
5664  *       err = H5Pset_fapl_stdio(access_plist)
5665  *     elif driver == "H5FD_CORE":             # <<<<<<<<<<<<<<
5666  *       err = H5Pset_fapl_core(access_plist,
5667  *                              params["DRIVER_CORE_INCREMENT"],
5668  */
5669     goto __pyx_L34;
5670   }
5671 
5672   /* "tables/hdf5extension.pyx":462
5673  *     #  err = H5Pset_fapl_multi(access_plist, memb_map, memb_fapl, memb_name,
5674  *     #                          memb_addr, relax)
5675  *     elif driver == "H5FD_SPLIT":             # <<<<<<<<<<<<<<
5676  *       err = H5Pset_fapl_split(access_plist, enc_meta_ext, meta_plist_id,
5677  *                               enc_raw_ext, raw_plist_id)
5678  */
5679   __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_driver, __pyx_n_s_H5FD_SPLIT, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 462, __pyx_L1_error)
5680   if (__pyx_t_2) {
5681 
5682     /* "tables/hdf5extension.pyx":463
5683  *     #                          memb_addr, relax)
5684  *     elif driver == "H5FD_SPLIT":
5685  *       err = H5Pset_fapl_split(access_plist, enc_meta_ext, meta_plist_id,             # <<<<<<<<<<<<<<
5686  *                               enc_raw_ext, raw_plist_id)
5687  *     if err < 0:
5688  */
5689     if (unlikely(!__pyx_v_enc_meta_ext)) { __Pyx_RaiseUnboundLocalError("enc_meta_ext"); __PYX_ERR(0, 463, __pyx_L1_error) }
5690     __pyx_t_16 = __Pyx_PyObject_AsWritableString(__pyx_v_enc_meta_ext); if (unlikely((!__pyx_t_16) && PyErr_Occurred())) __PYX_ERR(0, 463, __pyx_L1_error)
5691 
5692     /* "tables/hdf5extension.pyx":464
5693  *     elif driver == "H5FD_SPLIT":
5694  *       err = H5Pset_fapl_split(access_plist, enc_meta_ext, meta_plist_id,
5695  *                               enc_raw_ext, raw_plist_id)             # <<<<<<<<<<<<<<
5696  *     if err < 0:
5697  *       e = HDF5ExtError("Unable to set the file access property list")
5698  */
5699     if (unlikely(!__pyx_v_enc_raw_ext)) { __Pyx_RaiseUnboundLocalError("enc_raw_ext"); __PYX_ERR(0, 464, __pyx_L1_error) }
5700     __pyx_t_17 = __Pyx_PyObject_AsWritableString(__pyx_v_enc_raw_ext); if (unlikely((!__pyx_t_17) && PyErr_Occurred())) __PYX_ERR(0, 464, __pyx_L1_error)
5701 
5702     /* "tables/hdf5extension.pyx":463
5703  *     #                          memb_addr, relax)
5704  *     elif driver == "H5FD_SPLIT":
5705  *       err = H5Pset_fapl_split(access_plist, enc_meta_ext, meta_plist_id,             # <<<<<<<<<<<<<<
5706  *                               enc_raw_ext, raw_plist_id)
5707  *     if err < 0:
5708  */
5709     __pyx_v_err = H5Pset_fapl_split(__pyx_v_access_plist, __pyx_t_16, __pyx_v_meta_plist_id, __pyx_t_17, __pyx_v_raw_plist_id);
5710 
5711     /* "tables/hdf5extension.pyx":462
5712  *     #  err = H5Pset_fapl_multi(access_plist, memb_map, memb_fapl, memb_name,
5713  *     #                          memb_addr, relax)
5714  *     elif driver == "H5FD_SPLIT":             # <<<<<<<<<<<<<<
5715  *       err = H5Pset_fapl_split(access_plist, enc_meta_ext, meta_plist_id,
5716  *                               enc_raw_ext, raw_plist_id)
5717  */
5718   }
5719   __pyx_L34:;
5720 
5721   /* "tables/hdf5extension.pyx":465
5722  *       err = H5Pset_fapl_split(access_plist, enc_meta_ext, meta_plist_id,
5723  *                               enc_raw_ext, raw_plist_id)
5724  *     if err < 0:             # <<<<<<<<<<<<<<
5725  *       e = HDF5ExtError("Unable to set the file access property list")
5726  *       H5Pclose(create_plist)
5727  */
5728   __pyx_t_2 = ((__pyx_v_err < 0) != 0);
5729   if (unlikely(__pyx_t_2)) {
5730 
5731     /* "tables/hdf5extension.pyx":466
5732  *                               enc_raw_ext, raw_plist_id)
5733  *     if err < 0:
5734  *       e = HDF5ExtError("Unable to set the file access property list")             # <<<<<<<<<<<<<<
5735  *       H5Pclose(create_plist)
5736  *       H5Pclose(access_plist)
5737  */
5738     __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_HDF5ExtError); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 466, __pyx_L1_error)
5739     __Pyx_GOTREF(__pyx_t_10);
5740     __pyx_t_5 = NULL;
5741     if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_10))) {
5742       __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_10);
5743       if (likely(__pyx_t_5)) {
5744         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
5745         __Pyx_INCREF(__pyx_t_5);
5746         __Pyx_INCREF(function);
5747         __Pyx_DECREF_SET(__pyx_t_10, function);
5748       }
5749     }
5750     __pyx_t_6 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_10, __pyx_t_5, __pyx_kp_s_Unable_to_set_the_file_access_pr) : __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_kp_s_Unable_to_set_the_file_access_pr);
5751     __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
5752     if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 466, __pyx_L1_error)
5753     __Pyx_GOTREF(__pyx_t_6);
5754     __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
5755     __pyx_v_e = __pyx_t_6;
5756     __pyx_t_6 = 0;
5757 
5758     /* "tables/hdf5extension.pyx":467
5759  *     if err < 0:
5760  *       e = HDF5ExtError("Unable to set the file access property list")
5761  *       H5Pclose(create_plist)             # <<<<<<<<<<<<<<
5762  *       H5Pclose(access_plist)
5763  *       raise e
5764  */
5765     (void)(H5Pclose(__pyx_v_create_plist));
5766 
5767     /* "tables/hdf5extension.pyx":468
5768  *       e = HDF5ExtError("Unable to set the file access property list")
5769  *       H5Pclose(create_plist)
5770  *       H5Pclose(access_plist)             # <<<<<<<<<<<<<<
5771  *       raise e
5772  *
5773  */
5774     (void)(H5Pclose(__pyx_v_access_plist));
5775 
5776     /* "tables/hdf5extension.pyx":469
5777  *       H5Pclose(create_plist)
5778  *       H5Pclose(access_plist)
5779  *       raise e             # <<<<<<<<<<<<<<
5780  *
5781  *     if pymode == 'r':
5782  */
5783     __Pyx_Raise(__pyx_v_e, 0, 0, 0);
5784     __PYX_ERR(0, 469, __pyx_L1_error)
5785 
5786     /* "tables/hdf5extension.pyx":465
5787  *       err = H5Pset_fapl_split(access_plist, enc_meta_ext, meta_plist_id,
5788  *                               enc_raw_ext, raw_plist_id)
5789  *     if err < 0:             # <<<<<<<<<<<<<<
5790  *       e = HDF5ExtError("Unable to set the file access property list")
5791  *       H5Pclose(create_plist)
5792  */
5793   }
5794 
5795   /* "tables/hdf5extension.pyx":471
5796  *       raise e
5797  *
5798  *     if pymode == 'r':             # <<<<<<<<<<<<<<
5799  *       self.file_id = H5Fopen(encname, H5F_ACC_RDONLY, access_plist)
5800  *     elif pymode == 'r+':
5801  */
5802   __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_pymode, __pyx_n_s_r, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 471, __pyx_L1_error)
5803   if (__pyx_t_2) {
5804 
5805     /* "tables/hdf5extension.pyx":472
5806  *
5807  *     if pymode == 'r':
5808  *       self.file_id = H5Fopen(encname, H5F_ACC_RDONLY, access_plist)             # <<<<<<<<<<<<<<
5809  *     elif pymode == 'r+':
5810  *       self.file_id = H5Fopen(encname, H5F_ACC_RDWR, access_plist)
5811  */
5812     if (unlikely(__pyx_v_encname == Py_None)) {
5813       PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
5814       __PYX_ERR(0, 472, __pyx_L1_error)
5815     }
5816     __pyx_t_17 = __Pyx_PyBytes_AsWritableString(__pyx_v_encname); if (unlikely((!__pyx_t_17) && PyErr_Occurred())) __PYX_ERR(0, 472, __pyx_L1_error)
5817     __pyx_v_self->file_id = H5Fopen(__pyx_t_17, H5F_ACC_RDONLY, __pyx_v_access_plist);
5818 
5819     /* "tables/hdf5extension.pyx":471
5820  *       raise e
5821  *
5822  *     if pymode == 'r':             # <<<<<<<<<<<<<<
5823  *       self.file_id = H5Fopen(encname, H5F_ACC_RDONLY, access_plist)
5824  *     elif pymode == 'r+':
5825  */
5826     goto __pyx_L40;
5827   }
5828 
5829   /* "tables/hdf5extension.pyx":473
5830  *     if pymode == 'r':
5831  *       self.file_id = H5Fopen(encname, H5F_ACC_RDONLY, access_plist)
5832  *     elif pymode == 'r+':             # <<<<<<<<<<<<<<
5833  *       self.file_id = H5Fopen(encname, H5F_ACC_RDWR, access_plist)
5834  *     elif pymode == 'a':
5835  */
5836   __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_pymode, __pyx_kp_s_r_2, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 473, __pyx_L1_error)
5837   if (__pyx_t_2) {
5838 
5839     /* "tables/hdf5extension.pyx":474
5840  *       self.file_id = H5Fopen(encname, H5F_ACC_RDONLY, access_plist)
5841  *     elif pymode == 'r+':
5842  *       self.file_id = H5Fopen(encname, H5F_ACC_RDWR, access_plist)             # <<<<<<<<<<<<<<
5843  *     elif pymode == 'a':
5844  *       if exists:
5845  */
5846     if (unlikely(__pyx_v_encname == Py_None)) {
5847       PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
5848       __PYX_ERR(0, 474, __pyx_L1_error)
5849     }
5850     __pyx_t_17 = __Pyx_PyBytes_AsWritableString(__pyx_v_encname); if (unlikely((!__pyx_t_17) && PyErr_Occurred())) __PYX_ERR(0, 474, __pyx_L1_error)
5851     __pyx_v_self->file_id = H5Fopen(__pyx_t_17, H5F_ACC_RDWR, __pyx_v_access_plist);
5852 
5853     /* "tables/hdf5extension.pyx":473
5854  *     if pymode == 'r':
5855  *       self.file_id = H5Fopen(encname, H5F_ACC_RDONLY, access_plist)
5856  *     elif pymode == 'r+':             # <<<<<<<<<<<<<<
5857  *       self.file_id = H5Fopen(encname, H5F_ACC_RDWR, access_plist)
5858  *     elif pymode == 'a':
5859  */
5860     goto __pyx_L40;
5861   }
5862 
5863   /* "tables/hdf5extension.pyx":475
5864  *     elif pymode == 'r+':
5865  *       self.file_id = H5Fopen(encname, H5F_ACC_RDWR, access_plist)
5866  *     elif pymode == 'a':             # <<<<<<<<<<<<<<
5867  *       if exists:
5868  *         # A test for logging.
5869  */
5870   __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_pymode, __pyx_n_s_a, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 475, __pyx_L1_error)
5871   if (__pyx_t_2) {
5872 
5873     /* "tables/hdf5extension.pyx":476
5874  *       self.file_id = H5Fopen(encname, H5F_ACC_RDWR, access_plist)
5875  *     elif pymode == 'a':
5876  *       if exists:             # <<<<<<<<<<<<<<
5877  *         # A test for logging.
5878  *         ## H5Pset_sieve_buf_size(access_plist, 0)
5879  */
5880     __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_exists); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 476, __pyx_L1_error)
5881     if (__pyx_t_2) {
5882 
5883       /* "tables/hdf5extension.pyx":480
5884  *         ## H5Pset_sieve_buf_size(access_plist, 0)
5885  *         ## H5Pset_fapl_log (access_plist, "test.log", H5FD_LOG_LOC_WRITE, 0)
5886  *         self.file_id = H5Fopen(encname, H5F_ACC_RDWR, access_plist)             # <<<<<<<<<<<<<<
5887  *       else:
5888  *         self.file_id = H5Fcreate(encname, H5F_ACC_TRUNC, create_plist,
5889  */
5890       if (unlikely(__pyx_v_encname == Py_None)) {
5891         PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
5892         __PYX_ERR(0, 480, __pyx_L1_error)
5893       }
5894       __pyx_t_17 = __Pyx_PyBytes_AsWritableString(__pyx_v_encname); if (unlikely((!__pyx_t_17) && PyErr_Occurred())) __PYX_ERR(0, 480, __pyx_L1_error)
5895       __pyx_v_self->file_id = H5Fopen(__pyx_t_17, H5F_ACC_RDWR, __pyx_v_access_plist);
5896 
5897       /* "tables/hdf5extension.pyx":476
5898  *       self.file_id = H5Fopen(encname, H5F_ACC_RDWR, access_plist)
5899  *     elif pymode == 'a':
5900  *       if exists:             # <<<<<<<<<<<<<<
5901  *         # A test for logging.
5902  *         ## H5Pset_sieve_buf_size(access_plist, 0)
5903  */
5904       goto __pyx_L41;
5905     }
5906 
5907     /* "tables/hdf5extension.pyx":482
5908  *         self.file_id = H5Fopen(encname, H5F_ACC_RDWR, access_plist)
5909  *       else:
5910  *         self.file_id = H5Fcreate(encname, H5F_ACC_TRUNC, create_plist,             # <<<<<<<<<<<<<<
5911  *                                  access_plist)
5912  *     elif pymode == 'w':
5913  */
5914     /*else*/ {
5915       if (unlikely(__pyx_v_encname == Py_None)) {
5916         PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
5917         __PYX_ERR(0, 482, __pyx_L1_error)
5918       }
5919       __pyx_t_17 = __Pyx_PyBytes_AsWritableString(__pyx_v_encname); if (unlikely((!__pyx_t_17) && PyErr_Occurred())) __PYX_ERR(0, 482, __pyx_L1_error)
5920 
5921       /* "tables/hdf5extension.pyx":483
5922  *       else:
5923  *         self.file_id = H5Fcreate(encname, H5F_ACC_TRUNC, create_plist,
5924  *                                  access_plist)             # <<<<<<<<<<<<<<
5925  *     elif pymode == 'w':
5926  *       self.file_id = H5Fcreate(encname, H5F_ACC_TRUNC, create_plist,
5927  */
5928       __pyx_v_self->file_id = H5Fcreate(__pyx_t_17, H5F_ACC_TRUNC, __pyx_v_create_plist, __pyx_v_access_plist);
5929     }
5930     __pyx_L41:;
5931 
5932     /* "tables/hdf5extension.pyx":475
5933  *     elif pymode == 'r+':
5934  *       self.file_id = H5Fopen(encname, H5F_ACC_RDWR, access_plist)
5935  *     elif pymode == 'a':             # <<<<<<<<<<<<<<
5936  *       if exists:
5937  *         # A test for logging.
5938  */
5939     goto __pyx_L40;
5940   }
5941 
5942   /* "tables/hdf5extension.pyx":484
5943  *         self.file_id = H5Fcreate(encname, H5F_ACC_TRUNC, create_plist,
5944  *                                  access_plist)
5945  *     elif pymode == 'w':             # <<<<<<<<<<<<<<
5946  *       self.file_id = H5Fcreate(encname, H5F_ACC_TRUNC, create_plist,
5947  *                                access_plist)
5948  */
5949   __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_pymode, __pyx_n_s_w, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 484, __pyx_L1_error)
5950   if (__pyx_t_2) {
5951 
5952     /* "tables/hdf5extension.pyx":485
5953  *                                  access_plist)
5954  *     elif pymode == 'w':
5955  *       self.file_id = H5Fcreate(encname, H5F_ACC_TRUNC, create_plist,             # <<<<<<<<<<<<<<
5956  *                                access_plist)
5957  *
5958  */
5959     if (unlikely(__pyx_v_encname == Py_None)) {
5960       PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
5961       __PYX_ERR(0, 485, __pyx_L1_error)
5962     }
5963     __pyx_t_17 = __Pyx_PyBytes_AsWritableString(__pyx_v_encname); if (unlikely((!__pyx_t_17) && PyErr_Occurred())) __PYX_ERR(0, 485, __pyx_L1_error)
5964 
5965     /* "tables/hdf5extension.pyx":486
5966  *     elif pymode == 'w':
5967  *       self.file_id = H5Fcreate(encname, H5F_ACC_TRUNC, create_plist,
5968  *                                access_plist)             # <<<<<<<<<<<<<<
5969  *
5970  *     if self.file_id < 0:
5971  */
5972     __pyx_v_self->file_id = H5Fcreate(__pyx_t_17, H5F_ACC_TRUNC, __pyx_v_create_plist, __pyx_v_access_plist);
5973 
5974     /* "tables/hdf5extension.pyx":484
5975  *         self.file_id = H5Fcreate(encname, H5F_ACC_TRUNC, create_plist,
5976  *                                  access_plist)
5977  *     elif pymode == 'w':             # <<<<<<<<<<<<<<
5978  *       self.file_id = H5Fcreate(encname, H5F_ACC_TRUNC, create_plist,
5979  *                                access_plist)
5980  */
5981   }
5982   __pyx_L40:;
5983 
5984   /* "tables/hdf5extension.pyx":488
5985  *                                access_plist)
5986  *
5987  *     if self.file_id < 0:             # <<<<<<<<<<<<<<
5988  *         e = HDF5ExtError("Unable to open/create file '%s'" % name)
5989  *         H5Pclose(create_plist)
5990  */
5991   __pyx_t_2 = ((__pyx_v_self->file_id < 0) != 0);
5992   if (unlikely(__pyx_t_2)) {
5993 
5994     /* "tables/hdf5extension.pyx":489
5995  *
5996  *     if self.file_id < 0:
5997  *         e = HDF5ExtError("Unable to open/create file '%s'" % name)             # <<<<<<<<<<<<<<
5998  *         H5Pclose(create_plist)
5999  *         H5Pclose(access_plist)
6000  */
6001     __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_HDF5ExtError); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 489, __pyx_L1_error)
6002     __Pyx_GOTREF(__pyx_t_10);
6003     __pyx_t_5 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Unable_to_open_create_file_s, __pyx_v_name); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 489, __pyx_L1_error)
6004     __Pyx_GOTREF(__pyx_t_5);
6005     __pyx_t_1 = NULL;
6006     if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_10))) {
6007       __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_10);
6008       if (likely(__pyx_t_1)) {
6009         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
6010         __Pyx_INCREF(__pyx_t_1);
6011         __Pyx_INCREF(function);
6012         __Pyx_DECREF_SET(__pyx_t_10, function);
6013       }
6014     }
6015     __pyx_t_6 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_10, __pyx_t_1, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_5);
6016     __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
6017     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
6018     if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 489, __pyx_L1_error)
6019     __Pyx_GOTREF(__pyx_t_6);
6020     __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
6021     __pyx_v_e = __pyx_t_6;
6022     __pyx_t_6 = 0;
6023 
6024     /* "tables/hdf5extension.pyx":490
6025  *     if self.file_id < 0:
6026  *         e = HDF5ExtError("Unable to open/create file '%s'" % name)
6027  *         H5Pclose(create_plist)             # <<<<<<<<<<<<<<
6028  *         H5Pclose(access_plist)
6029  *         raise e
6030  */
6031     (void)(H5Pclose(__pyx_v_create_plist));
6032 
6033     /* "tables/hdf5extension.pyx":491
6034  *         e = HDF5ExtError("Unable to open/create file '%s'" % name)
6035  *         H5Pclose(create_plist)
6036  *         H5Pclose(access_plist)             # <<<<<<<<<<<<<<
6037  *         raise e
6038  *
6039  */
6040     (void)(H5Pclose(__pyx_v_access_plist));
6041 
6042     /* "tables/hdf5extension.pyx":492
6043  *         H5Pclose(create_plist)
6044  *         H5Pclose(access_plist)
6045  *         raise e             # <<<<<<<<<<<<<<
6046  *
6047  *     H5Pclose(create_plist)
6048  */
6049     __Pyx_Raise(__pyx_v_e, 0, 0, 0);
6050     __PYX_ERR(0, 492, __pyx_L1_error)
6051 
6052     /* "tables/hdf5extension.pyx":488
6053  *                                access_plist)
6054  *
6055  *     if self.file_id < 0:             # <<<<<<<<<<<<<<
6056  *         e = HDF5ExtError("Unable to open/create file '%s'" % name)
6057  *         H5Pclose(create_plist)
6058  */
6059   }
6060 
6061   /* "tables/hdf5extension.pyx":494
6062  *         raise e
6063  *
6064  *     H5Pclose(create_plist)             # <<<<<<<<<<<<<<
6065  *     H5Pclose(access_plist)
6066  *
6067  */
6068   (void)(H5Pclose(__pyx_v_create_plist));
6069 
6070   /* "tables/hdf5extension.pyx":495
6071  *
6072  *     H5Pclose(create_plist)
6073  *     H5Pclose(access_plist)             # <<<<<<<<<<<<<<
6074  *
6075  *     # Set the cache size
6076  */
6077   (void)(H5Pclose(__pyx_v_access_plist));
6078 
6079   /* "tables/hdf5extension.pyx":498
6080  *
6081  *     # Set the cache size
6082  *     set_cache_size(self.file_id, params["METADATA_CACHE_SIZE"])             # <<<<<<<<<<<<<<
6083  *
6084  *     # Set the maximum number of threads for Blosc
6085  */
6086   __pyx_t_6 = __Pyx_PyDict_GetItem(__pyx_v_params, __pyx_n_s_METADATA_CACHE_SIZE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 498, __pyx_L1_error)
6087   __Pyx_GOTREF(__pyx_t_6);
6088   __pyx_t_14 = __Pyx_PyInt_As_size_t(__pyx_t_6); if (unlikely((__pyx_t_14 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 498, __pyx_L1_error)
6089   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
6090   (void)(set_cache_size(__pyx_v_self->file_id, __pyx_t_14));
6091 
6092   /* "tables/hdf5extension.pyx":501
6093  *
6094  *     # Set the maximum number of threads for Blosc
6095  *     set_blosc_max_threads(params["MAX_BLOSC_THREADS"])             # <<<<<<<<<<<<<<
6096  *
6097  *   # XXX: add the possibility to pass a pre-allocated buffer
6098  */
6099   __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_set_blosc_max_threads); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 501, __pyx_L1_error)
6100   __Pyx_GOTREF(__pyx_t_10);
6101   __pyx_t_5 = __Pyx_PyDict_GetItem(__pyx_v_params, __pyx_n_s_MAX_BLOSC_THREADS); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 501, __pyx_L1_error)
6102   __Pyx_GOTREF(__pyx_t_5);
6103   __pyx_t_1 = NULL;
6104   if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_10))) {
6105     __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_10);
6106     if (likely(__pyx_t_1)) {
6107       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
6108       __Pyx_INCREF(__pyx_t_1);
6109       __Pyx_INCREF(function);
6110       __Pyx_DECREF_SET(__pyx_t_10, function);
6111     }
6112   }
6113   __pyx_t_6 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_10, __pyx_t_1, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_5);
6114   __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
6115   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
6116   if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 501, __pyx_L1_error)
6117   __Pyx_GOTREF(__pyx_t_6);
6118   __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
6119   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
6120 
6121   /* "tables/hdf5extension.pyx":317
6122  *   cdef object  name
6123  *
6124  *   def _g_new(self, name, pymode, **params):             # <<<<<<<<<<<<<<
6125  *     cdef herr_t err = 0
6126  *     cdef hid_t access_plist, create_plist = H5P_DEFAULT
6127  */
6128 
6129   /* function exit code */
6130   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
6131   goto __pyx_L0;
6132   __pyx_L1_error:;
6133   __Pyx_XDECREF(__pyx_t_1);
6134   __Pyx_XDECREF(__pyx_t_5);
6135   __Pyx_XDECREF(__pyx_t_6);
6136   __Pyx_XDECREF(__pyx_t_7);
6137   __Pyx_XDECREF(__pyx_t_10);
6138   __Pyx_AddTraceback("tables.hdf5extension.File._g_new", __pyx_clineno, __pyx_lineno, __pyx_filename);
6139   __pyx_r = NULL;
6140   __pyx_L0:;
6141   __Pyx_XDECREF(__pyx_v_encname);
6142   __Pyx_XDECREF(__pyx_v_driver);
6143   __Pyx_XDECREF(__pyx_v_meta_ext);
6144   __Pyx_XDECREF(__pyx_v_raw_ext);
6145   __Pyx_XDECREF(__pyx_v_meta_name);
6146   __Pyx_XDECREF(__pyx_v_raw_name);
6147   __Pyx_XDECREF(__pyx_v_enc_meta_ext);
6148   __Pyx_XDECREF(__pyx_v_enc_raw_ext);
6149   __Pyx_XDECREF(__pyx_v_image);
6150   __Pyx_XDECREF(__pyx_v_n);
6151   __Pyx_XDECREF(__pyx_v_backing_store);
6152   __Pyx_XDECREF(__pyx_v_exists);
6153   __Pyx_XDECREF(__pyx_v_is_pow_of_2);
6154   __Pyx_XDECREF(__pyx_v_e);
6155   __Pyx_XGIVEREF(__pyx_r);
6156   __Pyx_RefNannyFinishContext();
6157   return __pyx_r;
6158 }
6159 
6160 /* "tables/hdf5extension.pyx":504
6161  *
6162  *   # XXX: add the possibility to pass a pre-allocated buffer
6163  *   def get_file_image(self):             # <<<<<<<<<<<<<<
6164  *     """Retrieves an in-memory image of an existing, open HDF5 file.
6165  *
6166  */
6167 
6168 /* Python wrapper */
6169 static PyObject *__pyx_pw_6tables_13hdf5extension_4File_3get_file_image(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
6170 static char __pyx_doc_6tables_13hdf5extension_4File_2get_file_image[] = "Retrieves an in-memory image of an existing, open HDF5 file.\n\n    .. note:: this method requires HDF5 >= 1.8.9.\n\n    .. versionadded:: 3.0\n\n    ";
__pyx_pw_6tables_13hdf5extension_4File_3get_file_image(PyObject * __pyx_v_self,CYTHON_UNUSED PyObject * unused)6171 static PyObject *__pyx_pw_6tables_13hdf5extension_4File_3get_file_image(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
6172   PyObject *__pyx_r = 0;
6173   __Pyx_RefNannyDeclarations
6174   __Pyx_RefNannySetupContext("get_file_image (wrapper)", 0);
6175   __pyx_r = __pyx_pf_6tables_13hdf5extension_4File_2get_file_image(((struct __pyx_obj_6tables_13hdf5extension_File *)__pyx_v_self));
6176 
6177   /* function exit code */
6178   __Pyx_RefNannyFinishContext();
6179   return __pyx_r;
6180 }
6181 
__pyx_pf_6tables_13hdf5extension_4File_2get_file_image(struct __pyx_obj_6tables_13hdf5extension_File * __pyx_v_self)6182 static PyObject *__pyx_pf_6tables_13hdf5extension_4File_2get_file_image(struct __pyx_obj_6tables_13hdf5extension_File *__pyx_v_self) {
6183   Py_ssize_t __pyx_v_size;
6184   size_t __pyx_v_buf_len;
6185   PyObject *__pyx_v_image = 0;
6186   char *__pyx_v_cimage;
6187   PyObject *__pyx_r = NULL;
6188   __Pyx_RefNannyDeclarations
6189   PyObject *__pyx_t_1 = NULL;
6190   PyObject *__pyx_t_2 = NULL;
6191   PyObject *__pyx_t_3 = NULL;
6192   int __pyx_t_4;
6193   int __pyx_t_5;
6194   char *__pyx_t_6;
6195   __Pyx_RefNannySetupContext("get_file_image", 0);
6196 
6197   /* "tables/hdf5extension.pyx":513
6198  *     """
6199  *
6200  *     cdef ssize_t size = 0             # <<<<<<<<<<<<<<
6201  *     cdef size_t buf_len = 0
6202  *     cdef bytes image
6203  */
6204   __pyx_v_size = 0;
6205 
6206   /* "tables/hdf5extension.pyx":514
6207  *
6208  *     cdef ssize_t size = 0
6209  *     cdef size_t buf_len = 0             # <<<<<<<<<<<<<<
6210  *     cdef bytes image
6211  *     cdef char* cimage
6212  */
6213   __pyx_v_buf_len = 0;
6214 
6215   /* "tables/hdf5extension.pyx":518
6216  *     cdef char* cimage
6217  *
6218  *     self.flush()             # <<<<<<<<<<<<<<
6219  *
6220  *     # retrieve the size of the buffer for the file image
6221  */
6222   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_flush); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 518, __pyx_L1_error)
6223   __Pyx_GOTREF(__pyx_t_2);
6224   __pyx_t_3 = NULL;
6225   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
6226     __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
6227     if (likely(__pyx_t_3)) {
6228       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
6229       __Pyx_INCREF(__pyx_t_3);
6230       __Pyx_INCREF(function);
6231       __Pyx_DECREF_SET(__pyx_t_2, function);
6232     }
6233   }
6234   __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
6235   __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
6236   if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 518, __pyx_L1_error)
6237   __Pyx_GOTREF(__pyx_t_1);
6238   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
6239   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
6240 
6241   /* "tables/hdf5extension.pyx":521
6242  *
6243  *     # retrieve the size of the buffer for the file image
6244  *     size = pt_H5Fget_file_image(self.file_id, NULL, buf_len)             # <<<<<<<<<<<<<<
6245  *     if size < 0:
6246  *       raise HDF5ExtError("Unable to retrieve the size of the buffer for the "
6247  */
6248   __pyx_v_size = pt_H5Fget_file_image(__pyx_v_self->file_id, NULL, __pyx_v_buf_len);
6249 
6250   /* "tables/hdf5extension.pyx":522
6251  *     # retrieve the size of the buffer for the file image
6252  *     size = pt_H5Fget_file_image(self.file_id, NULL, buf_len)
6253  *     if size < 0:             # <<<<<<<<<<<<<<
6254  *       raise HDF5ExtError("Unable to retrieve the size of the buffer for the "
6255  *                          "file image.  Plese note that not all drivers "
6256  */
6257   __pyx_t_4 = ((__pyx_v_size < 0) != 0);
6258   if (unlikely(__pyx_t_4)) {
6259 
6260     /* "tables/hdf5extension.pyx":523
6261  *     size = pt_H5Fget_file_image(self.file_id, NULL, buf_len)
6262  *     if size < 0:
6263  *       raise HDF5ExtError("Unable to retrieve the size of the buffer for the "             # <<<<<<<<<<<<<<
6264  *                          "file image.  Plese note that not all drivers "
6265  *                          "provide support for image files.")
6266  */
6267     __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_HDF5ExtError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 523, __pyx_L1_error)
6268     __Pyx_GOTREF(__pyx_t_2);
6269     __pyx_t_3 = NULL;
6270     if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
6271       __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
6272       if (likely(__pyx_t_3)) {
6273         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
6274         __Pyx_INCREF(__pyx_t_3);
6275         __Pyx_INCREF(function);
6276         __Pyx_DECREF_SET(__pyx_t_2, function);
6277       }
6278     }
6279     __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_kp_s_Unable_to_retrieve_the_size_of_t) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_kp_s_Unable_to_retrieve_the_size_of_t);
6280     __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
6281     if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 523, __pyx_L1_error)
6282     __Pyx_GOTREF(__pyx_t_1);
6283     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
6284     __Pyx_Raise(__pyx_t_1, 0, 0, 0);
6285     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
6286     __PYX_ERR(0, 523, __pyx_L1_error)
6287 
6288     /* "tables/hdf5extension.pyx":522
6289  *     # retrieve the size of the buffer for the file image
6290  *     size = pt_H5Fget_file_image(self.file_id, NULL, buf_len)
6291  *     if size < 0:             # <<<<<<<<<<<<<<
6292  *       raise HDF5ExtError("Unable to retrieve the size of the buffer for the "
6293  *                          "file image.  Plese note that not all drivers "
6294  */
6295   }
6296 
6297   /* "tables/hdf5extension.pyx":528
6298  *
6299  *     # allocate the memory buffer
6300  *     image = PyBytes_FromStringAndSize(NULL, size)             # <<<<<<<<<<<<<<
6301  *     if not image:
6302  *       raise RuntimeError("Unable to allecote meomory fir the file image")
6303  */
6304   __pyx_t_1 = PyBytes_FromStringAndSize(NULL, __pyx_v_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 528, __pyx_L1_error)
6305   __Pyx_GOTREF(__pyx_t_1);
6306   __pyx_v_image = ((PyObject*)__pyx_t_1);
6307   __pyx_t_1 = 0;
6308 
6309   /* "tables/hdf5extension.pyx":529
6310  *     # allocate the memory buffer
6311  *     image = PyBytes_FromStringAndSize(NULL, size)
6312  *     if not image:             # <<<<<<<<<<<<<<
6313  *       raise RuntimeError("Unable to allecote meomory fir the file image")
6314  *
6315  */
6316   __pyx_t_4 = (__pyx_v_image != Py_None)&&(PyBytes_GET_SIZE(__pyx_v_image) != 0);
6317   __pyx_t_5 = ((!__pyx_t_4) != 0);
6318   if (unlikely(__pyx_t_5)) {
6319 
6320     /* "tables/hdf5extension.pyx":530
6321  *     image = PyBytes_FromStringAndSize(NULL, size)
6322  *     if not image:
6323  *       raise RuntimeError("Unable to allecote meomory fir the file image")             # <<<<<<<<<<<<<<
6324  *
6325  *     cimage = image
6326  */
6327     __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 530, __pyx_L1_error)
6328     __Pyx_GOTREF(__pyx_t_1);
6329     __Pyx_Raise(__pyx_t_1, 0, 0, 0);
6330     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
6331     __PYX_ERR(0, 530, __pyx_L1_error)
6332 
6333     /* "tables/hdf5extension.pyx":529
6334  *     # allocate the memory buffer
6335  *     image = PyBytes_FromStringAndSize(NULL, size)
6336  *     if not image:             # <<<<<<<<<<<<<<
6337  *       raise RuntimeError("Unable to allecote meomory fir the file image")
6338  *
6339  */
6340   }
6341 
6342   /* "tables/hdf5extension.pyx":532
6343  *       raise RuntimeError("Unable to allecote meomory fir the file image")
6344  *
6345  *     cimage = image             # <<<<<<<<<<<<<<
6346  *     buf_len = size
6347  *     size = pt_H5Fget_file_image(self.file_id, <void*>cimage, buf_len)
6348  */
6349   if (unlikely(__pyx_v_image == Py_None)) {
6350     PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
6351     __PYX_ERR(0, 532, __pyx_L1_error)
6352   }
6353   __pyx_t_6 = __Pyx_PyBytes_AsWritableString(__pyx_v_image); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(0, 532, __pyx_L1_error)
6354   __pyx_v_cimage = __pyx_t_6;
6355 
6356   /* "tables/hdf5extension.pyx":533
6357  *
6358  *     cimage = image
6359  *     buf_len = size             # <<<<<<<<<<<<<<
6360  *     size = pt_H5Fget_file_image(self.file_id, <void*>cimage, buf_len)
6361  *     if size < 0:
6362  */
6363   __pyx_v_buf_len = __pyx_v_size;
6364 
6365   /* "tables/hdf5extension.pyx":534
6366  *     cimage = image
6367  *     buf_len = size
6368  *     size = pt_H5Fget_file_image(self.file_id, <void*>cimage, buf_len)             # <<<<<<<<<<<<<<
6369  *     if size < 0:
6370  *       raise HDF5ExtError("Unable to retrieve the file image. "
6371  */
6372   __pyx_v_size = pt_H5Fget_file_image(__pyx_v_self->file_id, ((void *)__pyx_v_cimage), __pyx_v_buf_len);
6373 
6374   /* "tables/hdf5extension.pyx":535
6375  *     buf_len = size
6376  *     size = pt_H5Fget_file_image(self.file_id, <void*>cimage, buf_len)
6377  *     if size < 0:             # <<<<<<<<<<<<<<
6378  *       raise HDF5ExtError("Unable to retrieve the file image. "
6379  *                          "Plese note that not all drivers provide support "
6380  */
6381   __pyx_t_5 = ((__pyx_v_size < 0) != 0);
6382   if (unlikely(__pyx_t_5)) {
6383 
6384     /* "tables/hdf5extension.pyx":536
6385  *     size = pt_H5Fget_file_image(self.file_id, <void*>cimage, buf_len)
6386  *     if size < 0:
6387  *       raise HDF5ExtError("Unable to retrieve the file image. "             # <<<<<<<<<<<<<<
6388  *                          "Plese note that not all drivers provide support "
6389  *                          "for image files.")
6390  */
6391     __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_HDF5ExtError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 536, __pyx_L1_error)
6392     __Pyx_GOTREF(__pyx_t_2);
6393     __pyx_t_3 = NULL;
6394     if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
6395       __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
6396       if (likely(__pyx_t_3)) {
6397         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
6398         __Pyx_INCREF(__pyx_t_3);
6399         __Pyx_INCREF(function);
6400         __Pyx_DECREF_SET(__pyx_t_2, function);
6401       }
6402     }
6403     __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_kp_s_Unable_to_retrieve_the_file_imag) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_kp_s_Unable_to_retrieve_the_file_imag);
6404     __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
6405     if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 536, __pyx_L1_error)
6406     __Pyx_GOTREF(__pyx_t_1);
6407     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
6408     __Pyx_Raise(__pyx_t_1, 0, 0, 0);
6409     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
6410     __PYX_ERR(0, 536, __pyx_L1_error)
6411 
6412     /* "tables/hdf5extension.pyx":535
6413  *     buf_len = size
6414  *     size = pt_H5Fget_file_image(self.file_id, <void*>cimage, buf_len)
6415  *     if size < 0:             # <<<<<<<<<<<<<<
6416  *       raise HDF5ExtError("Unable to retrieve the file image. "
6417  *                          "Plese note that not all drivers provide support "
6418  */
6419   }
6420 
6421   /* "tables/hdf5extension.pyx":540
6422  *                          "for image files.")
6423  *
6424  *     return image             # <<<<<<<<<<<<<<
6425  *
6426  *   def get_filesize(self):
6427  */
6428   __Pyx_XDECREF(__pyx_r);
6429   __Pyx_INCREF(__pyx_v_image);
6430   __pyx_r = __pyx_v_image;
6431   goto __pyx_L0;
6432 
6433   /* "tables/hdf5extension.pyx":504
6434  *
6435  *   # XXX: add the possibility to pass a pre-allocated buffer
6436  *   def get_file_image(self):             # <<<<<<<<<<<<<<
6437  *     """Retrieves an in-memory image of an existing, open HDF5 file.
6438  *
6439  */
6440 
6441   /* function exit code */
6442   __pyx_L1_error:;
6443   __Pyx_XDECREF(__pyx_t_1);
6444   __Pyx_XDECREF(__pyx_t_2);
6445   __Pyx_XDECREF(__pyx_t_3);
6446   __Pyx_AddTraceback("tables.hdf5extension.File.get_file_image", __pyx_clineno, __pyx_lineno, __pyx_filename);
6447   __pyx_r = NULL;
6448   __pyx_L0:;
6449   __Pyx_XDECREF(__pyx_v_image);
6450   __Pyx_XGIVEREF(__pyx_r);
6451   __Pyx_RefNannyFinishContext();
6452   return __pyx_r;
6453 }
6454 
6455 /* "tables/hdf5extension.pyx":542
6456  *     return image
6457  *
6458  *   def get_filesize(self):             # <<<<<<<<<<<<<<
6459  *     """Returns the size of an HDF5 file.
6460  *
6461  */
6462 
6463 /* Python wrapper */
6464 static PyObject *__pyx_pw_6tables_13hdf5extension_4File_5get_filesize(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
6465 static char __pyx_doc_6tables_13hdf5extension_4File_4get_filesize[] = "Returns the size of an HDF5 file.\n\n    The returned size is that of the entire file, as opposed to only\n    the HDF5 portion of the file. I.e., size includes the user block,\n    if any, the HDF5 portion of the file, and any data that may have\n    been appended beyond the data written through the HDF5 Library.\n\n    .. versionadded:: 3.0\n\n    ";
__pyx_pw_6tables_13hdf5extension_4File_5get_filesize(PyObject * __pyx_v_self,CYTHON_UNUSED PyObject * unused)6466 static PyObject *__pyx_pw_6tables_13hdf5extension_4File_5get_filesize(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
6467   PyObject *__pyx_r = 0;
6468   __Pyx_RefNannyDeclarations
6469   __Pyx_RefNannySetupContext("get_filesize (wrapper)", 0);
6470   __pyx_r = __pyx_pf_6tables_13hdf5extension_4File_4get_filesize(((struct __pyx_obj_6tables_13hdf5extension_File *)__pyx_v_self));
6471 
6472   /* function exit code */
6473   __Pyx_RefNannyFinishContext();
6474   return __pyx_r;
6475 }
6476 
__pyx_pf_6tables_13hdf5extension_4File_4get_filesize(struct __pyx_obj_6tables_13hdf5extension_File * __pyx_v_self)6477 static PyObject *__pyx_pf_6tables_13hdf5extension_4File_4get_filesize(struct __pyx_obj_6tables_13hdf5extension_File *__pyx_v_self) {
6478   herr_t __pyx_v_err;
6479   hsize_t __pyx_v_size;
6480   PyObject *__pyx_r = NULL;
6481   __Pyx_RefNannyDeclarations
6482   int __pyx_t_1;
6483   PyObject *__pyx_t_2 = NULL;
6484   PyObject *__pyx_t_3 = NULL;
6485   PyObject *__pyx_t_4 = NULL;
6486   __Pyx_RefNannySetupContext("get_filesize", 0);
6487 
6488   /* "tables/hdf5extension.pyx":554
6489  *     """
6490  *
6491  *     cdef herr_t err = 0             # <<<<<<<<<<<<<<
6492  *     cdef hsize_t size = 0
6493  *
6494  */
6495   __pyx_v_err = 0;
6496 
6497   /* "tables/hdf5extension.pyx":555
6498  *
6499  *     cdef herr_t err = 0
6500  *     cdef hsize_t size = 0             # <<<<<<<<<<<<<<
6501  *
6502  *     err = H5Fget_filesize(self.file_id, &size)
6503  */
6504   __pyx_v_size = 0;
6505 
6506   /* "tables/hdf5extension.pyx":557
6507  *     cdef hsize_t size = 0
6508  *
6509  *     err = H5Fget_filesize(self.file_id, &size)             # <<<<<<<<<<<<<<
6510  *     if err < 0:
6511  *       raise HDF5ExtError("Unable to retrieve the HDF5 file size")
6512  */
6513   __pyx_v_err = H5Fget_filesize(__pyx_v_self->file_id, (&__pyx_v_size));
6514 
6515   /* "tables/hdf5extension.pyx":558
6516  *
6517  *     err = H5Fget_filesize(self.file_id, &size)
6518  *     if err < 0:             # <<<<<<<<<<<<<<
6519  *       raise HDF5ExtError("Unable to retrieve the HDF5 file size")
6520  *
6521  */
6522   __pyx_t_1 = ((__pyx_v_err < 0) != 0);
6523   if (unlikely(__pyx_t_1)) {
6524 
6525     /* "tables/hdf5extension.pyx":559
6526  *     err = H5Fget_filesize(self.file_id, &size)
6527  *     if err < 0:
6528  *       raise HDF5ExtError("Unable to retrieve the HDF5 file size")             # <<<<<<<<<<<<<<
6529  *
6530  *     return size
6531  */
6532     __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_HDF5ExtError); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 559, __pyx_L1_error)
6533     __Pyx_GOTREF(__pyx_t_3);
6534     __pyx_t_4 = NULL;
6535     if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
6536       __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
6537       if (likely(__pyx_t_4)) {
6538         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
6539         __Pyx_INCREF(__pyx_t_4);
6540         __Pyx_INCREF(function);
6541         __Pyx_DECREF_SET(__pyx_t_3, function);
6542       }
6543     }
6544     __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_kp_s_Unable_to_retrieve_the_HDF5_file) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_kp_s_Unable_to_retrieve_the_HDF5_file);
6545     __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
6546     if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 559, __pyx_L1_error)
6547     __Pyx_GOTREF(__pyx_t_2);
6548     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
6549     __Pyx_Raise(__pyx_t_2, 0, 0, 0);
6550     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
6551     __PYX_ERR(0, 559, __pyx_L1_error)
6552 
6553     /* "tables/hdf5extension.pyx":558
6554  *
6555  *     err = H5Fget_filesize(self.file_id, &size)
6556  *     if err < 0:             # <<<<<<<<<<<<<<
6557  *       raise HDF5ExtError("Unable to retrieve the HDF5 file size")
6558  *
6559  */
6560   }
6561 
6562   /* "tables/hdf5extension.pyx":561
6563  *       raise HDF5ExtError("Unable to retrieve the HDF5 file size")
6564  *
6565  *     return size             # <<<<<<<<<<<<<<
6566  *
6567  *   def get_userblock_size(self):
6568  */
6569   __Pyx_XDECREF(__pyx_r);
6570   __pyx_t_2 = __Pyx_PyInt_From_hsize_t(__pyx_v_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 561, __pyx_L1_error)
6571   __Pyx_GOTREF(__pyx_t_2);
6572   __pyx_r = __pyx_t_2;
6573   __pyx_t_2 = 0;
6574   goto __pyx_L0;
6575 
6576   /* "tables/hdf5extension.pyx":542
6577  *     return image
6578  *
6579  *   def get_filesize(self):             # <<<<<<<<<<<<<<
6580  *     """Returns the size of an HDF5 file.
6581  *
6582  */
6583 
6584   /* function exit code */
6585   __pyx_L1_error:;
6586   __Pyx_XDECREF(__pyx_t_2);
6587   __Pyx_XDECREF(__pyx_t_3);
6588   __Pyx_XDECREF(__pyx_t_4);
6589   __Pyx_AddTraceback("tables.hdf5extension.File.get_filesize", __pyx_clineno, __pyx_lineno, __pyx_filename);
6590   __pyx_r = NULL;
6591   __pyx_L0:;
6592   __Pyx_XGIVEREF(__pyx_r);
6593   __Pyx_RefNannyFinishContext();
6594   return __pyx_r;
6595 }
6596 
6597 /* "tables/hdf5extension.pyx":563
6598  *     return size
6599  *
6600  *   def get_userblock_size(self):             # <<<<<<<<<<<<<<
6601  *     """Retrieves the size of a user block.
6602  *
6603  */
6604 
6605 /* Python wrapper */
6606 static PyObject *__pyx_pw_6tables_13hdf5extension_4File_7get_userblock_size(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
6607 static char __pyx_doc_6tables_13hdf5extension_4File_6get_userblock_size[] = "Retrieves the size of a user block.\n\n    .. versionadded:: 3.0\n\n    ";
__pyx_pw_6tables_13hdf5extension_4File_7get_userblock_size(PyObject * __pyx_v_self,CYTHON_UNUSED PyObject * unused)6608 static PyObject *__pyx_pw_6tables_13hdf5extension_4File_7get_userblock_size(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
6609   PyObject *__pyx_r = 0;
6610   __Pyx_RefNannyDeclarations
6611   __Pyx_RefNannySetupContext("get_userblock_size (wrapper)", 0);
6612   __pyx_r = __pyx_pf_6tables_13hdf5extension_4File_6get_userblock_size(((struct __pyx_obj_6tables_13hdf5extension_File *)__pyx_v_self));
6613 
6614   /* function exit code */
6615   __Pyx_RefNannyFinishContext();
6616   return __pyx_r;
6617 }
6618 
__pyx_pf_6tables_13hdf5extension_4File_6get_userblock_size(struct __pyx_obj_6tables_13hdf5extension_File * __pyx_v_self)6619 static PyObject *__pyx_pf_6tables_13hdf5extension_4File_6get_userblock_size(struct __pyx_obj_6tables_13hdf5extension_File *__pyx_v_self) {
6620   herr_t __pyx_v_err;
6621   hsize_t __pyx_v_size;
6622   hid_t __pyx_v_create_plist;
6623   PyObject *__pyx_r = NULL;
6624   __Pyx_RefNannyDeclarations
6625   int __pyx_t_1;
6626   PyObject *__pyx_t_2 = NULL;
6627   PyObject *__pyx_t_3 = NULL;
6628   PyObject *__pyx_t_4 = NULL;
6629   __Pyx_RefNannySetupContext("get_userblock_size", 0);
6630 
6631   /* "tables/hdf5extension.pyx":570
6632  *     """
6633  *
6634  *     cdef herr_t err = 0             # <<<<<<<<<<<<<<
6635  *     cdef hsize_t size = 0
6636  *     cdef hid_t create_plist
6637  */
6638   __pyx_v_err = 0;
6639 
6640   /* "tables/hdf5extension.pyx":571
6641  *
6642  *     cdef herr_t err = 0
6643  *     cdef hsize_t size = 0             # <<<<<<<<<<<<<<
6644  *     cdef hid_t create_plist
6645  *
6646  */
6647   __pyx_v_size = 0;
6648 
6649   /* "tables/hdf5extension.pyx":574
6650  *     cdef hid_t create_plist
6651  *
6652  *     create_plist = H5Fget_create_plist(self.file_id)             # <<<<<<<<<<<<<<
6653  *     if create_plist < 0:
6654  *       raise HDF5ExtError("Unable to get the creation property list")
6655  */
6656   __pyx_v_create_plist = H5Fget_create_plist(__pyx_v_self->file_id);
6657 
6658   /* "tables/hdf5extension.pyx":575
6659  *
6660  *     create_plist = H5Fget_create_plist(self.file_id)
6661  *     if create_plist < 0:             # <<<<<<<<<<<<<<
6662  *       raise HDF5ExtError("Unable to get the creation property list")
6663  *
6664  */
6665   __pyx_t_1 = ((__pyx_v_create_plist < 0) != 0);
6666   if (unlikely(__pyx_t_1)) {
6667 
6668     /* "tables/hdf5extension.pyx":576
6669  *     create_plist = H5Fget_create_plist(self.file_id)
6670  *     if create_plist < 0:
6671  *       raise HDF5ExtError("Unable to get the creation property list")             # <<<<<<<<<<<<<<
6672  *
6673  *     err = H5Pget_userblock(create_plist, &size)
6674  */
6675     __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_HDF5ExtError); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 576, __pyx_L1_error)
6676     __Pyx_GOTREF(__pyx_t_3);
6677     __pyx_t_4 = NULL;
6678     if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
6679       __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
6680       if (likely(__pyx_t_4)) {
6681         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
6682         __Pyx_INCREF(__pyx_t_4);
6683         __Pyx_INCREF(function);
6684         __Pyx_DECREF_SET(__pyx_t_3, function);
6685       }
6686     }
6687     __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_kp_s_Unable_to_get_the_creation_prope) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_kp_s_Unable_to_get_the_creation_prope);
6688     __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
6689     if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 576, __pyx_L1_error)
6690     __Pyx_GOTREF(__pyx_t_2);
6691     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
6692     __Pyx_Raise(__pyx_t_2, 0, 0, 0);
6693     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
6694     __PYX_ERR(0, 576, __pyx_L1_error)
6695 
6696     /* "tables/hdf5extension.pyx":575
6697  *
6698  *     create_plist = H5Fget_create_plist(self.file_id)
6699  *     if create_plist < 0:             # <<<<<<<<<<<<<<
6700  *       raise HDF5ExtError("Unable to get the creation property list")
6701  *
6702  */
6703   }
6704 
6705   /* "tables/hdf5extension.pyx":578
6706  *       raise HDF5ExtError("Unable to get the creation property list")
6707  *
6708  *     err = H5Pget_userblock(create_plist, &size)             # <<<<<<<<<<<<<<
6709  *     if err < 0:
6710  *       H5Pclose(create_plist)
6711  */
6712   __pyx_v_err = H5Pget_userblock(__pyx_v_create_plist, (&__pyx_v_size));
6713 
6714   /* "tables/hdf5extension.pyx":579
6715  *
6716  *     err = H5Pget_userblock(create_plist, &size)
6717  *     if err < 0:             # <<<<<<<<<<<<<<
6718  *       H5Pclose(create_plist)
6719  *       raise HDF5ExtError("unable to retrieve the user block size")
6720  */
6721   __pyx_t_1 = ((__pyx_v_err < 0) != 0);
6722   if (unlikely(__pyx_t_1)) {
6723 
6724     /* "tables/hdf5extension.pyx":580
6725  *     err = H5Pget_userblock(create_plist, &size)
6726  *     if err < 0:
6727  *       H5Pclose(create_plist)             # <<<<<<<<<<<<<<
6728  *       raise HDF5ExtError("unable to retrieve the user block size")
6729  *
6730  */
6731     (void)(H5Pclose(__pyx_v_create_plist));
6732 
6733     /* "tables/hdf5extension.pyx":581
6734  *     if err < 0:
6735  *       H5Pclose(create_plist)
6736  *       raise HDF5ExtError("unable to retrieve the user block size")             # <<<<<<<<<<<<<<
6737  *
6738  *     H5Pclose(create_plist)
6739  */
6740     __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_HDF5ExtError); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 581, __pyx_L1_error)
6741     __Pyx_GOTREF(__pyx_t_3);
6742     __pyx_t_4 = NULL;
6743     if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
6744       __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
6745       if (likely(__pyx_t_4)) {
6746         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
6747         __Pyx_INCREF(__pyx_t_4);
6748         __Pyx_INCREF(function);
6749         __Pyx_DECREF_SET(__pyx_t_3, function);
6750       }
6751     }
6752     __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_kp_s_unable_to_retrieve_the_user_bloc) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_kp_s_unable_to_retrieve_the_user_bloc);
6753     __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
6754     if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 581, __pyx_L1_error)
6755     __Pyx_GOTREF(__pyx_t_2);
6756     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
6757     __Pyx_Raise(__pyx_t_2, 0, 0, 0);
6758     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
6759     __PYX_ERR(0, 581, __pyx_L1_error)
6760 
6761     /* "tables/hdf5extension.pyx":579
6762  *
6763  *     err = H5Pget_userblock(create_plist, &size)
6764  *     if err < 0:             # <<<<<<<<<<<<<<
6765  *       H5Pclose(create_plist)
6766  *       raise HDF5ExtError("unable to retrieve the user block size")
6767  */
6768   }
6769 
6770   /* "tables/hdf5extension.pyx":583
6771  *       raise HDF5ExtError("unable to retrieve the user block size")
6772  *
6773  *     H5Pclose(create_plist)             # <<<<<<<<<<<<<<
6774  *
6775  *     return size
6776  */
6777   (void)(H5Pclose(__pyx_v_create_plist));
6778 
6779   /* "tables/hdf5extension.pyx":585
6780  *     H5Pclose(create_plist)
6781  *
6782  *     return size             # <<<<<<<<<<<<<<
6783  *
6784  *   # Accessor definitions
6785  */
6786   __Pyx_XDECREF(__pyx_r);
6787   __pyx_t_2 = __Pyx_PyInt_From_hsize_t(__pyx_v_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 585, __pyx_L1_error)
6788   __Pyx_GOTREF(__pyx_t_2);
6789   __pyx_r = __pyx_t_2;
6790   __pyx_t_2 = 0;
6791   goto __pyx_L0;
6792 
6793   /* "tables/hdf5extension.pyx":563
6794  *     return size
6795  *
6796  *   def get_userblock_size(self):             # <<<<<<<<<<<<<<
6797  *     """Retrieves the size of a user block.
6798  *
6799  */
6800 
6801   /* function exit code */
6802   __pyx_L1_error:;
6803   __Pyx_XDECREF(__pyx_t_2);
6804   __Pyx_XDECREF(__pyx_t_3);
6805   __Pyx_XDECREF(__pyx_t_4);
6806   __Pyx_AddTraceback("tables.hdf5extension.File.get_userblock_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
6807   __pyx_r = NULL;
6808   __pyx_L0:;
6809   __Pyx_XGIVEREF(__pyx_r);
6810   __Pyx_RefNannyFinishContext();
6811   return __pyx_r;
6812 }
6813 
6814 /* "tables/hdf5extension.pyx":588
6815  *
6816  *   # Accessor definitions
6817  *   def _get_file_id(self):             # <<<<<<<<<<<<<<
6818  *     return self.file_id
6819  *
6820  */
6821 
6822 /* Python wrapper */
6823 static PyObject *__pyx_pw_6tables_13hdf5extension_4File_9_get_file_id(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
__pyx_pw_6tables_13hdf5extension_4File_9_get_file_id(PyObject * __pyx_v_self,CYTHON_UNUSED PyObject * unused)6824 static PyObject *__pyx_pw_6tables_13hdf5extension_4File_9_get_file_id(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
6825   PyObject *__pyx_r = 0;
6826   __Pyx_RefNannyDeclarations
6827   __Pyx_RefNannySetupContext("_get_file_id (wrapper)", 0);
6828   __pyx_r = __pyx_pf_6tables_13hdf5extension_4File_8_get_file_id(((struct __pyx_obj_6tables_13hdf5extension_File *)__pyx_v_self));
6829 
6830   /* function exit code */
6831   __Pyx_RefNannyFinishContext();
6832   return __pyx_r;
6833 }
6834 
__pyx_pf_6tables_13hdf5extension_4File_8_get_file_id(struct __pyx_obj_6tables_13hdf5extension_File * __pyx_v_self)6835 static PyObject *__pyx_pf_6tables_13hdf5extension_4File_8_get_file_id(struct __pyx_obj_6tables_13hdf5extension_File *__pyx_v_self) {
6836   PyObject *__pyx_r = NULL;
6837   __Pyx_RefNannyDeclarations
6838   PyObject *__pyx_t_1 = NULL;
6839   __Pyx_RefNannySetupContext("_get_file_id", 0);
6840 
6841   /* "tables/hdf5extension.pyx":589
6842  *   # Accessor definitions
6843  *   def _get_file_id(self):
6844  *     return self.file_id             # <<<<<<<<<<<<<<
6845  *
6846  *   def fileno(self):
6847  */
6848   __Pyx_XDECREF(__pyx_r);
6849   __pyx_t_1 = __Pyx_PyInt_From_hid_t(__pyx_v_self->file_id); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 589, __pyx_L1_error)
6850   __Pyx_GOTREF(__pyx_t_1);
6851   __pyx_r = __pyx_t_1;
6852   __pyx_t_1 = 0;
6853   goto __pyx_L0;
6854 
6855   /* "tables/hdf5extension.pyx":588
6856  *
6857  *   # Accessor definitions
6858  *   def _get_file_id(self):             # <<<<<<<<<<<<<<
6859  *     return self.file_id
6860  *
6861  */
6862 
6863   /* function exit code */
6864   __pyx_L1_error:;
6865   __Pyx_XDECREF(__pyx_t_1);
6866   __Pyx_AddTraceback("tables.hdf5extension.File._get_file_id", __pyx_clineno, __pyx_lineno, __pyx_filename);
6867   __pyx_r = NULL;
6868   __pyx_L0:;
6869   __Pyx_XGIVEREF(__pyx_r);
6870   __Pyx_RefNannyFinishContext();
6871   return __pyx_r;
6872 }
6873 
6874 /* "tables/hdf5extension.pyx":591
6875  *     return self.file_id
6876  *
6877  *   def fileno(self):             # <<<<<<<<<<<<<<
6878  *     """Return the underlying OS integer file descriptor.
6879  *
6880  */
6881 
6882 /* Python wrapper */
6883 static PyObject *__pyx_pw_6tables_13hdf5extension_4File_11fileno(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
6884 static char __pyx_doc_6tables_13hdf5extension_4File_10fileno[] = "Return the underlying OS integer file descriptor.\n\n    This is needed for lower-level file interfaces, such as the ``fcntl``\n    module.\n\n    ";
__pyx_pw_6tables_13hdf5extension_4File_11fileno(PyObject * __pyx_v_self,CYTHON_UNUSED PyObject * unused)6885 static PyObject *__pyx_pw_6tables_13hdf5extension_4File_11fileno(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
6886   PyObject *__pyx_r = 0;
6887   __Pyx_RefNannyDeclarations
6888   __Pyx_RefNannySetupContext("fileno (wrapper)", 0);
6889   __pyx_r = __pyx_pf_6tables_13hdf5extension_4File_10fileno(((struct __pyx_obj_6tables_13hdf5extension_File *)__pyx_v_self));
6890 
6891   /* function exit code */
6892   __Pyx_RefNannyFinishContext();
6893   return __pyx_r;
6894 }
6895 
__pyx_pf_6tables_13hdf5extension_4File_10fileno(struct __pyx_obj_6tables_13hdf5extension_File * __pyx_v_self)6896 static PyObject *__pyx_pf_6tables_13hdf5extension_4File_10fileno(struct __pyx_obj_6tables_13hdf5extension_File *__pyx_v_self) {
6897   void *__pyx_v_file_handle;
6898   uintptr_t *__pyx_v_descriptor;
6899   herr_t __pyx_v_err;
6900   PyObject *__pyx_r = NULL;
6901   __Pyx_RefNannyDeclarations
6902   int __pyx_t_1;
6903   PyObject *__pyx_t_2 = NULL;
6904   PyObject *__pyx_t_3 = NULL;
6905   PyObject *__pyx_t_4 = NULL;
6906   PyObject *__pyx_t_5 = NULL;
6907   __Pyx_RefNannySetupContext("fileno", 0);
6908 
6909   /* "tables/hdf5extension.pyx":602
6910  *     cdef uintptr_t *descriptor
6911  *     cdef herr_t err
6912  *     err = H5Fget_vfd_handle(self.file_id, H5P_DEFAULT, &file_handle)             # <<<<<<<<<<<<<<
6913  *     if err < 0:
6914  *       raise HDF5ExtError(
6915  */
6916   __pyx_v_err = H5Fget_vfd_handle(__pyx_v_self->file_id, H5P_DEFAULT, (&__pyx_v_file_handle));
6917 
6918   /* "tables/hdf5extension.pyx":603
6919  *     cdef herr_t err
6920  *     err = H5Fget_vfd_handle(self.file_id, H5P_DEFAULT, &file_handle)
6921  *     if err < 0:             # <<<<<<<<<<<<<<
6922  *       raise HDF5ExtError(
6923  *         "Problems getting file descriptor for file ``%s``" % self.name)
6924  */
6925   __pyx_t_1 = ((__pyx_v_err < 0) != 0);
6926   if (unlikely(__pyx_t_1)) {
6927 
6928     /* "tables/hdf5extension.pyx":604
6929  *     err = H5Fget_vfd_handle(self.file_id, H5P_DEFAULT, &file_handle)
6930  *     if err < 0:
6931  *       raise HDF5ExtError(             # <<<<<<<<<<<<<<
6932  *         "Problems getting file descriptor for file ``%s``" % self.name)
6933  *     # Convert the 'void *file_handle' into an 'int *descriptor'
6934  */
6935     __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_HDF5ExtError); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 604, __pyx_L1_error)
6936     __Pyx_GOTREF(__pyx_t_3);
6937 
6938     /* "tables/hdf5extension.pyx":605
6939  *     if err < 0:
6940  *       raise HDF5ExtError(
6941  *         "Problems getting file descriptor for file ``%s``" % self.name)             # <<<<<<<<<<<<<<
6942  *     # Convert the 'void *file_handle' into an 'int *descriptor'
6943  *     descriptor = <uintptr_t *>file_handle
6944  */
6945     __pyx_t_4 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Problems_getting_file_descriptor, __pyx_v_self->name); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 605, __pyx_L1_error)
6946     __Pyx_GOTREF(__pyx_t_4);
6947     __pyx_t_5 = NULL;
6948     if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
6949       __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
6950       if (likely(__pyx_t_5)) {
6951         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
6952         __Pyx_INCREF(__pyx_t_5);
6953         __Pyx_INCREF(function);
6954         __Pyx_DECREF_SET(__pyx_t_3, function);
6955       }
6956     }
6957     __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4);
6958     __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
6959     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
6960     if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 604, __pyx_L1_error)
6961     __Pyx_GOTREF(__pyx_t_2);
6962     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
6963     __Pyx_Raise(__pyx_t_2, 0, 0, 0);
6964     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
6965     __PYX_ERR(0, 604, __pyx_L1_error)
6966 
6967     /* "tables/hdf5extension.pyx":603
6968  *     cdef herr_t err
6969  *     err = H5Fget_vfd_handle(self.file_id, H5P_DEFAULT, &file_handle)
6970  *     if err < 0:             # <<<<<<<<<<<<<<
6971  *       raise HDF5ExtError(
6972  *         "Problems getting file descriptor for file ``%s``" % self.name)
6973  */
6974   }
6975 
6976   /* "tables/hdf5extension.pyx":607
6977  *         "Problems getting file descriptor for file ``%s``" % self.name)
6978  *     # Convert the 'void *file_handle' into an 'int *descriptor'
6979  *     descriptor = <uintptr_t *>file_handle             # <<<<<<<<<<<<<<
6980  *     return descriptor[0]
6981  *
6982  */
6983   __pyx_v_descriptor = ((uintptr_t *)__pyx_v_file_handle);
6984 
6985   /* "tables/hdf5extension.pyx":608
6986  *     # Convert the 'void *file_handle' into an 'int *descriptor'
6987  *     descriptor = <uintptr_t *>file_handle
6988  *     return descriptor[0]             # <<<<<<<<<<<<<<
6989  *
6990  *
6991  */
6992   __Pyx_XDECREF(__pyx_r);
6993   __pyx_t_2 = __Pyx_PyInt_From_uintptr_t((__pyx_v_descriptor[0])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 608, __pyx_L1_error)
6994   __Pyx_GOTREF(__pyx_t_2);
6995   __pyx_r = __pyx_t_2;
6996   __pyx_t_2 = 0;
6997   goto __pyx_L0;
6998 
6999   /* "tables/hdf5extension.pyx":591
7000  *     return self.file_id
7001  *
7002  *   def fileno(self):             # <<<<<<<<<<<<<<
7003  *     """Return the underlying OS integer file descriptor.
7004  *
7005  */
7006 
7007   /* function exit code */
7008   __pyx_L1_error:;
7009   __Pyx_XDECREF(__pyx_t_2);
7010   __Pyx_XDECREF(__pyx_t_3);
7011   __Pyx_XDECREF(__pyx_t_4);
7012   __Pyx_XDECREF(__pyx_t_5);
7013   __Pyx_AddTraceback("tables.hdf5extension.File.fileno", __pyx_clineno, __pyx_lineno, __pyx_filename);
7014   __pyx_r = NULL;
7015   __pyx_L0:;
7016   __Pyx_XGIVEREF(__pyx_r);
7017   __Pyx_RefNannyFinishContext();
7018   return __pyx_r;
7019 }
7020 
7021 /* "tables/hdf5extension.pyx":611
7022  *
7023  *
7024  *   def _flush_file(self, scope):             # <<<<<<<<<<<<<<
7025  *     # Close the file
7026  *     H5Fflush(self.file_id, scope)
7027  */
7028 
7029 /* Python wrapper */
7030 static PyObject *__pyx_pw_6tables_13hdf5extension_4File_13_flush_file(PyObject *__pyx_v_self, PyObject *__pyx_v_scope); /*proto*/
__pyx_pw_6tables_13hdf5extension_4File_13_flush_file(PyObject * __pyx_v_self,PyObject * __pyx_v_scope)7031 static PyObject *__pyx_pw_6tables_13hdf5extension_4File_13_flush_file(PyObject *__pyx_v_self, PyObject *__pyx_v_scope) {
7032   PyObject *__pyx_r = 0;
7033   __Pyx_RefNannyDeclarations
7034   __Pyx_RefNannySetupContext("_flush_file (wrapper)", 0);
7035   __pyx_r = __pyx_pf_6tables_13hdf5extension_4File_12_flush_file(((struct __pyx_obj_6tables_13hdf5extension_File *)__pyx_v_self), ((PyObject *)__pyx_v_scope));
7036 
7037   /* function exit code */
7038   __Pyx_RefNannyFinishContext();
7039   return __pyx_r;
7040 }
7041 
__pyx_pf_6tables_13hdf5extension_4File_12_flush_file(struct __pyx_obj_6tables_13hdf5extension_File * __pyx_v_self,PyObject * __pyx_v_scope)7042 static PyObject *__pyx_pf_6tables_13hdf5extension_4File_12_flush_file(struct __pyx_obj_6tables_13hdf5extension_File *__pyx_v_self, PyObject *__pyx_v_scope) {
7043   PyObject *__pyx_r = NULL;
7044   __Pyx_RefNannyDeclarations
7045   enum H5F_scope_t __pyx_t_1;
7046   __Pyx_RefNannySetupContext("_flush_file", 0);
7047 
7048   /* "tables/hdf5extension.pyx":613
7049  *   def _flush_file(self, scope):
7050  *     # Close the file
7051  *     H5Fflush(self.file_id, scope)             # <<<<<<<<<<<<<<
7052  *
7053  *
7054  */
7055   __pyx_t_1 = ((enum H5F_scope_t)__Pyx_PyInt_As_enum__H5F_scope_t(__pyx_v_scope)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 613, __pyx_L1_error)
7056   (void)(H5Fflush(__pyx_v_self->file_id, __pyx_t_1));
7057 
7058   /* "tables/hdf5extension.pyx":611
7059  *
7060  *
7061  *   def _flush_file(self, scope):             # <<<<<<<<<<<<<<
7062  *     # Close the file
7063  *     H5Fflush(self.file_id, scope)
7064  */
7065 
7066   /* function exit code */
7067   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
7068   goto __pyx_L0;
7069   __pyx_L1_error:;
7070   __Pyx_AddTraceback("tables.hdf5extension.File._flush_file", __pyx_clineno, __pyx_lineno, __pyx_filename);
7071   __pyx_r = NULL;
7072   __pyx_L0:;
7073   __Pyx_XGIVEREF(__pyx_r);
7074   __Pyx_RefNannyFinishContext();
7075   return __pyx_r;
7076 }
7077 
7078 /* "tables/hdf5extension.pyx":616
7079  *
7080  *
7081  *   def _close_file(self):             # <<<<<<<<<<<<<<
7082  *     # Close the file
7083  *     H5Fclose( self.file_id )
7084  */
7085 
7086 /* Python wrapper */
7087 static PyObject *__pyx_pw_6tables_13hdf5extension_4File_15_close_file(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
__pyx_pw_6tables_13hdf5extension_4File_15_close_file(PyObject * __pyx_v_self,CYTHON_UNUSED PyObject * unused)7088 static PyObject *__pyx_pw_6tables_13hdf5extension_4File_15_close_file(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
7089   PyObject *__pyx_r = 0;
7090   __Pyx_RefNannyDeclarations
7091   __Pyx_RefNannySetupContext("_close_file (wrapper)", 0);
7092   __pyx_r = __pyx_pf_6tables_13hdf5extension_4File_14_close_file(((struct __pyx_obj_6tables_13hdf5extension_File *)__pyx_v_self));
7093 
7094   /* function exit code */
7095   __Pyx_RefNannyFinishContext();
7096   return __pyx_r;
7097 }
7098 
__pyx_pf_6tables_13hdf5extension_4File_14_close_file(struct __pyx_obj_6tables_13hdf5extension_File * __pyx_v_self)7099 static PyObject *__pyx_pf_6tables_13hdf5extension_4File_14_close_file(struct __pyx_obj_6tables_13hdf5extension_File *__pyx_v_self) {
7100   PyObject *__pyx_r = NULL;
7101   __Pyx_RefNannyDeclarations
7102   __Pyx_RefNannySetupContext("_close_file", 0);
7103 
7104   /* "tables/hdf5extension.pyx":618
7105  *   def _close_file(self):
7106  *     # Close the file
7107  *     H5Fclose( self.file_id )             # <<<<<<<<<<<<<<
7108  *     self.file_id = 0    # Means file closed
7109  *
7110  */
7111   (void)(H5Fclose(__pyx_v_self->file_id));
7112 
7113   /* "tables/hdf5extension.pyx":619
7114  *     # Close the file
7115  *     H5Fclose( self.file_id )
7116  *     self.file_id = 0    # Means file closed             # <<<<<<<<<<<<<<
7117  *
7118  *
7119  */
7120   __pyx_v_self->file_id = 0;
7121 
7122   /* "tables/hdf5extension.pyx":616
7123  *
7124  *
7125  *   def _close_file(self):             # <<<<<<<<<<<<<<
7126  *     # Close the file
7127  *     H5Fclose( self.file_id )
7128  */
7129 
7130   /* function exit code */
7131   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
7132   __Pyx_XGIVEREF(__pyx_r);
7133   __Pyx_RefNannyFinishContext();
7134   return __pyx_r;
7135 }
7136 
7137 /* "tables/hdf5extension.pyx":624
7138  *   # This method is moved out of scope, until we provide code to delete
7139  *   # the memory booked by this extension types
7140  *   def __dealloc__(self):             # <<<<<<<<<<<<<<
7141  *     cdef int ret
7142  *     if self.file_id > 0:
7143  */
7144 
7145 /* Python wrapper */
7146 static void __pyx_pw_6tables_13hdf5extension_4File_17__dealloc__(PyObject *__pyx_v_self); /*proto*/
__pyx_pw_6tables_13hdf5extension_4File_17__dealloc__(PyObject * __pyx_v_self)7147 static void __pyx_pw_6tables_13hdf5extension_4File_17__dealloc__(PyObject *__pyx_v_self) {
7148   __Pyx_RefNannyDeclarations
7149   __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
7150   __pyx_pf_6tables_13hdf5extension_4File_16__dealloc__(((struct __pyx_obj_6tables_13hdf5extension_File *)__pyx_v_self));
7151 
7152   /* function exit code */
7153   __Pyx_RefNannyFinishContext();
7154 }
7155 
__pyx_pf_6tables_13hdf5extension_4File_16__dealloc__(struct __pyx_obj_6tables_13hdf5extension_File * __pyx_v_self)7156 static void __pyx_pf_6tables_13hdf5extension_4File_16__dealloc__(struct __pyx_obj_6tables_13hdf5extension_File *__pyx_v_self) {
7157   int __pyx_v_ret;
7158   __Pyx_RefNannyDeclarations
7159   int __pyx_t_1;
7160   PyObject *__pyx_t_2 = NULL;
7161   PyObject *__pyx_t_3 = NULL;
7162   PyObject *__pyx_t_4 = NULL;
7163   PyObject *__pyx_t_5 = NULL;
7164   __Pyx_RefNannySetupContext("__dealloc__", 0);
7165 
7166   /* "tables/hdf5extension.pyx":626
7167  *   def __dealloc__(self):
7168  *     cdef int ret
7169  *     if self.file_id > 0:             # <<<<<<<<<<<<<<
7170  *       # Close the HDF5 file because user didn't do that!
7171  *       ret = H5Fclose(self.file_id)
7172  */
7173   __pyx_t_1 = ((__pyx_v_self->file_id > 0) != 0);
7174   if (__pyx_t_1) {
7175 
7176     /* "tables/hdf5extension.pyx":628
7177  *     if self.file_id > 0:
7178  *       # Close the HDF5 file because user didn't do that!
7179  *       ret = H5Fclose(self.file_id)             # <<<<<<<<<<<<<<
7180  *       if ret < 0:
7181  *         raise HDF5ExtError("Problems closing the file '%s'" % self.name)
7182  */
7183     __pyx_v_ret = H5Fclose(__pyx_v_self->file_id);
7184 
7185     /* "tables/hdf5extension.pyx":629
7186  *       # Close the HDF5 file because user didn't do that!
7187  *       ret = H5Fclose(self.file_id)
7188  *       if ret < 0:             # <<<<<<<<<<<<<<
7189  *         raise HDF5ExtError("Problems closing the file '%s'" % self.name)
7190  *
7191  */
7192     __pyx_t_1 = ((__pyx_v_ret < 0) != 0);
7193     if (unlikely(__pyx_t_1)) {
7194 
7195       /* "tables/hdf5extension.pyx":630
7196  *       ret = H5Fclose(self.file_id)
7197  *       if ret < 0:
7198  *         raise HDF5ExtError("Problems closing the file '%s'" % self.name)             # <<<<<<<<<<<<<<
7199  *
7200  *
7201  */
7202       __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_HDF5ExtError); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 630, __pyx_L1_error)
7203       __Pyx_GOTREF(__pyx_t_3);
7204       __pyx_t_4 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Problems_closing_the_file_s, __pyx_v_self->name); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 630, __pyx_L1_error)
7205       __Pyx_GOTREF(__pyx_t_4);
7206       __pyx_t_5 = NULL;
7207       if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
7208         __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
7209         if (likely(__pyx_t_5)) {
7210           PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
7211           __Pyx_INCREF(__pyx_t_5);
7212           __Pyx_INCREF(function);
7213           __Pyx_DECREF_SET(__pyx_t_3, function);
7214         }
7215       }
7216       __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4);
7217       __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
7218       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
7219       if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 630, __pyx_L1_error)
7220       __Pyx_GOTREF(__pyx_t_2);
7221       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
7222       __Pyx_Raise(__pyx_t_2, 0, 0, 0);
7223       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
7224       __PYX_ERR(0, 630, __pyx_L1_error)
7225 
7226       /* "tables/hdf5extension.pyx":629
7227  *       # Close the HDF5 file because user didn't do that!
7228  *       ret = H5Fclose(self.file_id)
7229  *       if ret < 0:             # <<<<<<<<<<<<<<
7230  *         raise HDF5ExtError("Problems closing the file '%s'" % self.name)
7231  *
7232  */
7233     }
7234 
7235     /* "tables/hdf5extension.pyx":626
7236  *   def __dealloc__(self):
7237  *     cdef int ret
7238  *     if self.file_id > 0:             # <<<<<<<<<<<<<<
7239  *       # Close the HDF5 file because user didn't do that!
7240  *       ret = H5Fclose(self.file_id)
7241  */
7242   }
7243 
7244   /* "tables/hdf5extension.pyx":624
7245  *   # This method is moved out of scope, until we provide code to delete
7246  *   # the memory booked by this extension types
7247  *   def __dealloc__(self):             # <<<<<<<<<<<<<<
7248  *     cdef int ret
7249  *     if self.file_id > 0:
7250  */
7251 
7252   /* function exit code */
7253   goto __pyx_L0;
7254   __pyx_L1_error:;
7255   __Pyx_XDECREF(__pyx_t_2);
7256   __Pyx_XDECREF(__pyx_t_3);
7257   __Pyx_XDECREF(__pyx_t_4);
7258   __Pyx_XDECREF(__pyx_t_5);
7259   __Pyx_WriteUnraisable("tables.hdf5extension.File.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
7260   __pyx_L0:;
7261   __Pyx_RefNannyFinishContext();
7262 }
7263 
7264 /* "(tree fragment)":1
7265  * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
7266  *     cdef tuple state
7267  *     cdef object _dict
7268  */
7269 
7270 /* Python wrapper */
7271 static PyObject *__pyx_pw_6tables_13hdf5extension_4File_19__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
__pyx_pw_6tables_13hdf5extension_4File_19__reduce_cython__(PyObject * __pyx_v_self,CYTHON_UNUSED PyObject * unused)7272 static PyObject *__pyx_pw_6tables_13hdf5extension_4File_19__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
7273   PyObject *__pyx_r = 0;
7274   __Pyx_RefNannyDeclarations
7275   __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
7276   __pyx_r = __pyx_pf_6tables_13hdf5extension_4File_18__reduce_cython__(((struct __pyx_obj_6tables_13hdf5extension_File *)__pyx_v_self));
7277 
7278   /* function exit code */
7279   __Pyx_RefNannyFinishContext();
7280   return __pyx_r;
7281 }
7282 
__pyx_pf_6tables_13hdf5extension_4File_18__reduce_cython__(struct __pyx_obj_6tables_13hdf5extension_File * __pyx_v_self)7283 static PyObject *__pyx_pf_6tables_13hdf5extension_4File_18__reduce_cython__(struct __pyx_obj_6tables_13hdf5extension_File *__pyx_v_self) {
7284   PyObject *__pyx_v_state = 0;
7285   PyObject *__pyx_v__dict = 0;
7286   int __pyx_v_use_setstate;
7287   PyObject *__pyx_r = NULL;
7288   __Pyx_RefNannyDeclarations
7289   PyObject *__pyx_t_1 = NULL;
7290   PyObject *__pyx_t_2 = NULL;
7291   PyObject *__pyx_t_3 = NULL;
7292   int __pyx_t_4;
7293   int __pyx_t_5;
7294   __Pyx_RefNannySetupContext("__reduce_cython__", 0);
7295 
7296   /* "(tree fragment)":5
7297  *     cdef object _dict
7298  *     cdef bint use_setstate
7299  *     state = (self.access_plist, self.file_id, self.name)             # <<<<<<<<<<<<<<
7300  *     _dict = getattr(self, '__dict__', None)
7301  *     if _dict is not None:
7302  */
7303   __pyx_t_1 = __Pyx_PyInt_From_hid_t(__pyx_v_self->access_plist); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
7304   __Pyx_GOTREF(__pyx_t_1);
7305   __pyx_t_2 = __Pyx_PyInt_From_hid_t(__pyx_v_self->file_id); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
7306   __Pyx_GOTREF(__pyx_t_2);
7307   __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
7308   __Pyx_GOTREF(__pyx_t_3);
7309   __Pyx_GIVEREF(__pyx_t_1);
7310   PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
7311   __Pyx_GIVEREF(__pyx_t_2);
7312   PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
7313   __Pyx_INCREF(__pyx_v_self->name);
7314   __Pyx_GIVEREF(__pyx_v_self->name);
7315   PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_self->name);
7316   __pyx_t_1 = 0;
7317   __pyx_t_2 = 0;
7318   __pyx_v_state = ((PyObject*)__pyx_t_3);
7319   __pyx_t_3 = 0;
7320 
7321   /* "(tree fragment)":6
7322  *     cdef bint use_setstate
7323  *     state = (self.access_plist, self.file_id, self.name)
7324  *     _dict = getattr(self, '__dict__', None)             # <<<<<<<<<<<<<<
7325  *     if _dict is not None:
7326  *         state += (_dict,)
7327  */
7328   __pyx_t_3 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
7329   __Pyx_GOTREF(__pyx_t_3);
7330   __pyx_v__dict = __pyx_t_3;
7331   __pyx_t_3 = 0;
7332 
7333   /* "(tree fragment)":7
7334  *     state = (self.access_plist, self.file_id, self.name)
7335  *     _dict = getattr(self, '__dict__', None)
7336  *     if _dict is not None:             # <<<<<<<<<<<<<<
7337  *         state += (_dict,)
7338  *         use_setstate = True
7339  */
7340   __pyx_t_4 = (__pyx_v__dict != Py_None);
7341   __pyx_t_5 = (__pyx_t_4 != 0);
7342   if (__pyx_t_5) {
7343 
7344     /* "(tree fragment)":8
7345  *     _dict = getattr(self, '__dict__', None)
7346  *     if _dict is not None:
7347  *         state += (_dict,)             # <<<<<<<<<<<<<<
7348  *         use_setstate = True
7349  *     else:
7350  */
7351     __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 8, __pyx_L1_error)
7352     __Pyx_GOTREF(__pyx_t_3);
7353     __Pyx_INCREF(__pyx_v__dict);
7354     __Pyx_GIVEREF(__pyx_v__dict);
7355     PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v__dict);
7356     __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 8, __pyx_L1_error)
7357     __Pyx_GOTREF(__pyx_t_2);
7358     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
7359     __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_2));
7360     __pyx_t_2 = 0;
7361 
7362     /* "(tree fragment)":9
7363  *     if _dict is not None:
7364  *         state += (_dict,)
7365  *         use_setstate = True             # <<<<<<<<<<<<<<
7366  *     else:
7367  *         use_setstate = self.name is not None
7368  */
7369     __pyx_v_use_setstate = 1;
7370 
7371     /* "(tree fragment)":7
7372  *     state = (self.access_plist, self.file_id, self.name)
7373  *     _dict = getattr(self, '__dict__', None)
7374  *     if _dict is not None:             # <<<<<<<<<<<<<<
7375  *         state += (_dict,)
7376  *         use_setstate = True
7377  */
7378     goto __pyx_L3;
7379   }
7380 
7381   /* "(tree fragment)":11
7382  *         use_setstate = True
7383  *     else:
7384  *         use_setstate = self.name is not None             # <<<<<<<<<<<<<<
7385  *     if use_setstate:
7386  *         return __pyx_unpickle_File, (type(self), 0xfba3a2d, None), state
7387  */
7388   /*else*/ {
7389     __pyx_t_5 = (__pyx_v_self->name != Py_None);
7390     __pyx_v_use_setstate = __pyx_t_5;
7391   }
7392   __pyx_L3:;
7393 
7394   /* "(tree fragment)":12
7395  *     else:
7396  *         use_setstate = self.name is not None
7397  *     if use_setstate:             # <<<<<<<<<<<<<<
7398  *         return __pyx_unpickle_File, (type(self), 0xfba3a2d, None), state
7399  *     else:
7400  */
7401   __pyx_t_5 = (__pyx_v_use_setstate != 0);
7402   if (__pyx_t_5) {
7403 
7404     /* "(tree fragment)":13
7405  *         use_setstate = self.name is not None
7406  *     if use_setstate:
7407  *         return __pyx_unpickle_File, (type(self), 0xfba3a2d, None), state             # <<<<<<<<<<<<<<
7408  *     else:
7409  *         return __pyx_unpickle_File, (type(self), 0xfba3a2d, state)
7410  */
7411     __Pyx_XDECREF(__pyx_r);
7412     __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pyx_unpickle_File); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 13, __pyx_L1_error)
7413     __Pyx_GOTREF(__pyx_t_2);
7414     __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 13, __pyx_L1_error)
7415     __Pyx_GOTREF(__pyx_t_3);
7416     __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
7417     __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
7418     PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
7419     __Pyx_INCREF(__pyx_int_263862829);
7420     __Pyx_GIVEREF(__pyx_int_263862829);
7421     PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_263862829);
7422     __Pyx_INCREF(Py_None);
7423     __Pyx_GIVEREF(Py_None);
7424     PyTuple_SET_ITEM(__pyx_t_3, 2, Py_None);
7425     __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
7426     __Pyx_GOTREF(__pyx_t_1);
7427     __Pyx_GIVEREF(__pyx_t_2);
7428     PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
7429     __Pyx_GIVEREF(__pyx_t_3);
7430     PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_3);
7431     __Pyx_INCREF(__pyx_v_state);
7432     __Pyx_GIVEREF(__pyx_v_state);
7433     PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state);
7434     __pyx_t_2 = 0;
7435     __pyx_t_3 = 0;
7436     __pyx_r = __pyx_t_1;
7437     __pyx_t_1 = 0;
7438     goto __pyx_L0;
7439 
7440     /* "(tree fragment)":12
7441  *     else:
7442  *         use_setstate = self.name is not None
7443  *     if use_setstate:             # <<<<<<<<<<<<<<
7444  *         return __pyx_unpickle_File, (type(self), 0xfba3a2d, None), state
7445  *     else:
7446  */
7447   }
7448 
7449   /* "(tree fragment)":15
7450  *         return __pyx_unpickle_File, (type(self), 0xfba3a2d, None), state
7451  *     else:
7452  *         return __pyx_unpickle_File, (type(self), 0xfba3a2d, state)             # <<<<<<<<<<<<<<
7453  * def __setstate_cython__(self, __pyx_state):
7454  *     __pyx_unpickle_File__set_state(self, __pyx_state)
7455  */
7456   /*else*/ {
7457     __Pyx_XDECREF(__pyx_r);
7458     __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyx_unpickle_File); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error)
7459     __Pyx_GOTREF(__pyx_t_1);
7460     __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 15, __pyx_L1_error)
7461     __Pyx_GOTREF(__pyx_t_3);
7462     __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
7463     __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
7464     PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
7465     __Pyx_INCREF(__pyx_int_263862829);
7466     __Pyx_GIVEREF(__pyx_int_263862829);
7467     PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_263862829);
7468     __Pyx_INCREF(__pyx_v_state);
7469     __Pyx_GIVEREF(__pyx_v_state);
7470     PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_state);
7471     __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 15, __pyx_L1_error)
7472     __Pyx_GOTREF(__pyx_t_2);
7473     __Pyx_GIVEREF(__pyx_t_1);
7474     PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
7475     __Pyx_GIVEREF(__pyx_t_3);
7476     PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_3);
7477     __pyx_t_1 = 0;
7478     __pyx_t_3 = 0;
7479     __pyx_r = __pyx_t_2;
7480     __pyx_t_2 = 0;
7481     goto __pyx_L0;
7482   }
7483 
7484   /* "(tree fragment)":1
7485  * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
7486  *     cdef tuple state
7487  *     cdef object _dict
7488  */
7489 
7490   /* function exit code */
7491   __pyx_L1_error:;
7492   __Pyx_XDECREF(__pyx_t_1);
7493   __Pyx_XDECREF(__pyx_t_2);
7494   __Pyx_XDECREF(__pyx_t_3);
7495   __Pyx_AddTraceback("tables.hdf5extension.File.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
7496   __pyx_r = NULL;
7497   __pyx_L0:;
7498   __Pyx_XDECREF(__pyx_v_state);
7499   __Pyx_XDECREF(__pyx_v__dict);
7500   __Pyx_XGIVEREF(__pyx_r);
7501   __Pyx_RefNannyFinishContext();
7502   return __pyx_r;
7503 }
7504 
7505 /* "(tree fragment)":16
7506  *     else:
7507  *         return __pyx_unpickle_File, (type(self), 0xfba3a2d, state)
7508  * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
7509  *     __pyx_unpickle_File__set_state(self, __pyx_state)
7510  */
7511 
7512 /* Python wrapper */
7513 static PyObject *__pyx_pw_6tables_13hdf5extension_4File_21__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
__pyx_pw_6tables_13hdf5extension_4File_21__setstate_cython__(PyObject * __pyx_v_self,PyObject * __pyx_v___pyx_state)7514 static PyObject *__pyx_pw_6tables_13hdf5extension_4File_21__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
7515   PyObject *__pyx_r = 0;
7516   __Pyx_RefNannyDeclarations
7517   __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
7518   __pyx_r = __pyx_pf_6tables_13hdf5extension_4File_20__setstate_cython__(((struct __pyx_obj_6tables_13hdf5extension_File *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));
7519 
7520   /* function exit code */
7521   __Pyx_RefNannyFinishContext();
7522   return __pyx_r;
7523 }
7524 
__pyx_pf_6tables_13hdf5extension_4File_20__setstate_cython__(struct __pyx_obj_6tables_13hdf5extension_File * __pyx_v_self,PyObject * __pyx_v___pyx_state)7525 static PyObject *__pyx_pf_6tables_13hdf5extension_4File_20__setstate_cython__(struct __pyx_obj_6tables_13hdf5extension_File *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
7526   PyObject *__pyx_r = NULL;
7527   __Pyx_RefNannyDeclarations
7528   PyObject *__pyx_t_1 = NULL;
7529   __Pyx_RefNannySetupContext("__setstate_cython__", 0);
7530 
7531   /* "(tree fragment)":17
7532  *         return __pyx_unpickle_File, (type(self), 0xfba3a2d, state)
7533  * def __setstate_cython__(self, __pyx_state):
7534  *     __pyx_unpickle_File__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
7535  */
7536   if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error)
7537   __pyx_t_1 = __pyx_f_6tables_13hdf5extension___pyx_unpickle_File__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error)
7538   __Pyx_GOTREF(__pyx_t_1);
7539   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
7540 
7541   /* "(tree fragment)":16
7542  *     else:
7543  *         return __pyx_unpickle_File, (type(self), 0xfba3a2d, state)
7544  * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
7545  *     __pyx_unpickle_File__set_state(self, __pyx_state)
7546  */
7547 
7548   /* function exit code */
7549   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
7550   goto __pyx_L0;
7551   __pyx_L1_error:;
7552   __Pyx_XDECREF(__pyx_t_1);
7553   __Pyx_AddTraceback("tables.hdf5extension.File.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
7554   __pyx_r = NULL;
7555   __pyx_L0:;
7556   __Pyx_XGIVEREF(__pyx_r);
7557   __Pyx_RefNannyFinishContext();
7558   return __pyx_r;
7559 }
7560 
7561 /* "tables/hdf5extension.pyx":636
7562  *   cdef object name
7563  *
7564  *   def _g_new(self, node):             # <<<<<<<<<<<<<<
7565  *     self.name = node._v_name
7566  *
7567  */
7568 
7569 /* Python wrapper */
7570 static PyObject *__pyx_pw_6tables_13hdf5extension_12AttributeSet_1_g_new(PyObject *__pyx_v_self, PyObject *__pyx_v_node); /*proto*/
__pyx_pw_6tables_13hdf5extension_12AttributeSet_1_g_new(PyObject * __pyx_v_self,PyObject * __pyx_v_node)7571 static PyObject *__pyx_pw_6tables_13hdf5extension_12AttributeSet_1_g_new(PyObject *__pyx_v_self, PyObject *__pyx_v_node) {
7572   PyObject *__pyx_r = 0;
7573   __Pyx_RefNannyDeclarations
7574   __Pyx_RefNannySetupContext("_g_new (wrapper)", 0);
7575   __pyx_r = __pyx_pf_6tables_13hdf5extension_12AttributeSet__g_new(((struct __pyx_obj_6tables_13hdf5extension_AttributeSet *)__pyx_v_self), ((PyObject *)__pyx_v_node));
7576 
7577   /* function exit code */
7578   __Pyx_RefNannyFinishContext();
7579   return __pyx_r;
7580 }
7581 
__pyx_pf_6tables_13hdf5extension_12AttributeSet__g_new(struct __pyx_obj_6tables_13hdf5extension_AttributeSet * __pyx_v_self,PyObject * __pyx_v_node)7582 static PyObject *__pyx_pf_6tables_13hdf5extension_12AttributeSet__g_new(struct __pyx_obj_6tables_13hdf5extension_AttributeSet *__pyx_v_self, PyObject *__pyx_v_node) {
7583   PyObject *__pyx_r = NULL;
7584   __Pyx_RefNannyDeclarations
7585   PyObject *__pyx_t_1 = NULL;
7586   __Pyx_RefNannySetupContext("_g_new", 0);
7587 
7588   /* "tables/hdf5extension.pyx":637
7589  *
7590  *   def _g_new(self, node):
7591  *     self.name = node._v_name             # <<<<<<<<<<<<<<
7592  *
7593  *   def _g_list_attr(self, node):
7594  */
7595   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_node, __pyx_n_s_v_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 637, __pyx_L1_error)
7596   __Pyx_GOTREF(__pyx_t_1);
7597   __Pyx_GIVEREF(__pyx_t_1);
7598   __Pyx_GOTREF(__pyx_v_self->name);
7599   __Pyx_DECREF(__pyx_v_self->name);
7600   __pyx_v_self->name = __pyx_t_1;
7601   __pyx_t_1 = 0;
7602 
7603   /* "tables/hdf5extension.pyx":636
7604  *   cdef object name
7605  *
7606  *   def _g_new(self, node):             # <<<<<<<<<<<<<<
7607  *     self.name = node._v_name
7608  *
7609  */
7610 
7611   /* function exit code */
7612   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
7613   goto __pyx_L0;
7614   __pyx_L1_error:;
7615   __Pyx_XDECREF(__pyx_t_1);
7616   __Pyx_AddTraceback("tables.hdf5extension.AttributeSet._g_new", __pyx_clineno, __pyx_lineno, __pyx_filename);
7617   __pyx_r = NULL;
7618   __pyx_L0:;
7619   __Pyx_XGIVEREF(__pyx_r);
7620   __Pyx_RefNannyFinishContext();
7621   return __pyx_r;
7622 }
7623 
7624 /* "tables/hdf5extension.pyx":639
7625  *     self.name = node._v_name
7626  *
7627  *   def _g_list_attr(self, node):             # <<<<<<<<<<<<<<
7628  *     "Return a tuple with the attribute list"
7629  *     a = Aiterate(node._v_objectid)
7630  */
7631 
7632 /* Python wrapper */
7633 static PyObject *__pyx_pw_6tables_13hdf5extension_12AttributeSet_3_g_list_attr(PyObject *__pyx_v_self, PyObject *__pyx_v_node); /*proto*/
7634 static char __pyx_doc_6tables_13hdf5extension_12AttributeSet_2_g_list_attr[] = "Return a tuple with the attribute list";
__pyx_pw_6tables_13hdf5extension_12AttributeSet_3_g_list_attr(PyObject * __pyx_v_self,PyObject * __pyx_v_node)7635 static PyObject *__pyx_pw_6tables_13hdf5extension_12AttributeSet_3_g_list_attr(PyObject *__pyx_v_self, PyObject *__pyx_v_node) {
7636   PyObject *__pyx_r = 0;
7637   __Pyx_RefNannyDeclarations
7638   __Pyx_RefNannySetupContext("_g_list_attr (wrapper)", 0);
7639   __pyx_r = __pyx_pf_6tables_13hdf5extension_12AttributeSet_2_g_list_attr(((struct __pyx_obj_6tables_13hdf5extension_AttributeSet *)__pyx_v_self), ((PyObject *)__pyx_v_node));
7640 
7641   /* function exit code */
7642   __Pyx_RefNannyFinishContext();
7643   return __pyx_r;
7644 }
7645 
__pyx_pf_6tables_13hdf5extension_12AttributeSet_2_g_list_attr(CYTHON_UNUSED struct __pyx_obj_6tables_13hdf5extension_AttributeSet * __pyx_v_self,PyObject * __pyx_v_node)7646 static PyObject *__pyx_pf_6tables_13hdf5extension_12AttributeSet_2_g_list_attr(CYTHON_UNUSED struct __pyx_obj_6tables_13hdf5extension_AttributeSet *__pyx_v_self, PyObject *__pyx_v_node) {
7647   PyObject *__pyx_v_a = NULL;
7648   PyObject *__pyx_r = NULL;
7649   __Pyx_RefNannyDeclarations
7650   PyObject *__pyx_t_1 = NULL;
7651   hid_t __pyx_t_2;
7652   __Pyx_RefNannySetupContext("_g_list_attr", 0);
7653 
7654   /* "tables/hdf5extension.pyx":641
7655  *   def _g_list_attr(self, node):
7656  *     "Return a tuple with the attribute list"
7657  *     a = Aiterate(node._v_objectid)             # <<<<<<<<<<<<<<
7658  *     return a
7659  *
7660  */
7661   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_node, __pyx_n_s_v_objectid); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 641, __pyx_L1_error)
7662   __Pyx_GOTREF(__pyx_t_1);
7663   __pyx_t_2 = __Pyx_PyInt_As_hid_t(__pyx_t_1); if (unlikely((__pyx_t_2 == ((hid_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 641, __pyx_L1_error)
7664   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
7665   __pyx_t_1 = Aiterate(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 641, __pyx_L1_error)
7666   __Pyx_GOTREF(__pyx_t_1);
7667   __pyx_v_a = __pyx_t_1;
7668   __pyx_t_1 = 0;
7669 
7670   /* "tables/hdf5extension.pyx":642
7671  *     "Return a tuple with the attribute list"
7672  *     a = Aiterate(node._v_objectid)
7673  *     return a             # <<<<<<<<<<<<<<
7674  *
7675  *
7676  */
7677   __Pyx_XDECREF(__pyx_r);
7678   __Pyx_INCREF(__pyx_v_a);
7679   __pyx_r = __pyx_v_a;
7680   goto __pyx_L0;
7681 
7682   /* "tables/hdf5extension.pyx":639
7683  *     self.name = node._v_name
7684  *
7685  *   def _g_list_attr(self, node):             # <<<<<<<<<<<<<<
7686  *     "Return a tuple with the attribute list"
7687  *     a = Aiterate(node._v_objectid)
7688  */
7689 
7690   /* function exit code */
7691   __pyx_L1_error:;
7692   __Pyx_XDECREF(__pyx_t_1);
7693   __Pyx_AddTraceback("tables.hdf5extension.AttributeSet._g_list_attr", __pyx_clineno, __pyx_lineno, __pyx_filename);
7694   __pyx_r = NULL;
7695   __pyx_L0:;
7696   __Pyx_XDECREF(__pyx_v_a);
7697   __Pyx_XGIVEREF(__pyx_r);
7698   __Pyx_RefNannyFinishContext();
7699   return __pyx_r;
7700 }
7701 
7702 /* "tables/hdf5extension.pyx":645
7703  *
7704  *
7705  *   def _g_setattr(self, node, name, object value):             # <<<<<<<<<<<<<<
7706  *     """Save Python or NumPy objects as HDF5 attributes.
7707  *
7708  */
7709 
7710 /* Python wrapper */
7711 static PyObject *__pyx_pw_6tables_13hdf5extension_12AttributeSet_5_g_setattr(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
7712 static char __pyx_doc_6tables_13hdf5extension_12AttributeSet_4_g_setattr[] = "Save Python or NumPy objects as HDF5 attributes.\n\n    Scalar Python objects, scalar NumPy & 0-dim NumPy objects will all be\n    saved as H5T_SCALAR type.  N-dim NumPy objects will be saved as H5T_ARRAY\n    type.\n\n    ";
__pyx_pw_6tables_13hdf5extension_12AttributeSet_5_g_setattr(PyObject * __pyx_v_self,PyObject * __pyx_args,PyObject * __pyx_kwds)7713 static PyObject *__pyx_pw_6tables_13hdf5extension_12AttributeSet_5_g_setattr(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
7714   PyObject *__pyx_v_node = 0;
7715   PyObject *__pyx_v_name = 0;
7716   PyObject *__pyx_v_value = 0;
7717   PyObject *__pyx_r = 0;
7718   __Pyx_RefNannyDeclarations
7719   __Pyx_RefNannySetupContext("_g_setattr (wrapper)", 0);
7720   {
7721     static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_node,&__pyx_n_s_name,&__pyx_n_s_value,0};
7722     PyObject* values[3] = {0,0,0};
7723     if (unlikely(__pyx_kwds)) {
7724       Py_ssize_t kw_args;
7725       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
7726       switch (pos_args) {
7727         case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
7728         CYTHON_FALLTHROUGH;
7729         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
7730         CYTHON_FALLTHROUGH;
7731         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
7732         CYTHON_FALLTHROUGH;
7733         case  0: break;
7734         default: goto __pyx_L5_argtuple_error;
7735       }
7736       kw_args = PyDict_Size(__pyx_kwds);
7737       switch (pos_args) {
7738         case  0:
7739         if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_node)) != 0)) kw_args--;
7740         else goto __pyx_L5_argtuple_error;
7741         CYTHON_FALLTHROUGH;
7742         case  1:
7743         if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
7744         else {
7745           __Pyx_RaiseArgtupleInvalid("_g_setattr", 1, 3, 3, 1); __PYX_ERR(0, 645, __pyx_L3_error)
7746         }
7747         CYTHON_FALLTHROUGH;
7748         case  2:
7749         if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_value)) != 0)) kw_args--;
7750         else {
7751           __Pyx_RaiseArgtupleInvalid("_g_setattr", 1, 3, 3, 2); __PYX_ERR(0, 645, __pyx_L3_error)
7752         }
7753       }
7754       if (unlikely(kw_args > 0)) {
7755         if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_g_setattr") < 0)) __PYX_ERR(0, 645, __pyx_L3_error)
7756       }
7757     } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
7758       goto __pyx_L5_argtuple_error;
7759     } else {
7760       values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
7761       values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
7762       values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
7763     }
7764     __pyx_v_node = values[0];
7765     __pyx_v_name = values[1];
7766     __pyx_v_value = values[2];
7767   }
7768   goto __pyx_L4_argument_unpacking_done;
7769   __pyx_L5_argtuple_error:;
7770   __Pyx_RaiseArgtupleInvalid("_g_setattr", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 645, __pyx_L3_error)
7771   __pyx_L3_error:;
7772   __Pyx_AddTraceback("tables.hdf5extension.AttributeSet._g_setattr", __pyx_clineno, __pyx_lineno, __pyx_filename);
7773   __Pyx_RefNannyFinishContext();
7774   return NULL;
7775   __pyx_L4_argument_unpacking_done:;
7776   __pyx_r = __pyx_pf_6tables_13hdf5extension_12AttributeSet_4_g_setattr(((struct __pyx_obj_6tables_13hdf5extension_AttributeSet *)__pyx_v_self), __pyx_v_node, __pyx_v_name, __pyx_v_value);
7777 
7778   /* function exit code */
7779   __Pyx_RefNannyFinishContext();
7780   return __pyx_r;
7781 }
7782 
__pyx_pf_6tables_13hdf5extension_12AttributeSet_4_g_setattr(struct __pyx_obj_6tables_13hdf5extension_AttributeSet * __pyx_v_self,PyObject * __pyx_v_node,PyObject * __pyx_v_name,PyObject * __pyx_v_value)7783 static PyObject *__pyx_pf_6tables_13hdf5extension_12AttributeSet_4_g_setattr(struct __pyx_obj_6tables_13hdf5extension_AttributeSet *__pyx_v_self, PyObject *__pyx_v_node, PyObject *__pyx_v_name, PyObject *__pyx_v_value) {
7784   int __pyx_v_ret;
7785   hid_t __pyx_v_dset_id;
7786   hid_t __pyx_v_type_id;
7787   hsize_t *__pyx_v_dims;
7788   PyArrayObject *__pyx_v_ndv = 0;
7789   PyObject *__pyx_v_byteorder = 0;
7790   PyObject *__pyx_v_rabyteorder = 0;
7791   PyObject *__pyx_v_baseatom = 0;
7792   char *__pyx_v_cname;
7793   PyObject *__pyx_v_encoded_name = 0;
7794   int __pyx_v_cset;
7795   PyObject *__pyx_v_description = NULL;
7796   PyObject *__pyx_r = NULL;
7797   __Pyx_RefNannyDeclarations
7798   PyObject *__pyx_t_1 = NULL;
7799   PyObject *__pyx_t_2 = NULL;
7800   PyObject *__pyx_t_3 = NULL;
7801   char *__pyx_t_4;
7802   hid_t __pyx_t_5;
7803   int __pyx_t_6;
7804   int __pyx_t_7;
7805   int __pyx_t_8;
7806   PyObject *__pyx_t_9 = NULL;
7807   PyObject *__pyx_t_10 = NULL;
7808   PyObject *(*__pyx_t_11)(PyObject *);
7809   int __pyx_t_12;
7810   Py_ssize_t __pyx_t_13;
7811   __Pyx_RefNannySetupContext("_g_setattr", 0);
7812   __Pyx_INCREF(__pyx_v_value);
7813 
7814   /* "tables/hdf5extension.pyx":659
7815  *     cdef ndarray ndv
7816  *     cdef object byteorder, rabyteorder, baseatom
7817  *     cdef char* cname = NULL             # <<<<<<<<<<<<<<
7818  *     cdef bytes encoded_name
7819  *     cdef int cset = H5T_CSET_DEFAULT
7820  */
7821   __pyx_v_cname = NULL;
7822 
7823   /* "tables/hdf5extension.pyx":661
7824  *     cdef char* cname = NULL
7825  *     cdef bytes encoded_name
7826  *     cdef int cset = H5T_CSET_DEFAULT             # <<<<<<<<<<<<<<
7827  *
7828  *     encoded_name = name.encode('utf-8')
7829  */
7830   __pyx_v_cset = __pyx_v_6tables_13hdf5extension_H5T_CSET_DEFAULT;
7831 
7832   /* "tables/hdf5extension.pyx":663
7833  *     cdef int cset = H5T_CSET_DEFAULT
7834  *
7835  *     encoded_name = name.encode('utf-8')             # <<<<<<<<<<<<<<
7836  *     # get the C pointer
7837  *     cname = encoded_name
7838  */
7839   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 663, __pyx_L1_error)
7840   __Pyx_GOTREF(__pyx_t_2);
7841   __pyx_t_3 = NULL;
7842   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
7843     __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
7844     if (likely(__pyx_t_3)) {
7845       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
7846       __Pyx_INCREF(__pyx_t_3);
7847       __Pyx_INCREF(function);
7848       __Pyx_DECREF_SET(__pyx_t_2, function);
7849     }
7850   }
7851   __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_kp_s_utf_8) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_kp_s_utf_8);
7852   __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
7853   if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 663, __pyx_L1_error)
7854   __Pyx_GOTREF(__pyx_t_1);
7855   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
7856   if (!(likely(PyBytes_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 663, __pyx_L1_error)
7857   __pyx_v_encoded_name = ((PyObject*)__pyx_t_1);
7858   __pyx_t_1 = 0;
7859 
7860   /* "tables/hdf5extension.pyx":665
7861  *     encoded_name = name.encode('utf-8')
7862  *     # get the C pointer
7863  *     cname = encoded_name             # <<<<<<<<<<<<<<
7864  *
7865  *     # The dataset id of the node
7866  */
7867   if (unlikely(__pyx_v_encoded_name == Py_None)) {
7868     PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
7869     __PYX_ERR(0, 665, __pyx_L1_error)
7870   }
7871   __pyx_t_4 = __Pyx_PyBytes_AsWritableString(__pyx_v_encoded_name); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 665, __pyx_L1_error)
7872   __pyx_v_cname = __pyx_t_4;
7873 
7874   /* "tables/hdf5extension.pyx":668
7875  *
7876  *     # The dataset id of the node
7877  *     dset_id = node._v_objectid             # <<<<<<<<<<<<<<
7878  *
7879  *     # Convert a NumPy scalar into a NumPy 0-dim ndarray
7880  */
7881   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_node, __pyx_n_s_v_objectid); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 668, __pyx_L1_error)
7882   __Pyx_GOTREF(__pyx_t_1);
7883   __pyx_t_5 = __Pyx_PyInt_As_hid_t(__pyx_t_1); if (unlikely((__pyx_t_5 == ((hid_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 668, __pyx_L1_error)
7884   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
7885   __pyx_v_dset_id = __pyx_t_5;
7886 
7887   /* "tables/hdf5extension.pyx":671
7888  *
7889  *     # Convert a NumPy scalar into a NumPy 0-dim ndarray
7890  *     if isinstance(value, numpy.generic):             # <<<<<<<<<<<<<<
7891  *       value = numpy.array(value)
7892  *
7893  */
7894   __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 671, __pyx_L1_error)
7895   __Pyx_GOTREF(__pyx_t_1);
7896   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_generic); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 671, __pyx_L1_error)
7897   __Pyx_GOTREF(__pyx_t_2);
7898   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
7899   __pyx_t_6 = PyObject_IsInstance(__pyx_v_value, __pyx_t_2); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 671, __pyx_L1_error)
7900   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
7901   __pyx_t_7 = (__pyx_t_6 != 0);
7902   if (__pyx_t_7) {
7903 
7904     /* "tables/hdf5extension.pyx":672
7905  *     # Convert a NumPy scalar into a NumPy 0-dim ndarray
7906  *     if isinstance(value, numpy.generic):
7907  *       value = numpy.array(value)             # <<<<<<<<<<<<<<
7908  *
7909  *     # Check if value is a NumPy ndarray and of a supported type
7910  */
7911     __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 672, __pyx_L1_error)
7912     __Pyx_GOTREF(__pyx_t_1);
7913     __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 672, __pyx_L1_error)
7914     __Pyx_GOTREF(__pyx_t_3);
7915     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
7916     __pyx_t_1 = NULL;
7917     if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
7918       __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3);
7919       if (likely(__pyx_t_1)) {
7920         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
7921         __Pyx_INCREF(__pyx_t_1);
7922         __Pyx_INCREF(function);
7923         __Pyx_DECREF_SET(__pyx_t_3, function);
7924       }
7925     }
7926     __pyx_t_2 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_1, __pyx_v_value) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_value);
7927     __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
7928     if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 672, __pyx_L1_error)
7929     __Pyx_GOTREF(__pyx_t_2);
7930     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
7931     __Pyx_DECREF_SET(__pyx_v_value, __pyx_t_2);
7932     __pyx_t_2 = 0;
7933 
7934     /* "tables/hdf5extension.pyx":671
7935  *
7936  *     # Convert a NumPy scalar into a NumPy 0-dim ndarray
7937  *     if isinstance(value, numpy.generic):             # <<<<<<<<<<<<<<
7938  *       value = numpy.array(value)
7939  *
7940  */
7941   }
7942 
7943   /* "tables/hdf5extension.pyx":675
7944  *
7945  *     # Check if value is a NumPy ndarray and of a supported type
7946  *     if (isinstance(value, numpy.ndarray) and             # <<<<<<<<<<<<<<
7947  *         value.dtype.kind in ('V', 'S', 'b', 'i', 'u', 'f', 'c')):
7948  *       # get a contiguous array: fixes #270 and gh-176
7949  */
7950   __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 675, __pyx_L1_error)
7951   __Pyx_GOTREF(__pyx_t_2);
7952   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_ndarray); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 675, __pyx_L1_error)
7953   __Pyx_GOTREF(__pyx_t_3);
7954   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
7955   __pyx_t_6 = PyObject_IsInstance(__pyx_v_value, __pyx_t_3); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 675, __pyx_L1_error)
7956   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
7957   __pyx_t_8 = (__pyx_t_6 != 0);
7958   if (__pyx_t_8) {
7959   } else {
7960     __pyx_t_7 = __pyx_t_8;
7961     goto __pyx_L5_bool_binop_done;
7962   }
7963 
7964   /* "tables/hdf5extension.pyx":676
7965  *     # Check if value is a NumPy ndarray and of a supported type
7966  *     if (isinstance(value, numpy.ndarray) and
7967  *         value.dtype.kind in ('V', 'S', 'b', 'i', 'u', 'f', 'c')):             # <<<<<<<<<<<<<<
7968  *       # get a contiguous array: fixes #270 and gh-176
7969  *       #value = numpy.ascontiguousarray(value)
7970  */
7971   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_value, __pyx_n_s_dtype); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 676, __pyx_L1_error)
7972   __Pyx_GOTREF(__pyx_t_3);
7973   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_kind); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 676, __pyx_L1_error)
7974   __Pyx_GOTREF(__pyx_t_2);
7975   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
7976   __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_t_2, __pyx_n_s_V, Py_EQ)); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 676, __pyx_L1_error)
7977   if (!__pyx_t_6) {
7978   } else {
7979     __pyx_t_8 = __pyx_t_6;
7980     goto __pyx_L7_bool_binop_done;
7981   }
7982   __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_t_2, __pyx_n_s_S, Py_EQ)); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 676, __pyx_L1_error)
7983   if (!__pyx_t_6) {
7984   } else {
7985     __pyx_t_8 = __pyx_t_6;
7986     goto __pyx_L7_bool_binop_done;
7987   }
7988   __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_t_2, __pyx_n_s_b, Py_EQ)); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 676, __pyx_L1_error)
7989   if (!__pyx_t_6) {
7990   } else {
7991     __pyx_t_8 = __pyx_t_6;
7992     goto __pyx_L7_bool_binop_done;
7993   }
7994   __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_t_2, __pyx_n_s_i, Py_EQ)); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 676, __pyx_L1_error)
7995   if (!__pyx_t_6) {
7996   } else {
7997     __pyx_t_8 = __pyx_t_6;
7998     goto __pyx_L7_bool_binop_done;
7999   }
8000   __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_t_2, __pyx_n_s_u, Py_EQ)); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 676, __pyx_L1_error)
8001   if (!__pyx_t_6) {
8002   } else {
8003     __pyx_t_8 = __pyx_t_6;
8004     goto __pyx_L7_bool_binop_done;
8005   }
8006   __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_t_2, __pyx_n_s_f, Py_EQ)); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 676, __pyx_L1_error)
8007   if (!__pyx_t_6) {
8008   } else {
8009     __pyx_t_8 = __pyx_t_6;
8010     goto __pyx_L7_bool_binop_done;
8011   }
8012   __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_t_2, __pyx_n_s_c, Py_EQ)); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 676, __pyx_L1_error)
8013   __pyx_t_8 = __pyx_t_6;
8014   __pyx_L7_bool_binop_done:;
8015   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8016   __pyx_t_6 = (__pyx_t_8 != 0);
8017   __pyx_t_7 = __pyx_t_6;
8018   __pyx_L5_bool_binop_done:;
8019 
8020   /* "tables/hdf5extension.pyx":675
8021  *
8022  *     # Check if value is a NumPy ndarray and of a supported type
8023  *     if (isinstance(value, numpy.ndarray) and             # <<<<<<<<<<<<<<
8024  *         value.dtype.kind in ('V', 'S', 'b', 'i', 'u', 'f', 'c')):
8025  *       # get a contiguous array: fixes #270 and gh-176
8026  */
8027   if (__pyx_t_7) {
8028 
8029     /* "tables/hdf5extension.pyx":679
8030  *       # get a contiguous array: fixes #270 and gh-176
8031  *       #value = numpy.ascontiguousarray(value)
8032  *       value = value.copy()             # <<<<<<<<<<<<<<
8033  *       if value.dtype.kind == 'V':
8034  *         description, rabyteorder = descr_from_dtype(value.dtype, ptparams=node._v_file.params)
8035  */
8036     __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_value, __pyx_n_s_copy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 679, __pyx_L1_error)
8037     __Pyx_GOTREF(__pyx_t_3);
8038     __pyx_t_1 = NULL;
8039     if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
8040       __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3);
8041       if (likely(__pyx_t_1)) {
8042         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
8043         __Pyx_INCREF(__pyx_t_1);
8044         __Pyx_INCREF(function);
8045         __Pyx_DECREF_SET(__pyx_t_3, function);
8046       }
8047     }
8048     __pyx_t_2 = (__pyx_t_1) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_1) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
8049     __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
8050     if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 679, __pyx_L1_error)
8051     __Pyx_GOTREF(__pyx_t_2);
8052     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
8053     __Pyx_DECREF_SET(__pyx_v_value, __pyx_t_2);
8054     __pyx_t_2 = 0;
8055 
8056     /* "tables/hdf5extension.pyx":680
8057  *       #value = numpy.ascontiguousarray(value)
8058  *       value = value.copy()
8059  *       if value.dtype.kind == 'V':             # <<<<<<<<<<<<<<
8060  *         description, rabyteorder = descr_from_dtype(value.dtype, ptparams=node._v_file.params)
8061  *         byteorder = byteorders[rabyteorder]
8062  */
8063     __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_value, __pyx_n_s_dtype); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 680, __pyx_L1_error)
8064     __Pyx_GOTREF(__pyx_t_2);
8065     __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_kind); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 680, __pyx_L1_error)
8066     __Pyx_GOTREF(__pyx_t_3);
8067     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8068     __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_t_3, __pyx_n_s_V, Py_EQ)); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 680, __pyx_L1_error)
8069     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
8070     if (__pyx_t_7) {
8071 
8072       /* "tables/hdf5extension.pyx":681
8073  *       value = value.copy()
8074  *       if value.dtype.kind == 'V':
8075  *         description, rabyteorder = descr_from_dtype(value.dtype, ptparams=node._v_file.params)             # <<<<<<<<<<<<<<
8076  *         byteorder = byteorders[rabyteorder]
8077  *         type_id = create_nested_type(description, byteorder)
8078  */
8079       __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_descr_from_dtype); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 681, __pyx_L1_error)
8080       __Pyx_GOTREF(__pyx_t_3);
8081       __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_value, __pyx_n_s_dtype); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 681, __pyx_L1_error)
8082       __Pyx_GOTREF(__pyx_t_2);
8083       __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 681, __pyx_L1_error)
8084       __Pyx_GOTREF(__pyx_t_1);
8085       __Pyx_GIVEREF(__pyx_t_2);
8086       PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
8087       __pyx_t_2 = 0;
8088       __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 681, __pyx_L1_error)
8089       __Pyx_GOTREF(__pyx_t_2);
8090       __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_node, __pyx_n_s_v_file); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 681, __pyx_L1_error)
8091       __Pyx_GOTREF(__pyx_t_9);
8092       __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_params); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 681, __pyx_L1_error)
8093       __Pyx_GOTREF(__pyx_t_10);
8094       __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
8095       if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_ptparams, __pyx_t_10) < 0) __PYX_ERR(0, 681, __pyx_L1_error)
8096       __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
8097       __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 681, __pyx_L1_error)
8098       __Pyx_GOTREF(__pyx_t_10);
8099       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
8100       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8101       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8102       if ((likely(PyTuple_CheckExact(__pyx_t_10))) || (PyList_CheckExact(__pyx_t_10))) {
8103         PyObject* sequence = __pyx_t_10;
8104         Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
8105         if (unlikely(size != 2)) {
8106           if (size > 2) __Pyx_RaiseTooManyValuesError(2);
8107           else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
8108           __PYX_ERR(0, 681, __pyx_L1_error)
8109         }
8110         #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
8111         if (likely(PyTuple_CheckExact(sequence))) {
8112           __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0);
8113           __pyx_t_1 = PyTuple_GET_ITEM(sequence, 1);
8114         } else {
8115           __pyx_t_2 = PyList_GET_ITEM(sequence, 0);
8116           __pyx_t_1 = PyList_GET_ITEM(sequence, 1);
8117         }
8118         __Pyx_INCREF(__pyx_t_2);
8119         __Pyx_INCREF(__pyx_t_1);
8120         #else
8121         __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 681, __pyx_L1_error)
8122         __Pyx_GOTREF(__pyx_t_2);
8123         __pyx_t_1 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 681, __pyx_L1_error)
8124         __Pyx_GOTREF(__pyx_t_1);
8125         #endif
8126         __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
8127       } else {
8128         Py_ssize_t index = -1;
8129         __pyx_t_3 = PyObject_GetIter(__pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 681, __pyx_L1_error)
8130         __Pyx_GOTREF(__pyx_t_3);
8131         __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
8132         __pyx_t_11 = Py_TYPE(__pyx_t_3)->tp_iternext;
8133         index = 0; __pyx_t_2 = __pyx_t_11(__pyx_t_3); if (unlikely(!__pyx_t_2)) goto __pyx_L15_unpacking_failed;
8134         __Pyx_GOTREF(__pyx_t_2);
8135         index = 1; __pyx_t_1 = __pyx_t_11(__pyx_t_3); if (unlikely(!__pyx_t_1)) goto __pyx_L15_unpacking_failed;
8136         __Pyx_GOTREF(__pyx_t_1);
8137         if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_3), 2) < 0) __PYX_ERR(0, 681, __pyx_L1_error)
8138         __pyx_t_11 = NULL;
8139         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
8140         goto __pyx_L16_unpacking_done;
8141         __pyx_L15_unpacking_failed:;
8142         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
8143         __pyx_t_11 = NULL;
8144         if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
8145         __PYX_ERR(0, 681, __pyx_L1_error)
8146         __pyx_L16_unpacking_done:;
8147       }
8148       __pyx_v_description = __pyx_t_2;
8149       __pyx_t_2 = 0;
8150       __pyx_v_rabyteorder = __pyx_t_1;
8151       __pyx_t_1 = 0;
8152 
8153       /* "tables/hdf5extension.pyx":682
8154  *       if value.dtype.kind == 'V':
8155  *         description, rabyteorder = descr_from_dtype(value.dtype, ptparams=node._v_file.params)
8156  *         byteorder = byteorders[rabyteorder]             # <<<<<<<<<<<<<<
8157  *         type_id = create_nested_type(description, byteorder)
8158  *         # Make sure the value is consistent with offsets of the description
8159  */
8160       __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_byteorders); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 682, __pyx_L1_error)
8161       __Pyx_GOTREF(__pyx_t_10);
8162       __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_t_10, __pyx_v_rabyteorder); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 682, __pyx_L1_error)
8163       __Pyx_GOTREF(__pyx_t_1);
8164       __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
8165       __pyx_v_byteorder = __pyx_t_1;
8166       __pyx_t_1 = 0;
8167 
8168       /* "tables/hdf5extension.pyx":683
8169  *         description, rabyteorder = descr_from_dtype(value.dtype, ptparams=node._v_file.params)
8170  *         byteorder = byteorders[rabyteorder]
8171  *         type_id = create_nested_type(description, byteorder)             # <<<<<<<<<<<<<<
8172  *         # Make sure the value is consistent with offsets of the description
8173  *         value = value.astype(description._v_dtype)
8174  */
8175       __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_create_nested_type); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 683, __pyx_L1_error)
8176       __Pyx_GOTREF(__pyx_t_10);
8177       __pyx_t_2 = NULL;
8178       __pyx_t_12 = 0;
8179       if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_10))) {
8180         __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_10);
8181         if (likely(__pyx_t_2)) {
8182           PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
8183           __Pyx_INCREF(__pyx_t_2);
8184           __Pyx_INCREF(function);
8185           __Pyx_DECREF_SET(__pyx_t_10, function);
8186           __pyx_t_12 = 1;
8187         }
8188       }
8189       #if CYTHON_FAST_PYCALL
8190       if (PyFunction_Check(__pyx_t_10)) {
8191         PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_v_description, __pyx_v_byteorder};
8192         __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_12, 2+__pyx_t_12); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 683, __pyx_L1_error)
8193         __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
8194         __Pyx_GOTREF(__pyx_t_1);
8195       } else
8196       #endif
8197       #if CYTHON_FAST_PYCCALL
8198       if (__Pyx_PyFastCFunction_Check(__pyx_t_10)) {
8199         PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_v_description, __pyx_v_byteorder};
8200         __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_12, 2+__pyx_t_12); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 683, __pyx_L1_error)
8201         __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
8202         __Pyx_GOTREF(__pyx_t_1);
8203       } else
8204       #endif
8205       {
8206         __pyx_t_3 = PyTuple_New(2+__pyx_t_12); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 683, __pyx_L1_error)
8207         __Pyx_GOTREF(__pyx_t_3);
8208         if (__pyx_t_2) {
8209           __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); __pyx_t_2 = NULL;
8210         }
8211         __Pyx_INCREF(__pyx_v_description);
8212         __Pyx_GIVEREF(__pyx_v_description);
8213         PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_12, __pyx_v_description);
8214         __Pyx_INCREF(__pyx_v_byteorder);
8215         __Pyx_GIVEREF(__pyx_v_byteorder);
8216         PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_12, __pyx_v_byteorder);
8217         __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 683, __pyx_L1_error)
8218         __Pyx_GOTREF(__pyx_t_1);
8219         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
8220       }
8221       __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
8222       __pyx_t_5 = __Pyx_PyInt_As_hid_t(__pyx_t_1); if (unlikely((__pyx_t_5 == ((hid_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 683, __pyx_L1_error)
8223       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8224       __pyx_v_type_id = __pyx_t_5;
8225 
8226       /* "tables/hdf5extension.pyx":685
8227  *         type_id = create_nested_type(description, byteorder)
8228  *         # Make sure the value is consistent with offsets of the description
8229  *         value = value.astype(description._v_dtype)             # <<<<<<<<<<<<<<
8230  *       else:
8231  *         # Get the associated native HDF5 type of the scalar type
8232  */
8233       __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_value, __pyx_n_s_astype); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 685, __pyx_L1_error)
8234       __Pyx_GOTREF(__pyx_t_10);
8235       __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_description, __pyx_n_s_v_dtype); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 685, __pyx_L1_error)
8236       __Pyx_GOTREF(__pyx_t_3);
8237       __pyx_t_2 = NULL;
8238       if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_10))) {
8239         __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_10);
8240         if (likely(__pyx_t_2)) {
8241           PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
8242           __Pyx_INCREF(__pyx_t_2);
8243           __Pyx_INCREF(function);
8244           __Pyx_DECREF_SET(__pyx_t_10, function);
8245         }
8246       }
8247       __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_10, __pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_3);
8248       __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
8249       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
8250       if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 685, __pyx_L1_error)
8251       __Pyx_GOTREF(__pyx_t_1);
8252       __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
8253       __Pyx_DECREF_SET(__pyx_v_value, __pyx_t_1);
8254       __pyx_t_1 = 0;
8255 
8256       /* "tables/hdf5extension.pyx":680
8257  *       #value = numpy.ascontiguousarray(value)
8258  *       value = value.copy()
8259  *       if value.dtype.kind == 'V':             # <<<<<<<<<<<<<<
8260  *         description, rabyteorder = descr_from_dtype(value.dtype, ptparams=node._v_file.params)
8261  *         byteorder = byteorders[rabyteorder]
8262  */
8263       goto __pyx_L14;
8264     }
8265 
8266     /* "tables/hdf5extension.pyx":688
8267  *       else:
8268  *         # Get the associated native HDF5 type of the scalar type
8269  *         baseatom = Atom.from_dtype(value.dtype.base)             # <<<<<<<<<<<<<<
8270  *         byteorder = byteorders[value.dtype.byteorder]
8271  *         type_id = atom_to_hdf5_type(baseatom, byteorder)
8272  */
8273     /*else*/ {
8274       __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_Atom); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 688, __pyx_L1_error)
8275       __Pyx_GOTREF(__pyx_t_10);
8276       __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_from_dtype); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 688, __pyx_L1_error)
8277       __Pyx_GOTREF(__pyx_t_3);
8278       __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
8279       __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_value, __pyx_n_s_dtype); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 688, __pyx_L1_error)
8280       __Pyx_GOTREF(__pyx_t_10);
8281       __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_base); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 688, __pyx_L1_error)
8282       __Pyx_GOTREF(__pyx_t_2);
8283       __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
8284       __pyx_t_10 = NULL;
8285       if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
8286         __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_3);
8287         if (likely(__pyx_t_10)) {
8288           PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
8289           __Pyx_INCREF(__pyx_t_10);
8290           __Pyx_INCREF(function);
8291           __Pyx_DECREF_SET(__pyx_t_3, function);
8292         }
8293       }
8294       __pyx_t_1 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_10, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2);
8295       __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
8296       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8297       if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 688, __pyx_L1_error)
8298       __Pyx_GOTREF(__pyx_t_1);
8299       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
8300       __pyx_v_baseatom = __pyx_t_1;
8301       __pyx_t_1 = 0;
8302 
8303       /* "tables/hdf5extension.pyx":689
8304  *         # Get the associated native HDF5 type of the scalar type
8305  *         baseatom = Atom.from_dtype(value.dtype.base)
8306  *         byteorder = byteorders[value.dtype.byteorder]             # <<<<<<<<<<<<<<
8307  *         type_id = atom_to_hdf5_type(baseatom, byteorder)
8308  *       # Get dimensionality info
8309  */
8310       __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_byteorders); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 689, __pyx_L1_error)
8311       __Pyx_GOTREF(__pyx_t_1);
8312       __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_value, __pyx_n_s_dtype); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 689, __pyx_L1_error)
8313       __Pyx_GOTREF(__pyx_t_3);
8314       __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_byteorder); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 689, __pyx_L1_error)
8315       __Pyx_GOTREF(__pyx_t_2);
8316       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
8317       __pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 689, __pyx_L1_error)
8318       __Pyx_GOTREF(__pyx_t_3);
8319       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8320       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8321       __pyx_v_byteorder = __pyx_t_3;
8322       __pyx_t_3 = 0;
8323 
8324       /* "tables/hdf5extension.pyx":690
8325  *         baseatom = Atom.from_dtype(value.dtype.base)
8326  *         byteorder = byteorders[value.dtype.byteorder]
8327  *         type_id = atom_to_hdf5_type(baseatom, byteorder)             # <<<<<<<<<<<<<<
8328  *       # Get dimensionality info
8329  *       ndv = <ndarray>value
8330  */
8331       __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_atom_to_hdf5_type); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 690, __pyx_L1_error)
8332       __Pyx_GOTREF(__pyx_t_2);
8333       __pyx_t_1 = NULL;
8334       __pyx_t_12 = 0;
8335       if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
8336         __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2);
8337         if (likely(__pyx_t_1)) {
8338           PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
8339           __Pyx_INCREF(__pyx_t_1);
8340           __Pyx_INCREF(function);
8341           __Pyx_DECREF_SET(__pyx_t_2, function);
8342           __pyx_t_12 = 1;
8343         }
8344       }
8345       #if CYTHON_FAST_PYCALL
8346       if (PyFunction_Check(__pyx_t_2)) {
8347         PyObject *__pyx_temp[3] = {__pyx_t_1, __pyx_v_baseatom, __pyx_v_byteorder};
8348         __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_12, 2+__pyx_t_12); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 690, __pyx_L1_error)
8349         __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
8350         __Pyx_GOTREF(__pyx_t_3);
8351       } else
8352       #endif
8353       #if CYTHON_FAST_PYCCALL
8354       if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
8355         PyObject *__pyx_temp[3] = {__pyx_t_1, __pyx_v_baseatom, __pyx_v_byteorder};
8356         __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_12, 2+__pyx_t_12); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 690, __pyx_L1_error)
8357         __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
8358         __Pyx_GOTREF(__pyx_t_3);
8359       } else
8360       #endif
8361       {
8362         __pyx_t_10 = PyTuple_New(2+__pyx_t_12); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 690, __pyx_L1_error)
8363         __Pyx_GOTREF(__pyx_t_10);
8364         if (__pyx_t_1) {
8365           __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_1); __pyx_t_1 = NULL;
8366         }
8367         __Pyx_INCREF(__pyx_v_baseatom);
8368         __Pyx_GIVEREF(__pyx_v_baseatom);
8369         PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_12, __pyx_v_baseatom);
8370         __Pyx_INCREF(__pyx_v_byteorder);
8371         __Pyx_GIVEREF(__pyx_v_byteorder);
8372         PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_12, __pyx_v_byteorder);
8373         __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_10, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 690, __pyx_L1_error)
8374         __Pyx_GOTREF(__pyx_t_3);
8375         __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
8376       }
8377       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8378       __pyx_t_5 = __Pyx_PyInt_As_hid_t(__pyx_t_3); if (unlikely((__pyx_t_5 == ((hid_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 690, __pyx_L1_error)
8379       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
8380       __pyx_v_type_id = __pyx_t_5;
8381     }
8382     __pyx_L14:;
8383 
8384     /* "tables/hdf5extension.pyx":692
8385  *         type_id = atom_to_hdf5_type(baseatom, byteorder)
8386  *       # Get dimensionality info
8387  *       ndv = <ndarray>value             # <<<<<<<<<<<<<<
8388  *       dims = npy_malloc_dims(ndv.ndim, ndv.shape)
8389  *       # Actually write the attribute
8390  */
8391     __pyx_t_3 = __pyx_v_value;
8392     __Pyx_INCREF(__pyx_t_3);
8393     __pyx_v_ndv = ((PyArrayObject *)__pyx_t_3);
8394     __pyx_t_3 = 0;
8395 
8396     /* "tables/hdf5extension.pyx":693
8397  *       # Get dimensionality info
8398  *       ndv = <ndarray>value
8399  *       dims = npy_malloc_dims(ndv.ndim, ndv.shape)             # <<<<<<<<<<<<<<
8400  *       # Actually write the attribute
8401  *       ret = H5ATTRset_attribute(dset_id, cname, type_id,
8402  */
8403     __pyx_v_dims = __pyx_f_6tables_13hdf5extension_npy_malloc_dims(__pyx_v_ndv->nd, __pyx_v_ndv->dimensions);
8404 
8405     /* "tables/hdf5extension.pyx":695
8406  *       dims = npy_malloc_dims(ndv.ndim, ndv.shape)
8407  *       # Actually write the attribute
8408  *       ret = H5ATTRset_attribute(dset_id, cname, type_id,             # <<<<<<<<<<<<<<
8409  *                                 ndv.ndim, dims, ndv.data)
8410  *       if ret < 0:
8411  */
8412     __pyx_v_ret = H5ATTRset_attribute(__pyx_v_dset_id, __pyx_v_cname, __pyx_v_type_id, __pyx_v_ndv->nd, __pyx_v_dims, __pyx_v_ndv->data);
8413 
8414     /* "tables/hdf5extension.pyx":697
8415  *       ret = H5ATTRset_attribute(dset_id, cname, type_id,
8416  *                                 ndv.ndim, dims, ndv.data)
8417  *       if ret < 0:             # <<<<<<<<<<<<<<
8418  *         raise HDF5ExtError("Can't set attribute '%s' in node:\n %s." %
8419  *                            (name, self._v_node))
8420  */
8421     __pyx_t_7 = ((__pyx_v_ret < 0) != 0);
8422     if (unlikely(__pyx_t_7)) {
8423 
8424       /* "tables/hdf5extension.pyx":698
8425  *                                 ndv.ndim, dims, ndv.data)
8426  *       if ret < 0:
8427  *         raise HDF5ExtError("Can't set attribute '%s' in node:\n %s." %             # <<<<<<<<<<<<<<
8428  *                            (name, self._v_node))
8429  *       # Release resources
8430  */
8431       __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_HDF5ExtError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 698, __pyx_L1_error)
8432       __Pyx_GOTREF(__pyx_t_2);
8433 
8434       /* "tables/hdf5extension.pyx":699
8435  *       if ret < 0:
8436  *         raise HDF5ExtError("Can't set attribute '%s' in node:\n %s." %
8437  *                            (name, self._v_node))             # <<<<<<<<<<<<<<
8438  *       # Release resources
8439  *       free(<void *>dims)
8440  */
8441       __pyx_t_10 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_v_node); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 699, __pyx_L1_error)
8442       __Pyx_GOTREF(__pyx_t_10);
8443       __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 699, __pyx_L1_error)
8444       __Pyx_GOTREF(__pyx_t_1);
8445       __Pyx_INCREF(__pyx_v_name);
8446       __Pyx_GIVEREF(__pyx_v_name);
8447       PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_name);
8448       __Pyx_GIVEREF(__pyx_t_10);
8449       PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_10);
8450       __pyx_t_10 = 0;
8451 
8452       /* "tables/hdf5extension.pyx":698
8453  *                                 ndv.ndim, dims, ndv.data)
8454  *       if ret < 0:
8455  *         raise HDF5ExtError("Can't set attribute '%s' in node:\n %s." %             # <<<<<<<<<<<<<<
8456  *                            (name, self._v_node))
8457  *       # Release resources
8458  */
8459       __pyx_t_10 = __Pyx_PyString_Format(__pyx_kp_s_Can_t_set_attribute_s_in_node_s, __pyx_t_1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 698, __pyx_L1_error)
8460       __Pyx_GOTREF(__pyx_t_10);
8461       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8462       __pyx_t_1 = NULL;
8463       if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
8464         __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2);
8465         if (likely(__pyx_t_1)) {
8466           PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
8467           __Pyx_INCREF(__pyx_t_1);
8468           __Pyx_INCREF(function);
8469           __Pyx_DECREF_SET(__pyx_t_2, function);
8470         }
8471       }
8472       __pyx_t_3 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_1, __pyx_t_10) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_10);
8473       __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
8474       __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
8475       if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 698, __pyx_L1_error)
8476       __Pyx_GOTREF(__pyx_t_3);
8477       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8478       __Pyx_Raise(__pyx_t_3, 0, 0, 0);
8479       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
8480       __PYX_ERR(0, 698, __pyx_L1_error)
8481 
8482       /* "tables/hdf5extension.pyx":697
8483  *       ret = H5ATTRset_attribute(dset_id, cname, type_id,
8484  *                                 ndv.ndim, dims, ndv.data)
8485  *       if ret < 0:             # <<<<<<<<<<<<<<
8486  *         raise HDF5ExtError("Can't set attribute '%s' in node:\n %s." %
8487  *                            (name, self._v_node))
8488  */
8489     }
8490 
8491     /* "tables/hdf5extension.pyx":701
8492  *                            (name, self._v_node))
8493  *       # Release resources
8494  *       free(<void *>dims)             # <<<<<<<<<<<<<<
8495  *       H5Tclose(type_id)
8496  *     else:
8497  */
8498     free(((void *)__pyx_v_dims));
8499 
8500     /* "tables/hdf5extension.pyx":702
8501  *       # Release resources
8502  *       free(<void *>dims)
8503  *       H5Tclose(type_id)             # <<<<<<<<<<<<<<
8504  *     else:
8505  *       # Object cannot be natively represented in HDF5.
8506  */
8507     (void)(H5Tclose(__pyx_v_type_id));
8508 
8509     /* "tables/hdf5extension.pyx":675
8510  *
8511  *     # Check if value is a NumPy ndarray and of a supported type
8512  *     if (isinstance(value, numpy.ndarray) and             # <<<<<<<<<<<<<<
8513  *         value.dtype.kind in ('V', 'S', 'b', 'i', 'u', 'f', 'c')):
8514  *       # get a contiguous array: fixes #270 and gh-176
8515  */
8516     goto __pyx_L4;
8517   }
8518 
8519   /* "tables/hdf5extension.pyx":705
8520  *     else:
8521  *       # Object cannot be natively represented in HDF5.
8522  *       if (isinstance(value, numpy.ndarray) and             # <<<<<<<<<<<<<<
8523  *           value.dtype.kind == 'U' and
8524  *           value.shape == ()):
8525  */
8526   /*else*/ {
8527     __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 705, __pyx_L1_error)
8528     __Pyx_GOTREF(__pyx_t_3);
8529     __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_ndarray); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 705, __pyx_L1_error)
8530     __Pyx_GOTREF(__pyx_t_2);
8531     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
8532     __pyx_t_6 = PyObject_IsInstance(__pyx_v_value, __pyx_t_2); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 705, __pyx_L1_error)
8533     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8534     __pyx_t_8 = (__pyx_t_6 != 0);
8535     if (__pyx_t_8) {
8536     } else {
8537       __pyx_t_7 = __pyx_t_8;
8538       goto __pyx_L19_bool_binop_done;
8539     }
8540 
8541     /* "tables/hdf5extension.pyx":706
8542  *       # Object cannot be natively represented in HDF5.
8543  *       if (isinstance(value, numpy.ndarray) and
8544  *           value.dtype.kind == 'U' and             # <<<<<<<<<<<<<<
8545  *           value.shape == ()):
8546  *         value = value[()].encode('utf-8')
8547  */
8548     __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_value, __pyx_n_s_dtype); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 706, __pyx_L1_error)
8549     __Pyx_GOTREF(__pyx_t_2);
8550     __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_kind); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 706, __pyx_L1_error)
8551     __Pyx_GOTREF(__pyx_t_3);
8552     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8553     __pyx_t_8 = (__Pyx_PyString_Equals(__pyx_t_3, __pyx_n_s_U, Py_EQ)); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 706, __pyx_L1_error)
8554     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
8555     if (__pyx_t_8) {
8556     } else {
8557       __pyx_t_7 = __pyx_t_8;
8558       goto __pyx_L19_bool_binop_done;
8559     }
8560 
8561     /* "tables/hdf5extension.pyx":707
8562  *       if (isinstance(value, numpy.ndarray) and
8563  *           value.dtype.kind == 'U' and
8564  *           value.shape == ()):             # <<<<<<<<<<<<<<
8565  *         value = value[()].encode('utf-8')
8566  *         cset = H5T_CSET_UTF8
8567  */
8568     __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_value, __pyx_n_s_shape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 707, __pyx_L1_error)
8569     __Pyx_GOTREF(__pyx_t_3);
8570     __pyx_t_2 = PyObject_RichCompare(__pyx_t_3, __pyx_empty_tuple, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 707, __pyx_L1_error)
8571     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
8572     __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 707, __pyx_L1_error)
8573     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8574     __pyx_t_7 = __pyx_t_8;
8575     __pyx_L19_bool_binop_done:;
8576 
8577     /* "tables/hdf5extension.pyx":705
8578  *     else:
8579  *       # Object cannot be natively represented in HDF5.
8580  *       if (isinstance(value, numpy.ndarray) and             # <<<<<<<<<<<<<<
8581  *           value.dtype.kind == 'U' and
8582  *           value.shape == ()):
8583  */
8584     if (__pyx_t_7) {
8585 
8586       /* "tables/hdf5extension.pyx":708
8587  *           value.dtype.kind == 'U' and
8588  *           value.shape == ()):
8589  *         value = value[()].encode('utf-8')             # <<<<<<<<<<<<<<
8590  *         cset = H5T_CSET_UTF8
8591  *       else:
8592  */
8593       __pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_v_value, __pyx_empty_tuple); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 708, __pyx_L1_error)
8594       __Pyx_GOTREF(__pyx_t_3);
8595       __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_encode); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 708, __pyx_L1_error)
8596       __Pyx_GOTREF(__pyx_t_10);
8597       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
8598       __pyx_t_3 = NULL;
8599       if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_10))) {
8600         __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_10);
8601         if (likely(__pyx_t_3)) {
8602           PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
8603           __Pyx_INCREF(__pyx_t_3);
8604           __Pyx_INCREF(function);
8605           __Pyx_DECREF_SET(__pyx_t_10, function);
8606         }
8607       }
8608       __pyx_t_2 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_10, __pyx_t_3, __pyx_kp_s_utf_8) : __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_kp_s_utf_8);
8609       __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
8610       if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 708, __pyx_L1_error)
8611       __Pyx_GOTREF(__pyx_t_2);
8612       __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
8613       __Pyx_DECREF_SET(__pyx_v_value, __pyx_t_2);
8614       __pyx_t_2 = 0;
8615 
8616       /* "tables/hdf5extension.pyx":709
8617  *           value.shape == ()):
8618  *         value = value[()].encode('utf-8')
8619  *         cset = H5T_CSET_UTF8             # <<<<<<<<<<<<<<
8620  *       else:
8621  *         # Convert this object to a null-terminated string
8622  */
8623       __pyx_v_cset = H5T_CSET_UTF8;
8624 
8625       /* "tables/hdf5extension.pyx":705
8626  *     else:
8627  *       # Object cannot be natively represented in HDF5.
8628  *       if (isinstance(value, numpy.ndarray) and             # <<<<<<<<<<<<<<
8629  *           value.dtype.kind == 'U' and
8630  *           value.shape == ()):
8631  */
8632       goto __pyx_L18;
8633     }
8634 
8635     /* "tables/hdf5extension.pyx":713
8636  *         # Convert this object to a null-terminated string
8637  *         # (binary pickles are not supported at this moment)
8638  *         value = pickle.dumps(value, 0)             # <<<<<<<<<<<<<<
8639  *
8640  *       ret = H5ATTRset_attribute_string(dset_id, cname, value, len(value), cset)
8641  */
8642     /*else*/ {
8643       __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_pickle); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 713, __pyx_L1_error)
8644       __Pyx_GOTREF(__pyx_t_10);
8645       __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_dumps); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 713, __pyx_L1_error)
8646       __Pyx_GOTREF(__pyx_t_3);
8647       __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
8648       __pyx_t_10 = NULL;
8649       __pyx_t_12 = 0;
8650       if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
8651         __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_3);
8652         if (likely(__pyx_t_10)) {
8653           PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
8654           __Pyx_INCREF(__pyx_t_10);
8655           __Pyx_INCREF(function);
8656           __Pyx_DECREF_SET(__pyx_t_3, function);
8657           __pyx_t_12 = 1;
8658         }
8659       }
8660       #if CYTHON_FAST_PYCALL
8661       if (PyFunction_Check(__pyx_t_3)) {
8662         PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_v_value, __pyx_int_0};
8663         __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_12, 2+__pyx_t_12); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 713, __pyx_L1_error)
8664         __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
8665         __Pyx_GOTREF(__pyx_t_2);
8666       } else
8667       #endif
8668       #if CYTHON_FAST_PYCCALL
8669       if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
8670         PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_v_value, __pyx_int_0};
8671         __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_12, 2+__pyx_t_12); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 713, __pyx_L1_error)
8672         __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
8673         __Pyx_GOTREF(__pyx_t_2);
8674       } else
8675       #endif
8676       {
8677         __pyx_t_1 = PyTuple_New(2+__pyx_t_12); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 713, __pyx_L1_error)
8678         __Pyx_GOTREF(__pyx_t_1);
8679         if (__pyx_t_10) {
8680           __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_10); __pyx_t_10 = NULL;
8681         }
8682         __Pyx_INCREF(__pyx_v_value);
8683         __Pyx_GIVEREF(__pyx_v_value);
8684         PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_12, __pyx_v_value);
8685         __Pyx_INCREF(__pyx_int_0);
8686         __Pyx_GIVEREF(__pyx_int_0);
8687         PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_12, __pyx_int_0);
8688         __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 713, __pyx_L1_error)
8689         __Pyx_GOTREF(__pyx_t_2);
8690         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8691       }
8692       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
8693       __Pyx_DECREF_SET(__pyx_v_value, __pyx_t_2);
8694       __pyx_t_2 = 0;
8695     }
8696     __pyx_L18:;
8697 
8698     /* "tables/hdf5extension.pyx":715
8699  *         value = pickle.dumps(value, 0)
8700  *
8701  *       ret = H5ATTRset_attribute_string(dset_id, cname, value, len(value), cset)             # <<<<<<<<<<<<<<
8702  *       if ret < 0:
8703  *         raise HDF5ExtError("Can't set attribute '%s' in node:\n %s." %
8704  */
8705     __pyx_t_4 = __Pyx_PyObject_AsWritableString(__pyx_v_value); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 715, __pyx_L1_error)
8706     __pyx_t_13 = PyObject_Length(__pyx_v_value); if (unlikely(__pyx_t_13 == ((Py_ssize_t)-1))) __PYX_ERR(0, 715, __pyx_L1_error)
8707     __pyx_v_ret = H5ATTRset_attribute_string(__pyx_v_dset_id, __pyx_v_cname, __pyx_t_4, __pyx_t_13, __pyx_v_cset);
8708 
8709     /* "tables/hdf5extension.pyx":716
8710  *
8711  *       ret = H5ATTRset_attribute_string(dset_id, cname, value, len(value), cset)
8712  *       if ret < 0:             # <<<<<<<<<<<<<<
8713  *         raise HDF5ExtError("Can't set attribute '%s' in node:\n %s." %
8714  *                            (name, self._v_node))
8715  */
8716     __pyx_t_7 = ((__pyx_v_ret < 0) != 0);
8717     if (unlikely(__pyx_t_7)) {
8718 
8719       /* "tables/hdf5extension.pyx":717
8720  *       ret = H5ATTRset_attribute_string(dset_id, cname, value, len(value), cset)
8721  *       if ret < 0:
8722  *         raise HDF5ExtError("Can't set attribute '%s' in node:\n %s." %             # <<<<<<<<<<<<<<
8723  *                            (name, self._v_node))
8724  *
8725  */
8726       __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_HDF5ExtError); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 717, __pyx_L1_error)
8727       __Pyx_GOTREF(__pyx_t_3);
8728 
8729       /* "tables/hdf5extension.pyx":718
8730  *       if ret < 0:
8731  *         raise HDF5ExtError("Can't set attribute '%s' in node:\n %s." %
8732  *                            (name, self._v_node))             # <<<<<<<<<<<<<<
8733  *
8734  *
8735  */
8736       __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_v_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 718, __pyx_L1_error)
8737       __Pyx_GOTREF(__pyx_t_1);
8738       __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 718, __pyx_L1_error)
8739       __Pyx_GOTREF(__pyx_t_10);
8740       __Pyx_INCREF(__pyx_v_name);
8741       __Pyx_GIVEREF(__pyx_v_name);
8742       PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_v_name);
8743       __Pyx_GIVEREF(__pyx_t_1);
8744       PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_1);
8745       __pyx_t_1 = 0;
8746 
8747       /* "tables/hdf5extension.pyx":717
8748  *       ret = H5ATTRset_attribute_string(dset_id, cname, value, len(value), cset)
8749  *       if ret < 0:
8750  *         raise HDF5ExtError("Can't set attribute '%s' in node:\n %s." %             # <<<<<<<<<<<<<<
8751  *                            (name, self._v_node))
8752  *
8753  */
8754       __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_Can_t_set_attribute_s_in_node_s, __pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 717, __pyx_L1_error)
8755       __Pyx_GOTREF(__pyx_t_1);
8756       __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
8757       __pyx_t_10 = NULL;
8758       if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
8759         __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_3);
8760         if (likely(__pyx_t_10)) {
8761           PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
8762           __Pyx_INCREF(__pyx_t_10);
8763           __Pyx_INCREF(function);
8764           __Pyx_DECREF_SET(__pyx_t_3, function);
8765         }
8766       }
8767       __pyx_t_2 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_10, __pyx_t_1) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_1);
8768       __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
8769       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8770       if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 717, __pyx_L1_error)
8771       __Pyx_GOTREF(__pyx_t_2);
8772       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
8773       __Pyx_Raise(__pyx_t_2, 0, 0, 0);
8774       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8775       __PYX_ERR(0, 717, __pyx_L1_error)
8776 
8777       /* "tables/hdf5extension.pyx":716
8778  *
8779  *       ret = H5ATTRset_attribute_string(dset_id, cname, value, len(value), cset)
8780  *       if ret < 0:             # <<<<<<<<<<<<<<
8781  *         raise HDF5ExtError("Can't set attribute '%s' in node:\n %s." %
8782  *                            (name, self._v_node))
8783  */
8784     }
8785   }
8786   __pyx_L4:;
8787 
8788   /* "tables/hdf5extension.pyx":645
8789  *
8790  *
8791  *   def _g_setattr(self, node, name, object value):             # <<<<<<<<<<<<<<
8792  *     """Save Python or NumPy objects as HDF5 attributes.
8793  *
8794  */
8795 
8796   /* function exit code */
8797   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
8798   goto __pyx_L0;
8799   __pyx_L1_error:;
8800   __Pyx_XDECREF(__pyx_t_1);
8801   __Pyx_XDECREF(__pyx_t_2);
8802   __Pyx_XDECREF(__pyx_t_3);
8803   __Pyx_XDECREF(__pyx_t_9);
8804   __Pyx_XDECREF(__pyx_t_10);
8805   __Pyx_AddTraceback("tables.hdf5extension.AttributeSet._g_setattr", __pyx_clineno, __pyx_lineno, __pyx_filename);
8806   __pyx_r = NULL;
8807   __pyx_L0:;
8808   __Pyx_XDECREF((PyObject *)__pyx_v_ndv);
8809   __Pyx_XDECREF(__pyx_v_byteorder);
8810   __Pyx_XDECREF(__pyx_v_rabyteorder);
8811   __Pyx_XDECREF(__pyx_v_baseatom);
8812   __Pyx_XDECREF(__pyx_v_encoded_name);
8813   __Pyx_XDECREF(__pyx_v_description);
8814   __Pyx_XDECREF(__pyx_v_value);
8815   __Pyx_XGIVEREF(__pyx_r);
8816   __Pyx_RefNannyFinishContext();
8817   return __pyx_r;
8818 }
8819 
8820 /* "tables/hdf5extension.pyx":722
8821  *
8822  *   # Get attributes
8823  *   def _g_getattr(self, node, attrname):             # <<<<<<<<<<<<<<
8824  *     """Get HDF5 attributes and retrieve them as NumPy objects.
8825  *
8826  */
8827 
8828 /* Python wrapper */
8829 static PyObject *__pyx_pw_6tables_13hdf5extension_12AttributeSet_7_g_getattr(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
8830 static char __pyx_doc_6tables_13hdf5extension_12AttributeSet_6_g_getattr[] = "Get HDF5 attributes and retrieve them as NumPy objects.\n\n    H5T_SCALAR types will be retrieved as scalar NumPy.\n    H5T_ARRAY types will be retrieved as ndarray NumPy objects.\n\n    ";
__pyx_pw_6tables_13hdf5extension_12AttributeSet_7_g_getattr(PyObject * __pyx_v_self,PyObject * __pyx_args,PyObject * __pyx_kwds)8831 static PyObject *__pyx_pw_6tables_13hdf5extension_12AttributeSet_7_g_getattr(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
8832   PyObject *__pyx_v_node = 0;
8833   PyObject *__pyx_v_attrname = 0;
8834   PyObject *__pyx_r = 0;
8835   __Pyx_RefNannyDeclarations
8836   __Pyx_RefNannySetupContext("_g_getattr (wrapper)", 0);
8837   {
8838     static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_node,&__pyx_n_s_attrname,0};
8839     PyObject* values[2] = {0,0};
8840     if (unlikely(__pyx_kwds)) {
8841       Py_ssize_t kw_args;
8842       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
8843       switch (pos_args) {
8844         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
8845         CYTHON_FALLTHROUGH;
8846         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
8847         CYTHON_FALLTHROUGH;
8848         case  0: break;
8849         default: goto __pyx_L5_argtuple_error;
8850       }
8851       kw_args = PyDict_Size(__pyx_kwds);
8852       switch (pos_args) {
8853         case  0:
8854         if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_node)) != 0)) kw_args--;
8855         else goto __pyx_L5_argtuple_error;
8856         CYTHON_FALLTHROUGH;
8857         case  1:
8858         if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_attrname)) != 0)) kw_args--;
8859         else {
8860           __Pyx_RaiseArgtupleInvalid("_g_getattr", 1, 2, 2, 1); __PYX_ERR(0, 722, __pyx_L3_error)
8861         }
8862       }
8863       if (unlikely(kw_args > 0)) {
8864         if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_g_getattr") < 0)) __PYX_ERR(0, 722, __pyx_L3_error)
8865       }
8866     } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
8867       goto __pyx_L5_argtuple_error;
8868     } else {
8869       values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
8870       values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
8871     }
8872     __pyx_v_node = values[0];
8873     __pyx_v_attrname = values[1];
8874   }
8875   goto __pyx_L4_argument_unpacking_done;
8876   __pyx_L5_argtuple_error:;
8877   __Pyx_RaiseArgtupleInvalid("_g_getattr", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 722, __pyx_L3_error)
8878   __pyx_L3_error:;
8879   __Pyx_AddTraceback("tables.hdf5extension.AttributeSet._g_getattr", __pyx_clineno, __pyx_lineno, __pyx_filename);
8880   __Pyx_RefNannyFinishContext();
8881   return NULL;
8882   __pyx_L4_argument_unpacking_done:;
8883   __pyx_r = __pyx_pf_6tables_13hdf5extension_12AttributeSet_6_g_getattr(((struct __pyx_obj_6tables_13hdf5extension_AttributeSet *)__pyx_v_self), __pyx_v_node, __pyx_v_attrname);
8884 
8885   /* function exit code */
8886   __Pyx_RefNannyFinishContext();
8887   return __pyx_r;
8888 }
8889 
__pyx_pf_6tables_13hdf5extension_12AttributeSet_6_g_getattr(struct __pyx_obj_6tables_13hdf5extension_AttributeSet * __pyx_v_self,PyObject * __pyx_v_node,PyObject * __pyx_v_attrname)8890 static PyObject *__pyx_pf_6tables_13hdf5extension_12AttributeSet_6_g_getattr(struct __pyx_obj_6tables_13hdf5extension_AttributeSet *__pyx_v_self, PyObject *__pyx_v_node, PyObject *__pyx_v_attrname) {
8891   hsize_t *__pyx_v_dims;
8892   enum H5T_class_t __pyx_v_class_id;
8893   size_t __pyx_v_type_size;
8894   hid_t __pyx_v_dset_id;
8895   hid_t __pyx_v_type_id;
8896   int __pyx_v_rank;
8897   int __pyx_v_ret;
8898   void *__pyx_v_rbuf;
8899   char *__pyx_v_str_value;
8900   char **__pyx_v_str_values;
8901   PyArrayObject *__pyx_v_ndvalue = 0;
8902   PyObject *__pyx_v_shape = 0;
8903   PyObject *__pyx_v_retvalue = 0;
8904   int __pyx_v_i;
8905   int __pyx_v_nelements;
8906   char *__pyx_v_cattrname;
8907   PyObject *__pyx_v_encoded_attrname = 0;
8908   int __pyx_v_cset;
8909   PyObject *__pyx_v_dtype_ = NULL;
8910   PyObject *__pyx_v_stype_ = NULL;
8911   PyObject *__pyx_v_shape_ = NULL;
8912   PyObject *__pyx_r = NULL;
8913   __Pyx_RefNannyDeclarations
8914   PyObject *__pyx_t_1 = NULL;
8915   PyObject *__pyx_t_2 = NULL;
8916   PyObject *__pyx_t_3 = NULL;
8917   char *__pyx_t_4;
8918   hid_t __pyx_t_5;
8919   int __pyx_t_6;
8920   PyObject *__pyx_t_7 = NULL;
8921   int __pyx_t_8;
8922   int __pyx_t_9;
8923   PyObject *__pyx_t_10 = NULL;
8924   int __pyx_t_11;
8925   PyObject *__pyx_t_12 = NULL;
8926   int __pyx_t_13;
8927   PyObject *__pyx_t_14 = NULL;
8928   PyObject *__pyx_t_15 = NULL;
8929   PyObject *__pyx_t_16 = NULL;
8930   PyObject *(*__pyx_t_17)(PyObject *);
8931   PyObject *__pyx_t_18 = NULL;
8932   int __pyx_t_19;
8933   int __pyx_t_20;
8934   PyObject *__pyx_t_21 = NULL;
8935   PyObject *__pyx_t_22 = NULL;
8936   __Pyx_RefNannySetupContext("_g_getattr", 0);
8937 
8938   /* "tables/hdf5extension.pyx":737
8939  *     cdef void *rbuf
8940  *     cdef char *str_value
8941  *     cdef char **str_values = NULL             # <<<<<<<<<<<<<<
8942  *     cdef ndarray ndvalue
8943  *     cdef object shape, stype_atom, shape_atom, retvalue
8944  */
8945   __pyx_v_str_values = NULL;
8946 
8947   /* "tables/hdf5extension.pyx":741
8948  *     cdef object shape, stype_atom, shape_atom, retvalue
8949  *     cdef int i, nelements
8950  *     cdef char* cattrname = NULL             # <<<<<<<<<<<<<<
8951  *     cdef bytes encoded_attrname
8952  *     cdef int cset = H5T_CSET_DEFAULT
8953  */
8954   __pyx_v_cattrname = NULL;
8955 
8956   /* "tables/hdf5extension.pyx":743
8957  *     cdef char* cattrname = NULL
8958  *     cdef bytes encoded_attrname
8959  *     cdef int cset = H5T_CSET_DEFAULT             # <<<<<<<<<<<<<<
8960  *
8961  *     encoded_attrname = attrname.encode('utf-8')
8962  */
8963   __pyx_v_cset = __pyx_v_6tables_13hdf5extension_H5T_CSET_DEFAULT;
8964 
8965   /* "tables/hdf5extension.pyx":745
8966  *     cdef int cset = H5T_CSET_DEFAULT
8967  *
8968  *     encoded_attrname = attrname.encode('utf-8')             # <<<<<<<<<<<<<<
8969  *     # Get the C pointer
8970  *     cattrname = encoded_attrname
8971  */
8972   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_attrname, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 745, __pyx_L1_error)
8973   __Pyx_GOTREF(__pyx_t_2);
8974   __pyx_t_3 = NULL;
8975   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
8976     __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
8977     if (likely(__pyx_t_3)) {
8978       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
8979       __Pyx_INCREF(__pyx_t_3);
8980       __Pyx_INCREF(function);
8981       __Pyx_DECREF_SET(__pyx_t_2, function);
8982     }
8983   }
8984   __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_kp_s_utf_8) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_kp_s_utf_8);
8985   __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
8986   if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 745, __pyx_L1_error)
8987   __Pyx_GOTREF(__pyx_t_1);
8988   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8989   if (!(likely(PyBytes_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 745, __pyx_L1_error)
8990   __pyx_v_encoded_attrname = ((PyObject*)__pyx_t_1);
8991   __pyx_t_1 = 0;
8992 
8993   /* "tables/hdf5extension.pyx":747
8994  *     encoded_attrname = attrname.encode('utf-8')
8995  *     # Get the C pointer
8996  *     cattrname = encoded_attrname             # <<<<<<<<<<<<<<
8997  *
8998  *     # The dataset id of the node
8999  */
9000   if (unlikely(__pyx_v_encoded_attrname == Py_None)) {
9001     PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
9002     __PYX_ERR(0, 747, __pyx_L1_error)
9003   }
9004   __pyx_t_4 = __Pyx_PyBytes_AsWritableString(__pyx_v_encoded_attrname); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 747, __pyx_L1_error)
9005   __pyx_v_cattrname = __pyx_t_4;
9006 
9007   /* "tables/hdf5extension.pyx":750
9008  *
9009  *     # The dataset id of the node
9010  *     dset_id = node._v_objectid             # <<<<<<<<<<<<<<
9011  *     dims = NULL
9012  *
9013  */
9014   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_node, __pyx_n_s_v_objectid); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 750, __pyx_L1_error)
9015   __Pyx_GOTREF(__pyx_t_1);
9016   __pyx_t_5 = __Pyx_PyInt_As_hid_t(__pyx_t_1); if (unlikely((__pyx_t_5 == ((hid_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 750, __pyx_L1_error)
9017   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
9018   __pyx_v_dset_id = __pyx_t_5;
9019 
9020   /* "tables/hdf5extension.pyx":751
9021  *     # The dataset id of the node
9022  *     dset_id = node._v_objectid
9023  *     dims = NULL             # <<<<<<<<<<<<<<
9024  *
9025  *     ret = H5ATTRget_type_ndims(dset_id, cattrname, &type_id, &class_id,
9026  */
9027   __pyx_v_dims = NULL;
9028 
9029   /* "tables/hdf5extension.pyx":753
9030  *     dims = NULL
9031  *
9032  *     ret = H5ATTRget_type_ndims(dset_id, cattrname, &type_id, &class_id,             # <<<<<<<<<<<<<<
9033  *                                &type_size, &rank )
9034  *     if ret < 0:
9035  */
9036   __pyx_v_ret = H5ATTRget_type_ndims(__pyx_v_dset_id, __pyx_v_cattrname, (&__pyx_v_type_id), (&__pyx_v_class_id), (&__pyx_v_type_size), (&__pyx_v_rank));
9037 
9038   /* "tables/hdf5extension.pyx":755
9039  *     ret = H5ATTRget_type_ndims(dset_id, cattrname, &type_id, &class_id,
9040  *                                &type_size, &rank )
9041  *     if ret < 0:             # <<<<<<<<<<<<<<
9042  *       raise HDF5ExtError("Can't get type info on attribute %s in node %s." %
9043  *                          (attrname, self.name))
9044  */
9045   __pyx_t_6 = ((__pyx_v_ret < 0) != 0);
9046   if (unlikely(__pyx_t_6)) {
9047 
9048     /* "tables/hdf5extension.pyx":756
9049  *                                &type_size, &rank )
9050  *     if ret < 0:
9051  *       raise HDF5ExtError("Can't get type info on attribute %s in node %s." %             # <<<<<<<<<<<<<<
9052  *                          (attrname, self.name))
9053  *
9054  */
9055     __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_HDF5ExtError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 756, __pyx_L1_error)
9056     __Pyx_GOTREF(__pyx_t_2);
9057 
9058     /* "tables/hdf5extension.pyx":757
9059  *     if ret < 0:
9060  *       raise HDF5ExtError("Can't get type info on attribute %s in node %s." %
9061  *                          (attrname, self.name))             # <<<<<<<<<<<<<<
9062  *
9063  *     # Call a fast function for scalar values and typical class types
9064  */
9065     __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 757, __pyx_L1_error)
9066     __Pyx_GOTREF(__pyx_t_3);
9067     __Pyx_INCREF(__pyx_v_attrname);
9068     __Pyx_GIVEREF(__pyx_v_attrname);
9069     PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_attrname);
9070     __Pyx_INCREF(__pyx_v_self->name);
9071     __Pyx_GIVEREF(__pyx_v_self->name);
9072     PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_self->name);
9073 
9074     /* "tables/hdf5extension.pyx":756
9075  *                                &type_size, &rank )
9076  *     if ret < 0:
9077  *       raise HDF5ExtError("Can't get type info on attribute %s in node %s." %             # <<<<<<<<<<<<<<
9078  *                          (attrname, self.name))
9079  *
9080  */
9081     __pyx_t_7 = __Pyx_PyString_Format(__pyx_kp_s_Can_t_get_type_info_on_attribute, __pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 756, __pyx_L1_error)
9082     __Pyx_GOTREF(__pyx_t_7);
9083     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
9084     __pyx_t_3 = NULL;
9085     if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
9086       __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
9087       if (likely(__pyx_t_3)) {
9088         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
9089         __Pyx_INCREF(__pyx_t_3);
9090         __Pyx_INCREF(function);
9091         __Pyx_DECREF_SET(__pyx_t_2, function);
9092       }
9093     }
9094     __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_7);
9095     __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
9096     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
9097     if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 756, __pyx_L1_error)
9098     __Pyx_GOTREF(__pyx_t_1);
9099     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
9100     __Pyx_Raise(__pyx_t_1, 0, 0, 0);
9101     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
9102     __PYX_ERR(0, 756, __pyx_L1_error)
9103 
9104     /* "tables/hdf5extension.pyx":755
9105  *     ret = H5ATTRget_type_ndims(dset_id, cattrname, &type_id, &class_id,
9106  *                                &type_size, &rank )
9107  *     if ret < 0:             # <<<<<<<<<<<<<<
9108  *       raise HDF5ExtError("Can't get type info on attribute %s in node %s." %
9109  *                          (attrname, self.name))
9110  */
9111   }
9112 
9113   /* "tables/hdf5extension.pyx":760
9114  *
9115  *     # Call a fast function for scalar values and typical class types
9116  *     if (rank == 0 and class_id == H5T_STRING):             # <<<<<<<<<<<<<<
9117  *       type_size = H5ATTRget_attribute_string(dset_id, cattrname, &str_value,
9118  *                                              &cset)
9119  */
9120   __pyx_t_8 = ((__pyx_v_rank == 0) != 0);
9121   if (__pyx_t_8) {
9122   } else {
9123     __pyx_t_6 = __pyx_t_8;
9124     goto __pyx_L5_bool_binop_done;
9125   }
9126   __pyx_t_8 = ((__pyx_v_class_id == H5T_STRING) != 0);
9127   __pyx_t_6 = __pyx_t_8;
9128   __pyx_L5_bool_binop_done:;
9129   if (__pyx_t_6) {
9130 
9131     /* "tables/hdf5extension.pyx":761
9132  *     # Call a fast function for scalar values and typical class types
9133  *     if (rank == 0 and class_id == H5T_STRING):
9134  *       type_size = H5ATTRget_attribute_string(dset_id, cattrname, &str_value,             # <<<<<<<<<<<<<<
9135  *                                              &cset)
9136  *       if type_size == 0:
9137  */
9138     __pyx_v_type_size = H5ATTRget_attribute_string(__pyx_v_dset_id, __pyx_v_cattrname, (&__pyx_v_str_value), (&__pyx_v_cset));
9139 
9140     /* "tables/hdf5extension.pyx":763
9141  *       type_size = H5ATTRget_attribute_string(dset_id, cattrname, &str_value,
9142  *                                              &cset)
9143  *       if type_size == 0:             # <<<<<<<<<<<<<<
9144  *         if cset == H5T_CSET_UTF8:
9145  *           retvalue = numpy.unicode_(u'')
9146  */
9147     __pyx_t_6 = ((__pyx_v_type_size == 0) != 0);
9148     if (__pyx_t_6) {
9149 
9150       /* "tables/hdf5extension.pyx":764
9151  *                                              &cset)
9152  *       if type_size == 0:
9153  *         if cset == H5T_CSET_UTF8:             # <<<<<<<<<<<<<<
9154  *           retvalue = numpy.unicode_(u'')
9155  *         else:
9156  */
9157       __pyx_t_6 = ((__pyx_v_cset == H5T_CSET_UTF8) != 0);
9158       if (__pyx_t_6) {
9159 
9160         /* "tables/hdf5extension.pyx":765
9161  *       if type_size == 0:
9162  *         if cset == H5T_CSET_UTF8:
9163  *           retvalue = numpy.unicode_(u'')             # <<<<<<<<<<<<<<
9164  *         else:
9165  *           retvalue = numpy.bytes_(b'')
9166  */
9167         __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 765, __pyx_L1_error)
9168         __Pyx_GOTREF(__pyx_t_2);
9169         __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_unicode); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 765, __pyx_L1_error)
9170         __Pyx_GOTREF(__pyx_t_7);
9171         __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
9172         __pyx_t_2 = NULL;
9173         if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
9174           __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_7);
9175           if (likely(__pyx_t_2)) {
9176             PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
9177             __Pyx_INCREF(__pyx_t_2);
9178             __Pyx_INCREF(function);
9179             __Pyx_DECREF_SET(__pyx_t_7, function);
9180           }
9181         }
9182         __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_2, __pyx_kp_u_) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_kp_u_);
9183         __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
9184         if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 765, __pyx_L1_error)
9185         __Pyx_GOTREF(__pyx_t_1);
9186         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
9187         __pyx_v_retvalue = __pyx_t_1;
9188         __pyx_t_1 = 0;
9189 
9190         /* "tables/hdf5extension.pyx":764
9191  *                                              &cset)
9192  *       if type_size == 0:
9193  *         if cset == H5T_CSET_UTF8:             # <<<<<<<<<<<<<<
9194  *           retvalue = numpy.unicode_(u'')
9195  *         else:
9196  */
9197         goto __pyx_L8;
9198       }
9199 
9200       /* "tables/hdf5extension.pyx":767
9201  *           retvalue = numpy.unicode_(u'')
9202  *         else:
9203  *           retvalue = numpy.bytes_(b'')             # <<<<<<<<<<<<<<
9204  *
9205  *       elif cset == H5T_CSET_UTF8:
9206  */
9207       /*else*/ {
9208         __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 767, __pyx_L1_error)
9209         __Pyx_GOTREF(__pyx_t_7);
9210         __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_bytes); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 767, __pyx_L1_error)
9211         __Pyx_GOTREF(__pyx_t_2);
9212         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
9213         __pyx_t_7 = NULL;
9214         if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
9215           __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2);
9216           if (likely(__pyx_t_7)) {
9217             PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
9218             __Pyx_INCREF(__pyx_t_7);
9219             __Pyx_INCREF(function);
9220             __Pyx_DECREF_SET(__pyx_t_2, function);
9221           }
9222         }
9223         __pyx_t_1 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_7, __pyx_kp_b_) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_kp_b_);
9224         __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
9225         if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 767, __pyx_L1_error)
9226         __Pyx_GOTREF(__pyx_t_1);
9227         __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
9228         __pyx_v_retvalue = __pyx_t_1;
9229         __pyx_t_1 = 0;
9230       }
9231       __pyx_L8:;
9232 
9233       /* "tables/hdf5extension.pyx":763
9234  *       type_size = H5ATTRget_attribute_string(dset_id, cattrname, &str_value,
9235  *                                              &cset)
9236  *       if type_size == 0:             # <<<<<<<<<<<<<<
9237  *         if cset == H5T_CSET_UTF8:
9238  *           retvalue = numpy.unicode_(u'')
9239  */
9240       goto __pyx_L7;
9241     }
9242 
9243     /* "tables/hdf5extension.pyx":769
9244  *           retvalue = numpy.bytes_(b'')
9245  *
9246  *       elif cset == H5T_CSET_UTF8:             # <<<<<<<<<<<<<<
9247  *         if type_size == 1 and str_value[0] == 0:
9248  *           # compatibility with PyTables <= 3.1.1
9249  */
9250     __pyx_t_6 = ((__pyx_v_cset == H5T_CSET_UTF8) != 0);
9251     if (__pyx_t_6) {
9252 
9253       /* "tables/hdf5extension.pyx":770
9254  *
9255  *       elif cset == H5T_CSET_UTF8:
9256  *         if type_size == 1 and str_value[0] == 0:             # <<<<<<<<<<<<<<
9257  *           # compatibility with PyTables <= 3.1.1
9258  *           retvalue = numpy.unicode_(u'')
9259  */
9260       __pyx_t_8 = ((__pyx_v_type_size == 1) != 0);
9261       if (__pyx_t_8) {
9262       } else {
9263         __pyx_t_6 = __pyx_t_8;
9264         goto __pyx_L10_bool_binop_done;
9265       }
9266       __pyx_t_8 = (((__pyx_v_str_value[0]) == 0) != 0);
9267       __pyx_t_6 = __pyx_t_8;
9268       __pyx_L10_bool_binop_done:;
9269       if (__pyx_t_6) {
9270 
9271         /* "tables/hdf5extension.pyx":772
9272  *         if type_size == 1 and str_value[0] == 0:
9273  *           # compatibility with PyTables <= 3.1.1
9274  *           retvalue = numpy.unicode_(u'')             # <<<<<<<<<<<<<<
9275  *         retvalue = PyUnicode_DecodeUTF8(str_value, type_size, NULL)
9276  *         retvalue = numpy.unicode_(retvalue)
9277  */
9278         __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 772, __pyx_L1_error)
9279         __Pyx_GOTREF(__pyx_t_2);
9280         __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_unicode); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 772, __pyx_L1_error)
9281         __Pyx_GOTREF(__pyx_t_7);
9282         __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
9283         __pyx_t_2 = NULL;
9284         if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
9285           __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_7);
9286           if (likely(__pyx_t_2)) {
9287             PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
9288             __Pyx_INCREF(__pyx_t_2);
9289             __Pyx_INCREF(function);
9290             __Pyx_DECREF_SET(__pyx_t_7, function);
9291           }
9292         }
9293         __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_2, __pyx_kp_u_) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_kp_u_);
9294         __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
9295         if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 772, __pyx_L1_error)
9296         __Pyx_GOTREF(__pyx_t_1);
9297         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
9298         __pyx_v_retvalue = __pyx_t_1;
9299         __pyx_t_1 = 0;
9300 
9301         /* "tables/hdf5extension.pyx":770
9302  *
9303  *       elif cset == H5T_CSET_UTF8:
9304  *         if type_size == 1 and str_value[0] == 0:             # <<<<<<<<<<<<<<
9305  *           # compatibility with PyTables <= 3.1.1
9306  *           retvalue = numpy.unicode_(u'')
9307  */
9308       }
9309 
9310       /* "tables/hdf5extension.pyx":773
9311  *           # compatibility with PyTables <= 3.1.1
9312  *           retvalue = numpy.unicode_(u'')
9313  *         retvalue = PyUnicode_DecodeUTF8(str_value, type_size, NULL)             # <<<<<<<<<<<<<<
9314  *         retvalue = numpy.unicode_(retvalue)
9315  *       else:
9316  */
9317       __pyx_t_1 = PyUnicode_DecodeUTF8(__pyx_v_str_value, __pyx_v_type_size, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 773, __pyx_L1_error)
9318       __Pyx_GOTREF(__pyx_t_1);
9319       __Pyx_XDECREF_SET(__pyx_v_retvalue, __pyx_t_1);
9320       __pyx_t_1 = 0;
9321 
9322       /* "tables/hdf5extension.pyx":774
9323  *           retvalue = numpy.unicode_(u'')
9324  *         retvalue = PyUnicode_DecodeUTF8(str_value, type_size, NULL)
9325  *         retvalue = numpy.unicode_(retvalue)             # <<<<<<<<<<<<<<
9326  *       else:
9327  *         retvalue = PyBytes_FromStringAndSize(str_value, type_size)
9328  */
9329       __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 774, __pyx_L1_error)
9330       __Pyx_GOTREF(__pyx_t_7);
9331       __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 774, __pyx_L1_error)
9332       __Pyx_GOTREF(__pyx_t_2);
9333       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
9334       __pyx_t_7 = NULL;
9335       if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
9336         __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2);
9337         if (likely(__pyx_t_7)) {
9338           PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
9339           __Pyx_INCREF(__pyx_t_7);
9340           __Pyx_INCREF(function);
9341           __Pyx_DECREF_SET(__pyx_t_2, function);
9342         }
9343       }
9344       __pyx_t_1 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_7, __pyx_v_retvalue) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_retvalue);
9345       __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
9346       if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 774, __pyx_L1_error)
9347       __Pyx_GOTREF(__pyx_t_1);
9348       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
9349       __Pyx_DECREF_SET(__pyx_v_retvalue, __pyx_t_1);
9350       __pyx_t_1 = 0;
9351 
9352       /* "tables/hdf5extension.pyx":769
9353  *           retvalue = numpy.bytes_(b'')
9354  *
9355  *       elif cset == H5T_CSET_UTF8:             # <<<<<<<<<<<<<<
9356  *         if type_size == 1 and str_value[0] == 0:
9357  *           # compatibility with PyTables <= 3.1.1
9358  */
9359       goto __pyx_L7;
9360     }
9361 
9362     /* "tables/hdf5extension.pyx":776
9363  *         retvalue = numpy.unicode_(retvalue)
9364  *       else:
9365  *         retvalue = PyBytes_FromStringAndSize(str_value, type_size)             # <<<<<<<<<<<<<<
9366  *         # AV: oct 2012
9367  *         # since now we use the string size got form HDF5 we have to strip
9368  */
9369     /*else*/ {
9370       __pyx_t_1 = PyBytes_FromStringAndSize(__pyx_v_str_value, __pyx_v_type_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 776, __pyx_L1_error)
9371       __Pyx_GOTREF(__pyx_t_1);
9372       __pyx_v_retvalue = __pyx_t_1;
9373       __pyx_t_1 = 0;
9374 
9375       /* "tables/hdf5extension.pyx":784
9376  *         # strlen(attr_value) is the actual length of the attibute
9377  *         # and numpy.bytes_(attr_value) can give a truncated pickle sting
9378  *         retvalue = retvalue.rstrip(b'\x00')             # <<<<<<<<<<<<<<
9379  *         retvalue = numpy.bytes_(retvalue)     # bytes
9380  *       # Important to release attr_value, because it has been malloc'ed!
9381  */
9382       __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_retvalue, __pyx_n_s_rstrip); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 784, __pyx_L1_error)
9383       __Pyx_GOTREF(__pyx_t_2);
9384       __pyx_t_7 = NULL;
9385       if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
9386         __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2);
9387         if (likely(__pyx_t_7)) {
9388           PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
9389           __Pyx_INCREF(__pyx_t_7);
9390           __Pyx_INCREF(function);
9391           __Pyx_DECREF_SET(__pyx_t_2, function);
9392         }
9393       }
9394       __pyx_t_1 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_7, __pyx_kp_b__2) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_kp_b__2);
9395       __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
9396       if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 784, __pyx_L1_error)
9397       __Pyx_GOTREF(__pyx_t_1);
9398       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
9399       __Pyx_DECREF_SET(__pyx_v_retvalue, __pyx_t_1);
9400       __pyx_t_1 = 0;
9401 
9402       /* "tables/hdf5extension.pyx":785
9403  *         # and numpy.bytes_(attr_value) can give a truncated pickle sting
9404  *         retvalue = retvalue.rstrip(b'\x00')
9405  *         retvalue = numpy.bytes_(retvalue)     # bytes             # <<<<<<<<<<<<<<
9406  *       # Important to release attr_value, because it has been malloc'ed!
9407  *       if str_value:
9408  */
9409       __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 785, __pyx_L1_error)
9410       __Pyx_GOTREF(__pyx_t_2);
9411       __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_bytes); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 785, __pyx_L1_error)
9412       __Pyx_GOTREF(__pyx_t_7);
9413       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
9414       __pyx_t_2 = NULL;
9415       if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
9416         __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_7);
9417         if (likely(__pyx_t_2)) {
9418           PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
9419           __Pyx_INCREF(__pyx_t_2);
9420           __Pyx_INCREF(function);
9421           __Pyx_DECREF_SET(__pyx_t_7, function);
9422         }
9423       }
9424       __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_2, __pyx_v_retvalue) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_retvalue);
9425       __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
9426       if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 785, __pyx_L1_error)
9427       __Pyx_GOTREF(__pyx_t_1);
9428       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
9429       __Pyx_DECREF_SET(__pyx_v_retvalue, __pyx_t_1);
9430       __pyx_t_1 = 0;
9431     }
9432     __pyx_L7:;
9433 
9434     /* "tables/hdf5extension.pyx":787
9435  *         retvalue = numpy.bytes_(retvalue)     # bytes
9436  *       # Important to release attr_value, because it has been malloc'ed!
9437  *       if str_value:             # <<<<<<<<<<<<<<
9438  *         free(str_value)
9439  *       H5Tclose(type_id)
9440  */
9441     __pyx_t_6 = (__pyx_v_str_value != 0);
9442     if (__pyx_t_6) {
9443 
9444       /* "tables/hdf5extension.pyx":788
9445  *       # Important to release attr_value, because it has been malloc'ed!
9446  *       if str_value:
9447  *         free(str_value)             # <<<<<<<<<<<<<<
9448  *       H5Tclose(type_id)
9449  *       return retvalue
9450  */
9451       free(__pyx_v_str_value);
9452 
9453       /* "tables/hdf5extension.pyx":787
9454  *         retvalue = numpy.bytes_(retvalue)     # bytes
9455  *       # Important to release attr_value, because it has been malloc'ed!
9456  *       if str_value:             # <<<<<<<<<<<<<<
9457  *         free(str_value)
9458  *       H5Tclose(type_id)
9459  */
9460     }
9461 
9462     /* "tables/hdf5extension.pyx":789
9463  *       if str_value:
9464  *         free(str_value)
9465  *       H5Tclose(type_id)             # <<<<<<<<<<<<<<
9466  *       return retvalue
9467  *     elif (rank == 0 and class_id in (H5T_BITFIELD, H5T_INTEGER, H5T_FLOAT)):
9468  */
9469     (void)(H5Tclose(__pyx_v_type_id));
9470 
9471     /* "tables/hdf5extension.pyx":790
9472  *         free(str_value)
9473  *       H5Tclose(type_id)
9474  *       return retvalue             # <<<<<<<<<<<<<<
9475  *     elif (rank == 0 and class_id in (H5T_BITFIELD, H5T_INTEGER, H5T_FLOAT)):
9476  *       dtype_ = get_dtype_scalar(type_id, class_id, type_size)
9477  */
9478     __Pyx_XDECREF(__pyx_r);
9479     __Pyx_INCREF(__pyx_v_retvalue);
9480     __pyx_r = __pyx_v_retvalue;
9481     goto __pyx_L0;
9482 
9483     /* "tables/hdf5extension.pyx":760
9484  *
9485  *     # Call a fast function for scalar values and typical class types
9486  *     if (rank == 0 and class_id == H5T_STRING):             # <<<<<<<<<<<<<<
9487  *       type_size = H5ATTRget_attribute_string(dset_id, cattrname, &str_value,
9488  *                                              &cset)
9489  */
9490   }
9491 
9492   /* "tables/hdf5extension.pyx":791
9493  *       H5Tclose(type_id)
9494  *       return retvalue
9495  *     elif (rank == 0 and class_id in (H5T_BITFIELD, H5T_INTEGER, H5T_FLOAT)):             # <<<<<<<<<<<<<<
9496  *       dtype_ = get_dtype_scalar(type_id, class_id, type_size)
9497  *       if dtype_ is None:
9498  */
9499   __pyx_t_8 = ((__pyx_v_rank == 0) != 0);
9500   if (__pyx_t_8) {
9501   } else {
9502     __pyx_t_6 = __pyx_t_8;
9503     goto __pyx_L13_bool_binop_done;
9504   }
9505   switch (__pyx_v_class_id) {
9506     case H5T_BITFIELD:
9507     case H5T_INTEGER:
9508     case H5T_FLOAT:
9509     __pyx_t_8 = 1;
9510     break;
9511     default:
9512     __pyx_t_8 = 0;
9513     break;
9514   }
9515   __pyx_t_9 = (__pyx_t_8 != 0);
9516   __pyx_t_6 = __pyx_t_9;
9517   __pyx_L13_bool_binop_done:;
9518   if (__pyx_t_6) {
9519 
9520     /* "tables/hdf5extension.pyx":792
9521  *       return retvalue
9522  *     elif (rank == 0 and class_id in (H5T_BITFIELD, H5T_INTEGER, H5T_FLOAT)):
9523  *       dtype_ = get_dtype_scalar(type_id, class_id, type_size)             # <<<<<<<<<<<<<<
9524  *       if dtype_ is None:
9525  *         warnings.warn("Unsupported type for attribute '%s' in node '%s'. "
9526  */
9527     __pyx_t_1 = __pyx_f_6tables_13hdf5extension_get_dtype_scalar(__pyx_v_type_id, __pyx_v_class_id, __pyx_v_type_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 792, __pyx_L1_error)
9528     __Pyx_GOTREF(__pyx_t_1);
9529     __pyx_v_dtype_ = __pyx_t_1;
9530     __pyx_t_1 = 0;
9531 
9532     /* "tables/hdf5extension.pyx":793
9533  *     elif (rank == 0 and class_id in (H5T_BITFIELD, H5T_INTEGER, H5T_FLOAT)):
9534  *       dtype_ = get_dtype_scalar(type_id, class_id, type_size)
9535  *       if dtype_ is None:             # <<<<<<<<<<<<<<
9536  *         warnings.warn("Unsupported type for attribute '%s' in node '%s'. "
9537  *                       "Offending HDF5 class: %d" % (attrname, self.name,
9538  */
9539     __pyx_t_6 = (__pyx_v_dtype_ == Py_None);
9540     __pyx_t_9 = (__pyx_t_6 != 0);
9541     if (__pyx_t_9) {
9542 
9543       /* "tables/hdf5extension.pyx":794
9544  *       dtype_ = get_dtype_scalar(type_id, class_id, type_size)
9545  *       if dtype_ is None:
9546  *         warnings.warn("Unsupported type for attribute '%s' in node '%s'. "             # <<<<<<<<<<<<<<
9547  *                       "Offending HDF5 class: %d" % (attrname, self.name,
9548  *                                                     class_id), DataTypeWarning)
9549  */
9550       __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_warnings); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 794, __pyx_L1_error)
9551       __Pyx_GOTREF(__pyx_t_7);
9552       __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_warn); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 794, __pyx_L1_error)
9553       __Pyx_GOTREF(__pyx_t_2);
9554       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
9555 
9556       /* "tables/hdf5extension.pyx":796
9557  *         warnings.warn("Unsupported type for attribute '%s' in node '%s'. "
9558  *                       "Offending HDF5 class: %d" % (attrname, self.name,
9559  *                                                     class_id), DataTypeWarning)             # <<<<<<<<<<<<<<
9560  *         self._v_unimplemented.append(attrname)
9561  *         return None
9562  */
9563       __pyx_t_7 = __Pyx_PyInt_From_enum__H5T_class_t(__pyx_v_class_id); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 796, __pyx_L1_error)
9564       __Pyx_GOTREF(__pyx_t_7);
9565 
9566       /* "tables/hdf5extension.pyx":795
9567  *       if dtype_ is None:
9568  *         warnings.warn("Unsupported type for attribute '%s' in node '%s'. "
9569  *                       "Offending HDF5 class: %d" % (attrname, self.name,             # <<<<<<<<<<<<<<
9570  *                                                     class_id), DataTypeWarning)
9571  *         self._v_unimplemented.append(attrname)
9572  */
9573       __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 795, __pyx_L1_error)
9574       __Pyx_GOTREF(__pyx_t_3);
9575       __Pyx_INCREF(__pyx_v_attrname);
9576       __Pyx_GIVEREF(__pyx_v_attrname);
9577       PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_attrname);
9578       __Pyx_INCREF(__pyx_v_self->name);
9579       __Pyx_GIVEREF(__pyx_v_self->name);
9580       PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_self->name);
9581       __Pyx_GIVEREF(__pyx_t_7);
9582       PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_7);
9583       __pyx_t_7 = 0;
9584       __pyx_t_7 = __Pyx_PyString_Format(__pyx_kp_s_Unsupported_type_for_attribute_s, __pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 795, __pyx_L1_error)
9585       __Pyx_GOTREF(__pyx_t_7);
9586       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
9587 
9588       /* "tables/hdf5extension.pyx":796
9589  *         warnings.warn("Unsupported type for attribute '%s' in node '%s'. "
9590  *                       "Offending HDF5 class: %d" % (attrname, self.name,
9591  *                                                     class_id), DataTypeWarning)             # <<<<<<<<<<<<<<
9592  *         self._v_unimplemented.append(attrname)
9593  *         return None
9594  */
9595       __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_DataTypeWarning); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 796, __pyx_L1_error)
9596       __Pyx_GOTREF(__pyx_t_3);
9597       __pyx_t_10 = NULL;
9598       __pyx_t_11 = 0;
9599       if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
9600         __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
9601         if (likely(__pyx_t_10)) {
9602           PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
9603           __Pyx_INCREF(__pyx_t_10);
9604           __Pyx_INCREF(function);
9605           __Pyx_DECREF_SET(__pyx_t_2, function);
9606           __pyx_t_11 = 1;
9607         }
9608       }
9609       #if CYTHON_FAST_PYCALL
9610       if (PyFunction_Check(__pyx_t_2)) {
9611         PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_t_7, __pyx_t_3};
9612         __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 794, __pyx_L1_error)
9613         __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
9614         __Pyx_GOTREF(__pyx_t_1);
9615         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
9616         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
9617       } else
9618       #endif
9619       #if CYTHON_FAST_PYCCALL
9620       if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
9621         PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_t_7, __pyx_t_3};
9622         __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 794, __pyx_L1_error)
9623         __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
9624         __Pyx_GOTREF(__pyx_t_1);
9625         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
9626         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
9627       } else
9628       #endif
9629       {
9630         __pyx_t_12 = PyTuple_New(2+__pyx_t_11); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 794, __pyx_L1_error)
9631         __Pyx_GOTREF(__pyx_t_12);
9632         if (__pyx_t_10) {
9633           __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_10); __pyx_t_10 = NULL;
9634         }
9635         __Pyx_GIVEREF(__pyx_t_7);
9636         PyTuple_SET_ITEM(__pyx_t_12, 0+__pyx_t_11, __pyx_t_7);
9637         __Pyx_GIVEREF(__pyx_t_3);
9638         PyTuple_SET_ITEM(__pyx_t_12, 1+__pyx_t_11, __pyx_t_3);
9639         __pyx_t_7 = 0;
9640         __pyx_t_3 = 0;
9641         __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_12, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 794, __pyx_L1_error)
9642         __Pyx_GOTREF(__pyx_t_1);
9643         __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
9644       }
9645       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
9646       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
9647 
9648       /* "tables/hdf5extension.pyx":797
9649  *                       "Offending HDF5 class: %d" % (attrname, self.name,
9650  *                                                     class_id), DataTypeWarning)
9651  *         self._v_unimplemented.append(attrname)             # <<<<<<<<<<<<<<
9652  *         return None
9653  *       shape = ()
9654  */
9655       __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_v_unimplemented); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 797, __pyx_L1_error)
9656       __Pyx_GOTREF(__pyx_t_1);
9657       __pyx_t_13 = __Pyx_PyObject_Append(__pyx_t_1, __pyx_v_attrname); if (unlikely(__pyx_t_13 == ((int)-1))) __PYX_ERR(0, 797, __pyx_L1_error)
9658       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
9659 
9660       /* "tables/hdf5extension.pyx":798
9661  *                                                     class_id), DataTypeWarning)
9662  *         self._v_unimplemented.append(attrname)
9663  *         return None             # <<<<<<<<<<<<<<
9664  *       shape = ()
9665  *     else:
9666  */
9667       __Pyx_XDECREF(__pyx_r);
9668       __pyx_r = Py_None; __Pyx_INCREF(Py_None);
9669       goto __pyx_L0;
9670 
9671       /* "tables/hdf5extension.pyx":793
9672  *     elif (rank == 0 and class_id in (H5T_BITFIELD, H5T_INTEGER, H5T_FLOAT)):
9673  *       dtype_ = get_dtype_scalar(type_id, class_id, type_size)
9674  *       if dtype_ is None:             # <<<<<<<<<<<<<<
9675  *         warnings.warn("Unsupported type for attribute '%s' in node '%s'. "
9676  *                       "Offending HDF5 class: %d" % (attrname, self.name,
9677  */
9678     }
9679 
9680     /* "tables/hdf5extension.pyx":799
9681  *         self._v_unimplemented.append(attrname)
9682  *         return None
9683  *       shape = ()             # <<<<<<<<<<<<<<
9684  *     else:
9685  *       # General case
9686  */
9687     __Pyx_INCREF(__pyx_empty_tuple);
9688     __pyx_v_shape = __pyx_empty_tuple;
9689 
9690     /* "tables/hdf5extension.pyx":791
9691  *       H5Tclose(type_id)
9692  *       return retvalue
9693  *     elif (rank == 0 and class_id in (H5T_BITFIELD, H5T_INTEGER, H5T_FLOAT)):             # <<<<<<<<<<<<<<
9694  *       dtype_ = get_dtype_scalar(type_id, class_id, type_size)
9695  *       if dtype_ is None:
9696  */
9697     goto __pyx_L4;
9698   }
9699 
9700   /* "tables/hdf5extension.pyx":804
9701  *
9702  *       # Get the dimensional info
9703  *       dims = <hsize_t *>malloc(rank * sizeof(hsize_t))             # <<<<<<<<<<<<<<
9704  *       ret = H5ATTRget_dims(dset_id, cattrname, dims)
9705  *       if ret < 0:
9706  */
9707   /*else*/ {
9708     __pyx_v_dims = ((hsize_t *)malloc((__pyx_v_rank * (sizeof(hsize_t)))));
9709 
9710     /* "tables/hdf5extension.pyx":805
9711  *       # Get the dimensional info
9712  *       dims = <hsize_t *>malloc(rank * sizeof(hsize_t))
9713  *       ret = H5ATTRget_dims(dset_id, cattrname, dims)             # <<<<<<<<<<<<<<
9714  *       if ret < 0:
9715  *         raise HDF5ExtError("Can't get dims info on attribute %s in node %s." %
9716  */
9717     __pyx_v_ret = H5ATTRget_dims(__pyx_v_dset_id, __pyx_v_cattrname, __pyx_v_dims);
9718 
9719     /* "tables/hdf5extension.pyx":806
9720  *       dims = <hsize_t *>malloc(rank * sizeof(hsize_t))
9721  *       ret = H5ATTRget_dims(dset_id, cattrname, dims)
9722  *       if ret < 0:             # <<<<<<<<<<<<<<
9723  *         raise HDF5ExtError("Can't get dims info on attribute %s in node %s." %
9724  *                            (attrname, self.name))
9725  */
9726     __pyx_t_9 = ((__pyx_v_ret < 0) != 0);
9727     if (unlikely(__pyx_t_9)) {
9728 
9729       /* "tables/hdf5extension.pyx":807
9730  *       ret = H5ATTRget_dims(dset_id, cattrname, dims)
9731  *       if ret < 0:
9732  *         raise HDF5ExtError("Can't get dims info on attribute %s in node %s." %             # <<<<<<<<<<<<<<
9733  *                            (attrname, self.name))
9734  *       shape = getshape(rank, dims)
9735  */
9736       __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_HDF5ExtError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 807, __pyx_L1_error)
9737       __Pyx_GOTREF(__pyx_t_2);
9738 
9739       /* "tables/hdf5extension.pyx":808
9740  *       if ret < 0:
9741  *         raise HDF5ExtError("Can't get dims info on attribute %s in node %s." %
9742  *                            (attrname, self.name))             # <<<<<<<<<<<<<<
9743  *       shape = getshape(rank, dims)
9744  *       # dims is not needed anymore
9745  */
9746       __pyx_t_12 = PyTuple_New(2); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 808, __pyx_L1_error)
9747       __Pyx_GOTREF(__pyx_t_12);
9748       __Pyx_INCREF(__pyx_v_attrname);
9749       __Pyx_GIVEREF(__pyx_v_attrname);
9750       PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_v_attrname);
9751       __Pyx_INCREF(__pyx_v_self->name);
9752       __Pyx_GIVEREF(__pyx_v_self->name);
9753       PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_v_self->name);
9754 
9755       /* "tables/hdf5extension.pyx":807
9756  *       ret = H5ATTRget_dims(dset_id, cattrname, dims)
9757  *       if ret < 0:
9758  *         raise HDF5ExtError("Can't get dims info on attribute %s in node %s." %             # <<<<<<<<<<<<<<
9759  *                            (attrname, self.name))
9760  *       shape = getshape(rank, dims)
9761  */
9762       __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_Can_t_get_dims_info_on_attribute, __pyx_t_12); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 807, __pyx_L1_error)
9763       __Pyx_GOTREF(__pyx_t_3);
9764       __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
9765       __pyx_t_12 = NULL;
9766       if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
9767         __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_2);
9768         if (likely(__pyx_t_12)) {
9769           PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
9770           __Pyx_INCREF(__pyx_t_12);
9771           __Pyx_INCREF(function);
9772           __Pyx_DECREF_SET(__pyx_t_2, function);
9773         }
9774       }
9775       __pyx_t_1 = (__pyx_t_12) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_12, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3);
9776       __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
9777       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
9778       if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 807, __pyx_L1_error)
9779       __Pyx_GOTREF(__pyx_t_1);
9780       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
9781       __Pyx_Raise(__pyx_t_1, 0, 0, 0);
9782       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
9783       __PYX_ERR(0, 807, __pyx_L1_error)
9784 
9785       /* "tables/hdf5extension.pyx":806
9786  *       dims = <hsize_t *>malloc(rank * sizeof(hsize_t))
9787  *       ret = H5ATTRget_dims(dset_id, cattrname, dims)
9788  *       if ret < 0:             # <<<<<<<<<<<<<<
9789  *         raise HDF5ExtError("Can't get dims info on attribute %s in node %s." %
9790  *                            (attrname, self.name))
9791  */
9792     }
9793 
9794     /* "tables/hdf5extension.pyx":809
9795  *         raise HDF5ExtError("Can't get dims info on attribute %s in node %s." %
9796  *                            (attrname, self.name))
9797  *       shape = getshape(rank, dims)             # <<<<<<<<<<<<<<
9798  *       # dims is not needed anymore
9799  *       free(<void *> dims)
9800  */
9801     __pyx_t_1 = __pyx_f_6tables_13hdf5extension_getshape(__pyx_v_rank, __pyx_v_dims); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 809, __pyx_L1_error)
9802     __Pyx_GOTREF(__pyx_t_1);
9803     __pyx_v_shape = __pyx_t_1;
9804     __pyx_t_1 = 0;
9805 
9806     /* "tables/hdf5extension.pyx":811
9807  *       shape = getshape(rank, dims)
9808  *       # dims is not needed anymore
9809  *       free(<void *> dims)             # <<<<<<<<<<<<<<
9810  *
9811  *       # Get the NumPy dtype from the type_id
9812  */
9813     free(((void *)__pyx_v_dims));
9814 
9815     /* "tables/hdf5extension.pyx":814
9816  *
9817  *       # Get the NumPy dtype from the type_id
9818  *       try:             # <<<<<<<<<<<<<<
9819  *         stype_, shape_ = hdf5_to_np_ext_type(type_id, pure_numpy_types=True, ptparams=node._v_file.params)
9820  *         dtype_ = numpy.dtype(stype_, shape_)
9821  */
9822     {
9823       __Pyx_PyThreadState_declare
9824       __Pyx_PyThreadState_assign
9825       __Pyx_ExceptionSave(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16);
9826       __Pyx_XGOTREF(__pyx_t_14);
9827       __Pyx_XGOTREF(__pyx_t_15);
9828       __Pyx_XGOTREF(__pyx_t_16);
9829       /*try:*/ {
9830 
9831         /* "tables/hdf5extension.pyx":815
9832  *       # Get the NumPy dtype from the type_id
9833  *       try:
9834  *         stype_, shape_ = hdf5_to_np_ext_type(type_id, pure_numpy_types=True, ptparams=node._v_file.params)             # <<<<<<<<<<<<<<
9835  *         dtype_ = numpy.dtype(stype_, shape_)
9836  *       except TypeError:
9837  */
9838         __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_hdf5_to_np_ext_type); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 815, __pyx_L17_error)
9839         __Pyx_GOTREF(__pyx_t_1);
9840         __pyx_t_2 = __Pyx_PyInt_From_hid_t(__pyx_v_type_id); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 815, __pyx_L17_error)
9841         __Pyx_GOTREF(__pyx_t_2);
9842         __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 815, __pyx_L17_error)
9843         __Pyx_GOTREF(__pyx_t_3);
9844         __Pyx_GIVEREF(__pyx_t_2);
9845         PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
9846         __pyx_t_2 = 0;
9847         __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 815, __pyx_L17_error)
9848         __Pyx_GOTREF(__pyx_t_2);
9849         if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_pure_numpy_types, Py_True) < 0) __PYX_ERR(0, 815, __pyx_L17_error)
9850         __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_node, __pyx_n_s_v_file); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 815, __pyx_L17_error)
9851         __Pyx_GOTREF(__pyx_t_12);
9852         __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_params); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 815, __pyx_L17_error)
9853         __Pyx_GOTREF(__pyx_t_7);
9854         __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
9855         if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_ptparams, __pyx_t_7) < 0) __PYX_ERR(0, 815, __pyx_L17_error)
9856         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
9857         __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 815, __pyx_L17_error)
9858         __Pyx_GOTREF(__pyx_t_7);
9859         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
9860         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
9861         __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
9862         if ((likely(PyTuple_CheckExact(__pyx_t_7))) || (PyList_CheckExact(__pyx_t_7))) {
9863           PyObject* sequence = __pyx_t_7;
9864           Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
9865           if (unlikely(size != 2)) {
9866             if (size > 2) __Pyx_RaiseTooManyValuesError(2);
9867             else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
9868             __PYX_ERR(0, 815, __pyx_L17_error)
9869           }
9870           #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
9871           if (likely(PyTuple_CheckExact(sequence))) {
9872             __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0);
9873             __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1);
9874           } else {
9875             __pyx_t_2 = PyList_GET_ITEM(sequence, 0);
9876             __pyx_t_3 = PyList_GET_ITEM(sequence, 1);
9877           }
9878           __Pyx_INCREF(__pyx_t_2);
9879           __Pyx_INCREF(__pyx_t_3);
9880           #else
9881           __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 815, __pyx_L17_error)
9882           __Pyx_GOTREF(__pyx_t_2);
9883           __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 815, __pyx_L17_error)
9884           __Pyx_GOTREF(__pyx_t_3);
9885           #endif
9886           __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
9887         } else {
9888           Py_ssize_t index = -1;
9889           __pyx_t_1 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 815, __pyx_L17_error)
9890           __Pyx_GOTREF(__pyx_t_1);
9891           __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
9892           __pyx_t_17 = Py_TYPE(__pyx_t_1)->tp_iternext;
9893           index = 0; __pyx_t_2 = __pyx_t_17(__pyx_t_1); if (unlikely(!__pyx_t_2)) goto __pyx_L23_unpacking_failed;
9894           __Pyx_GOTREF(__pyx_t_2);
9895           index = 1; __pyx_t_3 = __pyx_t_17(__pyx_t_1); if (unlikely(!__pyx_t_3)) goto __pyx_L23_unpacking_failed;
9896           __Pyx_GOTREF(__pyx_t_3);
9897           if (__Pyx_IternextUnpackEndCheck(__pyx_t_17(__pyx_t_1), 2) < 0) __PYX_ERR(0, 815, __pyx_L17_error)
9898           __pyx_t_17 = NULL;
9899           __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
9900           goto __pyx_L24_unpacking_done;
9901           __pyx_L23_unpacking_failed:;
9902           __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
9903           __pyx_t_17 = NULL;
9904           if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
9905           __PYX_ERR(0, 815, __pyx_L17_error)
9906           __pyx_L24_unpacking_done:;
9907         }
9908         __pyx_v_stype_ = __pyx_t_2;
9909         __pyx_t_2 = 0;
9910         __pyx_v_shape_ = __pyx_t_3;
9911         __pyx_t_3 = 0;
9912 
9913         /* "tables/hdf5extension.pyx":816
9914  *       try:
9915  *         stype_, shape_ = hdf5_to_np_ext_type(type_id, pure_numpy_types=True, ptparams=node._v_file.params)
9916  *         dtype_ = numpy.dtype(stype_, shape_)             # <<<<<<<<<<<<<<
9917  *       except TypeError:
9918  *         if class_id == H5T_STRING and H5Tis_variable_str(type_id):
9919  */
9920         __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 816, __pyx_L17_error)
9921         __Pyx_GOTREF(__pyx_t_3);
9922         __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_dtype); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 816, __pyx_L17_error)
9923         __Pyx_GOTREF(__pyx_t_2);
9924         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
9925         __pyx_t_3 = NULL;
9926         __pyx_t_11 = 0;
9927         if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
9928           __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
9929           if (likely(__pyx_t_3)) {
9930             PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
9931             __Pyx_INCREF(__pyx_t_3);
9932             __Pyx_INCREF(function);
9933             __Pyx_DECREF_SET(__pyx_t_2, function);
9934             __pyx_t_11 = 1;
9935           }
9936         }
9937         #if CYTHON_FAST_PYCALL
9938         if (PyFunction_Check(__pyx_t_2)) {
9939           PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_stype_, __pyx_v_shape_};
9940           __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 816, __pyx_L17_error)
9941           __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
9942           __Pyx_GOTREF(__pyx_t_7);
9943         } else
9944         #endif
9945         #if CYTHON_FAST_PYCCALL
9946         if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
9947           PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_stype_, __pyx_v_shape_};
9948           __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 816, __pyx_L17_error)
9949           __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
9950           __Pyx_GOTREF(__pyx_t_7);
9951         } else
9952         #endif
9953         {
9954           __pyx_t_1 = PyTuple_New(2+__pyx_t_11); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 816, __pyx_L17_error)
9955           __Pyx_GOTREF(__pyx_t_1);
9956           if (__pyx_t_3) {
9957             __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_3); __pyx_t_3 = NULL;
9958           }
9959           __Pyx_INCREF(__pyx_v_stype_);
9960           __Pyx_GIVEREF(__pyx_v_stype_);
9961           PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_11, __pyx_v_stype_);
9962           __Pyx_INCREF(__pyx_v_shape_);
9963           __Pyx_GIVEREF(__pyx_v_shape_);
9964           PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_11, __pyx_v_shape_);
9965           __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 816, __pyx_L17_error)
9966           __Pyx_GOTREF(__pyx_t_7);
9967           __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
9968         }
9969         __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
9970         __pyx_v_dtype_ = __pyx_t_7;
9971         __pyx_t_7 = 0;
9972 
9973         /* "tables/hdf5extension.pyx":814
9974  *
9975  *       # Get the NumPy dtype from the type_id
9976  *       try:             # <<<<<<<<<<<<<<
9977  *         stype_, shape_ = hdf5_to_np_ext_type(type_id, pure_numpy_types=True, ptparams=node._v_file.params)
9978  *         dtype_ = numpy.dtype(stype_, shape_)
9979  */
9980       }
9981       __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
9982       __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
9983       __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
9984       goto __pyx_L22_try_end;
9985       __pyx_L17_error:;
9986       __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
9987       __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
9988       __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
9989       __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
9990       __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
9991       __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
9992 
9993       /* "tables/hdf5extension.pyx":817
9994  *         stype_, shape_ = hdf5_to_np_ext_type(type_id, pure_numpy_types=True, ptparams=node._v_file.params)
9995  *         dtype_ = numpy.dtype(stype_, shape_)
9996  *       except TypeError:             # <<<<<<<<<<<<<<
9997  *         if class_id == H5T_STRING and H5Tis_variable_str(type_id):
9998  *           nelements = H5ATTRget_attribute_vlen_string_array(dset_id, cattrname,
9999  */
10000       __pyx_t_11 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_TypeError);
10001       if (__pyx_t_11) {
10002         __Pyx_AddTraceback("tables.hdf5extension.AttributeSet._g_getattr", __pyx_clineno, __pyx_lineno, __pyx_filename);
10003         if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_2, &__pyx_t_1) < 0) __PYX_ERR(0, 817, __pyx_L19_except_error)
10004         __Pyx_GOTREF(__pyx_t_7);
10005         __Pyx_GOTREF(__pyx_t_2);
10006         __Pyx_GOTREF(__pyx_t_1);
10007 
10008         /* "tables/hdf5extension.pyx":818
10009  *         dtype_ = numpy.dtype(stype_, shape_)
10010  *       except TypeError:
10011  *         if class_id == H5T_STRING and H5Tis_variable_str(type_id):             # <<<<<<<<<<<<<<
10012  *           nelements = H5ATTRget_attribute_vlen_string_array(dset_id, cattrname,
10013  *                                                             &str_values, &cset)
10014  */
10015         __pyx_t_6 = ((__pyx_v_class_id == H5T_STRING) != 0);
10016         if (__pyx_t_6) {
10017         } else {
10018           __pyx_t_9 = __pyx_t_6;
10019           goto __pyx_L28_bool_binop_done;
10020         }
10021         __pyx_t_6 = (H5Tis_variable_str(__pyx_v_type_id) != 0);
10022         __pyx_t_9 = __pyx_t_6;
10023         __pyx_L28_bool_binop_done:;
10024         if (__pyx_t_9) {
10025 
10026           /* "tables/hdf5extension.pyx":819
10027  *       except TypeError:
10028  *         if class_id == H5T_STRING and H5Tis_variable_str(type_id):
10029  *           nelements = H5ATTRget_attribute_vlen_string_array(dset_id, cattrname,             # <<<<<<<<<<<<<<
10030  *                                                             &str_values, &cset)
10031  *           if nelements < 0:
10032  */
10033           __pyx_v_nelements = H5ATTRget_attribute_vlen_string_array(__pyx_v_dset_id, __pyx_v_cattrname, (&__pyx_v_str_values), (&__pyx_v_cset));
10034 
10035           /* "tables/hdf5extension.pyx":821
10036  *           nelements = H5ATTRget_attribute_vlen_string_array(dset_id, cattrname,
10037  *                                                             &str_values, &cset)
10038  *           if nelements < 0:             # <<<<<<<<<<<<<<
10039  *             raise HDF5ExtError("Can't read attribute %s in node %s." %
10040  *                                (attrname, self.name))
10041  */
10042           __pyx_t_9 = ((__pyx_v_nelements < 0) != 0);
10043           if (unlikely(__pyx_t_9)) {
10044 
10045             /* "tables/hdf5extension.pyx":822
10046  *                                                             &str_values, &cset)
10047  *           if nelements < 0:
10048  *             raise HDF5ExtError("Can't read attribute %s in node %s." %             # <<<<<<<<<<<<<<
10049  *                                (attrname, self.name))
10050  *
10051  */
10052             __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_HDF5ExtError); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 822, __pyx_L19_except_error)
10053             __Pyx_GOTREF(__pyx_t_12);
10054 
10055             /* "tables/hdf5extension.pyx":823
10056  *           if nelements < 0:
10057  *             raise HDF5ExtError("Can't read attribute %s in node %s." %
10058  *                                (attrname, self.name))             # <<<<<<<<<<<<<<
10059  *
10060  *           # The following generator expressions do not work with Cython 0.15.1
10061  */
10062             __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 823, __pyx_L19_except_error)
10063             __Pyx_GOTREF(__pyx_t_10);
10064             __Pyx_INCREF(__pyx_v_attrname);
10065             __Pyx_GIVEREF(__pyx_v_attrname);
10066             PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_v_attrname);
10067             __Pyx_INCREF(__pyx_v_self->name);
10068             __Pyx_GIVEREF(__pyx_v_self->name);
10069             PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_v_self->name);
10070 
10071             /* "tables/hdf5extension.pyx":822
10072  *                                                             &str_values, &cset)
10073  *           if nelements < 0:
10074  *             raise HDF5ExtError("Can't read attribute %s in node %s." %             # <<<<<<<<<<<<<<
10075  *                                (attrname, self.name))
10076  *
10077  */
10078             __pyx_t_18 = __Pyx_PyString_Format(__pyx_kp_s_Can_t_read_attribute_s_in_node_s, __pyx_t_10); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 822, __pyx_L19_except_error)
10079             __Pyx_GOTREF(__pyx_t_18);
10080             __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
10081             __pyx_t_10 = NULL;
10082             if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_12))) {
10083               __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_12);
10084               if (likely(__pyx_t_10)) {
10085                 PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
10086                 __Pyx_INCREF(__pyx_t_10);
10087                 __Pyx_INCREF(function);
10088                 __Pyx_DECREF_SET(__pyx_t_12, function);
10089               }
10090             }
10091             __pyx_t_3 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_12, __pyx_t_10, __pyx_t_18) : __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_t_18);
10092             __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
10093             __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
10094             if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 822, __pyx_L19_except_error)
10095             __Pyx_GOTREF(__pyx_t_3);
10096             __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
10097             __Pyx_Raise(__pyx_t_3, 0, 0, 0);
10098             __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
10099             __PYX_ERR(0, 822, __pyx_L19_except_error)
10100 
10101             /* "tables/hdf5extension.pyx":821
10102  *           nelements = H5ATTRget_attribute_vlen_string_array(dset_id, cattrname,
10103  *                                                             &str_values, &cset)
10104  *           if nelements < 0:             # <<<<<<<<<<<<<<
10105  *             raise HDF5ExtError("Can't read attribute %s in node %s." %
10106  *                                (attrname, self.name))
10107  */
10108           }
10109 
10110           /* "tables/hdf5extension.pyx":826
10111  *
10112  *           # The following generator expressions do not work with Cython 0.15.1
10113  *           if cset == H5T_CSET_UTF8:             # <<<<<<<<<<<<<<
10114  *             #retvalue = numpy.fromiter(
10115  *             #  PyUnicode_DecodeUTF8(<char*>str_values[i],
10116  */
10117           __pyx_t_9 = ((__pyx_v_cset == H5T_CSET_UTF8) != 0);
10118           if (__pyx_t_9) {
10119 
10120             /* "tables/hdf5extension.pyx":832
10121  *             #                        NULL)
10122  *             #    for i in range(nelements), "O8")
10123  *             retvalue = numpy.array([             # <<<<<<<<<<<<<<
10124  *               PyUnicode_DecodeUTF8(<char*>str_values[i],
10125  *                                     strlen(<char*>str_values[i]),
10126  */
10127             __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_numpy); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 832, __pyx_L19_except_error)
10128             __Pyx_GOTREF(__pyx_t_12);
10129             __pyx_t_18 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_array); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 832, __pyx_L19_except_error)
10130             __Pyx_GOTREF(__pyx_t_18);
10131             __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
10132             __pyx_t_12 = PyList_New(0); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 832, __pyx_L19_except_error)
10133             __Pyx_GOTREF(__pyx_t_12);
10134 
10135             /* "tables/hdf5extension.pyx":836
10136  *                                     strlen(<char*>str_values[i]),
10137  *                                     NULL)
10138  *                 for i in range(nelements)], "O8")             # <<<<<<<<<<<<<<
10139  *
10140  *           else:
10141  */
10142             __pyx_t_11 = __pyx_v_nelements;
10143             __pyx_t_19 = __pyx_t_11;
10144             for (__pyx_t_20 = 0; __pyx_t_20 < __pyx_t_19; __pyx_t_20+=1) {
10145               __pyx_v_i = __pyx_t_20;
10146 
10147               /* "tables/hdf5extension.pyx":833
10148  *             #    for i in range(nelements), "O8")
10149  *             retvalue = numpy.array([
10150  *               PyUnicode_DecodeUTF8(<char*>str_values[i],             # <<<<<<<<<<<<<<
10151  *                                     strlen(<char*>str_values[i]),
10152  *                                     NULL)
10153  */
10154               __pyx_t_10 = PyUnicode_DecodeUTF8(((char *)(__pyx_v_str_values[__pyx_v_i])), strlen(((char *)(__pyx_v_str_values[__pyx_v_i]))), NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 833, __pyx_L19_except_error)
10155               __Pyx_GOTREF(__pyx_t_10);
10156               if (unlikely(__Pyx_ListComp_Append(__pyx_t_12, (PyObject*)__pyx_t_10))) __PYX_ERR(0, 832, __pyx_L19_except_error)
10157               __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
10158             }
10159             __pyx_t_10 = NULL;
10160             __pyx_t_11 = 0;
10161             if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_18))) {
10162               __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_18);
10163               if (likely(__pyx_t_10)) {
10164                 PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_18);
10165                 __Pyx_INCREF(__pyx_t_10);
10166                 __Pyx_INCREF(function);
10167                 __Pyx_DECREF_SET(__pyx_t_18, function);
10168                 __pyx_t_11 = 1;
10169               }
10170             }
10171             #if CYTHON_FAST_PYCALL
10172             if (PyFunction_Check(__pyx_t_18)) {
10173               PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_t_12, __pyx_n_s_O8};
10174               __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_18, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 832, __pyx_L19_except_error)
10175               __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
10176               __Pyx_GOTREF(__pyx_t_3);
10177               __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
10178             } else
10179             #endif
10180             #if CYTHON_FAST_PYCCALL
10181             if (__Pyx_PyFastCFunction_Check(__pyx_t_18)) {
10182               PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_t_12, __pyx_n_s_O8};
10183               __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_18, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 832, __pyx_L19_except_error)
10184               __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
10185               __Pyx_GOTREF(__pyx_t_3);
10186               __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
10187             } else
10188             #endif
10189             {
10190               __pyx_t_21 = PyTuple_New(2+__pyx_t_11); if (unlikely(!__pyx_t_21)) __PYX_ERR(0, 832, __pyx_L19_except_error)
10191               __Pyx_GOTREF(__pyx_t_21);
10192               if (__pyx_t_10) {
10193                 __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_21, 0, __pyx_t_10); __pyx_t_10 = NULL;
10194               }
10195               __Pyx_GIVEREF(__pyx_t_12);
10196               PyTuple_SET_ITEM(__pyx_t_21, 0+__pyx_t_11, __pyx_t_12);
10197               __Pyx_INCREF(__pyx_n_s_O8);
10198               __Pyx_GIVEREF(__pyx_n_s_O8);
10199               PyTuple_SET_ITEM(__pyx_t_21, 1+__pyx_t_11, __pyx_n_s_O8);
10200               __pyx_t_12 = 0;
10201               __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_18, __pyx_t_21, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 832, __pyx_L19_except_error)
10202               __Pyx_GOTREF(__pyx_t_3);
10203               __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0;
10204             }
10205             __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
10206             __pyx_v_retvalue = __pyx_t_3;
10207             __pyx_t_3 = 0;
10208 
10209             /* "tables/hdf5extension.pyx":826
10210  *
10211  *           # The following generator expressions do not work with Cython 0.15.1
10212  *           if cset == H5T_CSET_UTF8:             # <<<<<<<<<<<<<<
10213  *             #retvalue = numpy.fromiter(
10214  *             #  PyUnicode_DecodeUTF8(<char*>str_values[i],
10215  */
10216             goto __pyx_L31;
10217           }
10218 
10219           /* "tables/hdf5extension.pyx":841
10220  *             #retvalue = numpy.fromiter(
10221  *             #  <char*>str_values[i] for i in range(nelements), "O8")
10222  *             retvalue = numpy.array(             # <<<<<<<<<<<<<<
10223  *               [<char*>str_values[i] for i in range(nelements)], "O8")
10224  *           retvalue.shape = shape
10225  */
10226           /*else*/ {
10227             __Pyx_GetModuleGlobalName(__pyx_t_18, __pyx_n_s_numpy); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 841, __pyx_L19_except_error)
10228             __Pyx_GOTREF(__pyx_t_18);
10229             __pyx_t_21 = __Pyx_PyObject_GetAttrStr(__pyx_t_18, __pyx_n_s_array); if (unlikely(!__pyx_t_21)) __PYX_ERR(0, 841, __pyx_L19_except_error)
10230             __Pyx_GOTREF(__pyx_t_21);
10231             __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
10232 
10233             /* "tables/hdf5extension.pyx":842
10234  *             #  <char*>str_values[i] for i in range(nelements), "O8")
10235  *             retvalue = numpy.array(
10236  *               [<char*>str_values[i] for i in range(nelements)], "O8")             # <<<<<<<<<<<<<<
10237  *           retvalue.shape = shape
10238  *
10239  */
10240             __pyx_t_18 = PyList_New(0); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 842, __pyx_L19_except_error)
10241             __Pyx_GOTREF(__pyx_t_18);
10242             __pyx_t_11 = __pyx_v_nelements;
10243             __pyx_t_19 = __pyx_t_11;
10244             for (__pyx_t_20 = 0; __pyx_t_20 < __pyx_t_19; __pyx_t_20+=1) {
10245               __pyx_v_i = __pyx_t_20;
10246               __pyx_t_12 = __Pyx_PyBytes_FromString(((char *)(__pyx_v_str_values[__pyx_v_i]))); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 842, __pyx_L19_except_error)
10247               __Pyx_GOTREF(__pyx_t_12);
10248               if (unlikely(__Pyx_ListComp_Append(__pyx_t_18, (PyObject*)__pyx_t_12))) __PYX_ERR(0, 842, __pyx_L19_except_error)
10249               __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
10250             }
10251             __pyx_t_12 = NULL;
10252             __pyx_t_11 = 0;
10253             if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_21))) {
10254               __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_21);
10255               if (likely(__pyx_t_12)) {
10256                 PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_21);
10257                 __Pyx_INCREF(__pyx_t_12);
10258                 __Pyx_INCREF(function);
10259                 __Pyx_DECREF_SET(__pyx_t_21, function);
10260                 __pyx_t_11 = 1;
10261               }
10262             }
10263             #if CYTHON_FAST_PYCALL
10264             if (PyFunction_Check(__pyx_t_21)) {
10265               PyObject *__pyx_temp[3] = {__pyx_t_12, __pyx_t_18, __pyx_n_s_O8};
10266               __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_21, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 841, __pyx_L19_except_error)
10267               __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
10268               __Pyx_GOTREF(__pyx_t_3);
10269               __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
10270             } else
10271             #endif
10272             #if CYTHON_FAST_PYCCALL
10273             if (__Pyx_PyFastCFunction_Check(__pyx_t_21)) {
10274               PyObject *__pyx_temp[3] = {__pyx_t_12, __pyx_t_18, __pyx_n_s_O8};
10275               __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_21, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 841, __pyx_L19_except_error)
10276               __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
10277               __Pyx_GOTREF(__pyx_t_3);
10278               __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
10279             } else
10280             #endif
10281             {
10282               __pyx_t_10 = PyTuple_New(2+__pyx_t_11); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 841, __pyx_L19_except_error)
10283               __Pyx_GOTREF(__pyx_t_10);
10284               if (__pyx_t_12) {
10285                 __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_12); __pyx_t_12 = NULL;
10286               }
10287               __Pyx_GIVEREF(__pyx_t_18);
10288               PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_11, __pyx_t_18);
10289               __Pyx_INCREF(__pyx_n_s_O8);
10290               __Pyx_GIVEREF(__pyx_n_s_O8);
10291               PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_11, __pyx_n_s_O8);
10292               __pyx_t_18 = 0;
10293               __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_21, __pyx_t_10, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 841, __pyx_L19_except_error)
10294               __Pyx_GOTREF(__pyx_t_3);
10295               __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
10296             }
10297             __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0;
10298             __pyx_v_retvalue = __pyx_t_3;
10299             __pyx_t_3 = 0;
10300           }
10301           __pyx_L31:;
10302 
10303           /* "tables/hdf5extension.pyx":843
10304  *             retvalue = numpy.array(
10305  *               [<char*>str_values[i] for i in range(nelements)], "O8")
10306  *           retvalue.shape = shape             # <<<<<<<<<<<<<<
10307  *
10308  *           # Important to release attr_value, because it has been malloc'ed!
10309  */
10310           if (__Pyx_PyObject_SetAttrStr(__pyx_v_retvalue, __pyx_n_s_shape, __pyx_v_shape) < 0) __PYX_ERR(0, 843, __pyx_L19_except_error)
10311 
10312           /* "tables/hdf5extension.pyx":846
10313  *
10314  *           # Important to release attr_value, because it has been malloc'ed!
10315  *           for i in range(nelements):             # <<<<<<<<<<<<<<
10316  *             free(str_values[i])
10317  *           free(str_values)
10318  */
10319           __pyx_t_11 = __pyx_v_nelements;
10320           __pyx_t_19 = __pyx_t_11;
10321           for (__pyx_t_20 = 0; __pyx_t_20 < __pyx_t_19; __pyx_t_20+=1) {
10322             __pyx_v_i = __pyx_t_20;
10323 
10324             /* "tables/hdf5extension.pyx":847
10325  *           # Important to release attr_value, because it has been malloc'ed!
10326  *           for i in range(nelements):
10327  *             free(str_values[i])             # <<<<<<<<<<<<<<
10328  *           free(str_values)
10329  *
10330  */
10331             free((__pyx_v_str_values[__pyx_v_i]));
10332           }
10333 
10334           /* "tables/hdf5extension.pyx":848
10335  *           for i in range(nelements):
10336  *             free(str_values[i])
10337  *           free(str_values)             # <<<<<<<<<<<<<<
10338  *
10339  *           return retvalue
10340  */
10341           free(__pyx_v_str_values);
10342 
10343           /* "tables/hdf5extension.pyx":850
10344  *           free(str_values)
10345  *
10346  *           return retvalue             # <<<<<<<<<<<<<<
10347  *
10348  *         # This class is not supported. Instead of raising a TypeError, issue a
10349  */
10350           __Pyx_XDECREF(__pyx_r);
10351           __Pyx_INCREF(__pyx_v_retvalue);
10352           __pyx_r = __pyx_v_retvalue;
10353           __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
10354           __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
10355           __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
10356           goto __pyx_L20_except_return;
10357 
10358           /* "tables/hdf5extension.pyx":818
10359  *         dtype_ = numpy.dtype(stype_, shape_)
10360  *       except TypeError:
10361  *         if class_id == H5T_STRING and H5Tis_variable_str(type_id):             # <<<<<<<<<<<<<<
10362  *           nelements = H5ATTRget_attribute_vlen_string_array(dset_id, cattrname,
10363  *                                                             &str_values, &cset)
10364  */
10365         }
10366 
10367         /* "tables/hdf5extension.pyx":855
10368  *         # warning explaining the problem. This will allow to continue browsing
10369  *         # native HDF5 files, while informing the user about the problem.
10370  *         warnings.warn("Unsupported type for attribute '%s' in node '%s'. "             # <<<<<<<<<<<<<<
10371  *                       "Offending HDF5 class: %d" % (attrname, self.name,
10372  *                                                     class_id), DataTypeWarning)
10373  */
10374         __Pyx_GetModuleGlobalName(__pyx_t_21, __pyx_n_s_warnings); if (unlikely(!__pyx_t_21)) __PYX_ERR(0, 855, __pyx_L19_except_error)
10375         __Pyx_GOTREF(__pyx_t_21);
10376         __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_21, __pyx_n_s_warn); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 855, __pyx_L19_except_error)
10377         __Pyx_GOTREF(__pyx_t_10);
10378         __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0;
10379 
10380         /* "tables/hdf5extension.pyx":857
10381  *         warnings.warn("Unsupported type for attribute '%s' in node '%s'. "
10382  *                       "Offending HDF5 class: %d" % (attrname, self.name,
10383  *                                                     class_id), DataTypeWarning)             # <<<<<<<<<<<<<<
10384  *         self._v_unimplemented.append(attrname)
10385  *         return None
10386  */
10387         __pyx_t_21 = __Pyx_PyInt_From_enum__H5T_class_t(__pyx_v_class_id); if (unlikely(!__pyx_t_21)) __PYX_ERR(0, 857, __pyx_L19_except_error)
10388         __Pyx_GOTREF(__pyx_t_21);
10389 
10390         /* "tables/hdf5extension.pyx":856
10391  *         # native HDF5 files, while informing the user about the problem.
10392  *         warnings.warn("Unsupported type for attribute '%s' in node '%s'. "
10393  *                       "Offending HDF5 class: %d" % (attrname, self.name,             # <<<<<<<<<<<<<<
10394  *                                                     class_id), DataTypeWarning)
10395  *         self._v_unimplemented.append(attrname)
10396  */
10397         __pyx_t_18 = PyTuple_New(3); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 856, __pyx_L19_except_error)
10398         __Pyx_GOTREF(__pyx_t_18);
10399         __Pyx_INCREF(__pyx_v_attrname);
10400         __Pyx_GIVEREF(__pyx_v_attrname);
10401         PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_v_attrname);
10402         __Pyx_INCREF(__pyx_v_self->name);
10403         __Pyx_GIVEREF(__pyx_v_self->name);
10404         PyTuple_SET_ITEM(__pyx_t_18, 1, __pyx_v_self->name);
10405         __Pyx_GIVEREF(__pyx_t_21);
10406         PyTuple_SET_ITEM(__pyx_t_18, 2, __pyx_t_21);
10407         __pyx_t_21 = 0;
10408         __pyx_t_21 = __Pyx_PyString_Format(__pyx_kp_s_Unsupported_type_for_attribute_s, __pyx_t_18); if (unlikely(!__pyx_t_21)) __PYX_ERR(0, 856, __pyx_L19_except_error)
10409         __Pyx_GOTREF(__pyx_t_21);
10410         __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
10411 
10412         /* "tables/hdf5extension.pyx":857
10413  *         warnings.warn("Unsupported type for attribute '%s' in node '%s'. "
10414  *                       "Offending HDF5 class: %d" % (attrname, self.name,
10415  *                                                     class_id), DataTypeWarning)             # <<<<<<<<<<<<<<
10416  *         self._v_unimplemented.append(attrname)
10417  *         return None
10418  */
10419         __Pyx_GetModuleGlobalName(__pyx_t_18, __pyx_n_s_DataTypeWarning); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 857, __pyx_L19_except_error)
10420         __Pyx_GOTREF(__pyx_t_18);
10421         __pyx_t_12 = NULL;
10422         __pyx_t_11 = 0;
10423         if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_10))) {
10424           __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_10);
10425           if (likely(__pyx_t_12)) {
10426             PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
10427             __Pyx_INCREF(__pyx_t_12);
10428             __Pyx_INCREF(function);
10429             __Pyx_DECREF_SET(__pyx_t_10, function);
10430             __pyx_t_11 = 1;
10431           }
10432         }
10433         #if CYTHON_FAST_PYCALL
10434         if (PyFunction_Check(__pyx_t_10)) {
10435           PyObject *__pyx_temp[3] = {__pyx_t_12, __pyx_t_21, __pyx_t_18};
10436           __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 855, __pyx_L19_except_error)
10437           __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
10438           __Pyx_GOTREF(__pyx_t_3);
10439           __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0;
10440           __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
10441         } else
10442         #endif
10443         #if CYTHON_FAST_PYCCALL
10444         if (__Pyx_PyFastCFunction_Check(__pyx_t_10)) {
10445           PyObject *__pyx_temp[3] = {__pyx_t_12, __pyx_t_21, __pyx_t_18};
10446           __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 855, __pyx_L19_except_error)
10447           __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
10448           __Pyx_GOTREF(__pyx_t_3);
10449           __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0;
10450           __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
10451         } else
10452         #endif
10453         {
10454           __pyx_t_22 = PyTuple_New(2+__pyx_t_11); if (unlikely(!__pyx_t_22)) __PYX_ERR(0, 855, __pyx_L19_except_error)
10455           __Pyx_GOTREF(__pyx_t_22);
10456           if (__pyx_t_12) {
10457             __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_22, 0, __pyx_t_12); __pyx_t_12 = NULL;
10458           }
10459           __Pyx_GIVEREF(__pyx_t_21);
10460           PyTuple_SET_ITEM(__pyx_t_22, 0+__pyx_t_11, __pyx_t_21);
10461           __Pyx_GIVEREF(__pyx_t_18);
10462           PyTuple_SET_ITEM(__pyx_t_22, 1+__pyx_t_11, __pyx_t_18);
10463           __pyx_t_21 = 0;
10464           __pyx_t_18 = 0;
10465           __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_22, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 855, __pyx_L19_except_error)
10466           __Pyx_GOTREF(__pyx_t_3);
10467           __Pyx_DECREF(__pyx_t_22); __pyx_t_22 = 0;
10468         }
10469         __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
10470         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
10471 
10472         /* "tables/hdf5extension.pyx":858
10473  *                       "Offending HDF5 class: %d" % (attrname, self.name,
10474  *                                                     class_id), DataTypeWarning)
10475  *         self._v_unimplemented.append(attrname)             # <<<<<<<<<<<<<<
10476  *         return None
10477  *
10478  */
10479         __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_v_unimplemented); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 858, __pyx_L19_except_error)
10480         __Pyx_GOTREF(__pyx_t_3);
10481         __pyx_t_13 = __Pyx_PyObject_Append(__pyx_t_3, __pyx_v_attrname); if (unlikely(__pyx_t_13 == ((int)-1))) __PYX_ERR(0, 858, __pyx_L19_except_error)
10482         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
10483 
10484         /* "tables/hdf5extension.pyx":859
10485  *                                                     class_id), DataTypeWarning)
10486  *         self._v_unimplemented.append(attrname)
10487  *         return None             # <<<<<<<<<<<<<<
10488  *
10489  *     # Get the container for data
10490  */
10491         __Pyx_XDECREF(__pyx_r);
10492         __pyx_r = Py_None; __Pyx_INCREF(Py_None);
10493         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
10494         __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
10495         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
10496         goto __pyx_L20_except_return;
10497       }
10498       goto __pyx_L19_except_error;
10499       __pyx_L19_except_error:;
10500 
10501       /* "tables/hdf5extension.pyx":814
10502  *
10503  *       # Get the NumPy dtype from the type_id
10504  *       try:             # <<<<<<<<<<<<<<
10505  *         stype_, shape_ = hdf5_to_np_ext_type(type_id, pure_numpy_types=True, ptparams=node._v_file.params)
10506  *         dtype_ = numpy.dtype(stype_, shape_)
10507  */
10508       __Pyx_XGIVEREF(__pyx_t_14);
10509       __Pyx_XGIVEREF(__pyx_t_15);
10510       __Pyx_XGIVEREF(__pyx_t_16);
10511       __Pyx_ExceptionReset(__pyx_t_14, __pyx_t_15, __pyx_t_16);
10512       goto __pyx_L1_error;
10513       __pyx_L20_except_return:;
10514       __Pyx_XGIVEREF(__pyx_t_14);
10515       __Pyx_XGIVEREF(__pyx_t_15);
10516       __Pyx_XGIVEREF(__pyx_t_16);
10517       __Pyx_ExceptionReset(__pyx_t_14, __pyx_t_15, __pyx_t_16);
10518       goto __pyx_L0;
10519       __pyx_L22_try_end:;
10520     }
10521   }
10522   __pyx_L4:;
10523 
10524   /* "tables/hdf5extension.pyx":862
10525  *
10526  *     # Get the container for data
10527  *     ndvalue = numpy.empty(dtype=dtype_, shape=shape)             # <<<<<<<<<<<<<<
10528  *     # Get the pointer to the buffer data area
10529  *     rbuf = ndvalue.data
10530  */
10531   __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 862, __pyx_L1_error)
10532   __Pyx_GOTREF(__pyx_t_1);
10533   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 862, __pyx_L1_error)
10534   __Pyx_GOTREF(__pyx_t_2);
10535   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
10536   __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 862, __pyx_L1_error)
10537   __Pyx_GOTREF(__pyx_t_1);
10538   if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_v_dtype_) < 0) __PYX_ERR(0, 862, __pyx_L1_error)
10539   if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_shape, __pyx_v_shape) < 0) __PYX_ERR(0, 862, __pyx_L1_error)
10540   __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 862, __pyx_L1_error)
10541   __Pyx_GOTREF(__pyx_t_7);
10542   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
10543   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
10544   if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 862, __pyx_L1_error)
10545   __pyx_v_ndvalue = ((PyArrayObject *)__pyx_t_7);
10546   __pyx_t_7 = 0;
10547 
10548   /* "tables/hdf5extension.pyx":864
10549  *     ndvalue = numpy.empty(dtype=dtype_, shape=shape)
10550  *     # Get the pointer to the buffer data area
10551  *     rbuf = ndvalue.data             # <<<<<<<<<<<<<<
10552  *     # Actually read the attribute from disk
10553  *     ret = H5ATTRget_attribute(dset_id, cattrname, type_id, rbuf)
10554  */
10555   __pyx_t_4 = __pyx_v_ndvalue->data;
10556   __pyx_v_rbuf = __pyx_t_4;
10557 
10558   /* "tables/hdf5extension.pyx":866
10559  *     rbuf = ndvalue.data
10560  *     # Actually read the attribute from disk
10561  *     ret = H5ATTRget_attribute(dset_id, cattrname, type_id, rbuf)             # <<<<<<<<<<<<<<
10562  *     if ret < 0:
10563  *       raise HDF5ExtError("Attribute %s exists in node %s, but can't get it." %
10564  */
10565   __pyx_v_ret = H5ATTRget_attribute(__pyx_v_dset_id, __pyx_v_cattrname, __pyx_v_type_id, __pyx_v_rbuf);
10566 
10567   /* "tables/hdf5extension.pyx":867
10568  *     # Actually read the attribute from disk
10569  *     ret = H5ATTRget_attribute(dset_id, cattrname, type_id, rbuf)
10570  *     if ret < 0:             # <<<<<<<<<<<<<<
10571  *       raise HDF5ExtError("Attribute %s exists in node %s, but can't get it." %
10572  *                          (attrname, self.name))
10573  */
10574   __pyx_t_9 = ((__pyx_v_ret < 0) != 0);
10575   if (unlikely(__pyx_t_9)) {
10576 
10577     /* "tables/hdf5extension.pyx":868
10578  *     ret = H5ATTRget_attribute(dset_id, cattrname, type_id, rbuf)
10579  *     if ret < 0:
10580  *       raise HDF5ExtError("Attribute %s exists in node %s, but can't get it." %             # <<<<<<<<<<<<<<
10581  *                          (attrname, self.name))
10582  *     H5Tclose(type_id)
10583  */
10584     __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_HDF5ExtError); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 868, __pyx_L1_error)
10585     __Pyx_GOTREF(__pyx_t_1);
10586 
10587     /* "tables/hdf5extension.pyx":869
10588  *     if ret < 0:
10589  *       raise HDF5ExtError("Attribute %s exists in node %s, but can't get it." %
10590  *                          (attrname, self.name))             # <<<<<<<<<<<<<<
10591  *     H5Tclose(type_id)
10592  *
10593  */
10594     __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 869, __pyx_L1_error)
10595     __Pyx_GOTREF(__pyx_t_2);
10596     __Pyx_INCREF(__pyx_v_attrname);
10597     __Pyx_GIVEREF(__pyx_v_attrname);
10598     PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_attrname);
10599     __Pyx_INCREF(__pyx_v_self->name);
10600     __Pyx_GIVEREF(__pyx_v_self->name);
10601     PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_self->name);
10602 
10603     /* "tables/hdf5extension.pyx":868
10604  *     ret = H5ATTRget_attribute(dset_id, cattrname, type_id, rbuf)
10605  *     if ret < 0:
10606  *       raise HDF5ExtError("Attribute %s exists in node %s, but can't get it." %             # <<<<<<<<<<<<<<
10607  *                          (attrname, self.name))
10608  *     H5Tclose(type_id)
10609  */
10610     __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_Attribute_s_exists_in_node_s_but, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 868, __pyx_L1_error)
10611     __Pyx_GOTREF(__pyx_t_3);
10612     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
10613     __pyx_t_2 = NULL;
10614     if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
10615       __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1);
10616       if (likely(__pyx_t_2)) {
10617         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
10618         __Pyx_INCREF(__pyx_t_2);
10619         __Pyx_INCREF(function);
10620         __Pyx_DECREF_SET(__pyx_t_1, function);
10621       }
10622     }
10623     __pyx_t_7 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_3);
10624     __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
10625     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
10626     if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 868, __pyx_L1_error)
10627     __Pyx_GOTREF(__pyx_t_7);
10628     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
10629     __Pyx_Raise(__pyx_t_7, 0, 0, 0);
10630     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
10631     __PYX_ERR(0, 868, __pyx_L1_error)
10632 
10633     /* "tables/hdf5extension.pyx":867
10634  *     # Actually read the attribute from disk
10635  *     ret = H5ATTRget_attribute(dset_id, cattrname, type_id, rbuf)
10636  *     if ret < 0:             # <<<<<<<<<<<<<<
10637  *       raise HDF5ExtError("Attribute %s exists in node %s, but can't get it." %
10638  *                          (attrname, self.name))
10639  */
10640   }
10641 
10642   /* "tables/hdf5extension.pyx":870
10643  *       raise HDF5ExtError("Attribute %s exists in node %s, but can't get it." %
10644  *                          (attrname, self.name))
10645  *     H5Tclose(type_id)             # <<<<<<<<<<<<<<
10646  *
10647  *     if rank > 0:    # multidimensional case
10648  */
10649   (void)(H5Tclose(__pyx_v_type_id));
10650 
10651   /* "tables/hdf5extension.pyx":872
10652  *     H5Tclose(type_id)
10653  *
10654  *     if rank > 0:    # multidimensional case             # <<<<<<<<<<<<<<
10655  *       retvalue = ndvalue
10656  *     else:
10657  */
10658   __pyx_t_9 = ((__pyx_v_rank > 0) != 0);
10659   if (__pyx_t_9) {
10660 
10661     /* "tables/hdf5extension.pyx":873
10662  *
10663  *     if rank > 0:    # multidimensional case
10664  *       retvalue = ndvalue             # <<<<<<<<<<<<<<
10665  *     else:
10666  *       retvalue = ndvalue[()]   # 0-dim ndarray becomes a NumPy scalar
10667  */
10668     __Pyx_INCREF(((PyObject *)__pyx_v_ndvalue));
10669     __pyx_v_retvalue = ((PyObject *)__pyx_v_ndvalue);
10670 
10671     /* "tables/hdf5extension.pyx":872
10672  *     H5Tclose(type_id)
10673  *
10674  *     if rank > 0:    # multidimensional case             # <<<<<<<<<<<<<<
10675  *       retvalue = ndvalue
10676  *     else:
10677  */
10678     goto __pyx_L39;
10679   }
10680 
10681   /* "tables/hdf5extension.pyx":875
10682  *       retvalue = ndvalue
10683  *     else:
10684  *       retvalue = ndvalue[()]   # 0-dim ndarray becomes a NumPy scalar             # <<<<<<<<<<<<<<
10685  *
10686  *     return retvalue
10687  */
10688   /*else*/ {
10689     __pyx_t_7 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_ndvalue), __pyx_empty_tuple); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 875, __pyx_L1_error)
10690     __Pyx_GOTREF(__pyx_t_7);
10691     __pyx_v_retvalue = __pyx_t_7;
10692     __pyx_t_7 = 0;
10693   }
10694   __pyx_L39:;
10695 
10696   /* "tables/hdf5extension.pyx":877
10697  *       retvalue = ndvalue[()]   # 0-dim ndarray becomes a NumPy scalar
10698  *
10699  *     return retvalue             # <<<<<<<<<<<<<<
10700  *
10701  *
10702  */
10703   __Pyx_XDECREF(__pyx_r);
10704   __Pyx_INCREF(__pyx_v_retvalue);
10705   __pyx_r = __pyx_v_retvalue;
10706   goto __pyx_L0;
10707 
10708   /* "tables/hdf5extension.pyx":722
10709  *
10710  *   # Get attributes
10711  *   def _g_getattr(self, node, attrname):             # <<<<<<<<<<<<<<
10712  *     """Get HDF5 attributes and retrieve them as NumPy objects.
10713  *
10714  */
10715 
10716   /* function exit code */
10717   __pyx_L1_error:;
10718   __Pyx_XDECREF(__pyx_t_1);
10719   __Pyx_XDECREF(__pyx_t_2);
10720   __Pyx_XDECREF(__pyx_t_3);
10721   __Pyx_XDECREF(__pyx_t_7);
10722   __Pyx_XDECREF(__pyx_t_10);
10723   __Pyx_XDECREF(__pyx_t_12);
10724   __Pyx_XDECREF(__pyx_t_18);
10725   __Pyx_XDECREF(__pyx_t_21);
10726   __Pyx_XDECREF(__pyx_t_22);
10727   __Pyx_AddTraceback("tables.hdf5extension.AttributeSet._g_getattr", __pyx_clineno, __pyx_lineno, __pyx_filename);
10728   __pyx_r = NULL;
10729   __pyx_L0:;
10730   __Pyx_XDECREF((PyObject *)__pyx_v_ndvalue);
10731   __Pyx_XDECREF(__pyx_v_shape);
10732   __Pyx_XDECREF(__pyx_v_retvalue);
10733   __Pyx_XDECREF(__pyx_v_encoded_attrname);
10734   __Pyx_XDECREF(__pyx_v_dtype_);
10735   __Pyx_XDECREF(__pyx_v_stype_);
10736   __Pyx_XDECREF(__pyx_v_shape_);
10737   __Pyx_XGIVEREF(__pyx_r);
10738   __Pyx_RefNannyFinishContext();
10739   return __pyx_r;
10740 }
10741 
10742 /* "tables/hdf5extension.pyx":880
10743  *
10744  *
10745  *   def _g_remove(self, node, attrname):             # <<<<<<<<<<<<<<
10746  *     cdef int ret
10747  *     cdef hid_t dset_id
10748  */
10749 
10750 /* Python wrapper */
10751 static PyObject *__pyx_pw_6tables_13hdf5extension_12AttributeSet_9_g_remove(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
__pyx_pw_6tables_13hdf5extension_12AttributeSet_9_g_remove(PyObject * __pyx_v_self,PyObject * __pyx_args,PyObject * __pyx_kwds)10752 static PyObject *__pyx_pw_6tables_13hdf5extension_12AttributeSet_9_g_remove(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
10753   PyObject *__pyx_v_node = 0;
10754   PyObject *__pyx_v_attrname = 0;
10755   PyObject *__pyx_r = 0;
10756   __Pyx_RefNannyDeclarations
10757   __Pyx_RefNannySetupContext("_g_remove (wrapper)", 0);
10758   {
10759     static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_node,&__pyx_n_s_attrname,0};
10760     PyObject* values[2] = {0,0};
10761     if (unlikely(__pyx_kwds)) {
10762       Py_ssize_t kw_args;
10763       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
10764       switch (pos_args) {
10765         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
10766         CYTHON_FALLTHROUGH;
10767         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
10768         CYTHON_FALLTHROUGH;
10769         case  0: break;
10770         default: goto __pyx_L5_argtuple_error;
10771       }
10772       kw_args = PyDict_Size(__pyx_kwds);
10773       switch (pos_args) {
10774         case  0:
10775         if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_node)) != 0)) kw_args--;
10776         else goto __pyx_L5_argtuple_error;
10777         CYTHON_FALLTHROUGH;
10778         case  1:
10779         if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_attrname)) != 0)) kw_args--;
10780         else {
10781           __Pyx_RaiseArgtupleInvalid("_g_remove", 1, 2, 2, 1); __PYX_ERR(0, 880, __pyx_L3_error)
10782         }
10783       }
10784       if (unlikely(kw_args > 0)) {
10785         if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_g_remove") < 0)) __PYX_ERR(0, 880, __pyx_L3_error)
10786       }
10787     } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
10788       goto __pyx_L5_argtuple_error;
10789     } else {
10790       values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
10791       values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
10792     }
10793     __pyx_v_node = values[0];
10794     __pyx_v_attrname = values[1];
10795   }
10796   goto __pyx_L4_argument_unpacking_done;
10797   __pyx_L5_argtuple_error:;
10798   __Pyx_RaiseArgtupleInvalid("_g_remove", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 880, __pyx_L3_error)
10799   __pyx_L3_error:;
10800   __Pyx_AddTraceback("tables.hdf5extension.AttributeSet._g_remove", __pyx_clineno, __pyx_lineno, __pyx_filename);
10801   __Pyx_RefNannyFinishContext();
10802   return NULL;
10803   __pyx_L4_argument_unpacking_done:;
10804   __pyx_r = __pyx_pf_6tables_13hdf5extension_12AttributeSet_8_g_remove(((struct __pyx_obj_6tables_13hdf5extension_AttributeSet *)__pyx_v_self), __pyx_v_node, __pyx_v_attrname);
10805 
10806   /* function exit code */
10807   __Pyx_RefNannyFinishContext();
10808   return __pyx_r;
10809 }
10810 
__pyx_pf_6tables_13hdf5extension_12AttributeSet_8_g_remove(struct __pyx_obj_6tables_13hdf5extension_AttributeSet * __pyx_v_self,PyObject * __pyx_v_node,PyObject * __pyx_v_attrname)10811 static PyObject *__pyx_pf_6tables_13hdf5extension_12AttributeSet_8_g_remove(struct __pyx_obj_6tables_13hdf5extension_AttributeSet *__pyx_v_self, PyObject *__pyx_v_node, PyObject *__pyx_v_attrname) {
10812   int __pyx_v_ret;
10813   hid_t __pyx_v_dset_id;
10814   char *__pyx_v_cattrname;
10815   PyObject *__pyx_v_encoded_attrname = 0;
10816   PyObject *__pyx_r = NULL;
10817   __Pyx_RefNannyDeclarations
10818   PyObject *__pyx_t_1 = NULL;
10819   PyObject *__pyx_t_2 = NULL;
10820   PyObject *__pyx_t_3 = NULL;
10821   char *__pyx_t_4;
10822   hid_t __pyx_t_5;
10823   int __pyx_t_6;
10824   PyObject *__pyx_t_7 = NULL;
10825   __Pyx_RefNannySetupContext("_g_remove", 0);
10826 
10827   /* "tables/hdf5extension.pyx":883
10828  *     cdef int ret
10829  *     cdef hid_t dset_id
10830  *     cdef char *cattrname = NULL             # <<<<<<<<<<<<<<
10831  *     cdef bytes encoded_attrname
10832  *
10833  */
10834   __pyx_v_cattrname = NULL;
10835 
10836   /* "tables/hdf5extension.pyx":886
10837  *     cdef bytes encoded_attrname
10838  *
10839  *     encoded_attrname = attrname.encode('utf-8')             # <<<<<<<<<<<<<<
10840  *     # Get the C pointer
10841  *     cattrname = encoded_attrname
10842  */
10843   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_attrname, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 886, __pyx_L1_error)
10844   __Pyx_GOTREF(__pyx_t_2);
10845   __pyx_t_3 = NULL;
10846   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
10847     __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
10848     if (likely(__pyx_t_3)) {
10849       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
10850       __Pyx_INCREF(__pyx_t_3);
10851       __Pyx_INCREF(function);
10852       __Pyx_DECREF_SET(__pyx_t_2, function);
10853     }
10854   }
10855   __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_kp_s_utf_8) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_kp_s_utf_8);
10856   __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
10857   if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 886, __pyx_L1_error)
10858   __Pyx_GOTREF(__pyx_t_1);
10859   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
10860   if (!(likely(PyBytes_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 886, __pyx_L1_error)
10861   __pyx_v_encoded_attrname = ((PyObject*)__pyx_t_1);
10862   __pyx_t_1 = 0;
10863 
10864   /* "tables/hdf5extension.pyx":888
10865  *     encoded_attrname = attrname.encode('utf-8')
10866  *     # Get the C pointer
10867  *     cattrname = encoded_attrname             # <<<<<<<<<<<<<<
10868  *
10869  *     # The dataset id of the node
10870  */
10871   if (unlikely(__pyx_v_encoded_attrname == Py_None)) {
10872     PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
10873     __PYX_ERR(0, 888, __pyx_L1_error)
10874   }
10875   __pyx_t_4 = __Pyx_PyBytes_AsWritableString(__pyx_v_encoded_attrname); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 888, __pyx_L1_error)
10876   __pyx_v_cattrname = __pyx_t_4;
10877 
10878   /* "tables/hdf5extension.pyx":891
10879  *
10880  *     # The dataset id of the node
10881  *     dset_id = node._v_objectid             # <<<<<<<<<<<<<<
10882  *
10883  *     ret = H5Adelete(dset_id, cattrname)
10884  */
10885   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_node, __pyx_n_s_v_objectid); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 891, __pyx_L1_error)
10886   __Pyx_GOTREF(__pyx_t_1);
10887   __pyx_t_5 = __Pyx_PyInt_As_hid_t(__pyx_t_1); if (unlikely((__pyx_t_5 == ((hid_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 891, __pyx_L1_error)
10888   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
10889   __pyx_v_dset_id = __pyx_t_5;
10890 
10891   /* "tables/hdf5extension.pyx":893
10892  *     dset_id = node._v_objectid
10893  *
10894  *     ret = H5Adelete(dset_id, cattrname)             # <<<<<<<<<<<<<<
10895  *     if ret < 0:
10896  *       raise HDF5ExtError("Attribute '%s' exists in node '%s', but cannot be "
10897  */
10898   __pyx_v_ret = H5Adelete(__pyx_v_dset_id, __pyx_v_cattrname);
10899 
10900   /* "tables/hdf5extension.pyx":894
10901  *
10902  *     ret = H5Adelete(dset_id, cattrname)
10903  *     if ret < 0:             # <<<<<<<<<<<<<<
10904  *       raise HDF5ExtError("Attribute '%s' exists in node '%s', but cannot be "
10905  *                          "deleted." % (attrname, self.name))
10906  */
10907   __pyx_t_6 = ((__pyx_v_ret < 0) != 0);
10908   if (unlikely(__pyx_t_6)) {
10909 
10910     /* "tables/hdf5extension.pyx":895
10911  *     ret = H5Adelete(dset_id, cattrname)
10912  *     if ret < 0:
10913  *       raise HDF5ExtError("Attribute '%s' exists in node '%s', but cannot be "             # <<<<<<<<<<<<<<
10914  *                          "deleted." % (attrname, self.name))
10915  *
10916  */
10917     __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_HDF5ExtError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 895, __pyx_L1_error)
10918     __Pyx_GOTREF(__pyx_t_2);
10919 
10920     /* "tables/hdf5extension.pyx":896
10921  *     if ret < 0:
10922  *       raise HDF5ExtError("Attribute '%s' exists in node '%s', but cannot be "
10923  *                          "deleted." % (attrname, self.name))             # <<<<<<<<<<<<<<
10924  *
10925  *
10926  */
10927     __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 896, __pyx_L1_error)
10928     __Pyx_GOTREF(__pyx_t_3);
10929     __Pyx_INCREF(__pyx_v_attrname);
10930     __Pyx_GIVEREF(__pyx_v_attrname);
10931     PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_attrname);
10932     __Pyx_INCREF(__pyx_v_self->name);
10933     __Pyx_GIVEREF(__pyx_v_self->name);
10934     PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_self->name);
10935     __pyx_t_7 = __Pyx_PyString_Format(__pyx_kp_s_Attribute_s_exists_in_node_s_but_2, __pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 896, __pyx_L1_error)
10936     __Pyx_GOTREF(__pyx_t_7);
10937     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
10938     __pyx_t_3 = NULL;
10939     if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
10940       __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
10941       if (likely(__pyx_t_3)) {
10942         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
10943         __Pyx_INCREF(__pyx_t_3);
10944         __Pyx_INCREF(function);
10945         __Pyx_DECREF_SET(__pyx_t_2, function);
10946       }
10947     }
10948     __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_7);
10949     __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
10950     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
10951     if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 895, __pyx_L1_error)
10952     __Pyx_GOTREF(__pyx_t_1);
10953     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
10954     __Pyx_Raise(__pyx_t_1, 0, 0, 0);
10955     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
10956     __PYX_ERR(0, 895, __pyx_L1_error)
10957 
10958     /* "tables/hdf5extension.pyx":894
10959  *
10960  *     ret = H5Adelete(dset_id, cattrname)
10961  *     if ret < 0:             # <<<<<<<<<<<<<<
10962  *       raise HDF5ExtError("Attribute '%s' exists in node '%s', but cannot be "
10963  *                          "deleted." % (attrname, self.name))
10964  */
10965   }
10966 
10967   /* "tables/hdf5extension.pyx":880
10968  *
10969  *
10970  *   def _g_remove(self, node, attrname):             # <<<<<<<<<<<<<<
10971  *     cdef int ret
10972  *     cdef hid_t dset_id
10973  */
10974 
10975   /* function exit code */
10976   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
10977   goto __pyx_L0;
10978   __pyx_L1_error:;
10979   __Pyx_XDECREF(__pyx_t_1);
10980   __Pyx_XDECREF(__pyx_t_2);
10981   __Pyx_XDECREF(__pyx_t_3);
10982   __Pyx_XDECREF(__pyx_t_7);
10983   __Pyx_AddTraceback("tables.hdf5extension.AttributeSet._g_remove", __pyx_clineno, __pyx_lineno, __pyx_filename);
10984   __pyx_r = NULL;
10985   __pyx_L0:;
10986   __Pyx_XDECREF(__pyx_v_encoded_attrname);
10987   __Pyx_XGIVEREF(__pyx_r);
10988   __Pyx_RefNannyFinishContext();
10989   return __pyx_r;
10990 }
10991 
10992 /* "(tree fragment)":1
10993  * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
10994  *     cdef tuple state
10995  *     cdef object _dict
10996  */
10997 
10998 /* Python wrapper */
10999 static PyObject *__pyx_pw_6tables_13hdf5extension_12AttributeSet_11__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
__pyx_pw_6tables_13hdf5extension_12AttributeSet_11__reduce_cython__(PyObject * __pyx_v_self,CYTHON_UNUSED PyObject * unused)11000 static PyObject *__pyx_pw_6tables_13hdf5extension_12AttributeSet_11__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
11001   PyObject *__pyx_r = 0;
11002   __Pyx_RefNannyDeclarations
11003   __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
11004   __pyx_r = __pyx_pf_6tables_13hdf5extension_12AttributeSet_10__reduce_cython__(((struct __pyx_obj_6tables_13hdf5extension_AttributeSet *)__pyx_v_self));
11005 
11006   /* function exit code */
11007   __Pyx_RefNannyFinishContext();
11008   return __pyx_r;
11009 }
11010 
__pyx_pf_6tables_13hdf5extension_12AttributeSet_10__reduce_cython__(struct __pyx_obj_6tables_13hdf5extension_AttributeSet * __pyx_v_self)11011 static PyObject *__pyx_pf_6tables_13hdf5extension_12AttributeSet_10__reduce_cython__(struct __pyx_obj_6tables_13hdf5extension_AttributeSet *__pyx_v_self) {
11012   PyObject *__pyx_v_state = 0;
11013   PyObject *__pyx_v__dict = 0;
11014   int __pyx_v_use_setstate;
11015   PyObject *__pyx_r = NULL;
11016   __Pyx_RefNannyDeclarations
11017   PyObject *__pyx_t_1 = NULL;
11018   int __pyx_t_2;
11019   int __pyx_t_3;
11020   PyObject *__pyx_t_4 = NULL;
11021   PyObject *__pyx_t_5 = NULL;
11022   __Pyx_RefNannySetupContext("__reduce_cython__", 0);
11023 
11024   /* "(tree fragment)":5
11025  *     cdef object _dict
11026  *     cdef bint use_setstate
11027  *     state = (self.name,)             # <<<<<<<<<<<<<<
11028  *     _dict = getattr(self, '__dict__', None)
11029  *     if _dict is not None:
11030  */
11031   __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
11032   __Pyx_GOTREF(__pyx_t_1);
11033   __Pyx_INCREF(__pyx_v_self->name);
11034   __Pyx_GIVEREF(__pyx_v_self->name);
11035   PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self->name);
11036   __pyx_v_state = ((PyObject*)__pyx_t_1);
11037   __pyx_t_1 = 0;
11038 
11039   /* "(tree fragment)":6
11040  *     cdef bint use_setstate
11041  *     state = (self.name,)
11042  *     _dict = getattr(self, '__dict__', None)             # <<<<<<<<<<<<<<
11043  *     if _dict is not None:
11044  *         state += (_dict,)
11045  */
11046   __pyx_t_1 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 6, __pyx_L1_error)
11047   __Pyx_GOTREF(__pyx_t_1);
11048   __pyx_v__dict = __pyx_t_1;
11049   __pyx_t_1 = 0;
11050 
11051   /* "(tree fragment)":7
11052  *     state = (self.name,)
11053  *     _dict = getattr(self, '__dict__', None)
11054  *     if _dict is not None:             # <<<<<<<<<<<<<<
11055  *         state += (_dict,)
11056  *         use_setstate = True
11057  */
11058   __pyx_t_2 = (__pyx_v__dict != Py_None);
11059   __pyx_t_3 = (__pyx_t_2 != 0);
11060   if (__pyx_t_3) {
11061 
11062     /* "(tree fragment)":8
11063  *     _dict = getattr(self, '__dict__', None)
11064  *     if _dict is not None:
11065  *         state += (_dict,)             # <<<<<<<<<<<<<<
11066  *         use_setstate = True
11067  *     else:
11068  */
11069     __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 8, __pyx_L1_error)
11070     __Pyx_GOTREF(__pyx_t_1);
11071     __Pyx_INCREF(__pyx_v__dict);
11072     __Pyx_GIVEREF(__pyx_v__dict);
11073     PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v__dict);
11074     __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 8, __pyx_L1_error)
11075     __Pyx_GOTREF(__pyx_t_4);
11076     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11077     __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_4));
11078     __pyx_t_4 = 0;
11079 
11080     /* "(tree fragment)":9
11081  *     if _dict is not None:
11082  *         state += (_dict,)
11083  *         use_setstate = True             # <<<<<<<<<<<<<<
11084  *     else:
11085  *         use_setstate = self.name is not None
11086  */
11087     __pyx_v_use_setstate = 1;
11088 
11089     /* "(tree fragment)":7
11090  *     state = (self.name,)
11091  *     _dict = getattr(self, '__dict__', None)
11092  *     if _dict is not None:             # <<<<<<<<<<<<<<
11093  *         state += (_dict,)
11094  *         use_setstate = True
11095  */
11096     goto __pyx_L3;
11097   }
11098 
11099   /* "(tree fragment)":11
11100  *         use_setstate = True
11101  *     else:
11102  *         use_setstate = self.name is not None             # <<<<<<<<<<<<<<
11103  *     if use_setstate:
11104  *         return __pyx_unpickle_AttributeSet, (type(self), 0xb068931, None), state
11105  */
11106   /*else*/ {
11107     __pyx_t_3 = (__pyx_v_self->name != Py_None);
11108     __pyx_v_use_setstate = __pyx_t_3;
11109   }
11110   __pyx_L3:;
11111 
11112   /* "(tree fragment)":12
11113  *     else:
11114  *         use_setstate = self.name is not None
11115  *     if use_setstate:             # <<<<<<<<<<<<<<
11116  *         return __pyx_unpickle_AttributeSet, (type(self), 0xb068931, None), state
11117  *     else:
11118  */
11119   __pyx_t_3 = (__pyx_v_use_setstate != 0);
11120   if (__pyx_t_3) {
11121 
11122     /* "(tree fragment)":13
11123  *         use_setstate = self.name is not None
11124  *     if use_setstate:
11125  *         return __pyx_unpickle_AttributeSet, (type(self), 0xb068931, None), state             # <<<<<<<<<<<<<<
11126  *     else:
11127  *         return __pyx_unpickle_AttributeSet, (type(self), 0xb068931, state)
11128  */
11129     __Pyx_XDECREF(__pyx_r);
11130     __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pyx_unpickle_AttributeSet); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 13, __pyx_L1_error)
11131     __Pyx_GOTREF(__pyx_t_4);
11132     __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
11133     __Pyx_GOTREF(__pyx_t_1);
11134     __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
11135     __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
11136     PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
11137     __Pyx_INCREF(__pyx_int_184977713);
11138     __Pyx_GIVEREF(__pyx_int_184977713);
11139     PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_184977713);
11140     __Pyx_INCREF(Py_None);
11141     __Pyx_GIVEREF(Py_None);
11142     PyTuple_SET_ITEM(__pyx_t_1, 2, Py_None);
11143     __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 13, __pyx_L1_error)
11144     __Pyx_GOTREF(__pyx_t_5);
11145     __Pyx_GIVEREF(__pyx_t_4);
11146     PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
11147     __Pyx_GIVEREF(__pyx_t_1);
11148     PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_1);
11149     __Pyx_INCREF(__pyx_v_state);
11150     __Pyx_GIVEREF(__pyx_v_state);
11151     PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_state);
11152     __pyx_t_4 = 0;
11153     __pyx_t_1 = 0;
11154     __pyx_r = __pyx_t_5;
11155     __pyx_t_5 = 0;
11156     goto __pyx_L0;
11157 
11158     /* "(tree fragment)":12
11159  *     else:
11160  *         use_setstate = self.name is not None
11161  *     if use_setstate:             # <<<<<<<<<<<<<<
11162  *         return __pyx_unpickle_AttributeSet, (type(self), 0xb068931, None), state
11163  *     else:
11164  */
11165   }
11166 
11167   /* "(tree fragment)":15
11168  *         return __pyx_unpickle_AttributeSet, (type(self), 0xb068931, None), state
11169  *     else:
11170  *         return __pyx_unpickle_AttributeSet, (type(self), 0xb068931, state)             # <<<<<<<<<<<<<<
11171  * def __setstate_cython__(self, __pyx_state):
11172  *     __pyx_unpickle_AttributeSet__set_state(self, __pyx_state)
11173  */
11174   /*else*/ {
11175     __Pyx_XDECREF(__pyx_r);
11176     __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyx_unpickle_AttributeSet); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 15, __pyx_L1_error)
11177     __Pyx_GOTREF(__pyx_t_5);
11178     __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error)
11179     __Pyx_GOTREF(__pyx_t_1);
11180     __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
11181     __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
11182     PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
11183     __Pyx_INCREF(__pyx_int_184977713);
11184     __Pyx_GIVEREF(__pyx_int_184977713);
11185     PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_184977713);
11186     __Pyx_INCREF(__pyx_v_state);
11187     __Pyx_GIVEREF(__pyx_v_state);
11188     PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state);
11189     __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 15, __pyx_L1_error)
11190     __Pyx_GOTREF(__pyx_t_4);
11191     __Pyx_GIVEREF(__pyx_t_5);
11192     PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5);
11193     __Pyx_GIVEREF(__pyx_t_1);
11194     PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1);
11195     __pyx_t_5 = 0;
11196     __pyx_t_1 = 0;
11197     __pyx_r = __pyx_t_4;
11198     __pyx_t_4 = 0;
11199     goto __pyx_L0;
11200   }
11201 
11202   /* "(tree fragment)":1
11203  * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
11204  *     cdef tuple state
11205  *     cdef object _dict
11206  */
11207 
11208   /* function exit code */
11209   __pyx_L1_error:;
11210   __Pyx_XDECREF(__pyx_t_1);
11211   __Pyx_XDECREF(__pyx_t_4);
11212   __Pyx_XDECREF(__pyx_t_5);
11213   __Pyx_AddTraceback("tables.hdf5extension.AttributeSet.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
11214   __pyx_r = NULL;
11215   __pyx_L0:;
11216   __Pyx_XDECREF(__pyx_v_state);
11217   __Pyx_XDECREF(__pyx_v__dict);
11218   __Pyx_XGIVEREF(__pyx_r);
11219   __Pyx_RefNannyFinishContext();
11220   return __pyx_r;
11221 }
11222 
11223 /* "(tree fragment)":16
11224  *     else:
11225  *         return __pyx_unpickle_AttributeSet, (type(self), 0xb068931, state)
11226  * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
11227  *     __pyx_unpickle_AttributeSet__set_state(self, __pyx_state)
11228  */
11229 
11230 /* Python wrapper */
11231 static PyObject *__pyx_pw_6tables_13hdf5extension_12AttributeSet_13__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
__pyx_pw_6tables_13hdf5extension_12AttributeSet_13__setstate_cython__(PyObject * __pyx_v_self,PyObject * __pyx_v___pyx_state)11232 static PyObject *__pyx_pw_6tables_13hdf5extension_12AttributeSet_13__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
11233   PyObject *__pyx_r = 0;
11234   __Pyx_RefNannyDeclarations
11235   __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
11236   __pyx_r = __pyx_pf_6tables_13hdf5extension_12AttributeSet_12__setstate_cython__(((struct __pyx_obj_6tables_13hdf5extension_AttributeSet *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));
11237 
11238   /* function exit code */
11239   __Pyx_RefNannyFinishContext();
11240   return __pyx_r;
11241 }
11242 
__pyx_pf_6tables_13hdf5extension_12AttributeSet_12__setstate_cython__(struct __pyx_obj_6tables_13hdf5extension_AttributeSet * __pyx_v_self,PyObject * __pyx_v___pyx_state)11243 static PyObject *__pyx_pf_6tables_13hdf5extension_12AttributeSet_12__setstate_cython__(struct __pyx_obj_6tables_13hdf5extension_AttributeSet *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
11244   PyObject *__pyx_r = NULL;
11245   __Pyx_RefNannyDeclarations
11246   PyObject *__pyx_t_1 = NULL;
11247   __Pyx_RefNannySetupContext("__setstate_cython__", 0);
11248 
11249   /* "(tree fragment)":17
11250  *         return __pyx_unpickle_AttributeSet, (type(self), 0xb068931, state)
11251  * def __setstate_cython__(self, __pyx_state):
11252  *     __pyx_unpickle_AttributeSet__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
11253  */
11254   if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error)
11255   __pyx_t_1 = __pyx_f_6tables_13hdf5extension___pyx_unpickle_AttributeSet__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error)
11256   __Pyx_GOTREF(__pyx_t_1);
11257   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11258 
11259   /* "(tree fragment)":16
11260  *     else:
11261  *         return __pyx_unpickle_AttributeSet, (type(self), 0xb068931, state)
11262  * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
11263  *     __pyx_unpickle_AttributeSet__set_state(self, __pyx_state)
11264  */
11265 
11266   /* function exit code */
11267   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
11268   goto __pyx_L0;
11269   __pyx_L1_error:;
11270   __Pyx_XDECREF(__pyx_t_1);
11271   __Pyx_AddTraceback("tables.hdf5extension.AttributeSet.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
11272   __pyx_r = NULL;
11273   __pyx_L0:;
11274   __Pyx_XGIVEREF(__pyx_r);
11275   __Pyx_RefNannyFinishContext();
11276   return __pyx_r;
11277 }
11278 
11279 /* "tables/hdf5extension.pyx":902
11280  *   # Instance variables declared in .pxd
11281  *
11282  *   def _g_new(self, where, name, init):             # <<<<<<<<<<<<<<
11283  *     self.name = name
11284  *     # """The name of this node in its parent group."""
11285  */
11286 
11287 /* Python wrapper */
11288 static PyObject *__pyx_pw_6tables_13hdf5extension_4Node_1_g_new(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
__pyx_pw_6tables_13hdf5extension_4Node_1_g_new(PyObject * __pyx_v_self,PyObject * __pyx_args,PyObject * __pyx_kwds)11289 static PyObject *__pyx_pw_6tables_13hdf5extension_4Node_1_g_new(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
11290   PyObject *__pyx_v_where = 0;
11291   PyObject *__pyx_v_name = 0;
11292   CYTHON_UNUSED PyObject *__pyx_v_init = 0;
11293   PyObject *__pyx_r = 0;
11294   __Pyx_RefNannyDeclarations
11295   __Pyx_RefNannySetupContext("_g_new (wrapper)", 0);
11296   {
11297     static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_where,&__pyx_n_s_name,&__pyx_n_s_init,0};
11298     PyObject* values[3] = {0,0,0};
11299     if (unlikely(__pyx_kwds)) {
11300       Py_ssize_t kw_args;
11301       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
11302       switch (pos_args) {
11303         case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
11304         CYTHON_FALLTHROUGH;
11305         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
11306         CYTHON_FALLTHROUGH;
11307         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
11308         CYTHON_FALLTHROUGH;
11309         case  0: break;
11310         default: goto __pyx_L5_argtuple_error;
11311       }
11312       kw_args = PyDict_Size(__pyx_kwds);
11313       switch (pos_args) {
11314         case  0:
11315         if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_where)) != 0)) kw_args--;
11316         else goto __pyx_L5_argtuple_error;
11317         CYTHON_FALLTHROUGH;
11318         case  1:
11319         if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
11320         else {
11321           __Pyx_RaiseArgtupleInvalid("_g_new", 1, 3, 3, 1); __PYX_ERR(0, 902, __pyx_L3_error)
11322         }
11323         CYTHON_FALLTHROUGH;
11324         case  2:
11325         if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_init)) != 0)) kw_args--;
11326         else {
11327           __Pyx_RaiseArgtupleInvalid("_g_new", 1, 3, 3, 2); __PYX_ERR(0, 902, __pyx_L3_error)
11328         }
11329       }
11330       if (unlikely(kw_args > 0)) {
11331         if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_g_new") < 0)) __PYX_ERR(0, 902, __pyx_L3_error)
11332       }
11333     } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
11334       goto __pyx_L5_argtuple_error;
11335     } else {
11336       values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
11337       values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
11338       values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
11339     }
11340     __pyx_v_where = values[0];
11341     __pyx_v_name = values[1];
11342     __pyx_v_init = values[2];
11343   }
11344   goto __pyx_L4_argument_unpacking_done;
11345   __pyx_L5_argtuple_error:;
11346   __Pyx_RaiseArgtupleInvalid("_g_new", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 902, __pyx_L3_error)
11347   __pyx_L3_error:;
11348   __Pyx_AddTraceback("tables.hdf5extension.Node._g_new", __pyx_clineno, __pyx_lineno, __pyx_filename);
11349   __Pyx_RefNannyFinishContext();
11350   return NULL;
11351   __pyx_L4_argument_unpacking_done:;
11352   __pyx_r = __pyx_pf_6tables_13hdf5extension_4Node__g_new(((struct __pyx_obj_6tables_13hdf5extension_Node *)__pyx_v_self), __pyx_v_where, __pyx_v_name, __pyx_v_init);
11353 
11354   /* function exit code */
11355   __Pyx_RefNannyFinishContext();
11356   return __pyx_r;
11357 }
11358 
__pyx_pf_6tables_13hdf5extension_4Node__g_new(struct __pyx_obj_6tables_13hdf5extension_Node * __pyx_v_self,PyObject * __pyx_v_where,PyObject * __pyx_v_name,CYTHON_UNUSED PyObject * __pyx_v_init)11359 static PyObject *__pyx_pf_6tables_13hdf5extension_4Node__g_new(struct __pyx_obj_6tables_13hdf5extension_Node *__pyx_v_self, PyObject *__pyx_v_where, PyObject *__pyx_v_name, CYTHON_UNUSED PyObject *__pyx_v_init) {
11360   PyObject *__pyx_r = NULL;
11361   __Pyx_RefNannyDeclarations
11362   PyObject *__pyx_t_1 = NULL;
11363   hid_t __pyx_t_2;
11364   __Pyx_RefNannySetupContext("_g_new", 0);
11365 
11366   /* "tables/hdf5extension.pyx":903
11367  *
11368  *   def _g_new(self, where, name, init):
11369  *     self.name = name             # <<<<<<<<<<<<<<
11370  *     # """The name of this node in its parent group."""
11371  *     self.parent_id = where._v_objectid
11372  */
11373   __Pyx_INCREF(__pyx_v_name);
11374   __Pyx_GIVEREF(__pyx_v_name);
11375   __Pyx_GOTREF(__pyx_v_self->name);
11376   __Pyx_DECREF(__pyx_v_self->name);
11377   __pyx_v_self->name = __pyx_v_name;
11378 
11379   /* "tables/hdf5extension.pyx":905
11380  *     self.name = name
11381  *     # """The name of this node in its parent group."""
11382  *     self.parent_id = where._v_objectid             # <<<<<<<<<<<<<<
11383  *     # """The identifier of the parent group."""
11384  *
11385  */
11386   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_where, __pyx_n_s_v_objectid); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 905, __pyx_L1_error)
11387   __Pyx_GOTREF(__pyx_t_1);
11388   __pyx_t_2 = __Pyx_PyInt_As_hid_t(__pyx_t_1); if (unlikely((__pyx_t_2 == ((hid_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 905, __pyx_L1_error)
11389   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11390   __pyx_v_self->parent_id = __pyx_t_2;
11391 
11392   /* "tables/hdf5extension.pyx":902
11393  *   # Instance variables declared in .pxd
11394  *
11395  *   def _g_new(self, where, name, init):             # <<<<<<<<<<<<<<
11396  *     self.name = name
11397  *     # """The name of this node in its parent group."""
11398  */
11399 
11400   /* function exit code */
11401   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
11402   goto __pyx_L0;
11403   __pyx_L1_error:;
11404   __Pyx_XDECREF(__pyx_t_1);
11405   __Pyx_AddTraceback("tables.hdf5extension.Node._g_new", __pyx_clineno, __pyx_lineno, __pyx_filename);
11406   __pyx_r = NULL;
11407   __pyx_L0:;
11408   __Pyx_XGIVEREF(__pyx_r);
11409   __Pyx_RefNannyFinishContext();
11410   return __pyx_r;
11411 }
11412 
11413 /* "tables/hdf5extension.pyx":908
11414  *     # """The identifier of the parent group."""
11415  *
11416  *   def _g_delete(self, parent):             # <<<<<<<<<<<<<<
11417  *     cdef int ret
11418  *     cdef bytes encoded_name
11419  */
11420 
11421 /* Python wrapper */
11422 static PyObject *__pyx_pw_6tables_13hdf5extension_4Node_3_g_delete(PyObject *__pyx_v_self, PyObject *__pyx_v_parent); /*proto*/
__pyx_pw_6tables_13hdf5extension_4Node_3_g_delete(PyObject * __pyx_v_self,PyObject * __pyx_v_parent)11423 static PyObject *__pyx_pw_6tables_13hdf5extension_4Node_3_g_delete(PyObject *__pyx_v_self, PyObject *__pyx_v_parent) {
11424   PyObject *__pyx_r = 0;
11425   __Pyx_RefNannyDeclarations
11426   __Pyx_RefNannySetupContext("_g_delete (wrapper)", 0);
11427   __pyx_r = __pyx_pf_6tables_13hdf5extension_4Node_2_g_delete(((struct __pyx_obj_6tables_13hdf5extension_Node *)__pyx_v_self), ((PyObject *)__pyx_v_parent));
11428 
11429   /* function exit code */
11430   __Pyx_RefNannyFinishContext();
11431   return __pyx_r;
11432 }
11433 
__pyx_pf_6tables_13hdf5extension_4Node_2_g_delete(struct __pyx_obj_6tables_13hdf5extension_Node * __pyx_v_self,PyObject * __pyx_v_parent)11434 static PyObject *__pyx_pf_6tables_13hdf5extension_4Node_2_g_delete(struct __pyx_obj_6tables_13hdf5extension_Node *__pyx_v_self, PyObject *__pyx_v_parent) {
11435   int __pyx_v_ret;
11436   PyObject *__pyx_v_encoded_name = 0;
11437   PyObject *__pyx_r = NULL;
11438   __Pyx_RefNannyDeclarations
11439   PyObject *__pyx_t_1 = NULL;
11440   PyObject *__pyx_t_2 = NULL;
11441   PyObject *__pyx_t_3 = NULL;
11442   hid_t __pyx_t_4;
11443   char *__pyx_t_5;
11444   int __pyx_t_6;
11445   PyObject *__pyx_t_7 = NULL;
11446   __Pyx_RefNannySetupContext("_g_delete", 0);
11447 
11448   /* "tables/hdf5extension.pyx":912
11449  *     cdef bytes encoded_name
11450  *
11451  *     encoded_name = self.name.encode('utf-8')             # <<<<<<<<<<<<<<
11452  *
11453  *     # Delete this node
11454  */
11455   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->name, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 912, __pyx_L1_error)
11456   __Pyx_GOTREF(__pyx_t_2);
11457   __pyx_t_3 = NULL;
11458   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
11459     __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
11460     if (likely(__pyx_t_3)) {
11461       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
11462       __Pyx_INCREF(__pyx_t_3);
11463       __Pyx_INCREF(function);
11464       __Pyx_DECREF_SET(__pyx_t_2, function);
11465     }
11466   }
11467   __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_kp_s_utf_8) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_kp_s_utf_8);
11468   __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
11469   if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 912, __pyx_L1_error)
11470   __Pyx_GOTREF(__pyx_t_1);
11471   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
11472   if (!(likely(PyBytes_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 912, __pyx_L1_error)
11473   __pyx_v_encoded_name = ((PyObject*)__pyx_t_1);
11474   __pyx_t_1 = 0;
11475 
11476   /* "tables/hdf5extension.pyx":915
11477  *
11478  *     # Delete this node
11479  *     ret = H5Ldelete(parent._v_objectid, encoded_name, H5P_DEFAULT)             # <<<<<<<<<<<<<<
11480  *     if ret < 0:
11481  *       raise HDF5ExtError("problems deleting the node ``%s``" % self.name)
11482  */
11483   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_parent, __pyx_n_s_v_objectid); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 915, __pyx_L1_error)
11484   __Pyx_GOTREF(__pyx_t_1);
11485   __pyx_t_4 = __Pyx_PyInt_As_hid_t(__pyx_t_1); if (unlikely((__pyx_t_4 == ((hid_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 915, __pyx_L1_error)
11486   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11487   if (unlikely(__pyx_v_encoded_name == Py_None)) {
11488     PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
11489     __PYX_ERR(0, 915, __pyx_L1_error)
11490   }
11491   __pyx_t_5 = __Pyx_PyBytes_AsWritableString(__pyx_v_encoded_name); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) __PYX_ERR(0, 915, __pyx_L1_error)
11492   __pyx_v_ret = H5Ldelete(__pyx_t_4, __pyx_t_5, H5P_DEFAULT);
11493 
11494   /* "tables/hdf5extension.pyx":916
11495  *     # Delete this node
11496  *     ret = H5Ldelete(parent._v_objectid, encoded_name, H5P_DEFAULT)
11497  *     if ret < 0:             # <<<<<<<<<<<<<<
11498  *       raise HDF5ExtError("problems deleting the node ``%s``" % self.name)
11499  *     return ret
11500  */
11501   __pyx_t_6 = ((__pyx_v_ret < 0) != 0);
11502   if (unlikely(__pyx_t_6)) {
11503 
11504     /* "tables/hdf5extension.pyx":917
11505  *     ret = H5Ldelete(parent._v_objectid, encoded_name, H5P_DEFAULT)
11506  *     if ret < 0:
11507  *       raise HDF5ExtError("problems deleting the node ``%s``" % self.name)             # <<<<<<<<<<<<<<
11508  *     return ret
11509  *
11510  */
11511     __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_HDF5ExtError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 917, __pyx_L1_error)
11512     __Pyx_GOTREF(__pyx_t_2);
11513     __pyx_t_3 = __Pyx_PyString_FormatSafe(__pyx_kp_s_problems_deleting_the_node_s, __pyx_v_self->name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 917, __pyx_L1_error)
11514     __Pyx_GOTREF(__pyx_t_3);
11515     __pyx_t_7 = NULL;
11516     if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
11517       __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2);
11518       if (likely(__pyx_t_7)) {
11519         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
11520         __Pyx_INCREF(__pyx_t_7);
11521         __Pyx_INCREF(function);
11522         __Pyx_DECREF_SET(__pyx_t_2, function);
11523       }
11524     }
11525     __pyx_t_1 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_7, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3);
11526     __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
11527     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
11528     if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 917, __pyx_L1_error)
11529     __Pyx_GOTREF(__pyx_t_1);
11530     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
11531     __Pyx_Raise(__pyx_t_1, 0, 0, 0);
11532     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11533     __PYX_ERR(0, 917, __pyx_L1_error)
11534 
11535     /* "tables/hdf5extension.pyx":916
11536  *     # Delete this node
11537  *     ret = H5Ldelete(parent._v_objectid, encoded_name, H5P_DEFAULT)
11538  *     if ret < 0:             # <<<<<<<<<<<<<<
11539  *       raise HDF5ExtError("problems deleting the node ``%s``" % self.name)
11540  *     return ret
11541  */
11542   }
11543 
11544   /* "tables/hdf5extension.pyx":918
11545  *     if ret < 0:
11546  *       raise HDF5ExtError("problems deleting the node ``%s``" % self.name)
11547  *     return ret             # <<<<<<<<<<<<<<
11548  *
11549  *   def __dealloc__(self):
11550  */
11551   __Pyx_XDECREF(__pyx_r);
11552   __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_ret); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 918, __pyx_L1_error)
11553   __Pyx_GOTREF(__pyx_t_1);
11554   __pyx_r = __pyx_t_1;
11555   __pyx_t_1 = 0;
11556   goto __pyx_L0;
11557 
11558   /* "tables/hdf5extension.pyx":908
11559  *     # """The identifier of the parent group."""
11560  *
11561  *   def _g_delete(self, parent):             # <<<<<<<<<<<<<<
11562  *     cdef int ret
11563  *     cdef bytes encoded_name
11564  */
11565 
11566   /* function exit code */
11567   __pyx_L1_error:;
11568   __Pyx_XDECREF(__pyx_t_1);
11569   __Pyx_XDECREF(__pyx_t_2);
11570   __Pyx_XDECREF(__pyx_t_3);
11571   __Pyx_XDECREF(__pyx_t_7);
11572   __Pyx_AddTraceback("tables.hdf5extension.Node._g_delete", __pyx_clineno, __pyx_lineno, __pyx_filename);
11573   __pyx_r = NULL;
11574   __pyx_L0:;
11575   __Pyx_XDECREF(__pyx_v_encoded_name);
11576   __Pyx_XGIVEREF(__pyx_r);
11577   __Pyx_RefNannyFinishContext();
11578   return __pyx_r;
11579 }
11580 
11581 /* "tables/hdf5extension.pyx":920
11582  *     return ret
11583  *
11584  *   def __dealloc__(self):             # <<<<<<<<<<<<<<
11585  *     self.parent_id = 0
11586  *
11587  */
11588 
11589 /* Python wrapper */
11590 static void __pyx_pw_6tables_13hdf5extension_4Node_5__dealloc__(PyObject *__pyx_v_self); /*proto*/
__pyx_pw_6tables_13hdf5extension_4Node_5__dealloc__(PyObject * __pyx_v_self)11591 static void __pyx_pw_6tables_13hdf5extension_4Node_5__dealloc__(PyObject *__pyx_v_self) {
11592   __Pyx_RefNannyDeclarations
11593   __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
11594   __pyx_pf_6tables_13hdf5extension_4Node_4__dealloc__(((struct __pyx_obj_6tables_13hdf5extension_Node *)__pyx_v_self));
11595 
11596   /* function exit code */
11597   __Pyx_RefNannyFinishContext();
11598 }
11599 
__pyx_pf_6tables_13hdf5extension_4Node_4__dealloc__(struct __pyx_obj_6tables_13hdf5extension_Node * __pyx_v_self)11600 static void __pyx_pf_6tables_13hdf5extension_4Node_4__dealloc__(struct __pyx_obj_6tables_13hdf5extension_Node *__pyx_v_self) {
11601   __Pyx_RefNannyDeclarations
11602   __Pyx_RefNannySetupContext("__dealloc__", 0);
11603 
11604   /* "tables/hdf5extension.pyx":921
11605  *
11606  *   def __dealloc__(self):
11607  *     self.parent_id = 0             # <<<<<<<<<<<<<<
11608  *
11609  *   def _get_obj_info(self):
11610  */
11611   __pyx_v_self->parent_id = 0;
11612 
11613   /* "tables/hdf5extension.pyx":920
11614  *     return ret
11615  *
11616  *   def __dealloc__(self):             # <<<<<<<<<<<<<<
11617  *     self.parent_id = 0
11618  *
11619  */
11620 
11621   /* function exit code */
11622   __Pyx_RefNannyFinishContext();
11623 }
11624 
11625 /* "tables/hdf5extension.pyx":923
11626  *     self.parent_id = 0
11627  *
11628  *   def _get_obj_info(self):             # <<<<<<<<<<<<<<
11629  *     cdef herr_t ret = 0
11630  *     cdef H5O_info_t oinfo
11631  */
11632 
11633 /* Python wrapper */
11634 static PyObject *__pyx_pw_6tables_13hdf5extension_4Node_7_get_obj_info(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
__pyx_pw_6tables_13hdf5extension_4Node_7_get_obj_info(PyObject * __pyx_v_self,CYTHON_UNUSED PyObject * unused)11635 static PyObject *__pyx_pw_6tables_13hdf5extension_4Node_7_get_obj_info(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
11636   PyObject *__pyx_r = 0;
11637   __Pyx_RefNannyDeclarations
11638   __Pyx_RefNannySetupContext("_get_obj_info (wrapper)", 0);
11639   __pyx_r = __pyx_pf_6tables_13hdf5extension_4Node_6_get_obj_info(((struct __pyx_obj_6tables_13hdf5extension_Node *)__pyx_v_self));
11640 
11641   /* function exit code */
11642   __Pyx_RefNannyFinishContext();
11643   return __pyx_r;
11644 }
11645 
__pyx_pf_6tables_13hdf5extension_4Node_6_get_obj_info(struct __pyx_obj_6tables_13hdf5extension_Node * __pyx_v_self)11646 static PyObject *__pyx_pf_6tables_13hdf5extension_4Node_6_get_obj_info(struct __pyx_obj_6tables_13hdf5extension_Node *__pyx_v_self) {
11647   herr_t __pyx_v_ret;
11648   H5O_info_t __pyx_v_oinfo;
11649   PyObject *__pyx_r = NULL;
11650   __Pyx_RefNannyDeclarations
11651   PyObject *__pyx_t_1 = NULL;
11652   hid_t __pyx_t_2;
11653   int __pyx_t_3;
11654   PyObject *__pyx_t_4 = NULL;
11655   PyObject *__pyx_t_5 = NULL;
11656   PyObject *__pyx_t_6 = NULL;
11657   PyObject *__pyx_t_7 = NULL;
11658   int __pyx_t_8;
11659   PyObject *__pyx_t_9 = NULL;
11660   __Pyx_RefNannySetupContext("_get_obj_info", 0);
11661 
11662   /* "tables/hdf5extension.pyx":924
11663  *
11664  *   def _get_obj_info(self):
11665  *     cdef herr_t ret = 0             # <<<<<<<<<<<<<<
11666  *     cdef H5O_info_t oinfo
11667  *
11668  */
11669   __pyx_v_ret = 0;
11670 
11671   /* "tables/hdf5extension.pyx":927
11672  *     cdef H5O_info_t oinfo
11673  *
11674  *     ret = H5Oget_info(self._v_objectid, &oinfo)             # <<<<<<<<<<<<<<
11675  *     if ret < 0:
11676  *       raise HDF5ExtError("Unable to get object info for '%s'" %
11677  */
11678   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_v_objectid); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 927, __pyx_L1_error)
11679   __Pyx_GOTREF(__pyx_t_1);
11680   __pyx_t_2 = __Pyx_PyInt_As_hid_t(__pyx_t_1); if (unlikely((__pyx_t_2 == ((hid_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 927, __pyx_L1_error)
11681   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11682   __pyx_v_ret = H5Oget_info(__pyx_t_2, (&__pyx_v_oinfo));
11683 
11684   /* "tables/hdf5extension.pyx":928
11685  *
11686  *     ret = H5Oget_info(self._v_objectid, &oinfo)
11687  *     if ret < 0:             # <<<<<<<<<<<<<<
11688  *       raise HDF5ExtError("Unable to get object info for '%s'" %
11689  *                          self. _v_pathname)
11690  */
11691   __pyx_t_3 = ((__pyx_v_ret < 0) != 0);
11692   if (unlikely(__pyx_t_3)) {
11693 
11694     /* "tables/hdf5extension.pyx":929
11695  *     ret = H5Oget_info(self._v_objectid, &oinfo)
11696  *     if ret < 0:
11697  *       raise HDF5ExtError("Unable to get object info for '%s'" %             # <<<<<<<<<<<<<<
11698  *                          self. _v_pathname)
11699  *
11700  */
11701     __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_HDF5ExtError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 929, __pyx_L1_error)
11702     __Pyx_GOTREF(__pyx_t_4);
11703 
11704     /* "tables/hdf5extension.pyx":930
11705  *     if ret < 0:
11706  *       raise HDF5ExtError("Unable to get object info for '%s'" %
11707  *                          self. _v_pathname)             # <<<<<<<<<<<<<<
11708  *
11709  *     return ObjInfo(oinfo.addr, oinfo.rc)
11710  */
11711     __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_v_pathname); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 930, __pyx_L1_error)
11712     __Pyx_GOTREF(__pyx_t_5);
11713 
11714     /* "tables/hdf5extension.pyx":929
11715  *     ret = H5Oget_info(self._v_objectid, &oinfo)
11716  *     if ret < 0:
11717  *       raise HDF5ExtError("Unable to get object info for '%s'" %             # <<<<<<<<<<<<<<
11718  *                          self. _v_pathname)
11719  *
11720  */
11721     __pyx_t_6 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Unable_to_get_object_info_for_s, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 929, __pyx_L1_error)
11722     __Pyx_GOTREF(__pyx_t_6);
11723     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
11724     __pyx_t_5 = NULL;
11725     if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
11726       __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
11727       if (likely(__pyx_t_5)) {
11728         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
11729         __Pyx_INCREF(__pyx_t_5);
11730         __Pyx_INCREF(function);
11731         __Pyx_DECREF_SET(__pyx_t_4, function);
11732       }
11733     }
11734     __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_6);
11735     __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
11736     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
11737     if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 929, __pyx_L1_error)
11738     __Pyx_GOTREF(__pyx_t_1);
11739     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
11740     __Pyx_Raise(__pyx_t_1, 0, 0, 0);
11741     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11742     __PYX_ERR(0, 929, __pyx_L1_error)
11743 
11744     /* "tables/hdf5extension.pyx":928
11745  *
11746  *     ret = H5Oget_info(self._v_objectid, &oinfo)
11747  *     if ret < 0:             # <<<<<<<<<<<<<<
11748  *       raise HDF5ExtError("Unable to get object info for '%s'" %
11749  *                          self. _v_pathname)
11750  */
11751   }
11752 
11753   /* "tables/hdf5extension.pyx":932
11754  *                          self. _v_pathname)
11755  *
11756  *     return ObjInfo(oinfo.addr, oinfo.rc)             # <<<<<<<<<<<<<<
11757  *
11758  *   def _get_obj_timestamps(self):
11759  */
11760   __Pyx_XDECREF(__pyx_r);
11761   __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_ObjInfo); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 932, __pyx_L1_error)
11762   __Pyx_GOTREF(__pyx_t_4);
11763   __pyx_t_6 = __Pyx_PyInt_From_haddr_t(__pyx_v_oinfo.addr); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 932, __pyx_L1_error)
11764   __Pyx_GOTREF(__pyx_t_6);
11765   __pyx_t_5 = __Pyx_PyInt_From_unsigned_int(__pyx_v_oinfo.rc); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 932, __pyx_L1_error)
11766   __Pyx_GOTREF(__pyx_t_5);
11767   __pyx_t_7 = NULL;
11768   __pyx_t_8 = 0;
11769   if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
11770     __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4);
11771     if (likely(__pyx_t_7)) {
11772       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
11773       __Pyx_INCREF(__pyx_t_7);
11774       __Pyx_INCREF(function);
11775       __Pyx_DECREF_SET(__pyx_t_4, function);
11776       __pyx_t_8 = 1;
11777     }
11778   }
11779   #if CYTHON_FAST_PYCALL
11780   if (PyFunction_Check(__pyx_t_4)) {
11781     PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_t_6, __pyx_t_5};
11782     __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 932, __pyx_L1_error)
11783     __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
11784     __Pyx_GOTREF(__pyx_t_1);
11785     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
11786     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
11787   } else
11788   #endif
11789   #if CYTHON_FAST_PYCCALL
11790   if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
11791     PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_t_6, __pyx_t_5};
11792     __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 932, __pyx_L1_error)
11793     __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
11794     __Pyx_GOTREF(__pyx_t_1);
11795     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
11796     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
11797   } else
11798   #endif
11799   {
11800     __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 932, __pyx_L1_error)
11801     __Pyx_GOTREF(__pyx_t_9);
11802     if (__pyx_t_7) {
11803       __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL;
11804     }
11805     __Pyx_GIVEREF(__pyx_t_6);
11806     PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_8, __pyx_t_6);
11807     __Pyx_GIVEREF(__pyx_t_5);
11808     PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_t_5);
11809     __pyx_t_6 = 0;
11810     __pyx_t_5 = 0;
11811     __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 932, __pyx_L1_error)
11812     __Pyx_GOTREF(__pyx_t_1);
11813     __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
11814   }
11815   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
11816   __pyx_r = __pyx_t_1;
11817   __pyx_t_1 = 0;
11818   goto __pyx_L0;
11819 
11820   /* "tables/hdf5extension.pyx":923
11821  *     self.parent_id = 0
11822  *
11823  *   def _get_obj_info(self):             # <<<<<<<<<<<<<<
11824  *     cdef herr_t ret = 0
11825  *     cdef H5O_info_t oinfo
11826  */
11827 
11828   /* function exit code */
11829   __pyx_L1_error:;
11830   __Pyx_XDECREF(__pyx_t_1);
11831   __Pyx_XDECREF(__pyx_t_4);
11832   __Pyx_XDECREF(__pyx_t_5);
11833   __Pyx_XDECREF(__pyx_t_6);
11834   __Pyx_XDECREF(__pyx_t_7);
11835   __Pyx_XDECREF(__pyx_t_9);
11836   __Pyx_AddTraceback("tables.hdf5extension.Node._get_obj_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
11837   __pyx_r = NULL;
11838   __pyx_L0:;
11839   __Pyx_XGIVEREF(__pyx_r);
11840   __Pyx_RefNannyFinishContext();
11841   return __pyx_r;
11842 }
11843 
11844 /* "tables/hdf5extension.pyx":934
11845  *     return ObjInfo(oinfo.addr, oinfo.rc)
11846  *
11847  *   def _get_obj_timestamps(self):             # <<<<<<<<<<<<<<
11848  *     cdef herr_t ret = 0
11849  *     cdef H5O_info_t oinfo
11850  */
11851 
11852 /* Python wrapper */
11853 static PyObject *__pyx_pw_6tables_13hdf5extension_4Node_9_get_obj_timestamps(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
__pyx_pw_6tables_13hdf5extension_4Node_9_get_obj_timestamps(PyObject * __pyx_v_self,CYTHON_UNUSED PyObject * unused)11854 static PyObject *__pyx_pw_6tables_13hdf5extension_4Node_9_get_obj_timestamps(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
11855   PyObject *__pyx_r = 0;
11856   __Pyx_RefNannyDeclarations
11857   __Pyx_RefNannySetupContext("_get_obj_timestamps (wrapper)", 0);
11858   __pyx_r = __pyx_pf_6tables_13hdf5extension_4Node_8_get_obj_timestamps(((struct __pyx_obj_6tables_13hdf5extension_Node *)__pyx_v_self));
11859 
11860   /* function exit code */
11861   __Pyx_RefNannyFinishContext();
11862   return __pyx_r;
11863 }
11864 
__pyx_pf_6tables_13hdf5extension_4Node_8_get_obj_timestamps(struct __pyx_obj_6tables_13hdf5extension_Node * __pyx_v_self)11865 static PyObject *__pyx_pf_6tables_13hdf5extension_4Node_8_get_obj_timestamps(struct __pyx_obj_6tables_13hdf5extension_Node *__pyx_v_self) {
11866   herr_t __pyx_v_ret;
11867   H5O_info_t __pyx_v_oinfo;
11868   PyObject *__pyx_r = NULL;
11869   __Pyx_RefNannyDeclarations
11870   PyObject *__pyx_t_1 = NULL;
11871   hid_t __pyx_t_2;
11872   int __pyx_t_3;
11873   PyObject *__pyx_t_4 = NULL;
11874   PyObject *__pyx_t_5 = NULL;
11875   PyObject *__pyx_t_6 = NULL;
11876   PyObject *__pyx_t_7 = NULL;
11877   PyObject *__pyx_t_8 = NULL;
11878   PyObject *__pyx_t_9 = NULL;
11879   int __pyx_t_10;
11880   PyObject *__pyx_t_11 = NULL;
11881   __Pyx_RefNannySetupContext("_get_obj_timestamps", 0);
11882 
11883   /* "tables/hdf5extension.pyx":935
11884  *
11885  *   def _get_obj_timestamps(self):
11886  *     cdef herr_t ret = 0             # <<<<<<<<<<<<<<
11887  *     cdef H5O_info_t oinfo
11888  *
11889  */
11890   __pyx_v_ret = 0;
11891 
11892   /* "tables/hdf5extension.pyx":938
11893  *     cdef H5O_info_t oinfo
11894  *
11895  *     ret = H5Oget_info(self._v_objectid, &oinfo)             # <<<<<<<<<<<<<<
11896  *     if ret < 0:
11897  *       raise HDF5ExtError("Unable to get object info for '%s'" %
11898  */
11899   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_v_objectid); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 938, __pyx_L1_error)
11900   __Pyx_GOTREF(__pyx_t_1);
11901   __pyx_t_2 = __Pyx_PyInt_As_hid_t(__pyx_t_1); if (unlikely((__pyx_t_2 == ((hid_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 938, __pyx_L1_error)
11902   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11903   __pyx_v_ret = H5Oget_info(__pyx_t_2, (&__pyx_v_oinfo));
11904 
11905   /* "tables/hdf5extension.pyx":939
11906  *
11907  *     ret = H5Oget_info(self._v_objectid, &oinfo)
11908  *     if ret < 0:             # <<<<<<<<<<<<<<
11909  *       raise HDF5ExtError("Unable to get object info for '%s'" %
11910  *                          self. _v_pathname)
11911  */
11912   __pyx_t_3 = ((__pyx_v_ret < 0) != 0);
11913   if (unlikely(__pyx_t_3)) {
11914 
11915     /* "tables/hdf5extension.pyx":940
11916  *     ret = H5Oget_info(self._v_objectid, &oinfo)
11917  *     if ret < 0:
11918  *       raise HDF5ExtError("Unable to get object info for '%s'" %             # <<<<<<<<<<<<<<
11919  *                          self. _v_pathname)
11920  *
11921  */
11922     __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_HDF5ExtError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 940, __pyx_L1_error)
11923     __Pyx_GOTREF(__pyx_t_4);
11924 
11925     /* "tables/hdf5extension.pyx":941
11926  *     if ret < 0:
11927  *       raise HDF5ExtError("Unable to get object info for '%s'" %
11928  *                          self. _v_pathname)             # <<<<<<<<<<<<<<
11929  *
11930  *     return ObjTimestamps(oinfo.atime, oinfo.mtime, oinfo.ctime,
11931  */
11932     __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_v_pathname); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 941, __pyx_L1_error)
11933     __Pyx_GOTREF(__pyx_t_5);
11934 
11935     /* "tables/hdf5extension.pyx":940
11936  *     ret = H5Oget_info(self._v_objectid, &oinfo)
11937  *     if ret < 0:
11938  *       raise HDF5ExtError("Unable to get object info for '%s'" %             # <<<<<<<<<<<<<<
11939  *                          self. _v_pathname)
11940  *
11941  */
11942     __pyx_t_6 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Unable_to_get_object_info_for_s, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 940, __pyx_L1_error)
11943     __Pyx_GOTREF(__pyx_t_6);
11944     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
11945     __pyx_t_5 = NULL;
11946     if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
11947       __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
11948       if (likely(__pyx_t_5)) {
11949         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
11950         __Pyx_INCREF(__pyx_t_5);
11951         __Pyx_INCREF(function);
11952         __Pyx_DECREF_SET(__pyx_t_4, function);
11953       }
11954     }
11955     __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_6);
11956     __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
11957     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
11958     if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 940, __pyx_L1_error)
11959     __Pyx_GOTREF(__pyx_t_1);
11960     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
11961     __Pyx_Raise(__pyx_t_1, 0, 0, 0);
11962     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11963     __PYX_ERR(0, 940, __pyx_L1_error)
11964 
11965     /* "tables/hdf5extension.pyx":939
11966  *
11967  *     ret = H5Oget_info(self._v_objectid, &oinfo)
11968  *     if ret < 0:             # <<<<<<<<<<<<<<
11969  *       raise HDF5ExtError("Unable to get object info for '%s'" %
11970  *                          self. _v_pathname)
11971  */
11972   }
11973 
11974   /* "tables/hdf5extension.pyx":943
11975  *                          self. _v_pathname)
11976  *
11977  *     return ObjTimestamps(oinfo.atime, oinfo.mtime, oinfo.ctime,             # <<<<<<<<<<<<<<
11978  *                          oinfo.btime)
11979  *
11980  */
11981   __Pyx_XDECREF(__pyx_r);
11982   __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_ObjTimestamps); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 943, __pyx_L1_error)
11983   __Pyx_GOTREF(__pyx_t_4);
11984   __pyx_t_6 = __Pyx_PyInt_From_time_t(__pyx_v_oinfo.atime); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 943, __pyx_L1_error)
11985   __Pyx_GOTREF(__pyx_t_6);
11986   __pyx_t_5 = __Pyx_PyInt_From_time_t(__pyx_v_oinfo.mtime); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 943, __pyx_L1_error)
11987   __Pyx_GOTREF(__pyx_t_5);
11988   __pyx_t_7 = __Pyx_PyInt_From_time_t(__pyx_v_oinfo.ctime); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 943, __pyx_L1_error)
11989   __Pyx_GOTREF(__pyx_t_7);
11990 
11991   /* "tables/hdf5extension.pyx":944
11992  *
11993  *     return ObjTimestamps(oinfo.atime, oinfo.mtime, oinfo.ctime,
11994  *                          oinfo.btime)             # <<<<<<<<<<<<<<
11995  *
11996  *
11997  */
11998   __pyx_t_8 = __Pyx_PyInt_From_time_t(__pyx_v_oinfo.btime); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 944, __pyx_L1_error)
11999   __Pyx_GOTREF(__pyx_t_8);
12000   __pyx_t_9 = NULL;
12001   __pyx_t_10 = 0;
12002   if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
12003     __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_4);
12004     if (likely(__pyx_t_9)) {
12005       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
12006       __Pyx_INCREF(__pyx_t_9);
12007       __Pyx_INCREF(function);
12008       __Pyx_DECREF_SET(__pyx_t_4, function);
12009       __pyx_t_10 = 1;
12010     }
12011   }
12012   #if CYTHON_FAST_PYCALL
12013   if (PyFunction_Check(__pyx_t_4)) {
12014     PyObject *__pyx_temp[5] = {__pyx_t_9, __pyx_t_6, __pyx_t_5, __pyx_t_7, __pyx_t_8};
12015     __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_10, 4+__pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 943, __pyx_L1_error)
12016     __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
12017     __Pyx_GOTREF(__pyx_t_1);
12018     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
12019     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
12020     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
12021     __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
12022   } else
12023   #endif
12024   #if CYTHON_FAST_PYCCALL
12025   if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
12026     PyObject *__pyx_temp[5] = {__pyx_t_9, __pyx_t_6, __pyx_t_5, __pyx_t_7, __pyx_t_8};
12027     __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_10, 4+__pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 943, __pyx_L1_error)
12028     __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
12029     __Pyx_GOTREF(__pyx_t_1);
12030     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
12031     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
12032     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
12033     __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
12034   } else
12035   #endif
12036   {
12037     __pyx_t_11 = PyTuple_New(4+__pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 943, __pyx_L1_error)
12038     __Pyx_GOTREF(__pyx_t_11);
12039     if (__pyx_t_9) {
12040       __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_9); __pyx_t_9 = NULL;
12041     }
12042     __Pyx_GIVEREF(__pyx_t_6);
12043     PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_10, __pyx_t_6);
12044     __Pyx_GIVEREF(__pyx_t_5);
12045     PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_10, __pyx_t_5);
12046     __Pyx_GIVEREF(__pyx_t_7);
12047     PyTuple_SET_ITEM(__pyx_t_11, 2+__pyx_t_10, __pyx_t_7);
12048     __Pyx_GIVEREF(__pyx_t_8);
12049     PyTuple_SET_ITEM(__pyx_t_11, 3+__pyx_t_10, __pyx_t_8);
12050     __pyx_t_6 = 0;
12051     __pyx_t_5 = 0;
12052     __pyx_t_7 = 0;
12053     __pyx_t_8 = 0;
12054     __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_11, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 943, __pyx_L1_error)
12055     __Pyx_GOTREF(__pyx_t_1);
12056     __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
12057   }
12058   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
12059   __pyx_r = __pyx_t_1;
12060   __pyx_t_1 = 0;
12061   goto __pyx_L0;
12062 
12063   /* "tables/hdf5extension.pyx":934
12064  *     return ObjInfo(oinfo.addr, oinfo.rc)
12065  *
12066  *   def _get_obj_timestamps(self):             # <<<<<<<<<<<<<<
12067  *     cdef herr_t ret = 0
12068  *     cdef H5O_info_t oinfo
12069  */
12070 
12071   /* function exit code */
12072   __pyx_L1_error:;
12073   __Pyx_XDECREF(__pyx_t_1);
12074   __Pyx_XDECREF(__pyx_t_4);
12075   __Pyx_XDECREF(__pyx_t_5);
12076   __Pyx_XDECREF(__pyx_t_6);
12077   __Pyx_XDECREF(__pyx_t_7);
12078   __Pyx_XDECREF(__pyx_t_8);
12079   __Pyx_XDECREF(__pyx_t_9);
12080   __Pyx_XDECREF(__pyx_t_11);
12081   __Pyx_AddTraceback("tables.hdf5extension.Node._get_obj_timestamps", __pyx_clineno, __pyx_lineno, __pyx_filename);
12082   __pyx_r = NULL;
12083   __pyx_L0:;
12084   __Pyx_XGIVEREF(__pyx_r);
12085   __Pyx_RefNannyFinishContext();
12086   return __pyx_r;
12087 }
12088 
12089 /* "(tree fragment)":1
12090  * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
12091  *     cdef tuple state
12092  *     cdef object _dict
12093  */
12094 
12095 /* Python wrapper */
12096 static PyObject *__pyx_pw_6tables_13hdf5extension_4Node_11__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
__pyx_pw_6tables_13hdf5extension_4Node_11__reduce_cython__(PyObject * __pyx_v_self,CYTHON_UNUSED PyObject * unused)12097 static PyObject *__pyx_pw_6tables_13hdf5extension_4Node_11__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
12098   PyObject *__pyx_r = 0;
12099   __Pyx_RefNannyDeclarations
12100   __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
12101   __pyx_r = __pyx_pf_6tables_13hdf5extension_4Node_10__reduce_cython__(((struct __pyx_obj_6tables_13hdf5extension_Node *)__pyx_v_self));
12102 
12103   /* function exit code */
12104   __Pyx_RefNannyFinishContext();
12105   return __pyx_r;
12106 }
12107 
__pyx_pf_6tables_13hdf5extension_4Node_10__reduce_cython__(struct __pyx_obj_6tables_13hdf5extension_Node * __pyx_v_self)12108 static PyObject *__pyx_pf_6tables_13hdf5extension_4Node_10__reduce_cython__(struct __pyx_obj_6tables_13hdf5extension_Node *__pyx_v_self) {
12109   PyObject *__pyx_v_state = 0;
12110   PyObject *__pyx_v__dict = 0;
12111   int __pyx_v_use_setstate;
12112   PyObject *__pyx_r = NULL;
12113   __Pyx_RefNannyDeclarations
12114   PyObject *__pyx_t_1 = NULL;
12115   PyObject *__pyx_t_2 = NULL;
12116   int __pyx_t_3;
12117   int __pyx_t_4;
12118   PyObject *__pyx_t_5 = NULL;
12119   __Pyx_RefNannySetupContext("__reduce_cython__", 0);
12120 
12121   /* "(tree fragment)":5
12122  *     cdef object _dict
12123  *     cdef bint use_setstate
12124  *     state = (self.name, self.parent_id)             # <<<<<<<<<<<<<<
12125  *     _dict = getattr(self, '__dict__', None)
12126  *     if _dict is not None:
12127  */
12128   __pyx_t_1 = __Pyx_PyInt_From_hid_t(__pyx_v_self->parent_id); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
12129   __Pyx_GOTREF(__pyx_t_1);
12130   __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
12131   __Pyx_GOTREF(__pyx_t_2);
12132   __Pyx_INCREF(__pyx_v_self->name);
12133   __Pyx_GIVEREF(__pyx_v_self->name);
12134   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_self->name);
12135   __Pyx_GIVEREF(__pyx_t_1);
12136   PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
12137   __pyx_t_1 = 0;
12138   __pyx_v_state = ((PyObject*)__pyx_t_2);
12139   __pyx_t_2 = 0;
12140 
12141   /* "(tree fragment)":6
12142  *     cdef bint use_setstate
12143  *     state = (self.name, self.parent_id)
12144  *     _dict = getattr(self, '__dict__', None)             # <<<<<<<<<<<<<<
12145  *     if _dict is not None:
12146  *         state += (_dict,)
12147  */
12148   __pyx_t_2 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
12149   __Pyx_GOTREF(__pyx_t_2);
12150   __pyx_v__dict = __pyx_t_2;
12151   __pyx_t_2 = 0;
12152 
12153   /* "(tree fragment)":7
12154  *     state = (self.name, self.parent_id)
12155  *     _dict = getattr(self, '__dict__', None)
12156  *     if _dict is not None:             # <<<<<<<<<<<<<<
12157  *         state += (_dict,)
12158  *         use_setstate = True
12159  */
12160   __pyx_t_3 = (__pyx_v__dict != Py_None);
12161   __pyx_t_4 = (__pyx_t_3 != 0);
12162   if (__pyx_t_4) {
12163 
12164     /* "(tree fragment)":8
12165  *     _dict = getattr(self, '__dict__', None)
12166  *     if _dict is not None:
12167  *         state += (_dict,)             # <<<<<<<<<<<<<<
12168  *         use_setstate = True
12169  *     else:
12170  */
12171     __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 8, __pyx_L1_error)
12172     __Pyx_GOTREF(__pyx_t_2);
12173     __Pyx_INCREF(__pyx_v__dict);
12174     __Pyx_GIVEREF(__pyx_v__dict);
12175     PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v__dict);
12176     __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 8, __pyx_L1_error)
12177     __Pyx_GOTREF(__pyx_t_1);
12178     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
12179     __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_1));
12180     __pyx_t_1 = 0;
12181 
12182     /* "(tree fragment)":9
12183  *     if _dict is not None:
12184  *         state += (_dict,)
12185  *         use_setstate = True             # <<<<<<<<<<<<<<
12186  *     else:
12187  *         use_setstate = self.name is not None
12188  */
12189     __pyx_v_use_setstate = 1;
12190 
12191     /* "(tree fragment)":7
12192  *     state = (self.name, self.parent_id)
12193  *     _dict = getattr(self, '__dict__', None)
12194  *     if _dict is not None:             # <<<<<<<<<<<<<<
12195  *         state += (_dict,)
12196  *         use_setstate = True
12197  */
12198     goto __pyx_L3;
12199   }
12200 
12201   /* "(tree fragment)":11
12202  *         use_setstate = True
12203  *     else:
12204  *         use_setstate = self.name is not None             # <<<<<<<<<<<<<<
12205  *     if use_setstate:
12206  *         return __pyx_unpickle_Node, (type(self), 0x381b6b9, None), state
12207  */
12208   /*else*/ {
12209     __pyx_t_4 = (__pyx_v_self->name != Py_None);
12210     __pyx_v_use_setstate = __pyx_t_4;
12211   }
12212   __pyx_L3:;
12213 
12214   /* "(tree fragment)":12
12215  *     else:
12216  *         use_setstate = self.name is not None
12217  *     if use_setstate:             # <<<<<<<<<<<<<<
12218  *         return __pyx_unpickle_Node, (type(self), 0x381b6b9, None), state
12219  *     else:
12220  */
12221   __pyx_t_4 = (__pyx_v_use_setstate != 0);
12222   if (__pyx_t_4) {
12223 
12224     /* "(tree fragment)":13
12225  *         use_setstate = self.name is not None
12226  *     if use_setstate:
12227  *         return __pyx_unpickle_Node, (type(self), 0x381b6b9, None), state             # <<<<<<<<<<<<<<
12228  *     else:
12229  *         return __pyx_unpickle_Node, (type(self), 0x381b6b9, state)
12230  */
12231     __Pyx_XDECREF(__pyx_r);
12232     __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyx_unpickle_Node); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
12233     __Pyx_GOTREF(__pyx_t_1);
12234     __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 13, __pyx_L1_error)
12235     __Pyx_GOTREF(__pyx_t_2);
12236     __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
12237     __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
12238     PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
12239     __Pyx_INCREF(__pyx_int_58832569);
12240     __Pyx_GIVEREF(__pyx_int_58832569);
12241     PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_58832569);
12242     __Pyx_INCREF(Py_None);
12243     __Pyx_GIVEREF(Py_None);
12244     PyTuple_SET_ITEM(__pyx_t_2, 2, Py_None);
12245     __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 13, __pyx_L1_error)
12246     __Pyx_GOTREF(__pyx_t_5);
12247     __Pyx_GIVEREF(__pyx_t_1);
12248     PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
12249     __Pyx_GIVEREF(__pyx_t_2);
12250     PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_2);
12251     __Pyx_INCREF(__pyx_v_state);
12252     __Pyx_GIVEREF(__pyx_v_state);
12253     PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_state);
12254     __pyx_t_1 = 0;
12255     __pyx_t_2 = 0;
12256     __pyx_r = __pyx_t_5;
12257     __pyx_t_5 = 0;
12258     goto __pyx_L0;
12259 
12260     /* "(tree fragment)":12
12261  *     else:
12262  *         use_setstate = self.name is not None
12263  *     if use_setstate:             # <<<<<<<<<<<<<<
12264  *         return __pyx_unpickle_Node, (type(self), 0x381b6b9, None), state
12265  *     else:
12266  */
12267   }
12268 
12269   /* "(tree fragment)":15
12270  *         return __pyx_unpickle_Node, (type(self), 0x381b6b9, None), state
12271  *     else:
12272  *         return __pyx_unpickle_Node, (type(self), 0x381b6b9, state)             # <<<<<<<<<<<<<<
12273  * def __setstate_cython__(self, __pyx_state):
12274  *     __pyx_unpickle_Node__set_state(self, __pyx_state)
12275  */
12276   /*else*/ {
12277     __Pyx_XDECREF(__pyx_r);
12278     __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyx_unpickle_Node); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 15, __pyx_L1_error)
12279     __Pyx_GOTREF(__pyx_t_5);
12280     __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 15, __pyx_L1_error)
12281     __Pyx_GOTREF(__pyx_t_2);
12282     __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
12283     __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
12284     PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
12285     __Pyx_INCREF(__pyx_int_58832569);
12286     __Pyx_GIVEREF(__pyx_int_58832569);
12287     PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_58832569);
12288     __Pyx_INCREF(__pyx_v_state);
12289     __Pyx_GIVEREF(__pyx_v_state);
12290     PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_state);
12291     __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error)
12292     __Pyx_GOTREF(__pyx_t_1);
12293     __Pyx_GIVEREF(__pyx_t_5);
12294     PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_5);
12295     __Pyx_GIVEREF(__pyx_t_2);
12296     PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2);
12297     __pyx_t_5 = 0;
12298     __pyx_t_2 = 0;
12299     __pyx_r = __pyx_t_1;
12300     __pyx_t_1 = 0;
12301     goto __pyx_L0;
12302   }
12303 
12304   /* "(tree fragment)":1
12305  * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
12306  *     cdef tuple state
12307  *     cdef object _dict
12308  */
12309 
12310   /* function exit code */
12311   __pyx_L1_error:;
12312   __Pyx_XDECREF(__pyx_t_1);
12313   __Pyx_XDECREF(__pyx_t_2);
12314   __Pyx_XDECREF(__pyx_t_5);
12315   __Pyx_AddTraceback("tables.hdf5extension.Node.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
12316   __pyx_r = NULL;
12317   __pyx_L0:;
12318   __Pyx_XDECREF(__pyx_v_state);
12319   __Pyx_XDECREF(__pyx_v__dict);
12320   __Pyx_XGIVEREF(__pyx_r);
12321   __Pyx_RefNannyFinishContext();
12322   return __pyx_r;
12323 }
12324 
12325 /* "(tree fragment)":16
12326  *     else:
12327  *         return __pyx_unpickle_Node, (type(self), 0x381b6b9, state)
12328  * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
12329  *     __pyx_unpickle_Node__set_state(self, __pyx_state)
12330  */
12331 
12332 /* Python wrapper */
12333 static PyObject *__pyx_pw_6tables_13hdf5extension_4Node_13__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
__pyx_pw_6tables_13hdf5extension_4Node_13__setstate_cython__(PyObject * __pyx_v_self,PyObject * __pyx_v___pyx_state)12334 static PyObject *__pyx_pw_6tables_13hdf5extension_4Node_13__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
12335   PyObject *__pyx_r = 0;
12336   __Pyx_RefNannyDeclarations
12337   __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
12338   __pyx_r = __pyx_pf_6tables_13hdf5extension_4Node_12__setstate_cython__(((struct __pyx_obj_6tables_13hdf5extension_Node *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));
12339 
12340   /* function exit code */
12341   __Pyx_RefNannyFinishContext();
12342   return __pyx_r;
12343 }
12344 
__pyx_pf_6tables_13hdf5extension_4Node_12__setstate_cython__(struct __pyx_obj_6tables_13hdf5extension_Node * __pyx_v_self,PyObject * __pyx_v___pyx_state)12345 static PyObject *__pyx_pf_6tables_13hdf5extension_4Node_12__setstate_cython__(struct __pyx_obj_6tables_13hdf5extension_Node *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
12346   PyObject *__pyx_r = NULL;
12347   __Pyx_RefNannyDeclarations
12348   PyObject *__pyx_t_1 = NULL;
12349   __Pyx_RefNannySetupContext("__setstate_cython__", 0);
12350 
12351   /* "(tree fragment)":17
12352  *         return __pyx_unpickle_Node, (type(self), 0x381b6b9, state)
12353  * def __setstate_cython__(self, __pyx_state):
12354  *     __pyx_unpickle_Node__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
12355  */
12356   if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error)
12357   __pyx_t_1 = __pyx_f_6tables_13hdf5extension___pyx_unpickle_Node__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error)
12358   __Pyx_GOTREF(__pyx_t_1);
12359   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
12360 
12361   /* "(tree fragment)":16
12362  *     else:
12363  *         return __pyx_unpickle_Node, (type(self), 0x381b6b9, state)
12364  * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
12365  *     __pyx_unpickle_Node__set_state(self, __pyx_state)
12366  */
12367 
12368   /* function exit code */
12369   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
12370   goto __pyx_L0;
12371   __pyx_L1_error:;
12372   __Pyx_XDECREF(__pyx_t_1);
12373   __Pyx_AddTraceback("tables.hdf5extension.Node.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
12374   __pyx_r = NULL;
12375   __pyx_L0:;
12376   __Pyx_XGIVEREF(__pyx_r);
12377   __Pyx_RefNannyFinishContext();
12378   return __pyx_r;
12379 }
12380 
12381 /* "tables/hdf5extension.pyx":950
12382  *   cdef hid_t   group_id
12383  *
12384  *   def _g_create(self):             # <<<<<<<<<<<<<<
12385  *     cdef hid_t ret
12386  *     cdef bytes encoded_name
12387  */
12388 
12389 /* Python wrapper */
12390 static PyObject *__pyx_pw_6tables_13hdf5extension_5Group_1_g_create(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
__pyx_pw_6tables_13hdf5extension_5Group_1_g_create(PyObject * __pyx_v_self,CYTHON_UNUSED PyObject * unused)12391 static PyObject *__pyx_pw_6tables_13hdf5extension_5Group_1_g_create(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
12392   PyObject *__pyx_r = 0;
12393   __Pyx_RefNannyDeclarations
12394   __Pyx_RefNannySetupContext("_g_create (wrapper)", 0);
12395   __pyx_r = __pyx_pf_6tables_13hdf5extension_5Group__g_create(((struct __pyx_obj_6tables_13hdf5extension_Group *)__pyx_v_self));
12396 
12397   /* function exit code */
12398   __Pyx_RefNannyFinishContext();
12399   return __pyx_r;
12400 }
12401 
__pyx_pf_6tables_13hdf5extension_5Group__g_create(struct __pyx_obj_6tables_13hdf5extension_Group * __pyx_v_self)12402 static PyObject *__pyx_pf_6tables_13hdf5extension_5Group__g_create(struct __pyx_obj_6tables_13hdf5extension_Group *__pyx_v_self) {
12403   hid_t __pyx_v_ret;
12404   PyObject *__pyx_v_encoded_name = 0;
12405   PyObject *__pyx_r = NULL;
12406   __Pyx_RefNannyDeclarations
12407   PyObject *__pyx_t_1 = NULL;
12408   PyObject *__pyx_t_2 = NULL;
12409   PyObject *__pyx_t_3 = NULL;
12410   char *__pyx_t_4;
12411   int __pyx_t_5;
12412   PyObject *__pyx_t_6 = NULL;
12413   __Pyx_RefNannySetupContext("_g_create", 0);
12414 
12415   /* "tables/hdf5extension.pyx":954
12416  *     cdef bytes encoded_name
12417  *
12418  *     encoded_name = self.name.encode('utf-8')             # <<<<<<<<<<<<<<
12419  *
12420  *     # @TODO: set property list --> utf-8
12421  */
12422   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->__pyx_base.name, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 954, __pyx_L1_error)
12423   __Pyx_GOTREF(__pyx_t_2);
12424   __pyx_t_3 = NULL;
12425   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
12426     __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
12427     if (likely(__pyx_t_3)) {
12428       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
12429       __Pyx_INCREF(__pyx_t_3);
12430       __Pyx_INCREF(function);
12431       __Pyx_DECREF_SET(__pyx_t_2, function);
12432     }
12433   }
12434   __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_kp_s_utf_8) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_kp_s_utf_8);
12435   __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
12436   if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 954, __pyx_L1_error)
12437   __Pyx_GOTREF(__pyx_t_1);
12438   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
12439   if (!(likely(PyBytes_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 954, __pyx_L1_error)
12440   __pyx_v_encoded_name = ((PyObject*)__pyx_t_1);
12441   __pyx_t_1 = 0;
12442 
12443   /* "tables/hdf5extension.pyx":959
12444  *
12445  *     # Create a new group
12446  *     ret = H5Gcreate(self.parent_id, encoded_name, H5P_DEFAULT, H5P_DEFAULT,             # <<<<<<<<<<<<<<
12447  *                     H5P_DEFAULT)
12448  *     if ret < 0:
12449  */
12450   if (unlikely(__pyx_v_encoded_name == Py_None)) {
12451     PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
12452     __PYX_ERR(0, 959, __pyx_L1_error)
12453   }
12454   __pyx_t_4 = __Pyx_PyBytes_AsWritableString(__pyx_v_encoded_name); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 959, __pyx_L1_error)
12455 
12456   /* "tables/hdf5extension.pyx":960
12457  *     # Create a new group
12458  *     ret = H5Gcreate(self.parent_id, encoded_name, H5P_DEFAULT, H5P_DEFAULT,
12459  *                     H5P_DEFAULT)             # <<<<<<<<<<<<<<
12460  *     if ret < 0:
12461  *       raise HDF5ExtError("Can't create the group %s." % self.name)
12462  */
12463   __pyx_v_ret = H5Gcreate(__pyx_v_self->__pyx_base.parent_id, __pyx_t_4, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
12464 
12465   /* "tables/hdf5extension.pyx":961
12466  *     ret = H5Gcreate(self.parent_id, encoded_name, H5P_DEFAULT, H5P_DEFAULT,
12467  *                     H5P_DEFAULT)
12468  *     if ret < 0:             # <<<<<<<<<<<<<<
12469  *       raise HDF5ExtError("Can't create the group %s." % self.name)
12470  *     self.group_id = ret
12471  */
12472   __pyx_t_5 = ((__pyx_v_ret < 0) != 0);
12473   if (unlikely(__pyx_t_5)) {
12474 
12475     /* "tables/hdf5extension.pyx":962
12476  *                     H5P_DEFAULT)
12477  *     if ret < 0:
12478  *       raise HDF5ExtError("Can't create the group %s." % self.name)             # <<<<<<<<<<<<<<
12479  *     self.group_id = ret
12480  *     return self.group_id
12481  */
12482     __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_HDF5ExtError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 962, __pyx_L1_error)
12483     __Pyx_GOTREF(__pyx_t_2);
12484     __pyx_t_3 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Can_t_create_the_group_s, __pyx_v_self->__pyx_base.name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 962, __pyx_L1_error)
12485     __Pyx_GOTREF(__pyx_t_3);
12486     __pyx_t_6 = NULL;
12487     if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
12488       __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
12489       if (likely(__pyx_t_6)) {
12490         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
12491         __Pyx_INCREF(__pyx_t_6);
12492         __Pyx_INCREF(function);
12493         __Pyx_DECREF_SET(__pyx_t_2, function);
12494       }
12495     }
12496     __pyx_t_1 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_6, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3);
12497     __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
12498     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
12499     if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 962, __pyx_L1_error)
12500     __Pyx_GOTREF(__pyx_t_1);
12501     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
12502     __Pyx_Raise(__pyx_t_1, 0, 0, 0);
12503     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
12504     __PYX_ERR(0, 962, __pyx_L1_error)
12505 
12506     /* "tables/hdf5extension.pyx":961
12507  *     ret = H5Gcreate(self.parent_id, encoded_name, H5P_DEFAULT, H5P_DEFAULT,
12508  *                     H5P_DEFAULT)
12509  *     if ret < 0:             # <<<<<<<<<<<<<<
12510  *       raise HDF5ExtError("Can't create the group %s." % self.name)
12511  *     self.group_id = ret
12512  */
12513   }
12514 
12515   /* "tables/hdf5extension.pyx":963
12516  *     if ret < 0:
12517  *       raise HDF5ExtError("Can't create the group %s." % self.name)
12518  *     self.group_id = ret             # <<<<<<<<<<<<<<
12519  *     return self.group_id
12520  *
12521  */
12522   __pyx_v_self->group_id = __pyx_v_ret;
12523 
12524   /* "tables/hdf5extension.pyx":964
12525  *       raise HDF5ExtError("Can't create the group %s." % self.name)
12526  *     self.group_id = ret
12527  *     return self.group_id             # <<<<<<<<<<<<<<
12528  *
12529  *   def _g_open(self):
12530  */
12531   __Pyx_XDECREF(__pyx_r);
12532   __pyx_t_1 = __Pyx_PyInt_From_hid_t(__pyx_v_self->group_id); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 964, __pyx_L1_error)
12533   __Pyx_GOTREF(__pyx_t_1);
12534   __pyx_r = __pyx_t_1;
12535   __pyx_t_1 = 0;
12536   goto __pyx_L0;
12537 
12538   /* "tables/hdf5extension.pyx":950
12539  *   cdef hid_t   group_id
12540  *
12541  *   def _g_create(self):             # <<<<<<<<<<<<<<
12542  *     cdef hid_t ret
12543  *     cdef bytes encoded_name
12544  */
12545 
12546   /* function exit code */
12547   __pyx_L1_error:;
12548   __Pyx_XDECREF(__pyx_t_1);
12549   __Pyx_XDECREF(__pyx_t_2);
12550   __Pyx_XDECREF(__pyx_t_3);
12551   __Pyx_XDECREF(__pyx_t_6);
12552   __Pyx_AddTraceback("tables.hdf5extension.Group._g_create", __pyx_clineno, __pyx_lineno, __pyx_filename);
12553   __pyx_r = NULL;
12554   __pyx_L0:;
12555   __Pyx_XDECREF(__pyx_v_encoded_name);
12556   __Pyx_XGIVEREF(__pyx_r);
12557   __Pyx_RefNannyFinishContext();
12558   return __pyx_r;
12559 }
12560 
12561 /* "tables/hdf5extension.pyx":966
12562  *     return self.group_id
12563  *
12564  *   def _g_open(self):             # <<<<<<<<<<<<<<
12565  *     cdef hid_t ret
12566  *     cdef bytes encoded_name
12567  */
12568 
12569 /* Python wrapper */
12570 static PyObject *__pyx_pw_6tables_13hdf5extension_5Group_3_g_open(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
__pyx_pw_6tables_13hdf5extension_5Group_3_g_open(PyObject * __pyx_v_self,CYTHON_UNUSED PyObject * unused)12571 static PyObject *__pyx_pw_6tables_13hdf5extension_5Group_3_g_open(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
12572   PyObject *__pyx_r = 0;
12573   __Pyx_RefNannyDeclarations
12574   __Pyx_RefNannySetupContext("_g_open (wrapper)", 0);
12575   __pyx_r = __pyx_pf_6tables_13hdf5extension_5Group_2_g_open(((struct __pyx_obj_6tables_13hdf5extension_Group *)__pyx_v_self));
12576 
12577   /* function exit code */
12578   __Pyx_RefNannyFinishContext();
12579   return __pyx_r;
12580 }
12581 
__pyx_pf_6tables_13hdf5extension_5Group_2_g_open(struct __pyx_obj_6tables_13hdf5extension_Group * __pyx_v_self)12582 static PyObject *__pyx_pf_6tables_13hdf5extension_5Group_2_g_open(struct __pyx_obj_6tables_13hdf5extension_Group *__pyx_v_self) {
12583   hid_t __pyx_v_ret;
12584   PyObject *__pyx_v_encoded_name = 0;
12585   PyObject *__pyx_r = NULL;
12586   __Pyx_RefNannyDeclarations
12587   PyObject *__pyx_t_1 = NULL;
12588   PyObject *__pyx_t_2 = NULL;
12589   PyObject *__pyx_t_3 = NULL;
12590   char *__pyx_t_4;
12591   int __pyx_t_5;
12592   PyObject *__pyx_t_6 = NULL;
12593   __Pyx_RefNannySetupContext("_g_open", 0);
12594 
12595   /* "tables/hdf5extension.pyx":970
12596  *     cdef bytes encoded_name
12597  *
12598  *     encoded_name = self.name.encode('utf-8')             # <<<<<<<<<<<<<<
12599  *
12600  *     ret = H5Gopen(self.parent_id, encoded_name, H5P_DEFAULT)
12601  */
12602   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->__pyx_base.name, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 970, __pyx_L1_error)
12603   __Pyx_GOTREF(__pyx_t_2);
12604   __pyx_t_3 = NULL;
12605   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
12606     __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
12607     if (likely(__pyx_t_3)) {
12608       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
12609       __Pyx_INCREF(__pyx_t_3);
12610       __Pyx_INCREF(function);
12611       __Pyx_DECREF_SET(__pyx_t_2, function);
12612     }
12613   }
12614   __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_kp_s_utf_8) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_kp_s_utf_8);
12615   __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
12616   if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 970, __pyx_L1_error)
12617   __Pyx_GOTREF(__pyx_t_1);
12618   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
12619   if (!(likely(PyBytes_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 970, __pyx_L1_error)
12620   __pyx_v_encoded_name = ((PyObject*)__pyx_t_1);
12621   __pyx_t_1 = 0;
12622 
12623   /* "tables/hdf5extension.pyx":972
12624  *     encoded_name = self.name.encode('utf-8')
12625  *
12626  *     ret = H5Gopen(self.parent_id, encoded_name, H5P_DEFAULT)             # <<<<<<<<<<<<<<
12627  *     if ret < 0:
12628  *       raise HDF5ExtError("Can't open the group: '%s'." % self.name)
12629  */
12630   if (unlikely(__pyx_v_encoded_name == Py_None)) {
12631     PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
12632     __PYX_ERR(0, 972, __pyx_L1_error)
12633   }
12634   __pyx_t_4 = __Pyx_PyBytes_AsWritableString(__pyx_v_encoded_name); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 972, __pyx_L1_error)
12635   __pyx_v_ret = H5Gopen(__pyx_v_self->__pyx_base.parent_id, __pyx_t_4, H5P_DEFAULT);
12636 
12637   /* "tables/hdf5extension.pyx":973
12638  *
12639  *     ret = H5Gopen(self.parent_id, encoded_name, H5P_DEFAULT)
12640  *     if ret < 0:             # <<<<<<<<<<<<<<
12641  *       raise HDF5ExtError("Can't open the group: '%s'." % self.name)
12642  *     self.group_id = ret
12643  */
12644   __pyx_t_5 = ((__pyx_v_ret < 0) != 0);
12645   if (unlikely(__pyx_t_5)) {
12646 
12647     /* "tables/hdf5extension.pyx":974
12648  *     ret = H5Gopen(self.parent_id, encoded_name, H5P_DEFAULT)
12649  *     if ret < 0:
12650  *       raise HDF5ExtError("Can't open the group: '%s'." % self.name)             # <<<<<<<<<<<<<<
12651  *     self.group_id = ret
12652  *     return self.group_id
12653  */
12654     __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_HDF5ExtError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 974, __pyx_L1_error)
12655     __Pyx_GOTREF(__pyx_t_2);
12656     __pyx_t_3 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Can_t_open_the_group_s, __pyx_v_self->__pyx_base.name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 974, __pyx_L1_error)
12657     __Pyx_GOTREF(__pyx_t_3);
12658     __pyx_t_6 = NULL;
12659     if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
12660       __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
12661       if (likely(__pyx_t_6)) {
12662         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
12663         __Pyx_INCREF(__pyx_t_6);
12664         __Pyx_INCREF(function);
12665         __Pyx_DECREF_SET(__pyx_t_2, function);
12666       }
12667     }
12668     __pyx_t_1 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_6, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3);
12669     __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
12670     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
12671     if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 974, __pyx_L1_error)
12672     __Pyx_GOTREF(__pyx_t_1);
12673     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
12674     __Pyx_Raise(__pyx_t_1, 0, 0, 0);
12675     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
12676     __PYX_ERR(0, 974, __pyx_L1_error)
12677 
12678     /* "tables/hdf5extension.pyx":973
12679  *
12680  *     ret = H5Gopen(self.parent_id, encoded_name, H5P_DEFAULT)
12681  *     if ret < 0:             # <<<<<<<<<<<<<<
12682  *       raise HDF5ExtError("Can't open the group: '%s'." % self.name)
12683  *     self.group_id = ret
12684  */
12685   }
12686 
12687   /* "tables/hdf5extension.pyx":975
12688  *     if ret < 0:
12689  *       raise HDF5ExtError("Can't open the group: '%s'." % self.name)
12690  *     self.group_id = ret             # <<<<<<<<<<<<<<
12691  *     return self.group_id
12692  *
12693  */
12694   __pyx_v_self->group_id = __pyx_v_ret;
12695 
12696   /* "tables/hdf5extension.pyx":976
12697  *       raise HDF5ExtError("Can't open the group: '%s'." % self.name)
12698  *     self.group_id = ret
12699  *     return self.group_id             # <<<<<<<<<<<<<<
12700  *
12701  *   def _g_get_objinfo(self, object h5name):
12702  */
12703   __Pyx_XDECREF(__pyx_r);
12704   __pyx_t_1 = __Pyx_PyInt_From_hid_t(__pyx_v_self->group_id); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 976, __pyx_L1_error)
12705   __Pyx_GOTREF(__pyx_t_1);
12706   __pyx_r = __pyx_t_1;
12707   __pyx_t_1 = 0;
12708   goto __pyx_L0;
12709 
12710   /* "tables/hdf5extension.pyx":966
12711  *     return self.group_id
12712  *
12713  *   def _g_open(self):             # <<<<<<<<<<<<<<
12714  *     cdef hid_t ret
12715  *     cdef bytes encoded_name
12716  */
12717 
12718   /* function exit code */
12719   __pyx_L1_error:;
12720   __Pyx_XDECREF(__pyx_t_1);
12721   __Pyx_XDECREF(__pyx_t_2);
12722   __Pyx_XDECREF(__pyx_t_3);
12723   __Pyx_XDECREF(__pyx_t_6);
12724   __Pyx_AddTraceback("tables.hdf5extension.Group._g_open", __pyx_clineno, __pyx_lineno, __pyx_filename);
12725   __pyx_r = NULL;
12726   __pyx_L0:;
12727   __Pyx_XDECREF(__pyx_v_encoded_name);
12728   __Pyx_XGIVEREF(__pyx_r);
12729   __Pyx_RefNannyFinishContext();
12730   return __pyx_r;
12731 }
12732 
12733 /* "tables/hdf5extension.pyx":978
12734  *     return self.group_id
12735  *
12736  *   def _g_get_objinfo(self, object h5name):             # <<<<<<<<<<<<<<
12737  *     """Check whether 'name' is a children of 'self' and return its type."""
12738  *
12739  */
12740 
12741 /* Python wrapper */
12742 static PyObject *__pyx_pw_6tables_13hdf5extension_5Group_5_g_get_objinfo(PyObject *__pyx_v_self, PyObject *__pyx_v_h5name); /*proto*/
12743 static char __pyx_doc_6tables_13hdf5extension_5Group_4_g_get_objinfo[] = "Check whether 'name' is a children of 'self' and return its type.";
__pyx_pw_6tables_13hdf5extension_5Group_5_g_get_objinfo(PyObject * __pyx_v_self,PyObject * __pyx_v_h5name)12744 static PyObject *__pyx_pw_6tables_13hdf5extension_5Group_5_g_get_objinfo(PyObject *__pyx_v_self, PyObject *__pyx_v_h5name) {
12745   PyObject *__pyx_r = 0;
12746   __Pyx_RefNannyDeclarations
12747   __Pyx_RefNannySetupContext("_g_get_objinfo (wrapper)", 0);
12748   __pyx_r = __pyx_pf_6tables_13hdf5extension_5Group_4_g_get_objinfo(((struct __pyx_obj_6tables_13hdf5extension_Group *)__pyx_v_self), ((PyObject *)__pyx_v_h5name));
12749 
12750   /* function exit code */
12751   __Pyx_RefNannyFinishContext();
12752   return __pyx_r;
12753 }
12754 
__pyx_pf_6tables_13hdf5extension_5Group_4_g_get_objinfo(struct __pyx_obj_6tables_13hdf5extension_Group * __pyx_v_self,PyObject * __pyx_v_h5name)12755 static PyObject *__pyx_pf_6tables_13hdf5extension_5Group_4_g_get_objinfo(struct __pyx_obj_6tables_13hdf5extension_Group *__pyx_v_self, PyObject *__pyx_v_h5name) {
12756   int __pyx_v_ret;
12757   PyObject *__pyx_v_node_type = 0;
12758   PyObject *__pyx_v_encoded_name = 0;
12759   char *__pyx_v_cname;
12760   PyObject *__pyx_r = NULL;
12761   __Pyx_RefNannyDeclarations
12762   PyObject *__pyx_t_1 = NULL;
12763   PyObject *__pyx_t_2 = NULL;
12764   PyObject *__pyx_t_3 = NULL;
12765   char *__pyx_t_4;
12766   __Pyx_RefNannySetupContext("_g_get_objinfo", 0);
12767 
12768   /* "tables/hdf5extension.pyx":986
12769  *     cdef char *cname
12770  *
12771  *     encoded_name = h5name.encode('utf-8')             # <<<<<<<<<<<<<<
12772  *     # Get the C pointer
12773  *     cname = encoded_name
12774  */
12775   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_h5name, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 986, __pyx_L1_error)
12776   __Pyx_GOTREF(__pyx_t_2);
12777   __pyx_t_3 = NULL;
12778   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
12779     __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
12780     if (likely(__pyx_t_3)) {
12781       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
12782       __Pyx_INCREF(__pyx_t_3);
12783       __Pyx_INCREF(function);
12784       __Pyx_DECREF_SET(__pyx_t_2, function);
12785     }
12786   }
12787   __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_kp_s_utf_8) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_kp_s_utf_8);
12788   __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
12789   if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 986, __pyx_L1_error)
12790   __Pyx_GOTREF(__pyx_t_1);
12791   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
12792   if (!(likely(PyBytes_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 986, __pyx_L1_error)
12793   __pyx_v_encoded_name = ((PyObject*)__pyx_t_1);
12794   __pyx_t_1 = 0;
12795 
12796   /* "tables/hdf5extension.pyx":988
12797  *     encoded_name = h5name.encode('utf-8')
12798  *     # Get the C pointer
12799  *     cname = encoded_name             # <<<<<<<<<<<<<<
12800  *
12801  *     ret = get_linkinfo(self.group_id, cname)
12802  */
12803   if (unlikely(__pyx_v_encoded_name == Py_None)) {
12804     PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
12805     __PYX_ERR(0, 988, __pyx_L1_error)
12806   }
12807   __pyx_t_4 = __Pyx_PyBytes_AsWritableString(__pyx_v_encoded_name); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 988, __pyx_L1_error)
12808   __pyx_v_cname = __pyx_t_4;
12809 
12810   /* "tables/hdf5extension.pyx":990
12811  *     cname = encoded_name
12812  *
12813  *     ret = get_linkinfo(self.group_id, cname)             # <<<<<<<<<<<<<<
12814  *     if ret == -2 or ret == H5L_TYPE_ERROR:
12815  *       node_type = "NoSuchNode"
12816  */
12817   __pyx_v_ret = get_linkinfo(__pyx_v_self->group_id, __pyx_v_cname);
12818 
12819   /* "tables/hdf5extension.pyx":991
12820  *
12821  *     ret = get_linkinfo(self.group_id, cname)
12822  *     if ret == -2 or ret == H5L_TYPE_ERROR:             # <<<<<<<<<<<<<<
12823  *       node_type = "NoSuchNode"
12824  *     elif ret == H5L_TYPE_SOFT:
12825  */
12826   switch (__pyx_v_ret) {
12827     case -2L:
12828     case H5L_TYPE_ERROR:
12829 
12830     /* "tables/hdf5extension.pyx":992
12831  *     ret = get_linkinfo(self.group_id, cname)
12832  *     if ret == -2 or ret == H5L_TYPE_ERROR:
12833  *       node_type = "NoSuchNode"             # <<<<<<<<<<<<<<
12834  *     elif ret == H5L_TYPE_SOFT:
12835  *       node_type = "SoftLink"
12836  */
12837     __Pyx_INCREF(__pyx_n_s_NoSuchNode);
12838     __pyx_v_node_type = __pyx_n_s_NoSuchNode;
12839 
12840     /* "tables/hdf5extension.pyx":991
12841  *
12842  *     ret = get_linkinfo(self.group_id, cname)
12843  *     if ret == -2 or ret == H5L_TYPE_ERROR:             # <<<<<<<<<<<<<<
12844  *       node_type = "NoSuchNode"
12845  *     elif ret == H5L_TYPE_SOFT:
12846  */
12847     break;
12848     case H5L_TYPE_SOFT:
12849 
12850     /* "tables/hdf5extension.pyx":994
12851  *       node_type = "NoSuchNode"
12852  *     elif ret == H5L_TYPE_SOFT:
12853  *       node_type = "SoftLink"             # <<<<<<<<<<<<<<
12854  *     elif ret == H5L_TYPE_EXTERNAL:
12855  *       node_type = "ExternalLink"
12856  */
12857     __Pyx_INCREF(__pyx_n_s_SoftLink);
12858     __pyx_v_node_type = __pyx_n_s_SoftLink;
12859 
12860     /* "tables/hdf5extension.pyx":993
12861  *     if ret == -2 or ret == H5L_TYPE_ERROR:
12862  *       node_type = "NoSuchNode"
12863  *     elif ret == H5L_TYPE_SOFT:             # <<<<<<<<<<<<<<
12864  *       node_type = "SoftLink"
12865  *     elif ret == H5L_TYPE_EXTERNAL:
12866  */
12867     break;
12868     case H5L_TYPE_EXTERNAL:
12869 
12870     /* "tables/hdf5extension.pyx":996
12871  *       node_type = "SoftLink"
12872  *     elif ret == H5L_TYPE_EXTERNAL:
12873  *       node_type = "ExternalLink"             # <<<<<<<<<<<<<<
12874  *     elif ret == H5L_TYPE_HARD:
12875  *         ret = get_objinfo(self.group_id, cname)
12876  */
12877     __Pyx_INCREF(__pyx_n_s_ExternalLink);
12878     __pyx_v_node_type = __pyx_n_s_ExternalLink;
12879 
12880     /* "tables/hdf5extension.pyx":995
12881  *     elif ret == H5L_TYPE_SOFT:
12882  *       node_type = "SoftLink"
12883  *     elif ret == H5L_TYPE_EXTERNAL:             # <<<<<<<<<<<<<<
12884  *       node_type = "ExternalLink"
12885  *     elif ret == H5L_TYPE_HARD:
12886  */
12887     break;
12888     case H5L_TYPE_HARD:
12889 
12890     /* "tables/hdf5extension.pyx":998
12891  *       node_type = "ExternalLink"
12892  *     elif ret == H5L_TYPE_HARD:
12893  *         ret = get_objinfo(self.group_id, cname)             # <<<<<<<<<<<<<<
12894  *         if ret == -2:
12895  *           node_type = "NoSuchNode"
12896  */
12897     __pyx_v_ret = get_objinfo(__pyx_v_self->group_id, __pyx_v_cname);
12898 
12899     /* "tables/hdf5extension.pyx":999
12900  *     elif ret == H5L_TYPE_HARD:
12901  *         ret = get_objinfo(self.group_id, cname)
12902  *         if ret == -2:             # <<<<<<<<<<<<<<
12903  *           node_type = "NoSuchNode"
12904  *         elif ret == H5O_TYPE_UNKNOWN:
12905  */
12906     switch (__pyx_v_ret) {
12907       case -2L:
12908 
12909       /* "tables/hdf5extension.pyx":1000
12910  *         ret = get_objinfo(self.group_id, cname)
12911  *         if ret == -2:
12912  *           node_type = "NoSuchNode"             # <<<<<<<<<<<<<<
12913  *         elif ret == H5O_TYPE_UNKNOWN:
12914  *           node_type = "Unknown"
12915  */
12916       __Pyx_INCREF(__pyx_n_s_NoSuchNode);
12917       __pyx_v_node_type = __pyx_n_s_NoSuchNode;
12918 
12919       /* "tables/hdf5extension.pyx":999
12920  *     elif ret == H5L_TYPE_HARD:
12921  *         ret = get_objinfo(self.group_id, cname)
12922  *         if ret == -2:             # <<<<<<<<<<<<<<
12923  *           node_type = "NoSuchNode"
12924  *         elif ret == H5O_TYPE_UNKNOWN:
12925  */
12926       break;
12927       case H5O_TYPE_UNKNOWN:
12928 
12929       /* "tables/hdf5extension.pyx":1002
12930  *           node_type = "NoSuchNode"
12931  *         elif ret == H5O_TYPE_UNKNOWN:
12932  *           node_type = "Unknown"             # <<<<<<<<<<<<<<
12933  *         elif ret == H5O_TYPE_GROUP:
12934  *           node_type = "Group"
12935  */
12936       __Pyx_INCREF(__pyx_n_s_Unknown);
12937       __pyx_v_node_type = __pyx_n_s_Unknown;
12938 
12939       /* "tables/hdf5extension.pyx":1001
12940  *         if ret == -2:
12941  *           node_type = "NoSuchNode"
12942  *         elif ret == H5O_TYPE_UNKNOWN:             # <<<<<<<<<<<<<<
12943  *           node_type = "Unknown"
12944  *         elif ret == H5O_TYPE_GROUP:
12945  */
12946       break;
12947       case H5O_TYPE_GROUP:
12948 
12949       /* "tables/hdf5extension.pyx":1004
12950  *           node_type = "Unknown"
12951  *         elif ret == H5O_TYPE_GROUP:
12952  *           node_type = "Group"             # <<<<<<<<<<<<<<
12953  *         elif ret == H5O_TYPE_DATASET:
12954  *           node_type = "Leaf"
12955  */
12956       __Pyx_INCREF(__pyx_n_s_Group);
12957       __pyx_v_node_type = __pyx_n_s_Group;
12958 
12959       /* "tables/hdf5extension.pyx":1003
12960  *         elif ret == H5O_TYPE_UNKNOWN:
12961  *           node_type = "Unknown"
12962  *         elif ret == H5O_TYPE_GROUP:             # <<<<<<<<<<<<<<
12963  *           node_type = "Group"
12964  *         elif ret == H5O_TYPE_DATASET:
12965  */
12966       break;
12967       case H5O_TYPE_DATASET:
12968 
12969       /* "tables/hdf5extension.pyx":1006
12970  *           node_type = "Group"
12971  *         elif ret == H5O_TYPE_DATASET:
12972  *           node_type = "Leaf"             # <<<<<<<<<<<<<<
12973  *         elif ret == H5O_TYPE_NAMED_DATATYPE:
12974  *           node_type = "NamedType"              # Not supported yet
12975  */
12976       __Pyx_INCREF(__pyx_n_s_Leaf);
12977       __pyx_v_node_type = __pyx_n_s_Leaf;
12978 
12979       /* "tables/hdf5extension.pyx":1005
12980  *         elif ret == H5O_TYPE_GROUP:
12981  *           node_type = "Group"
12982  *         elif ret == H5O_TYPE_DATASET:             # <<<<<<<<<<<<<<
12983  *           node_type = "Leaf"
12984  *         elif ret == H5O_TYPE_NAMED_DATATYPE:
12985  */
12986       break;
12987       case H5O_TYPE_NAMED_DATATYPE:
12988 
12989       /* "tables/hdf5extension.pyx":1008
12990  *           node_type = "Leaf"
12991  *         elif ret == H5O_TYPE_NAMED_DATATYPE:
12992  *           node_type = "NamedType"              # Not supported yet             # <<<<<<<<<<<<<<
12993  *         #else H5O_TYPE_LINK:
12994  *         #    # symbolic link
12995  */
12996       __Pyx_INCREF(__pyx_n_s_NamedType);
12997       __pyx_v_node_type = __pyx_n_s_NamedType;
12998 
12999       /* "tables/hdf5extension.pyx":1007
13000  *         elif ret == H5O_TYPE_DATASET:
13001  *           node_type = "Leaf"
13002  *         elif ret == H5O_TYPE_NAMED_DATATYPE:             # <<<<<<<<<<<<<<
13003  *           node_type = "NamedType"              # Not supported yet
13004  *         #else H5O_TYPE_LINK:
13005  */
13006       break;
13007       default:
13008 
13009       /* "tables/hdf5extension.pyx":1013
13010  *         #    raise RuntimeError('unexpected object type')
13011  *         else:
13012  *           node_type = "Unknown"             # <<<<<<<<<<<<<<
13013  *     return node_type
13014  *
13015  */
13016       __Pyx_INCREF(__pyx_n_s_Unknown);
13017       __pyx_v_node_type = __pyx_n_s_Unknown;
13018       break;
13019     }
13020 
13021     /* "tables/hdf5extension.pyx":997
13022  *     elif ret == H5L_TYPE_EXTERNAL:
13023  *       node_type = "ExternalLink"
13024  *     elif ret == H5L_TYPE_HARD:             # <<<<<<<<<<<<<<
13025  *         ret = get_objinfo(self.group_id, cname)
13026  *         if ret == -2:
13027  */
13028     break;
13029     default: break;
13030   }
13031 
13032   /* "tables/hdf5extension.pyx":1014
13033  *         else:
13034  *           node_type = "Unknown"
13035  *     return node_type             # <<<<<<<<<<<<<<
13036  *
13037  *   def _g_list_group(self, parent):
13038  */
13039   __Pyx_XDECREF(__pyx_r);
13040   if (unlikely(!__pyx_v_node_type)) { __Pyx_RaiseUnboundLocalError("node_type"); __PYX_ERR(0, 1014, __pyx_L1_error) }
13041   __Pyx_INCREF(__pyx_v_node_type);
13042   __pyx_r = __pyx_v_node_type;
13043   goto __pyx_L0;
13044 
13045   /* "tables/hdf5extension.pyx":978
13046  *     return self.group_id
13047  *
13048  *   def _g_get_objinfo(self, object h5name):             # <<<<<<<<<<<<<<
13049  *     """Check whether 'name' is a children of 'self' and return its type."""
13050  *
13051  */
13052 
13053   /* function exit code */
13054   __pyx_L1_error:;
13055   __Pyx_XDECREF(__pyx_t_1);
13056   __Pyx_XDECREF(__pyx_t_2);
13057   __Pyx_XDECREF(__pyx_t_3);
13058   __Pyx_AddTraceback("tables.hdf5extension.Group._g_get_objinfo", __pyx_clineno, __pyx_lineno, __pyx_filename);
13059   __pyx_r = NULL;
13060   __pyx_L0:;
13061   __Pyx_XDECREF(__pyx_v_node_type);
13062   __Pyx_XDECREF(__pyx_v_encoded_name);
13063   __Pyx_XGIVEREF(__pyx_r);
13064   __Pyx_RefNannyFinishContext();
13065   return __pyx_r;
13066 }
13067 
13068 /* "tables/hdf5extension.pyx":1016
13069  *     return node_type
13070  *
13071  *   def _g_list_group(self, parent):             # <<<<<<<<<<<<<<
13072  *     """Return a tuple with the groups and the leaves hanging from self."""
13073  *
13074  */
13075 
13076 /* Python wrapper */
13077 static PyObject *__pyx_pw_6tables_13hdf5extension_5Group_7_g_list_group(PyObject *__pyx_v_self, PyObject *__pyx_v_parent); /*proto*/
13078 static char __pyx_doc_6tables_13hdf5extension_5Group_6_g_list_group[] = "Return a tuple with the groups and the leaves hanging from self.";
__pyx_pw_6tables_13hdf5extension_5Group_7_g_list_group(PyObject * __pyx_v_self,PyObject * __pyx_v_parent)13079 static PyObject *__pyx_pw_6tables_13hdf5extension_5Group_7_g_list_group(PyObject *__pyx_v_self, PyObject *__pyx_v_parent) {
13080   PyObject *__pyx_r = 0;
13081   __Pyx_RefNannyDeclarations
13082   __Pyx_RefNannySetupContext("_g_list_group (wrapper)", 0);
13083   __pyx_r = __pyx_pf_6tables_13hdf5extension_5Group_6_g_list_group(((struct __pyx_obj_6tables_13hdf5extension_Group *)__pyx_v_self), ((PyObject *)__pyx_v_parent));
13084 
13085   /* function exit code */
13086   __Pyx_RefNannyFinishContext();
13087   return __pyx_r;
13088 }
13089 
__pyx_pf_6tables_13hdf5extension_5Group_6_g_list_group(struct __pyx_obj_6tables_13hdf5extension_Group * __pyx_v_self,PyObject * __pyx_v_parent)13090 static PyObject *__pyx_pf_6tables_13hdf5extension_5Group_6_g_list_group(struct __pyx_obj_6tables_13hdf5extension_Group *__pyx_v_self, PyObject *__pyx_v_parent) {
13091   PyObject *__pyx_v_encoded_name = 0;
13092   PyObject *__pyx_r = NULL;
13093   __Pyx_RefNannyDeclarations
13094   PyObject *__pyx_t_1 = NULL;
13095   PyObject *__pyx_t_2 = NULL;
13096   PyObject *__pyx_t_3 = NULL;
13097   hid_t __pyx_t_4;
13098   hid_t __pyx_t_5;
13099   char *__pyx_t_6;
13100   __Pyx_RefNannySetupContext("_g_list_group", 0);
13101 
13102   /* "tables/hdf5extension.pyx":1021
13103  *     cdef bytes encoded_name
13104  *
13105  *     encoded_name = self.name.encode('utf-8')             # <<<<<<<<<<<<<<
13106  *
13107  *     return Giterate(parent._v_objectid, self._v_objectid, encoded_name)
13108  */
13109   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->__pyx_base.name, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1021, __pyx_L1_error)
13110   __Pyx_GOTREF(__pyx_t_2);
13111   __pyx_t_3 = NULL;
13112   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
13113     __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
13114     if (likely(__pyx_t_3)) {
13115       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
13116       __Pyx_INCREF(__pyx_t_3);
13117       __Pyx_INCREF(function);
13118       __Pyx_DECREF_SET(__pyx_t_2, function);
13119     }
13120   }
13121   __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_kp_s_utf_8) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_kp_s_utf_8);
13122   __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
13123   if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1021, __pyx_L1_error)
13124   __Pyx_GOTREF(__pyx_t_1);
13125   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
13126   if (!(likely(PyBytes_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 1021, __pyx_L1_error)
13127   __pyx_v_encoded_name = ((PyObject*)__pyx_t_1);
13128   __pyx_t_1 = 0;
13129 
13130   /* "tables/hdf5extension.pyx":1023
13131  *     encoded_name = self.name.encode('utf-8')
13132  *
13133  *     return Giterate(parent._v_objectid, self._v_objectid, encoded_name)             # <<<<<<<<<<<<<<
13134  *
13135  *
13136  */
13137   __Pyx_XDECREF(__pyx_r);
13138   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_parent, __pyx_n_s_v_objectid); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1023, __pyx_L1_error)
13139   __Pyx_GOTREF(__pyx_t_1);
13140   __pyx_t_4 = __Pyx_PyInt_As_hid_t(__pyx_t_1); if (unlikely((__pyx_t_4 == ((hid_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1023, __pyx_L1_error)
13141   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
13142   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_v_objectid); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1023, __pyx_L1_error)
13143   __Pyx_GOTREF(__pyx_t_1);
13144   __pyx_t_5 = __Pyx_PyInt_As_hid_t(__pyx_t_1); if (unlikely((__pyx_t_5 == ((hid_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1023, __pyx_L1_error)
13145   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
13146   if (unlikely(__pyx_v_encoded_name == Py_None)) {
13147     PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
13148     __PYX_ERR(0, 1023, __pyx_L1_error)
13149   }
13150   __pyx_t_6 = __Pyx_PyBytes_AsWritableString(__pyx_v_encoded_name); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(0, 1023, __pyx_L1_error)
13151   __pyx_t_1 = Giterate(__pyx_t_4, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1023, __pyx_L1_error)
13152   __Pyx_GOTREF(__pyx_t_1);
13153   __pyx_r = __pyx_t_1;
13154   __pyx_t_1 = 0;
13155   goto __pyx_L0;
13156 
13157   /* "tables/hdf5extension.pyx":1016
13158  *     return node_type
13159  *
13160  *   def _g_list_group(self, parent):             # <<<<<<<<<<<<<<
13161  *     """Return a tuple with the groups and the leaves hanging from self."""
13162  *
13163  */
13164 
13165   /* function exit code */
13166   __pyx_L1_error:;
13167   __Pyx_XDECREF(__pyx_t_1);
13168   __Pyx_XDECREF(__pyx_t_2);
13169   __Pyx_XDECREF(__pyx_t_3);
13170   __Pyx_AddTraceback("tables.hdf5extension.Group._g_list_group", __pyx_clineno, __pyx_lineno, __pyx_filename);
13171   __pyx_r = NULL;
13172   __pyx_L0:;
13173   __Pyx_XDECREF(__pyx_v_encoded_name);
13174   __Pyx_XGIVEREF(__pyx_r);
13175   __Pyx_RefNannyFinishContext();
13176   return __pyx_r;
13177 }
13178 
13179 /* "tables/hdf5extension.pyx":1026
13180  *
13181  *
13182  *   def _g_get_gchild_attr(self, group_name, attr_name):             # <<<<<<<<<<<<<<
13183  *     """Return an attribute of a child `Group`.
13184  *
13185  */
13186 
13187 /* Python wrapper */
13188 static PyObject *__pyx_pw_6tables_13hdf5extension_5Group_9_g_get_gchild_attr(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
13189 static char __pyx_doc_6tables_13hdf5extension_5Group_8_g_get_gchild_attr[] = "Return an attribute of a child `Group`.\n\n    If the attribute does not exist, ``None`` is returned.\n\n    ";
__pyx_pw_6tables_13hdf5extension_5Group_9_g_get_gchild_attr(PyObject * __pyx_v_self,PyObject * __pyx_args,PyObject * __pyx_kwds)13190 static PyObject *__pyx_pw_6tables_13hdf5extension_5Group_9_g_get_gchild_attr(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
13191   PyObject *__pyx_v_group_name = 0;
13192   PyObject *__pyx_v_attr_name = 0;
13193   PyObject *__pyx_r = 0;
13194   __Pyx_RefNannyDeclarations
13195   __Pyx_RefNannySetupContext("_g_get_gchild_attr (wrapper)", 0);
13196   {
13197     static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_group_name,&__pyx_n_s_attr_name,0};
13198     PyObject* values[2] = {0,0};
13199     if (unlikely(__pyx_kwds)) {
13200       Py_ssize_t kw_args;
13201       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
13202       switch (pos_args) {
13203         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
13204         CYTHON_FALLTHROUGH;
13205         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
13206         CYTHON_FALLTHROUGH;
13207         case  0: break;
13208         default: goto __pyx_L5_argtuple_error;
13209       }
13210       kw_args = PyDict_Size(__pyx_kwds);
13211       switch (pos_args) {
13212         case  0:
13213         if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_group_name)) != 0)) kw_args--;
13214         else goto __pyx_L5_argtuple_error;
13215         CYTHON_FALLTHROUGH;
13216         case  1:
13217         if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_attr_name)) != 0)) kw_args--;
13218         else {
13219           __Pyx_RaiseArgtupleInvalid("_g_get_gchild_attr", 1, 2, 2, 1); __PYX_ERR(0, 1026, __pyx_L3_error)
13220         }
13221       }
13222       if (unlikely(kw_args > 0)) {
13223         if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_g_get_gchild_attr") < 0)) __PYX_ERR(0, 1026, __pyx_L3_error)
13224       }
13225     } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
13226       goto __pyx_L5_argtuple_error;
13227     } else {
13228       values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
13229       values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
13230     }
13231     __pyx_v_group_name = values[0];
13232     __pyx_v_attr_name = values[1];
13233   }
13234   goto __pyx_L4_argument_unpacking_done;
13235   __pyx_L5_argtuple_error:;
13236   __Pyx_RaiseArgtupleInvalid("_g_get_gchild_attr", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1026, __pyx_L3_error)
13237   __pyx_L3_error:;
13238   __Pyx_AddTraceback("tables.hdf5extension.Group._g_get_gchild_attr", __pyx_clineno, __pyx_lineno, __pyx_filename);
13239   __Pyx_RefNannyFinishContext();
13240   return NULL;
13241   __pyx_L4_argument_unpacking_done:;
13242   __pyx_r = __pyx_pf_6tables_13hdf5extension_5Group_8_g_get_gchild_attr(((struct __pyx_obj_6tables_13hdf5extension_Group *)__pyx_v_self), __pyx_v_group_name, __pyx_v_attr_name);
13243 
13244   /* function exit code */
13245   __Pyx_RefNannyFinishContext();
13246   return __pyx_r;
13247 }
13248 
__pyx_pf_6tables_13hdf5extension_5Group_8_g_get_gchild_attr(struct __pyx_obj_6tables_13hdf5extension_Group * __pyx_v_self,PyObject * __pyx_v_group_name,PyObject * __pyx_v_attr_name)13249 static PyObject *__pyx_pf_6tables_13hdf5extension_5Group_8_g_get_gchild_attr(struct __pyx_obj_6tables_13hdf5extension_Group *__pyx_v_self, PyObject *__pyx_v_group_name, PyObject *__pyx_v_attr_name) {
13250   hid_t __pyx_v_gchild_id;
13251   PyObject *__pyx_v_retvalue = 0;
13252   PyObject *__pyx_v_encoded_group_name = 0;
13253   PyObject *__pyx_v_encoded_attr_name = 0;
13254   PyObject *__pyx_r = NULL;
13255   __Pyx_RefNannyDeclarations
13256   PyObject *__pyx_t_1 = NULL;
13257   PyObject *__pyx_t_2 = NULL;
13258   PyObject *__pyx_t_3 = NULL;
13259   char *__pyx_t_4;
13260   int __pyx_t_5;
13261   PyObject *__pyx_t_6 = NULL;
13262   __Pyx_RefNannySetupContext("_g_get_gchild_attr", 0);
13263 
13264   /* "tables/hdf5extension.pyx":1038
13265  *     cdef bytes encoded_attr_name
13266  *
13267  *     encoded_group_name = group_name.encode('utf-8')             # <<<<<<<<<<<<<<
13268  *     encoded_attr_name = attr_name.encode('utf-8')
13269  *
13270  */
13271   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_group_name, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1038, __pyx_L1_error)
13272   __Pyx_GOTREF(__pyx_t_2);
13273   __pyx_t_3 = NULL;
13274   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
13275     __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
13276     if (likely(__pyx_t_3)) {
13277       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
13278       __Pyx_INCREF(__pyx_t_3);
13279       __Pyx_INCREF(function);
13280       __Pyx_DECREF_SET(__pyx_t_2, function);
13281     }
13282   }
13283   __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_kp_s_utf_8) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_kp_s_utf_8);
13284   __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
13285   if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1038, __pyx_L1_error)
13286   __Pyx_GOTREF(__pyx_t_1);
13287   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
13288   if (!(likely(PyBytes_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 1038, __pyx_L1_error)
13289   __pyx_v_encoded_group_name = ((PyObject*)__pyx_t_1);
13290   __pyx_t_1 = 0;
13291 
13292   /* "tables/hdf5extension.pyx":1039
13293  *
13294  *     encoded_group_name = group_name.encode('utf-8')
13295  *     encoded_attr_name = attr_name.encode('utf-8')             # <<<<<<<<<<<<<<
13296  *
13297  *     # Open the group
13298  */
13299   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_attr_name, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1039, __pyx_L1_error)
13300   __Pyx_GOTREF(__pyx_t_2);
13301   __pyx_t_3 = NULL;
13302   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
13303     __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
13304     if (likely(__pyx_t_3)) {
13305       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
13306       __Pyx_INCREF(__pyx_t_3);
13307       __Pyx_INCREF(function);
13308       __Pyx_DECREF_SET(__pyx_t_2, function);
13309     }
13310   }
13311   __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_kp_s_utf_8) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_kp_s_utf_8);
13312   __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
13313   if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1039, __pyx_L1_error)
13314   __Pyx_GOTREF(__pyx_t_1);
13315   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
13316   if (!(likely(PyBytes_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 1039, __pyx_L1_error)
13317   __pyx_v_encoded_attr_name = ((PyObject*)__pyx_t_1);
13318   __pyx_t_1 = 0;
13319 
13320   /* "tables/hdf5extension.pyx":1042
13321  *
13322  *     # Open the group
13323  *     retvalue = None  # Default value             # <<<<<<<<<<<<<<
13324  *     gchild_id = H5Gopen(self.group_id, encoded_group_name, H5P_DEFAULT)
13325  *     if gchild_id < 0:
13326  */
13327   __Pyx_INCREF(Py_None);
13328   __pyx_v_retvalue = Py_None;
13329 
13330   /* "tables/hdf5extension.pyx":1043
13331  *     # Open the group
13332  *     retvalue = None  # Default value
13333  *     gchild_id = H5Gopen(self.group_id, encoded_group_name, H5P_DEFAULT)             # <<<<<<<<<<<<<<
13334  *     if gchild_id < 0:
13335  *       raise HDF5ExtError("Non-existing node ``%s`` under ``%s``" %
13336  */
13337   if (unlikely(__pyx_v_encoded_group_name == Py_None)) {
13338     PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
13339     __PYX_ERR(0, 1043, __pyx_L1_error)
13340   }
13341   __pyx_t_4 = __Pyx_PyBytes_AsWritableString(__pyx_v_encoded_group_name); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 1043, __pyx_L1_error)
13342   __pyx_v_gchild_id = H5Gopen(__pyx_v_self->group_id, __pyx_t_4, H5P_DEFAULT);
13343 
13344   /* "tables/hdf5extension.pyx":1044
13345  *     retvalue = None  # Default value
13346  *     gchild_id = H5Gopen(self.group_id, encoded_group_name, H5P_DEFAULT)
13347  *     if gchild_id < 0:             # <<<<<<<<<<<<<<
13348  *       raise HDF5ExtError("Non-existing node ``%s`` under ``%s``" %
13349  *                          (group_name, self._v_pathname))
13350  */
13351   __pyx_t_5 = ((__pyx_v_gchild_id < 0) != 0);
13352   if (unlikely(__pyx_t_5)) {
13353 
13354     /* "tables/hdf5extension.pyx":1045
13355  *     gchild_id = H5Gopen(self.group_id, encoded_group_name, H5P_DEFAULT)
13356  *     if gchild_id < 0:
13357  *       raise HDF5ExtError("Non-existing node ``%s`` under ``%s``" %             # <<<<<<<<<<<<<<
13358  *                          (group_name, self._v_pathname))
13359  *     retvalue = get_attribute_string_or_none(gchild_id, encoded_attr_name)
13360  */
13361     __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_HDF5ExtError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1045, __pyx_L1_error)
13362     __Pyx_GOTREF(__pyx_t_2);
13363 
13364     /* "tables/hdf5extension.pyx":1046
13365  *     if gchild_id < 0:
13366  *       raise HDF5ExtError("Non-existing node ``%s`` under ``%s``" %
13367  *                          (group_name, self._v_pathname))             # <<<<<<<<<<<<<<
13368  *     retvalue = get_attribute_string_or_none(gchild_id, encoded_attr_name)
13369  *     # Close child group
13370  */
13371     __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_v_pathname); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1046, __pyx_L1_error)
13372     __Pyx_GOTREF(__pyx_t_3);
13373     __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1046, __pyx_L1_error)
13374     __Pyx_GOTREF(__pyx_t_6);
13375     __Pyx_INCREF(__pyx_v_group_name);
13376     __Pyx_GIVEREF(__pyx_v_group_name);
13377     PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_group_name);
13378     __Pyx_GIVEREF(__pyx_t_3);
13379     PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_3);
13380     __pyx_t_3 = 0;
13381 
13382     /* "tables/hdf5extension.pyx":1045
13383  *     gchild_id = H5Gopen(self.group_id, encoded_group_name, H5P_DEFAULT)
13384  *     if gchild_id < 0:
13385  *       raise HDF5ExtError("Non-existing node ``%s`` under ``%s``" %             # <<<<<<<<<<<<<<
13386  *                          (group_name, self._v_pathname))
13387  *     retvalue = get_attribute_string_or_none(gchild_id, encoded_attr_name)
13388  */
13389     __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_Non_existing_node_s_under_s, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1045, __pyx_L1_error)
13390     __Pyx_GOTREF(__pyx_t_3);
13391     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
13392     __pyx_t_6 = NULL;
13393     if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
13394       __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
13395       if (likely(__pyx_t_6)) {
13396         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
13397         __Pyx_INCREF(__pyx_t_6);
13398         __Pyx_INCREF(function);
13399         __Pyx_DECREF_SET(__pyx_t_2, function);
13400       }
13401     }
13402     __pyx_t_1 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_6, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3);
13403     __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
13404     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
13405     if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1045, __pyx_L1_error)
13406     __Pyx_GOTREF(__pyx_t_1);
13407     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
13408     __Pyx_Raise(__pyx_t_1, 0, 0, 0);
13409     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
13410     __PYX_ERR(0, 1045, __pyx_L1_error)
13411 
13412     /* "tables/hdf5extension.pyx":1044
13413  *     retvalue = None  # Default value
13414  *     gchild_id = H5Gopen(self.group_id, encoded_group_name, H5P_DEFAULT)
13415  *     if gchild_id < 0:             # <<<<<<<<<<<<<<
13416  *       raise HDF5ExtError("Non-existing node ``%s`` under ``%s``" %
13417  *                          (group_name, self._v_pathname))
13418  */
13419   }
13420 
13421   /* "tables/hdf5extension.pyx":1047
13422  *       raise HDF5ExtError("Non-existing node ``%s`` under ``%s``" %
13423  *                          (group_name, self._v_pathname))
13424  *     retvalue = get_attribute_string_or_none(gchild_id, encoded_attr_name)             # <<<<<<<<<<<<<<
13425  *     # Close child group
13426  *     H5Gclose(gchild_id)
13427  */
13428   if (unlikely(__pyx_v_encoded_attr_name == Py_None)) {
13429     PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
13430     __PYX_ERR(0, 1047, __pyx_L1_error)
13431   }
13432   __pyx_t_4 = __Pyx_PyBytes_AsWritableString(__pyx_v_encoded_attr_name); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 1047, __pyx_L1_error)
13433   __pyx_t_1 = __pyx_f_6tables_13hdf5extension_get_attribute_string_or_none(__pyx_v_gchild_id, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1047, __pyx_L1_error)
13434   __Pyx_GOTREF(__pyx_t_1);
13435   __Pyx_DECREF_SET(__pyx_v_retvalue, __pyx_t_1);
13436   __pyx_t_1 = 0;
13437 
13438   /* "tables/hdf5extension.pyx":1049
13439  *     retvalue = get_attribute_string_or_none(gchild_id, encoded_attr_name)
13440  *     # Close child group
13441  *     H5Gclose(gchild_id)             # <<<<<<<<<<<<<<
13442  *
13443  *     return retvalue
13444  */
13445   (void)(H5Gclose(__pyx_v_gchild_id));
13446 
13447   /* "tables/hdf5extension.pyx":1051
13448  *     H5Gclose(gchild_id)
13449  *
13450  *     return retvalue             # <<<<<<<<<<<<<<
13451  *
13452  *
13453  */
13454   __Pyx_XDECREF(__pyx_r);
13455   __Pyx_INCREF(__pyx_v_retvalue);
13456   __pyx_r = __pyx_v_retvalue;
13457   goto __pyx_L0;
13458 
13459   /* "tables/hdf5extension.pyx":1026
13460  *
13461  *
13462  *   def _g_get_gchild_attr(self, group_name, attr_name):             # <<<<<<<<<<<<<<
13463  *     """Return an attribute of a child `Group`.
13464  *
13465  */
13466 
13467   /* function exit code */
13468   __pyx_L1_error:;
13469   __Pyx_XDECREF(__pyx_t_1);
13470   __Pyx_XDECREF(__pyx_t_2);
13471   __Pyx_XDECREF(__pyx_t_3);
13472   __Pyx_XDECREF(__pyx_t_6);
13473   __Pyx_AddTraceback("tables.hdf5extension.Group._g_get_gchild_attr", __pyx_clineno, __pyx_lineno, __pyx_filename);
13474   __pyx_r = NULL;
13475   __pyx_L0:;
13476   __Pyx_XDECREF(__pyx_v_retvalue);
13477   __Pyx_XDECREF(__pyx_v_encoded_group_name);
13478   __Pyx_XDECREF(__pyx_v_encoded_attr_name);
13479   __Pyx_XGIVEREF(__pyx_r);
13480   __Pyx_RefNannyFinishContext();
13481   return __pyx_r;
13482 }
13483 
13484 /* "tables/hdf5extension.pyx":1054
13485  *
13486  *
13487  *   def _g_get_lchild_attr(self, leaf_name, attr_name):             # <<<<<<<<<<<<<<
13488  *     """Return an attribute of a child `Leaf`.
13489  *
13490  */
13491 
13492 /* Python wrapper */
13493 static PyObject *__pyx_pw_6tables_13hdf5extension_5Group_11_g_get_lchild_attr(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
13494 static char __pyx_doc_6tables_13hdf5extension_5Group_10_g_get_lchild_attr[] = "Return an attribute of a child `Leaf`.\n\n    If the attribute does not exist, ``None`` is returned.\n\n    ";
__pyx_pw_6tables_13hdf5extension_5Group_11_g_get_lchild_attr(PyObject * __pyx_v_self,PyObject * __pyx_args,PyObject * __pyx_kwds)13495 static PyObject *__pyx_pw_6tables_13hdf5extension_5Group_11_g_get_lchild_attr(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
13496   PyObject *__pyx_v_leaf_name = 0;
13497   PyObject *__pyx_v_attr_name = 0;
13498   PyObject *__pyx_r = 0;
13499   __Pyx_RefNannyDeclarations
13500   __Pyx_RefNannySetupContext("_g_get_lchild_attr (wrapper)", 0);
13501   {
13502     static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_leaf_name,&__pyx_n_s_attr_name,0};
13503     PyObject* values[2] = {0,0};
13504     if (unlikely(__pyx_kwds)) {
13505       Py_ssize_t kw_args;
13506       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
13507       switch (pos_args) {
13508         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
13509         CYTHON_FALLTHROUGH;
13510         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
13511         CYTHON_FALLTHROUGH;
13512         case  0: break;
13513         default: goto __pyx_L5_argtuple_error;
13514       }
13515       kw_args = PyDict_Size(__pyx_kwds);
13516       switch (pos_args) {
13517         case  0:
13518         if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_leaf_name)) != 0)) kw_args--;
13519         else goto __pyx_L5_argtuple_error;
13520         CYTHON_FALLTHROUGH;
13521         case  1:
13522         if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_attr_name)) != 0)) kw_args--;
13523         else {
13524           __Pyx_RaiseArgtupleInvalid("_g_get_lchild_attr", 1, 2, 2, 1); __PYX_ERR(0, 1054, __pyx_L3_error)
13525         }
13526       }
13527       if (unlikely(kw_args > 0)) {
13528         if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_g_get_lchild_attr") < 0)) __PYX_ERR(0, 1054, __pyx_L3_error)
13529       }
13530     } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
13531       goto __pyx_L5_argtuple_error;
13532     } else {
13533       values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
13534       values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
13535     }
13536     __pyx_v_leaf_name = values[0];
13537     __pyx_v_attr_name = values[1];
13538   }
13539   goto __pyx_L4_argument_unpacking_done;
13540   __pyx_L5_argtuple_error:;
13541   __Pyx_RaiseArgtupleInvalid("_g_get_lchild_attr", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1054, __pyx_L3_error)
13542   __pyx_L3_error:;
13543   __Pyx_AddTraceback("tables.hdf5extension.Group._g_get_lchild_attr", __pyx_clineno, __pyx_lineno, __pyx_filename);
13544   __Pyx_RefNannyFinishContext();
13545   return NULL;
13546   __pyx_L4_argument_unpacking_done:;
13547   __pyx_r = __pyx_pf_6tables_13hdf5extension_5Group_10_g_get_lchild_attr(((struct __pyx_obj_6tables_13hdf5extension_Group *)__pyx_v_self), __pyx_v_leaf_name, __pyx_v_attr_name);
13548 
13549   /* function exit code */
13550   __Pyx_RefNannyFinishContext();
13551   return __pyx_r;
13552 }
13553 
__pyx_pf_6tables_13hdf5extension_5Group_10_g_get_lchild_attr(struct __pyx_obj_6tables_13hdf5extension_Group * __pyx_v_self,PyObject * __pyx_v_leaf_name,PyObject * __pyx_v_attr_name)13554 static PyObject *__pyx_pf_6tables_13hdf5extension_5Group_10_g_get_lchild_attr(struct __pyx_obj_6tables_13hdf5extension_Group *__pyx_v_self, PyObject *__pyx_v_leaf_name, PyObject *__pyx_v_attr_name) {
13555   hid_t __pyx_v_leaf_id;
13556   PyObject *__pyx_v_retvalue = 0;
13557   PyObject *__pyx_v_encoded_leaf_name = 0;
13558   PyObject *__pyx_v_encoded_attr_name = 0;
13559   PyObject *__pyx_r = NULL;
13560   __Pyx_RefNannyDeclarations
13561   PyObject *__pyx_t_1 = NULL;
13562   PyObject *__pyx_t_2 = NULL;
13563   PyObject *__pyx_t_3 = NULL;
13564   char *__pyx_t_4;
13565   int __pyx_t_5;
13566   PyObject *__pyx_t_6 = NULL;
13567   __Pyx_RefNannySetupContext("_g_get_lchild_attr", 0);
13568 
13569   /* "tables/hdf5extension.pyx":1066
13570  *     cdef bytes encoded_attr_name
13571  *
13572  *     encoded_leaf_name = leaf_name.encode('utf-8')             # <<<<<<<<<<<<<<
13573  *     encoded_attr_name = attr_name.encode('utf-8')
13574  *
13575  */
13576   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_leaf_name, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1066, __pyx_L1_error)
13577   __Pyx_GOTREF(__pyx_t_2);
13578   __pyx_t_3 = NULL;
13579   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
13580     __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
13581     if (likely(__pyx_t_3)) {
13582       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
13583       __Pyx_INCREF(__pyx_t_3);
13584       __Pyx_INCREF(function);
13585       __Pyx_DECREF_SET(__pyx_t_2, function);
13586     }
13587   }
13588   __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_kp_s_utf_8) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_kp_s_utf_8);
13589   __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
13590   if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1066, __pyx_L1_error)
13591   __Pyx_GOTREF(__pyx_t_1);
13592   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
13593   if (!(likely(PyBytes_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 1066, __pyx_L1_error)
13594   __pyx_v_encoded_leaf_name = ((PyObject*)__pyx_t_1);
13595   __pyx_t_1 = 0;
13596 
13597   /* "tables/hdf5extension.pyx":1067
13598  *
13599  *     encoded_leaf_name = leaf_name.encode('utf-8')
13600  *     encoded_attr_name = attr_name.encode('utf-8')             # <<<<<<<<<<<<<<
13601  *
13602  *     # Open the dataset
13603  */
13604   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_attr_name, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1067, __pyx_L1_error)
13605   __Pyx_GOTREF(__pyx_t_2);
13606   __pyx_t_3 = NULL;
13607   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
13608     __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
13609     if (likely(__pyx_t_3)) {
13610       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
13611       __Pyx_INCREF(__pyx_t_3);
13612       __Pyx_INCREF(function);
13613       __Pyx_DECREF_SET(__pyx_t_2, function);
13614     }
13615   }
13616   __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_kp_s_utf_8) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_kp_s_utf_8);
13617   __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
13618   if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1067, __pyx_L1_error)
13619   __Pyx_GOTREF(__pyx_t_1);
13620   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
13621   if (!(likely(PyBytes_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 1067, __pyx_L1_error)
13622   __pyx_v_encoded_attr_name = ((PyObject*)__pyx_t_1);
13623   __pyx_t_1 = 0;
13624 
13625   /* "tables/hdf5extension.pyx":1070
13626  *
13627  *     # Open the dataset
13628  *     leaf_id = H5Dopen(self.group_id, encoded_leaf_name, H5P_DEFAULT)             # <<<<<<<<<<<<<<
13629  *     if leaf_id < 0:
13630  *       raise HDF5ExtError("Non-existing node ``%s`` under ``%s``" %
13631  */
13632   if (unlikely(__pyx_v_encoded_leaf_name == Py_None)) {
13633     PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
13634     __PYX_ERR(0, 1070, __pyx_L1_error)
13635   }
13636   __pyx_t_4 = __Pyx_PyBytes_AsWritableString(__pyx_v_encoded_leaf_name); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 1070, __pyx_L1_error)
13637   __pyx_v_leaf_id = H5Dopen(__pyx_v_self->group_id, __pyx_t_4, H5P_DEFAULT);
13638 
13639   /* "tables/hdf5extension.pyx":1071
13640  *     # Open the dataset
13641  *     leaf_id = H5Dopen(self.group_id, encoded_leaf_name, H5P_DEFAULT)
13642  *     if leaf_id < 0:             # <<<<<<<<<<<<<<
13643  *       raise HDF5ExtError("Non-existing node ``%s`` under ``%s``" %
13644  *                          (leaf_name, self._v_pathname))
13645  */
13646   __pyx_t_5 = ((__pyx_v_leaf_id < 0) != 0);
13647   if (unlikely(__pyx_t_5)) {
13648 
13649     /* "tables/hdf5extension.pyx":1072
13650  *     leaf_id = H5Dopen(self.group_id, encoded_leaf_name, H5P_DEFAULT)
13651  *     if leaf_id < 0:
13652  *       raise HDF5ExtError("Non-existing node ``%s`` under ``%s``" %             # <<<<<<<<<<<<<<
13653  *                          (leaf_name, self._v_pathname))
13654  *     retvalue = get_attribute_string_or_none(leaf_id, encoded_attr_name)
13655  */
13656     __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_HDF5ExtError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1072, __pyx_L1_error)
13657     __Pyx_GOTREF(__pyx_t_2);
13658 
13659     /* "tables/hdf5extension.pyx":1073
13660  *     if leaf_id < 0:
13661  *       raise HDF5ExtError("Non-existing node ``%s`` under ``%s``" %
13662  *                          (leaf_name, self._v_pathname))             # <<<<<<<<<<<<<<
13663  *     retvalue = get_attribute_string_or_none(leaf_id, encoded_attr_name)
13664  *     # Close the dataset
13665  */
13666     __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_v_pathname); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1073, __pyx_L1_error)
13667     __Pyx_GOTREF(__pyx_t_3);
13668     __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1073, __pyx_L1_error)
13669     __Pyx_GOTREF(__pyx_t_6);
13670     __Pyx_INCREF(__pyx_v_leaf_name);
13671     __Pyx_GIVEREF(__pyx_v_leaf_name);
13672     PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_leaf_name);
13673     __Pyx_GIVEREF(__pyx_t_3);
13674     PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_3);
13675     __pyx_t_3 = 0;
13676 
13677     /* "tables/hdf5extension.pyx":1072
13678  *     leaf_id = H5Dopen(self.group_id, encoded_leaf_name, H5P_DEFAULT)
13679  *     if leaf_id < 0:
13680  *       raise HDF5ExtError("Non-existing node ``%s`` under ``%s``" %             # <<<<<<<<<<<<<<
13681  *                          (leaf_name, self._v_pathname))
13682  *     retvalue = get_attribute_string_or_none(leaf_id, encoded_attr_name)
13683  */
13684     __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_Non_existing_node_s_under_s, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1072, __pyx_L1_error)
13685     __Pyx_GOTREF(__pyx_t_3);
13686     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
13687     __pyx_t_6 = NULL;
13688     if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
13689       __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
13690       if (likely(__pyx_t_6)) {
13691         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
13692         __Pyx_INCREF(__pyx_t_6);
13693         __Pyx_INCREF(function);
13694         __Pyx_DECREF_SET(__pyx_t_2, function);
13695       }
13696     }
13697     __pyx_t_1 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_6, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3);
13698     __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
13699     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
13700     if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1072, __pyx_L1_error)
13701     __Pyx_GOTREF(__pyx_t_1);
13702     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
13703     __Pyx_Raise(__pyx_t_1, 0, 0, 0);
13704     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
13705     __PYX_ERR(0, 1072, __pyx_L1_error)
13706 
13707     /* "tables/hdf5extension.pyx":1071
13708  *     # Open the dataset
13709  *     leaf_id = H5Dopen(self.group_id, encoded_leaf_name, H5P_DEFAULT)
13710  *     if leaf_id < 0:             # <<<<<<<<<<<<<<
13711  *       raise HDF5ExtError("Non-existing node ``%s`` under ``%s``" %
13712  *                          (leaf_name, self._v_pathname))
13713  */
13714   }
13715 
13716   /* "tables/hdf5extension.pyx":1074
13717  *       raise HDF5ExtError("Non-existing node ``%s`` under ``%s``" %
13718  *                          (leaf_name, self._v_pathname))
13719  *     retvalue = get_attribute_string_or_none(leaf_id, encoded_attr_name)             # <<<<<<<<<<<<<<
13720  *     # Close the dataset
13721  *     H5Dclose(leaf_id)
13722  */
13723   if (unlikely(__pyx_v_encoded_attr_name == Py_None)) {
13724     PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
13725     __PYX_ERR(0, 1074, __pyx_L1_error)
13726   }
13727   __pyx_t_4 = __Pyx_PyBytes_AsWritableString(__pyx_v_encoded_attr_name); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 1074, __pyx_L1_error)
13728   __pyx_t_1 = __pyx_f_6tables_13hdf5extension_get_attribute_string_or_none(__pyx_v_leaf_id, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1074, __pyx_L1_error)
13729   __Pyx_GOTREF(__pyx_t_1);
13730   __pyx_v_retvalue = __pyx_t_1;
13731   __pyx_t_1 = 0;
13732 
13733   /* "tables/hdf5extension.pyx":1076
13734  *     retvalue = get_attribute_string_or_none(leaf_id, encoded_attr_name)
13735  *     # Close the dataset
13736  *     H5Dclose(leaf_id)             # <<<<<<<<<<<<<<
13737  *     return retvalue
13738  *
13739  */
13740   (void)(H5Dclose(__pyx_v_leaf_id));
13741 
13742   /* "tables/hdf5extension.pyx":1077
13743  *     # Close the dataset
13744  *     H5Dclose(leaf_id)
13745  *     return retvalue             # <<<<<<<<<<<<<<
13746  *
13747  *
13748  */
13749   __Pyx_XDECREF(__pyx_r);
13750   __Pyx_INCREF(__pyx_v_retvalue);
13751   __pyx_r = __pyx_v_retvalue;
13752   goto __pyx_L0;
13753 
13754   /* "tables/hdf5extension.pyx":1054
13755  *
13756  *
13757  *   def _g_get_lchild_attr(self, leaf_name, attr_name):             # <<<<<<<<<<<<<<
13758  *     """Return an attribute of a child `Leaf`.
13759  *
13760  */
13761 
13762   /* function exit code */
13763   __pyx_L1_error:;
13764   __Pyx_XDECREF(__pyx_t_1);
13765   __Pyx_XDECREF(__pyx_t_2);
13766   __Pyx_XDECREF(__pyx_t_3);
13767   __Pyx_XDECREF(__pyx_t_6);
13768   __Pyx_AddTraceback("tables.hdf5extension.Group._g_get_lchild_attr", __pyx_clineno, __pyx_lineno, __pyx_filename);
13769   __pyx_r = NULL;
13770   __pyx_L0:;
13771   __Pyx_XDECREF(__pyx_v_retvalue);
13772   __Pyx_XDECREF(__pyx_v_encoded_leaf_name);
13773   __Pyx_XDECREF(__pyx_v_encoded_attr_name);
13774   __Pyx_XGIVEREF(__pyx_r);
13775   __Pyx_RefNannyFinishContext();
13776   return __pyx_r;
13777 }
13778 
13779 /* "tables/hdf5extension.pyx":1080
13780  *
13781  *
13782  *   def _g_flush_group(self):             # <<<<<<<<<<<<<<
13783  *     # Close the group
13784  *     H5Fflush(self.group_id, H5F_SCOPE_GLOBAL)
13785  */
13786 
13787 /* Python wrapper */
13788 static PyObject *__pyx_pw_6tables_13hdf5extension_5Group_13_g_flush_group(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
__pyx_pw_6tables_13hdf5extension_5Group_13_g_flush_group(PyObject * __pyx_v_self,CYTHON_UNUSED PyObject * unused)13789 static PyObject *__pyx_pw_6tables_13hdf5extension_5Group_13_g_flush_group(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
13790   PyObject *__pyx_r = 0;
13791   __Pyx_RefNannyDeclarations
13792   __Pyx_RefNannySetupContext("_g_flush_group (wrapper)", 0);
13793   __pyx_r = __pyx_pf_6tables_13hdf5extension_5Group_12_g_flush_group(((struct __pyx_obj_6tables_13hdf5extension_Group *)__pyx_v_self));
13794 
13795   /* function exit code */
13796   __Pyx_RefNannyFinishContext();
13797   return __pyx_r;
13798 }
13799 
__pyx_pf_6tables_13hdf5extension_5Group_12_g_flush_group(struct __pyx_obj_6tables_13hdf5extension_Group * __pyx_v_self)13800 static PyObject *__pyx_pf_6tables_13hdf5extension_5Group_12_g_flush_group(struct __pyx_obj_6tables_13hdf5extension_Group *__pyx_v_self) {
13801   PyObject *__pyx_r = NULL;
13802   __Pyx_RefNannyDeclarations
13803   __Pyx_RefNannySetupContext("_g_flush_group", 0);
13804 
13805   /* "tables/hdf5extension.pyx":1082
13806  *   def _g_flush_group(self):
13807  *     # Close the group
13808  *     H5Fflush(self.group_id, H5F_SCOPE_GLOBAL)             # <<<<<<<<<<<<<<
13809  *
13810  *
13811  */
13812   (void)(H5Fflush(__pyx_v_self->group_id, H5F_SCOPE_GLOBAL));
13813 
13814   /* "tables/hdf5extension.pyx":1080
13815  *
13816  *
13817  *   def _g_flush_group(self):             # <<<<<<<<<<<<<<
13818  *     # Close the group
13819  *     H5Fflush(self.group_id, H5F_SCOPE_GLOBAL)
13820  */
13821 
13822   /* function exit code */
13823   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
13824   __Pyx_XGIVEREF(__pyx_r);
13825   __Pyx_RefNannyFinishContext();
13826   return __pyx_r;
13827 }
13828 
13829 /* "tables/hdf5extension.pyx":1085
13830  *
13831  *
13832  *   def _g_close_group(self):             # <<<<<<<<<<<<<<
13833  *     cdef int ret
13834  *
13835  */
13836 
13837 /* Python wrapper */
13838 static PyObject *__pyx_pw_6tables_13hdf5extension_5Group_15_g_close_group(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
__pyx_pw_6tables_13hdf5extension_5Group_15_g_close_group(PyObject * __pyx_v_self,CYTHON_UNUSED PyObject * unused)13839 static PyObject *__pyx_pw_6tables_13hdf5extension_5Group_15_g_close_group(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
13840   PyObject *__pyx_r = 0;
13841   __Pyx_RefNannyDeclarations
13842   __Pyx_RefNannySetupContext("_g_close_group (wrapper)", 0);
13843   __pyx_r = __pyx_pf_6tables_13hdf5extension_5Group_14_g_close_group(((struct __pyx_obj_6tables_13hdf5extension_Group *)__pyx_v_self));
13844 
13845   /* function exit code */
13846   __Pyx_RefNannyFinishContext();
13847   return __pyx_r;
13848 }
13849 
__pyx_pf_6tables_13hdf5extension_5Group_14_g_close_group(struct __pyx_obj_6tables_13hdf5extension_Group * __pyx_v_self)13850 static PyObject *__pyx_pf_6tables_13hdf5extension_5Group_14_g_close_group(struct __pyx_obj_6tables_13hdf5extension_Group *__pyx_v_self) {
13851   int __pyx_v_ret;
13852   PyObject *__pyx_r = NULL;
13853   __Pyx_RefNannyDeclarations
13854   int __pyx_t_1;
13855   PyObject *__pyx_t_2 = NULL;
13856   PyObject *__pyx_t_3 = NULL;
13857   PyObject *__pyx_t_4 = NULL;
13858   PyObject *__pyx_t_5 = NULL;
13859   __Pyx_RefNannySetupContext("_g_close_group", 0);
13860 
13861   /* "tables/hdf5extension.pyx":1088
13862  *     cdef int ret
13863  *
13864  *     ret = H5Gclose(self.group_id)             # <<<<<<<<<<<<<<
13865  *     if ret < 0:
13866  *       raise HDF5ExtError("Problems closing the Group %s" % self.name)
13867  */
13868   __pyx_v_ret = H5Gclose(__pyx_v_self->group_id);
13869 
13870   /* "tables/hdf5extension.pyx":1089
13871  *
13872  *     ret = H5Gclose(self.group_id)
13873  *     if ret < 0:             # <<<<<<<<<<<<<<
13874  *       raise HDF5ExtError("Problems closing the Group %s" % self.name)
13875  *     self.group_id = 0  # indicate that this group is closed
13876  */
13877   __pyx_t_1 = ((__pyx_v_ret < 0) != 0);
13878   if (unlikely(__pyx_t_1)) {
13879 
13880     /* "tables/hdf5extension.pyx":1090
13881  *     ret = H5Gclose(self.group_id)
13882  *     if ret < 0:
13883  *       raise HDF5ExtError("Problems closing the Group %s" % self.name)             # <<<<<<<<<<<<<<
13884  *     self.group_id = 0  # indicate that this group is closed
13885  *
13886  */
13887     __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_HDF5ExtError); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1090, __pyx_L1_error)
13888     __Pyx_GOTREF(__pyx_t_3);
13889     __pyx_t_4 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Problems_closing_the_Group_s, __pyx_v_self->__pyx_base.name); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1090, __pyx_L1_error)
13890     __Pyx_GOTREF(__pyx_t_4);
13891     __pyx_t_5 = NULL;
13892     if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
13893       __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
13894       if (likely(__pyx_t_5)) {
13895         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
13896         __Pyx_INCREF(__pyx_t_5);
13897         __Pyx_INCREF(function);
13898         __Pyx_DECREF_SET(__pyx_t_3, function);
13899       }
13900     }
13901     __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4);
13902     __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
13903     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
13904     if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1090, __pyx_L1_error)
13905     __Pyx_GOTREF(__pyx_t_2);
13906     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
13907     __Pyx_Raise(__pyx_t_2, 0, 0, 0);
13908     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
13909     __PYX_ERR(0, 1090, __pyx_L1_error)
13910 
13911     /* "tables/hdf5extension.pyx":1089
13912  *
13913  *     ret = H5Gclose(self.group_id)
13914  *     if ret < 0:             # <<<<<<<<<<<<<<
13915  *       raise HDF5ExtError("Problems closing the Group %s" % self.name)
13916  *     self.group_id = 0  # indicate that this group is closed
13917  */
13918   }
13919 
13920   /* "tables/hdf5extension.pyx":1091
13921  *     if ret < 0:
13922  *       raise HDF5ExtError("Problems closing the Group %s" % self.name)
13923  *     self.group_id = 0  # indicate that this group is closed             # <<<<<<<<<<<<<<
13924  *
13925  *
13926  */
13927   __pyx_v_self->group_id = 0;
13928 
13929   /* "tables/hdf5extension.pyx":1085
13930  *
13931  *
13932  *   def _g_close_group(self):             # <<<<<<<<<<<<<<
13933  *     cdef int ret
13934  *
13935  */
13936 
13937   /* function exit code */
13938   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
13939   goto __pyx_L0;
13940   __pyx_L1_error:;
13941   __Pyx_XDECREF(__pyx_t_2);
13942   __Pyx_XDECREF(__pyx_t_3);
13943   __Pyx_XDECREF(__pyx_t_4);
13944   __Pyx_XDECREF(__pyx_t_5);
13945   __Pyx_AddTraceback("tables.hdf5extension.Group._g_close_group", __pyx_clineno, __pyx_lineno, __pyx_filename);
13946   __pyx_r = NULL;
13947   __pyx_L0:;
13948   __Pyx_XGIVEREF(__pyx_r);
13949   __Pyx_RefNannyFinishContext();
13950   return __pyx_r;
13951 }
13952 
13953 /* "tables/hdf5extension.pyx":1094
13954  *
13955  *
13956  *   def _g_move_node(self, hid_t oldparent, oldname, hid_t newparent, newname,             # <<<<<<<<<<<<<<
13957  *                    oldpathname, newpathname):
13958  *     cdef int ret
13959  */
13960 
13961 /* Python wrapper */
13962 static PyObject *__pyx_pw_6tables_13hdf5extension_5Group_17_g_move_node(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
__pyx_pw_6tables_13hdf5extension_5Group_17_g_move_node(PyObject * __pyx_v_self,PyObject * __pyx_args,PyObject * __pyx_kwds)13963 static PyObject *__pyx_pw_6tables_13hdf5extension_5Group_17_g_move_node(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
13964   hid_t __pyx_v_oldparent;
13965   PyObject *__pyx_v_oldname = 0;
13966   hid_t __pyx_v_newparent;
13967   PyObject *__pyx_v_newname = 0;
13968   PyObject *__pyx_v_oldpathname = 0;
13969   PyObject *__pyx_v_newpathname = 0;
13970   PyObject *__pyx_r = 0;
13971   __Pyx_RefNannyDeclarations
13972   __Pyx_RefNannySetupContext("_g_move_node (wrapper)", 0);
13973   {
13974     static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_oldparent,&__pyx_n_s_oldname,&__pyx_n_s_newparent,&__pyx_n_s_newname,&__pyx_n_s_oldpathname,&__pyx_n_s_newpathname,0};
13975     PyObject* values[6] = {0,0,0,0,0,0};
13976     if (unlikely(__pyx_kwds)) {
13977       Py_ssize_t kw_args;
13978       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
13979       switch (pos_args) {
13980         case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
13981         CYTHON_FALLTHROUGH;
13982         case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
13983         CYTHON_FALLTHROUGH;
13984         case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
13985         CYTHON_FALLTHROUGH;
13986         case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
13987         CYTHON_FALLTHROUGH;
13988         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
13989         CYTHON_FALLTHROUGH;
13990         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
13991         CYTHON_FALLTHROUGH;
13992         case  0: break;
13993         default: goto __pyx_L5_argtuple_error;
13994       }
13995       kw_args = PyDict_Size(__pyx_kwds);
13996       switch (pos_args) {
13997         case  0:
13998         if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_oldparent)) != 0)) kw_args--;
13999         else goto __pyx_L5_argtuple_error;
14000         CYTHON_FALLTHROUGH;
14001         case  1:
14002         if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_oldname)) != 0)) kw_args--;
14003         else {
14004           __Pyx_RaiseArgtupleInvalid("_g_move_node", 1, 6, 6, 1); __PYX_ERR(0, 1094, __pyx_L3_error)
14005         }
14006         CYTHON_FALLTHROUGH;
14007         case  2:
14008         if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_newparent)) != 0)) kw_args--;
14009         else {
14010           __Pyx_RaiseArgtupleInvalid("_g_move_node", 1, 6, 6, 2); __PYX_ERR(0, 1094, __pyx_L3_error)
14011         }
14012         CYTHON_FALLTHROUGH;
14013         case  3:
14014         if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_newname)) != 0)) kw_args--;
14015         else {
14016           __Pyx_RaiseArgtupleInvalid("_g_move_node", 1, 6, 6, 3); __PYX_ERR(0, 1094, __pyx_L3_error)
14017         }
14018         CYTHON_FALLTHROUGH;
14019         case  4:
14020         if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_oldpathname)) != 0)) kw_args--;
14021         else {
14022           __Pyx_RaiseArgtupleInvalid("_g_move_node", 1, 6, 6, 4); __PYX_ERR(0, 1094, __pyx_L3_error)
14023         }
14024         CYTHON_FALLTHROUGH;
14025         case  5:
14026         if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_newpathname)) != 0)) kw_args--;
14027         else {
14028           __Pyx_RaiseArgtupleInvalid("_g_move_node", 1, 6, 6, 5); __PYX_ERR(0, 1094, __pyx_L3_error)
14029         }
14030       }
14031       if (unlikely(kw_args > 0)) {
14032         if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_g_move_node") < 0)) __PYX_ERR(0, 1094, __pyx_L3_error)
14033       }
14034     } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
14035       goto __pyx_L5_argtuple_error;
14036     } else {
14037       values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
14038       values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
14039       values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
14040       values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
14041       values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
14042       values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
14043     }
14044     __pyx_v_oldparent = __Pyx_PyInt_As_hid_t(values[0]); if (unlikely((__pyx_v_oldparent == ((hid_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1094, __pyx_L3_error)
14045     __pyx_v_oldname = values[1];
14046     __pyx_v_newparent = __Pyx_PyInt_As_hid_t(values[2]); if (unlikely((__pyx_v_newparent == ((hid_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1094, __pyx_L3_error)
14047     __pyx_v_newname = values[3];
14048     __pyx_v_oldpathname = values[4];
14049     __pyx_v_newpathname = values[5];
14050   }
14051   goto __pyx_L4_argument_unpacking_done;
14052   __pyx_L5_argtuple_error:;
14053   __Pyx_RaiseArgtupleInvalid("_g_move_node", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1094, __pyx_L3_error)
14054   __pyx_L3_error:;
14055   __Pyx_AddTraceback("tables.hdf5extension.Group._g_move_node", __pyx_clineno, __pyx_lineno, __pyx_filename);
14056   __Pyx_RefNannyFinishContext();
14057   return NULL;
14058   __pyx_L4_argument_unpacking_done:;
14059   __pyx_r = __pyx_pf_6tables_13hdf5extension_5Group_16_g_move_node(((struct __pyx_obj_6tables_13hdf5extension_Group *)__pyx_v_self), __pyx_v_oldparent, __pyx_v_oldname, __pyx_v_newparent, __pyx_v_newname, __pyx_v_oldpathname, __pyx_v_newpathname);
14060 
14061   /* function exit code */
14062   __Pyx_RefNannyFinishContext();
14063   return __pyx_r;
14064 }
14065 
__pyx_pf_6tables_13hdf5extension_5Group_16_g_move_node(CYTHON_UNUSED struct __pyx_obj_6tables_13hdf5extension_Group * __pyx_v_self,hid_t __pyx_v_oldparent,PyObject * __pyx_v_oldname,hid_t __pyx_v_newparent,PyObject * __pyx_v_newname,PyObject * __pyx_v_oldpathname,PyObject * __pyx_v_newpathname)14066 static PyObject *__pyx_pf_6tables_13hdf5extension_5Group_16_g_move_node(CYTHON_UNUSED struct __pyx_obj_6tables_13hdf5extension_Group *__pyx_v_self, hid_t __pyx_v_oldparent, PyObject *__pyx_v_oldname, hid_t __pyx_v_newparent, PyObject *__pyx_v_newname, PyObject *__pyx_v_oldpathname, PyObject *__pyx_v_newpathname) {
14067   int __pyx_v_ret;
14068   PyObject *__pyx_v_encoded_oldname = 0;
14069   PyObject *__pyx_v_encoded_newname = 0;
14070   PyObject *__pyx_r = NULL;
14071   __Pyx_RefNannyDeclarations
14072   PyObject *__pyx_t_1 = NULL;
14073   PyObject *__pyx_t_2 = NULL;
14074   PyObject *__pyx_t_3 = NULL;
14075   char *__pyx_t_4;
14076   char *__pyx_t_5;
14077   int __pyx_t_6;
14078   PyObject *__pyx_t_7 = NULL;
14079   __Pyx_RefNannySetupContext("_g_move_node", 0);
14080 
14081   /* "tables/hdf5extension.pyx":1099
14082  *     cdef bytes encoded_oldname, encoded_newname
14083  *
14084  *     encoded_oldname = oldname.encode('utf-8')             # <<<<<<<<<<<<<<
14085  *     encoded_newname = newname.encode('utf-8')
14086  *
14087  */
14088   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_oldname, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1099, __pyx_L1_error)
14089   __Pyx_GOTREF(__pyx_t_2);
14090   __pyx_t_3 = NULL;
14091   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
14092     __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
14093     if (likely(__pyx_t_3)) {
14094       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
14095       __Pyx_INCREF(__pyx_t_3);
14096       __Pyx_INCREF(function);
14097       __Pyx_DECREF_SET(__pyx_t_2, function);
14098     }
14099   }
14100   __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_kp_s_utf_8) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_kp_s_utf_8);
14101   __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
14102   if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1099, __pyx_L1_error)
14103   __Pyx_GOTREF(__pyx_t_1);
14104   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
14105   if (!(likely(PyBytes_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 1099, __pyx_L1_error)
14106   __pyx_v_encoded_oldname = ((PyObject*)__pyx_t_1);
14107   __pyx_t_1 = 0;
14108 
14109   /* "tables/hdf5extension.pyx":1100
14110  *
14111  *     encoded_oldname = oldname.encode('utf-8')
14112  *     encoded_newname = newname.encode('utf-8')             # <<<<<<<<<<<<<<
14113  *
14114  *     ret = H5Lmove(oldparent, encoded_oldname, newparent, encoded_newname,
14115  */
14116   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_newname, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1100, __pyx_L1_error)
14117   __Pyx_GOTREF(__pyx_t_2);
14118   __pyx_t_3 = NULL;
14119   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
14120     __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
14121     if (likely(__pyx_t_3)) {
14122       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
14123       __Pyx_INCREF(__pyx_t_3);
14124       __Pyx_INCREF(function);
14125       __Pyx_DECREF_SET(__pyx_t_2, function);
14126     }
14127   }
14128   __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_kp_s_utf_8) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_kp_s_utf_8);
14129   __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
14130   if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1100, __pyx_L1_error)
14131   __Pyx_GOTREF(__pyx_t_1);
14132   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
14133   if (!(likely(PyBytes_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 1100, __pyx_L1_error)
14134   __pyx_v_encoded_newname = ((PyObject*)__pyx_t_1);
14135   __pyx_t_1 = 0;
14136 
14137   /* "tables/hdf5extension.pyx":1102
14138  *     encoded_newname = newname.encode('utf-8')
14139  *
14140  *     ret = H5Lmove(oldparent, encoded_oldname, newparent, encoded_newname,             # <<<<<<<<<<<<<<
14141  *                   H5P_DEFAULT, H5P_DEFAULT)
14142  *     if ret < 0:
14143  */
14144   if (unlikely(__pyx_v_encoded_oldname == Py_None)) {
14145     PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
14146     __PYX_ERR(0, 1102, __pyx_L1_error)
14147   }
14148   __pyx_t_4 = __Pyx_PyBytes_AsWritableString(__pyx_v_encoded_oldname); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 1102, __pyx_L1_error)
14149   if (unlikely(__pyx_v_encoded_newname == Py_None)) {
14150     PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
14151     __PYX_ERR(0, 1102, __pyx_L1_error)
14152   }
14153   __pyx_t_5 = __Pyx_PyBytes_AsWritableString(__pyx_v_encoded_newname); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) __PYX_ERR(0, 1102, __pyx_L1_error)
14154 
14155   /* "tables/hdf5extension.pyx":1103
14156  *
14157  *     ret = H5Lmove(oldparent, encoded_oldname, newparent, encoded_newname,
14158  *                   H5P_DEFAULT, H5P_DEFAULT)             # <<<<<<<<<<<<<<
14159  *     if ret < 0:
14160  *       raise HDF5ExtError("Problems moving the node %s to %s" %
14161  */
14162   __pyx_v_ret = H5Lmove(__pyx_v_oldparent, __pyx_t_4, __pyx_v_newparent, __pyx_t_5, H5P_DEFAULT, H5P_DEFAULT);
14163 
14164   /* "tables/hdf5extension.pyx":1104
14165  *     ret = H5Lmove(oldparent, encoded_oldname, newparent, encoded_newname,
14166  *                   H5P_DEFAULT, H5P_DEFAULT)
14167  *     if ret < 0:             # <<<<<<<<<<<<<<
14168  *       raise HDF5ExtError("Problems moving the node %s to %s" %
14169  *                          (oldpathname, newpathname) )
14170  */
14171   __pyx_t_6 = ((__pyx_v_ret < 0) != 0);
14172   if (unlikely(__pyx_t_6)) {
14173 
14174     /* "tables/hdf5extension.pyx":1105
14175  *                   H5P_DEFAULT, H5P_DEFAULT)
14176  *     if ret < 0:
14177  *       raise HDF5ExtError("Problems moving the node %s to %s" %             # <<<<<<<<<<<<<<
14178  *                          (oldpathname, newpathname) )
14179  *     return ret
14180  */
14181     __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_HDF5ExtError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1105, __pyx_L1_error)
14182     __Pyx_GOTREF(__pyx_t_2);
14183 
14184     /* "tables/hdf5extension.pyx":1106
14185  *     if ret < 0:
14186  *       raise HDF5ExtError("Problems moving the node %s to %s" %
14187  *                          (oldpathname, newpathname) )             # <<<<<<<<<<<<<<
14188  *     return ret
14189  *
14190  */
14191     __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1106, __pyx_L1_error)
14192     __Pyx_GOTREF(__pyx_t_3);
14193     __Pyx_INCREF(__pyx_v_oldpathname);
14194     __Pyx_GIVEREF(__pyx_v_oldpathname);
14195     PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_oldpathname);
14196     __Pyx_INCREF(__pyx_v_newpathname);
14197     __Pyx_GIVEREF(__pyx_v_newpathname);
14198     PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_newpathname);
14199 
14200     /* "tables/hdf5extension.pyx":1105
14201  *                   H5P_DEFAULT, H5P_DEFAULT)
14202  *     if ret < 0:
14203  *       raise HDF5ExtError("Problems moving the node %s to %s" %             # <<<<<<<<<<<<<<
14204  *                          (oldpathname, newpathname) )
14205  *     return ret
14206  */
14207     __pyx_t_7 = __Pyx_PyString_Format(__pyx_kp_s_Problems_moving_the_node_s_to_s, __pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1105, __pyx_L1_error)
14208     __Pyx_GOTREF(__pyx_t_7);
14209     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
14210     __pyx_t_3 = NULL;
14211     if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
14212       __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
14213       if (likely(__pyx_t_3)) {
14214         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
14215         __Pyx_INCREF(__pyx_t_3);
14216         __Pyx_INCREF(function);
14217         __Pyx_DECREF_SET(__pyx_t_2, function);
14218       }
14219     }
14220     __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_7);
14221     __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
14222     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
14223     if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1105, __pyx_L1_error)
14224     __Pyx_GOTREF(__pyx_t_1);
14225     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
14226     __Pyx_Raise(__pyx_t_1, 0, 0, 0);
14227     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
14228     __PYX_ERR(0, 1105, __pyx_L1_error)
14229 
14230     /* "tables/hdf5extension.pyx":1104
14231  *     ret = H5Lmove(oldparent, encoded_oldname, newparent, encoded_newname,
14232  *                   H5P_DEFAULT, H5P_DEFAULT)
14233  *     if ret < 0:             # <<<<<<<<<<<<<<
14234  *       raise HDF5ExtError("Problems moving the node %s to %s" %
14235  *                          (oldpathname, newpathname) )
14236  */
14237   }
14238 
14239   /* "tables/hdf5extension.pyx":1107
14240  *       raise HDF5ExtError("Problems moving the node %s to %s" %
14241  *                          (oldpathname, newpathname) )
14242  *     return ret             # <<<<<<<<<<<<<<
14243  *
14244  *
14245  */
14246   __Pyx_XDECREF(__pyx_r);
14247   __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_ret); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1107, __pyx_L1_error)
14248   __Pyx_GOTREF(__pyx_t_1);
14249   __pyx_r = __pyx_t_1;
14250   __pyx_t_1 = 0;
14251   goto __pyx_L0;
14252 
14253   /* "tables/hdf5extension.pyx":1094
14254  *
14255  *
14256  *   def _g_move_node(self, hid_t oldparent, oldname, hid_t newparent, newname,             # <<<<<<<<<<<<<<
14257  *                    oldpathname, newpathname):
14258  *     cdef int ret
14259  */
14260 
14261   /* function exit code */
14262   __pyx_L1_error:;
14263   __Pyx_XDECREF(__pyx_t_1);
14264   __Pyx_XDECREF(__pyx_t_2);
14265   __Pyx_XDECREF(__pyx_t_3);
14266   __Pyx_XDECREF(__pyx_t_7);
14267   __Pyx_AddTraceback("tables.hdf5extension.Group._g_move_node", __pyx_clineno, __pyx_lineno, __pyx_filename);
14268   __pyx_r = NULL;
14269   __pyx_L0:;
14270   __Pyx_XDECREF(__pyx_v_encoded_oldname);
14271   __Pyx_XDECREF(__pyx_v_encoded_newname);
14272   __Pyx_XGIVEREF(__pyx_r);
14273   __Pyx_RefNannyFinishContext();
14274   return __pyx_r;
14275 }
14276 
14277 /* "(tree fragment)":1
14278  * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
14279  *     cdef tuple state
14280  *     cdef object _dict
14281  */
14282 
14283 /* Python wrapper */
14284 static PyObject *__pyx_pw_6tables_13hdf5extension_5Group_19__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
__pyx_pw_6tables_13hdf5extension_5Group_19__reduce_cython__(PyObject * __pyx_v_self,CYTHON_UNUSED PyObject * unused)14285 static PyObject *__pyx_pw_6tables_13hdf5extension_5Group_19__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
14286   PyObject *__pyx_r = 0;
14287   __Pyx_RefNannyDeclarations
14288   __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
14289   __pyx_r = __pyx_pf_6tables_13hdf5extension_5Group_18__reduce_cython__(((struct __pyx_obj_6tables_13hdf5extension_Group *)__pyx_v_self));
14290 
14291   /* function exit code */
14292   __Pyx_RefNannyFinishContext();
14293   return __pyx_r;
14294 }
14295 
__pyx_pf_6tables_13hdf5extension_5Group_18__reduce_cython__(struct __pyx_obj_6tables_13hdf5extension_Group * __pyx_v_self)14296 static PyObject *__pyx_pf_6tables_13hdf5extension_5Group_18__reduce_cython__(struct __pyx_obj_6tables_13hdf5extension_Group *__pyx_v_self) {
14297   PyObject *__pyx_v_state = 0;
14298   PyObject *__pyx_v__dict = 0;
14299   int __pyx_v_use_setstate;
14300   PyObject *__pyx_r = NULL;
14301   __Pyx_RefNannyDeclarations
14302   PyObject *__pyx_t_1 = NULL;
14303   PyObject *__pyx_t_2 = NULL;
14304   PyObject *__pyx_t_3 = NULL;
14305   int __pyx_t_4;
14306   int __pyx_t_5;
14307   __Pyx_RefNannySetupContext("__reduce_cython__", 0);
14308 
14309   /* "(tree fragment)":5
14310  *     cdef object _dict
14311  *     cdef bint use_setstate
14312  *     state = (self.group_id, self.name, self.parent_id)             # <<<<<<<<<<<<<<
14313  *     _dict = getattr(self, '__dict__', None)
14314  *     if _dict is not None:
14315  */
14316   __pyx_t_1 = __Pyx_PyInt_From_hid_t(__pyx_v_self->group_id); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
14317   __Pyx_GOTREF(__pyx_t_1);
14318   __pyx_t_2 = __Pyx_PyInt_From_hid_t(__pyx_v_self->__pyx_base.parent_id); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
14319   __Pyx_GOTREF(__pyx_t_2);
14320   __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
14321   __Pyx_GOTREF(__pyx_t_3);
14322   __Pyx_GIVEREF(__pyx_t_1);
14323   PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
14324   __Pyx_INCREF(__pyx_v_self->__pyx_base.name);
14325   __Pyx_GIVEREF(__pyx_v_self->__pyx_base.name);
14326   PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_self->__pyx_base.name);
14327   __Pyx_GIVEREF(__pyx_t_2);
14328   PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_2);
14329   __pyx_t_1 = 0;
14330   __pyx_t_2 = 0;
14331   __pyx_v_state = ((PyObject*)__pyx_t_3);
14332   __pyx_t_3 = 0;
14333 
14334   /* "(tree fragment)":6
14335  *     cdef bint use_setstate
14336  *     state = (self.group_id, self.name, self.parent_id)
14337  *     _dict = getattr(self, '__dict__', None)             # <<<<<<<<<<<<<<
14338  *     if _dict is not None:
14339  *         state += (_dict,)
14340  */
14341   __pyx_t_3 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
14342   __Pyx_GOTREF(__pyx_t_3);
14343   __pyx_v__dict = __pyx_t_3;
14344   __pyx_t_3 = 0;
14345 
14346   /* "(tree fragment)":7
14347  *     state = (self.group_id, self.name, self.parent_id)
14348  *     _dict = getattr(self, '__dict__', None)
14349  *     if _dict is not None:             # <<<<<<<<<<<<<<
14350  *         state += (_dict,)
14351  *         use_setstate = True
14352  */
14353   __pyx_t_4 = (__pyx_v__dict != Py_None);
14354   __pyx_t_5 = (__pyx_t_4 != 0);
14355   if (__pyx_t_5) {
14356 
14357     /* "(tree fragment)":8
14358  *     _dict = getattr(self, '__dict__', None)
14359  *     if _dict is not None:
14360  *         state += (_dict,)             # <<<<<<<<<<<<<<
14361  *         use_setstate = True
14362  *     else:
14363  */
14364     __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 8, __pyx_L1_error)
14365     __Pyx_GOTREF(__pyx_t_3);
14366     __Pyx_INCREF(__pyx_v__dict);
14367     __Pyx_GIVEREF(__pyx_v__dict);
14368     PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v__dict);
14369     __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 8, __pyx_L1_error)
14370     __Pyx_GOTREF(__pyx_t_2);
14371     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
14372     __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_2));
14373     __pyx_t_2 = 0;
14374 
14375     /* "(tree fragment)":9
14376  *     if _dict is not None:
14377  *         state += (_dict,)
14378  *         use_setstate = True             # <<<<<<<<<<<<<<
14379  *     else:
14380  *         use_setstate = self.name is not None
14381  */
14382     __pyx_v_use_setstate = 1;
14383 
14384     /* "(tree fragment)":7
14385  *     state = (self.group_id, self.name, self.parent_id)
14386  *     _dict = getattr(self, '__dict__', None)
14387  *     if _dict is not None:             # <<<<<<<<<<<<<<
14388  *         state += (_dict,)
14389  *         use_setstate = True
14390  */
14391     goto __pyx_L3;
14392   }
14393 
14394   /* "(tree fragment)":11
14395  *         use_setstate = True
14396  *     else:
14397  *         use_setstate = self.name is not None             # <<<<<<<<<<<<<<
14398  *     if use_setstate:
14399  *         return __pyx_unpickle_Group, (type(self), 0x1360bff, None), state
14400  */
14401   /*else*/ {
14402     __pyx_t_5 = (__pyx_v_self->__pyx_base.name != Py_None);
14403     __pyx_v_use_setstate = __pyx_t_5;
14404   }
14405   __pyx_L3:;
14406 
14407   /* "(tree fragment)":12
14408  *     else:
14409  *         use_setstate = self.name is not None
14410  *     if use_setstate:             # <<<<<<<<<<<<<<
14411  *         return __pyx_unpickle_Group, (type(self), 0x1360bff, None), state
14412  *     else:
14413  */
14414   __pyx_t_5 = (__pyx_v_use_setstate != 0);
14415   if (__pyx_t_5) {
14416 
14417     /* "(tree fragment)":13
14418  *         use_setstate = self.name is not None
14419  *     if use_setstate:
14420  *         return __pyx_unpickle_Group, (type(self), 0x1360bff, None), state             # <<<<<<<<<<<<<<
14421  *     else:
14422  *         return __pyx_unpickle_Group, (type(self), 0x1360bff, state)
14423  */
14424     __Pyx_XDECREF(__pyx_r);
14425     __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pyx_unpickle_Group); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 13, __pyx_L1_error)
14426     __Pyx_GOTREF(__pyx_t_2);
14427     __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 13, __pyx_L1_error)
14428     __Pyx_GOTREF(__pyx_t_3);
14429     __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
14430     __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
14431     PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
14432     __Pyx_INCREF(__pyx_int_20319231);
14433     __Pyx_GIVEREF(__pyx_int_20319231);
14434     PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_20319231);
14435     __Pyx_INCREF(Py_None);
14436     __Pyx_GIVEREF(Py_None);
14437     PyTuple_SET_ITEM(__pyx_t_3, 2, Py_None);
14438     __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
14439     __Pyx_GOTREF(__pyx_t_1);
14440     __Pyx_GIVEREF(__pyx_t_2);
14441     PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
14442     __Pyx_GIVEREF(__pyx_t_3);
14443     PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_3);
14444     __Pyx_INCREF(__pyx_v_state);
14445     __Pyx_GIVEREF(__pyx_v_state);
14446     PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state);
14447     __pyx_t_2 = 0;
14448     __pyx_t_3 = 0;
14449     __pyx_r = __pyx_t_1;
14450     __pyx_t_1 = 0;
14451     goto __pyx_L0;
14452 
14453     /* "(tree fragment)":12
14454  *     else:
14455  *         use_setstate = self.name is not None
14456  *     if use_setstate:             # <<<<<<<<<<<<<<
14457  *         return __pyx_unpickle_Group, (type(self), 0x1360bff, None), state
14458  *     else:
14459  */
14460   }
14461 
14462   /* "(tree fragment)":15
14463  *         return __pyx_unpickle_Group, (type(self), 0x1360bff, None), state
14464  *     else:
14465  *         return __pyx_unpickle_Group, (type(self), 0x1360bff, state)             # <<<<<<<<<<<<<<
14466  * def __setstate_cython__(self, __pyx_state):
14467  *     __pyx_unpickle_Group__set_state(self, __pyx_state)
14468  */
14469   /*else*/ {
14470     __Pyx_XDECREF(__pyx_r);
14471     __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyx_unpickle_Group); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error)
14472     __Pyx_GOTREF(__pyx_t_1);
14473     __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 15, __pyx_L1_error)
14474     __Pyx_GOTREF(__pyx_t_3);
14475     __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
14476     __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
14477     PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
14478     __Pyx_INCREF(__pyx_int_20319231);
14479     __Pyx_GIVEREF(__pyx_int_20319231);
14480     PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_20319231);
14481     __Pyx_INCREF(__pyx_v_state);
14482     __Pyx_GIVEREF(__pyx_v_state);
14483     PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_state);
14484     __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 15, __pyx_L1_error)
14485     __Pyx_GOTREF(__pyx_t_2);
14486     __Pyx_GIVEREF(__pyx_t_1);
14487     PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
14488     __Pyx_GIVEREF(__pyx_t_3);
14489     PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_3);
14490     __pyx_t_1 = 0;
14491     __pyx_t_3 = 0;
14492     __pyx_r = __pyx_t_2;
14493     __pyx_t_2 = 0;
14494     goto __pyx_L0;
14495   }
14496 
14497   /* "(tree fragment)":1
14498  * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
14499  *     cdef tuple state
14500  *     cdef object _dict
14501  */
14502 
14503   /* function exit code */
14504   __pyx_L1_error:;
14505   __Pyx_XDECREF(__pyx_t_1);
14506   __Pyx_XDECREF(__pyx_t_2);
14507   __Pyx_XDECREF(__pyx_t_3);
14508   __Pyx_AddTraceback("tables.hdf5extension.Group.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
14509   __pyx_r = NULL;
14510   __pyx_L0:;
14511   __Pyx_XDECREF(__pyx_v_state);
14512   __Pyx_XDECREF(__pyx_v__dict);
14513   __Pyx_XGIVEREF(__pyx_r);
14514   __Pyx_RefNannyFinishContext();
14515   return __pyx_r;
14516 }
14517 
14518 /* "(tree fragment)":16
14519  *     else:
14520  *         return __pyx_unpickle_Group, (type(self), 0x1360bff, state)
14521  * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
14522  *     __pyx_unpickle_Group__set_state(self, __pyx_state)
14523  */
14524 
14525 /* Python wrapper */
14526 static PyObject *__pyx_pw_6tables_13hdf5extension_5Group_21__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
__pyx_pw_6tables_13hdf5extension_5Group_21__setstate_cython__(PyObject * __pyx_v_self,PyObject * __pyx_v___pyx_state)14527 static PyObject *__pyx_pw_6tables_13hdf5extension_5Group_21__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
14528   PyObject *__pyx_r = 0;
14529   __Pyx_RefNannyDeclarations
14530   __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
14531   __pyx_r = __pyx_pf_6tables_13hdf5extension_5Group_20__setstate_cython__(((struct __pyx_obj_6tables_13hdf5extension_Group *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));
14532 
14533   /* function exit code */
14534   __Pyx_RefNannyFinishContext();
14535   return __pyx_r;
14536 }
14537 
__pyx_pf_6tables_13hdf5extension_5Group_20__setstate_cython__(struct __pyx_obj_6tables_13hdf5extension_Group * __pyx_v_self,PyObject * __pyx_v___pyx_state)14538 static PyObject *__pyx_pf_6tables_13hdf5extension_5Group_20__setstate_cython__(struct __pyx_obj_6tables_13hdf5extension_Group *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
14539   PyObject *__pyx_r = NULL;
14540   __Pyx_RefNannyDeclarations
14541   PyObject *__pyx_t_1 = NULL;
14542   __Pyx_RefNannySetupContext("__setstate_cython__", 0);
14543 
14544   /* "(tree fragment)":17
14545  *         return __pyx_unpickle_Group, (type(self), 0x1360bff, state)
14546  * def __setstate_cython__(self, __pyx_state):
14547  *     __pyx_unpickle_Group__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
14548  */
14549   if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 17, __pyx_L1_error)
14550   __pyx_t_1 = __pyx_f_6tables_13hdf5extension___pyx_unpickle_Group__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error)
14551   __Pyx_GOTREF(__pyx_t_1);
14552   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
14553 
14554   /* "(tree fragment)":16
14555  *     else:
14556  *         return __pyx_unpickle_Group, (type(self), 0x1360bff, state)
14557  * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
14558  *     __pyx_unpickle_Group__set_state(self, __pyx_state)
14559  */
14560 
14561   /* function exit code */
14562   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
14563   goto __pyx_L0;
14564   __pyx_L1_error:;
14565   __Pyx_XDECREF(__pyx_t_1);
14566   __Pyx_AddTraceback("tables.hdf5extension.Group.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
14567   __pyx_r = NULL;
14568   __pyx_L0:;
14569   __Pyx_XGIVEREF(__pyx_r);
14570   __Pyx_RefNannyFinishContext();
14571   return __pyx_r;
14572 }
14573 
14574 /* "tables/hdf5extension.pyx":1114
14575  *   # Instance variables declared in .pxd
14576  *
14577  *   def _get_storage_size(self):             # <<<<<<<<<<<<<<
14578  *       return H5Dget_storage_size(self.dataset_id)
14579  *
14580  */
14581 
14582 /* Python wrapper */
14583 static PyObject *__pyx_pw_6tables_13hdf5extension_4Leaf_1_get_storage_size(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
__pyx_pw_6tables_13hdf5extension_4Leaf_1_get_storage_size(PyObject * __pyx_v_self,CYTHON_UNUSED PyObject * unused)14584 static PyObject *__pyx_pw_6tables_13hdf5extension_4Leaf_1_get_storage_size(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
14585   PyObject *__pyx_r = 0;
14586   __Pyx_RefNannyDeclarations
14587   __Pyx_RefNannySetupContext("_get_storage_size (wrapper)", 0);
14588   __pyx_r = __pyx_pf_6tables_13hdf5extension_4Leaf__get_storage_size(((struct __pyx_obj_6tables_13hdf5extension_Leaf *)__pyx_v_self));
14589 
14590   /* function exit code */
14591   __Pyx_RefNannyFinishContext();
14592   return __pyx_r;
14593 }
14594 
__pyx_pf_6tables_13hdf5extension_4Leaf__get_storage_size(struct __pyx_obj_6tables_13hdf5extension_Leaf * __pyx_v_self)14595 static PyObject *__pyx_pf_6tables_13hdf5extension_4Leaf__get_storage_size(struct __pyx_obj_6tables_13hdf5extension_Leaf *__pyx_v_self) {
14596   PyObject *__pyx_r = NULL;
14597   __Pyx_RefNannyDeclarations
14598   PyObject *__pyx_t_1 = NULL;
14599   __Pyx_RefNannySetupContext("_get_storage_size", 0);
14600 
14601   /* "tables/hdf5extension.pyx":1115
14602  *
14603  *   def _get_storage_size(self):
14604  *       return H5Dget_storage_size(self.dataset_id)             # <<<<<<<<<<<<<<
14605  *
14606  *   def _get_obj_track_times(self):
14607  */
14608   __Pyx_XDECREF(__pyx_r);
14609   __pyx_t_1 = __Pyx_PyInt_From_hsize_t(H5Dget_storage_size(__pyx_v_self->dataset_id)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1115, __pyx_L1_error)
14610   __Pyx_GOTREF(__pyx_t_1);
14611   __pyx_r = __pyx_t_1;
14612   __pyx_t_1 = 0;
14613   goto __pyx_L0;
14614 
14615   /* "tables/hdf5extension.pyx":1114
14616  *   # Instance variables declared in .pxd
14617  *
14618  *   def _get_storage_size(self):             # <<<<<<<<<<<<<<
14619  *       return H5Dget_storage_size(self.dataset_id)
14620  *
14621  */
14622 
14623   /* function exit code */
14624   __pyx_L1_error:;
14625   __Pyx_XDECREF(__pyx_t_1);
14626   __Pyx_AddTraceback("tables.hdf5extension.Leaf._get_storage_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
14627   __pyx_r = NULL;
14628   __pyx_L0:;
14629   __Pyx_XGIVEREF(__pyx_r);
14630   __Pyx_RefNannyFinishContext();
14631   return __pyx_r;
14632 }
14633 
14634 /* "tables/hdf5extension.pyx":1117
14635  *       return H5Dget_storage_size(self.dataset_id)
14636  *
14637  *   def _get_obj_track_times(self):             # <<<<<<<<<<<<<<
14638  *     """Get track_times boolean for dataset
14639  *
14640  */
14641 
14642 /* Python wrapper */
14643 static PyObject *__pyx_pw_6tables_13hdf5extension_4Leaf_3_get_obj_track_times(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
14644 static char __pyx_doc_6tables_13hdf5extension_4Leaf_2_get_obj_track_times[] = "Get track_times boolean for dataset\n\n    Uses H5Pget_obj_track_times to determine if the dataset was\n    created with the track_times property.  If the leaf is not a\n    dataset, this will fail with HDF5ExtError.\n\n    The track times dataset creation property does not seem to survive\n    closing and reopening as of HDF5 1.8.17.  Currently, it may be\n    more accurate to test whether the ctime for the dataset is 0:\n    track_times = (leaf._get_obj_timestamps().ctime == 0)\n    ";
__pyx_pw_6tables_13hdf5extension_4Leaf_3_get_obj_track_times(PyObject * __pyx_v_self,CYTHON_UNUSED PyObject * unused)14645 static PyObject *__pyx_pw_6tables_13hdf5extension_4Leaf_3_get_obj_track_times(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
14646   PyObject *__pyx_r = 0;
14647   __Pyx_RefNannyDeclarations
14648   __Pyx_RefNannySetupContext("_get_obj_track_times (wrapper)", 0);
14649   __pyx_r = __pyx_pf_6tables_13hdf5extension_4Leaf_2_get_obj_track_times(((struct __pyx_obj_6tables_13hdf5extension_Leaf *)__pyx_v_self));
14650 
14651   /* function exit code */
14652   __Pyx_RefNannyFinishContext();
14653   return __pyx_r;
14654 }
14655 
__pyx_pf_6tables_13hdf5extension_4Leaf_2_get_obj_track_times(struct __pyx_obj_6tables_13hdf5extension_Leaf * __pyx_v_self)14656 static PyObject *__pyx_pf_6tables_13hdf5extension_4Leaf_2_get_obj_track_times(struct __pyx_obj_6tables_13hdf5extension_Leaf *__pyx_v_self) {
14657   hbool_t __pyx_v_track_times;
14658   hid_t __pyx_v_plist_id;
14659   PyObject *__pyx_r = NULL;
14660   __Pyx_RefNannyDeclarations
14661   int __pyx_t_1;
14662   PyObject *__pyx_t_2 = NULL;
14663   PyObject *__pyx_t_3 = NULL;
14664   PyObject *__pyx_t_4 = NULL;
14665   PyObject *__pyx_t_5 = NULL;
14666   int __pyx_t_6;
14667   int __pyx_t_7;
14668   char const *__pyx_t_8;
14669   PyObject *__pyx_t_9 = NULL;
14670   PyObject *__pyx_t_10 = NULL;
14671   PyObject *__pyx_t_11 = NULL;
14672   PyObject *__pyx_t_12 = NULL;
14673   PyObject *__pyx_t_13 = NULL;
14674   PyObject *__pyx_t_14 = NULL;
14675   __Pyx_RefNannySetupContext("_get_obj_track_times", 0);
14676 
14677   /* "tables/hdf5extension.pyx":1130
14678  *     """
14679  *     cdef:
14680  *       hbool_t track_times = True             # <<<<<<<<<<<<<<
14681  *
14682  *     if self.dataset_id < 0:
14683  */
14684   __pyx_v_track_times = 1;
14685 
14686   /* "tables/hdf5extension.pyx":1132
14687  *       hbool_t track_times = True
14688  *
14689  *     if self.dataset_id < 0:             # <<<<<<<<<<<<<<
14690  *       raise ValueError('Invalid dataset id %s' % self.dataset_id)
14691  *
14692  */
14693   __pyx_t_1 = ((__pyx_v_self->dataset_id < 0) != 0);
14694   if (unlikely(__pyx_t_1)) {
14695 
14696     /* "tables/hdf5extension.pyx":1133
14697  *
14698  *     if self.dataset_id < 0:
14699  *       raise ValueError('Invalid dataset id %s' % self.dataset_id)             # <<<<<<<<<<<<<<
14700  *
14701  *     plist_id = H5Dget_create_plist(self.dataset_id)
14702  */
14703     __pyx_t_2 = __Pyx_PyInt_From_hid_t(__pyx_v_self->dataset_id); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1133, __pyx_L1_error)
14704     __Pyx_GOTREF(__pyx_t_2);
14705     __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_Invalid_dataset_id_s, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1133, __pyx_L1_error)
14706     __Pyx_GOTREF(__pyx_t_3);
14707     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
14708     __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1133, __pyx_L1_error)
14709     __Pyx_GOTREF(__pyx_t_2);
14710     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
14711     __Pyx_Raise(__pyx_t_2, 0, 0, 0);
14712     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
14713     __PYX_ERR(0, 1133, __pyx_L1_error)
14714 
14715     /* "tables/hdf5extension.pyx":1132
14716  *       hbool_t track_times = True
14717  *
14718  *     if self.dataset_id < 0:             # <<<<<<<<<<<<<<
14719  *       raise ValueError('Invalid dataset id %s' % self.dataset_id)
14720  *
14721  */
14722   }
14723 
14724   /* "tables/hdf5extension.pyx":1135
14725  *       raise ValueError('Invalid dataset id %s' % self.dataset_id)
14726  *
14727  *     plist_id = H5Dget_create_plist(self.dataset_id)             # <<<<<<<<<<<<<<
14728  *     if plist_id < 0:
14729  *       raise HDF5ExtError("Could not get dataset creation property list "
14730  */
14731   __pyx_v_plist_id = H5Dget_create_plist(__pyx_v_self->dataset_id);
14732 
14733   /* "tables/hdf5extension.pyx":1136
14734  *
14735  *     plist_id = H5Dget_create_plist(self.dataset_id)
14736  *     if plist_id < 0:             # <<<<<<<<<<<<<<
14737  *       raise HDF5ExtError("Could not get dataset creation property list "
14738  *                          "from dataset id %s" % self.dataset_id)
14739  */
14740   __pyx_t_1 = ((__pyx_v_plist_id < 0) != 0);
14741   if (unlikely(__pyx_t_1)) {
14742 
14743     /* "tables/hdf5extension.pyx":1137
14744  *     plist_id = H5Dget_create_plist(self.dataset_id)
14745  *     if plist_id < 0:
14746  *       raise HDF5ExtError("Could not get dataset creation property list "             # <<<<<<<<<<<<<<
14747  *                          "from dataset id %s" % self.dataset_id)
14748  *
14749  */
14750     __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_HDF5ExtError); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1137, __pyx_L1_error)
14751     __Pyx_GOTREF(__pyx_t_3);
14752 
14753     /* "tables/hdf5extension.pyx":1138
14754  *     if plist_id < 0:
14755  *       raise HDF5ExtError("Could not get dataset creation property list "
14756  *                          "from dataset id %s" % self.dataset_id)             # <<<<<<<<<<<<<<
14757  *
14758  *     try:
14759  */
14760     __pyx_t_4 = __Pyx_PyInt_From_hid_t(__pyx_v_self->dataset_id); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1138, __pyx_L1_error)
14761     __Pyx_GOTREF(__pyx_t_4);
14762     __pyx_t_5 = __Pyx_PyString_Format(__pyx_kp_s_Could_not_get_dataset_creation_p, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1138, __pyx_L1_error)
14763     __Pyx_GOTREF(__pyx_t_5);
14764     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
14765     __pyx_t_4 = NULL;
14766     if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
14767       __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
14768       if (likely(__pyx_t_4)) {
14769         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
14770         __Pyx_INCREF(__pyx_t_4);
14771         __Pyx_INCREF(function);
14772         __Pyx_DECREF_SET(__pyx_t_3, function);
14773       }
14774     }
14775     __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_5);
14776     __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
14777     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
14778     if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1137, __pyx_L1_error)
14779     __Pyx_GOTREF(__pyx_t_2);
14780     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
14781     __Pyx_Raise(__pyx_t_2, 0, 0, 0);
14782     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
14783     __PYX_ERR(0, 1137, __pyx_L1_error)
14784 
14785     /* "tables/hdf5extension.pyx":1136
14786  *
14787  *     plist_id = H5Dget_create_plist(self.dataset_id)
14788  *     if plist_id < 0:             # <<<<<<<<<<<<<<
14789  *       raise HDF5ExtError("Could not get dataset creation property list "
14790  *                          "from dataset id %s" % self.dataset_id)
14791  */
14792   }
14793 
14794   /* "tables/hdf5extension.pyx":1140
14795  *                          "from dataset id %s" % self.dataset_id)
14796  *
14797  *     try:             # <<<<<<<<<<<<<<
14798  *       # Get track_times boolean for dataset
14799  *       if H5Pget_obj_track_times(plist_id, &track_times) < 0:
14800  */
14801   /*try:*/ {
14802 
14803     /* "tables/hdf5extension.pyx":1142
14804  *     try:
14805  *       # Get track_times boolean for dataset
14806  *       if H5Pget_obj_track_times(plist_id, &track_times) < 0:             # <<<<<<<<<<<<<<
14807  *         raise HDF5ExtError("Could not get dataset track_times property "
14808  *                            "from dataset id %s" % self.dataset_id)
14809  */
14810     __pyx_t_1 = ((H5Pget_obj_track_times(__pyx_v_plist_id, (&__pyx_v_track_times)) < 0) != 0);
14811     if (unlikely(__pyx_t_1)) {
14812 
14813       /* "tables/hdf5extension.pyx":1143
14814  *       # Get track_times boolean for dataset
14815  *       if H5Pget_obj_track_times(plist_id, &track_times) < 0:
14816  *         raise HDF5ExtError("Could not get dataset track_times property "             # <<<<<<<<<<<<<<
14817  *                            "from dataset id %s" % self.dataset_id)
14818  *     finally:
14819  */
14820       __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_HDF5ExtError); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1143, __pyx_L6_error)
14821       __Pyx_GOTREF(__pyx_t_3);
14822 
14823       /* "tables/hdf5extension.pyx":1144
14824  *       if H5Pget_obj_track_times(plist_id, &track_times) < 0:
14825  *         raise HDF5ExtError("Could not get dataset track_times property "
14826  *                            "from dataset id %s" % self.dataset_id)             # <<<<<<<<<<<<<<
14827  *     finally:
14828  *       H5Pclose(plist_id)
14829  */
14830       __pyx_t_5 = __Pyx_PyInt_From_hid_t(__pyx_v_self->dataset_id); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1144, __pyx_L6_error)
14831       __Pyx_GOTREF(__pyx_t_5);
14832       __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Could_not_get_dataset_track_time, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1144, __pyx_L6_error)
14833       __Pyx_GOTREF(__pyx_t_4);
14834       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
14835       __pyx_t_5 = NULL;
14836       if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
14837         __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
14838         if (likely(__pyx_t_5)) {
14839           PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
14840           __Pyx_INCREF(__pyx_t_5);
14841           __Pyx_INCREF(function);
14842           __Pyx_DECREF_SET(__pyx_t_3, function);
14843         }
14844       }
14845       __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4);
14846       __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
14847       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
14848       if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1143, __pyx_L6_error)
14849       __Pyx_GOTREF(__pyx_t_2);
14850       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
14851       __Pyx_Raise(__pyx_t_2, 0, 0, 0);
14852       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
14853       __PYX_ERR(0, 1143, __pyx_L6_error)
14854 
14855       /* "tables/hdf5extension.pyx":1142
14856  *     try:
14857  *       # Get track_times boolean for dataset
14858  *       if H5Pget_obj_track_times(plist_id, &track_times) < 0:             # <<<<<<<<<<<<<<
14859  *         raise HDF5ExtError("Could not get dataset track_times property "
14860  *                            "from dataset id %s" % self.dataset_id)
14861  */
14862     }
14863   }
14864 
14865   /* "tables/hdf5extension.pyx":1146
14866  *                            "from dataset id %s" % self.dataset_id)
14867  *     finally:
14868  *       H5Pclose(plist_id)             # <<<<<<<<<<<<<<
14869  *
14870  *     return bool(track_times)
14871  */
14872   /*finally:*/ {
14873     /*normal exit:*/{
14874       (void)(H5Pclose(__pyx_v_plist_id));
14875       goto __pyx_L7;
14876     }
14877     __pyx_L6_error:;
14878     /*exception exit:*/{
14879       __Pyx_PyThreadState_declare
14880       __Pyx_PyThreadState_assign
14881       __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0;
14882       __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
14883       __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
14884       __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
14885       __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
14886       if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14);
14887       if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11) < 0)) __Pyx_ErrFetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
14888       __Pyx_XGOTREF(__pyx_t_9);
14889       __Pyx_XGOTREF(__pyx_t_10);
14890       __Pyx_XGOTREF(__pyx_t_11);
14891       __Pyx_XGOTREF(__pyx_t_12);
14892       __Pyx_XGOTREF(__pyx_t_13);
14893       __Pyx_XGOTREF(__pyx_t_14);
14894       __pyx_t_6 = __pyx_lineno; __pyx_t_7 = __pyx_clineno; __pyx_t_8 = __pyx_filename;
14895       {
14896         (void)(H5Pclose(__pyx_v_plist_id));
14897       }
14898       if (PY_MAJOR_VERSION >= 3) {
14899         __Pyx_XGIVEREF(__pyx_t_12);
14900         __Pyx_XGIVEREF(__pyx_t_13);
14901         __Pyx_XGIVEREF(__pyx_t_14);
14902         __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_13, __pyx_t_14);
14903       }
14904       __Pyx_XGIVEREF(__pyx_t_9);
14905       __Pyx_XGIVEREF(__pyx_t_10);
14906       __Pyx_XGIVEREF(__pyx_t_11);
14907       __Pyx_ErrRestore(__pyx_t_9, __pyx_t_10, __pyx_t_11);
14908       __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0;
14909       __pyx_lineno = __pyx_t_6; __pyx_clineno = __pyx_t_7; __pyx_filename = __pyx_t_8;
14910       goto __pyx_L1_error;
14911     }
14912     __pyx_L7:;
14913   }
14914 
14915   /* "tables/hdf5extension.pyx":1148
14916  *       H5Pclose(plist_id)
14917  *
14918  *     return bool(track_times)             # <<<<<<<<<<<<<<
14919  *
14920  *   def _g_new(self, where, name, init):
14921  */
14922   __Pyx_XDECREF(__pyx_r);
14923   __pyx_t_2 = __Pyx_PyInt_From_hbool_t(__pyx_v_track_times); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1148, __pyx_L1_error)
14924   __Pyx_GOTREF(__pyx_t_2);
14925   __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 1148, __pyx_L1_error)
14926   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
14927   __pyx_t_2 = __Pyx_PyBool_FromLong((!(!__pyx_t_1))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1148, __pyx_L1_error)
14928   __Pyx_GOTREF(__pyx_t_2);
14929   __pyx_r = __pyx_t_2;
14930   __pyx_t_2 = 0;
14931   goto __pyx_L0;
14932 
14933   /* "tables/hdf5extension.pyx":1117
14934  *       return H5Dget_storage_size(self.dataset_id)
14935  *
14936  *   def _get_obj_track_times(self):             # <<<<<<<<<<<<<<
14937  *     """Get track_times boolean for dataset
14938  *
14939  */
14940 
14941   /* function exit code */
14942   __pyx_L1_error:;
14943   __Pyx_XDECREF(__pyx_t_2);
14944   __Pyx_XDECREF(__pyx_t_3);
14945   __Pyx_XDECREF(__pyx_t_4);
14946   __Pyx_XDECREF(__pyx_t_5);
14947   __Pyx_AddTraceback("tables.hdf5extension.Leaf._get_obj_track_times", __pyx_clineno, __pyx_lineno, __pyx_filename);
14948   __pyx_r = NULL;
14949   __pyx_L0:;
14950   __Pyx_XGIVEREF(__pyx_r);
14951   __Pyx_RefNannyFinishContext();
14952   return __pyx_r;
14953 }
14954 
14955 /* "tables/hdf5extension.pyx":1150
14956  *     return bool(track_times)
14957  *
14958  *   def _g_new(self, where, name, init):             # <<<<<<<<<<<<<<
14959  *     if init:
14960  *       # Put this info to 0 just when the class is initialized
14961  */
14962 
14963 /* Python wrapper */
14964 static PyObject *__pyx_pw_6tables_13hdf5extension_4Leaf_5_g_new(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
__pyx_pw_6tables_13hdf5extension_4Leaf_5_g_new(PyObject * __pyx_v_self,PyObject * __pyx_args,PyObject * __pyx_kwds)14965 static PyObject *__pyx_pw_6tables_13hdf5extension_4Leaf_5_g_new(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
14966   PyObject *__pyx_v_where = 0;
14967   PyObject *__pyx_v_name = 0;
14968   PyObject *__pyx_v_init = 0;
14969   PyObject *__pyx_r = 0;
14970   __Pyx_RefNannyDeclarations
14971   __Pyx_RefNannySetupContext("_g_new (wrapper)", 0);
14972   {
14973     static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_where,&__pyx_n_s_name,&__pyx_n_s_init,0};
14974     PyObject* values[3] = {0,0,0};
14975     if (unlikely(__pyx_kwds)) {
14976       Py_ssize_t kw_args;
14977       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
14978       switch (pos_args) {
14979         case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
14980         CYTHON_FALLTHROUGH;
14981         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
14982         CYTHON_FALLTHROUGH;
14983         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
14984         CYTHON_FALLTHROUGH;
14985         case  0: break;
14986         default: goto __pyx_L5_argtuple_error;
14987       }
14988       kw_args = PyDict_Size(__pyx_kwds);
14989       switch (pos_args) {
14990         case  0:
14991         if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_where)) != 0)) kw_args--;
14992         else goto __pyx_L5_argtuple_error;
14993         CYTHON_FALLTHROUGH;
14994         case  1:
14995         if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
14996         else {
14997           __Pyx_RaiseArgtupleInvalid("_g_new", 1, 3, 3, 1); __PYX_ERR(0, 1150, __pyx_L3_error)
14998         }
14999         CYTHON_FALLTHROUGH;
15000         case  2:
15001         if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_init)) != 0)) kw_args--;
15002         else {
15003           __Pyx_RaiseArgtupleInvalid("_g_new", 1, 3, 3, 2); __PYX_ERR(0, 1150, __pyx_L3_error)
15004         }
15005       }
15006       if (unlikely(kw_args > 0)) {
15007         if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_g_new") < 0)) __PYX_ERR(0, 1150, __pyx_L3_error)
15008       }
15009     } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
15010       goto __pyx_L5_argtuple_error;
15011     } else {
15012       values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
15013       values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
15014       values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
15015     }
15016     __pyx_v_where = values[0];
15017     __pyx_v_name = values[1];
15018     __pyx_v_init = values[2];
15019   }
15020   goto __pyx_L4_argument_unpacking_done;
15021   __pyx_L5_argtuple_error:;
15022   __Pyx_RaiseArgtupleInvalid("_g_new", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1150, __pyx_L3_error)
15023   __pyx_L3_error:;
15024   __Pyx_AddTraceback("tables.hdf5extension.Leaf._g_new", __pyx_clineno, __pyx_lineno, __pyx_filename);
15025   __Pyx_RefNannyFinishContext();
15026   return NULL;
15027   __pyx_L4_argument_unpacking_done:;
15028   __pyx_r = __pyx_pf_6tables_13hdf5extension_4Leaf_4_g_new(((struct __pyx_obj_6tables_13hdf5extension_Leaf *)__pyx_v_self), __pyx_v_where, __pyx_v_name, __pyx_v_init);
15029 
15030   /* function exit code */
15031   __Pyx_RefNannyFinishContext();
15032   return __pyx_r;
15033 }
15034 
__pyx_pf_6tables_13hdf5extension_4Leaf_4_g_new(struct __pyx_obj_6tables_13hdf5extension_Leaf * __pyx_v_self,PyObject * __pyx_v_where,PyObject * __pyx_v_name,PyObject * __pyx_v_init)15035 static PyObject *__pyx_pf_6tables_13hdf5extension_4Leaf_4_g_new(struct __pyx_obj_6tables_13hdf5extension_Leaf *__pyx_v_self, PyObject *__pyx_v_where, PyObject *__pyx_v_name, PyObject *__pyx_v_init) {
15036   PyObject *__pyx_r = NULL;
15037   __Pyx_RefNannyDeclarations
15038   int __pyx_t_1;
15039   PyObject *__pyx_t_2 = NULL;
15040   PyObject *__pyx_t_3 = NULL;
15041   PyObject *__pyx_t_4 = NULL;
15042   int __pyx_t_5;
15043   PyObject *__pyx_t_6 = NULL;
15044   __Pyx_RefNannySetupContext("_g_new", 0);
15045 
15046   /* "tables/hdf5extension.pyx":1151
15047  *
15048  *   def _g_new(self, where, name, init):
15049  *     if init:             # <<<<<<<<<<<<<<
15050  *       # Put this info to 0 just when the class is initialized
15051  *       self.dataset_id = -1
15052  */
15053   __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_init); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 1151, __pyx_L1_error)
15054   if (__pyx_t_1) {
15055 
15056     /* "tables/hdf5extension.pyx":1153
15057  *     if init:
15058  *       # Put this info to 0 just when the class is initialized
15059  *       self.dataset_id = -1             # <<<<<<<<<<<<<<
15060  *       self.type_id = -1
15061  *       self.base_type_id = -1
15062  */
15063     __pyx_v_self->dataset_id = -1LL;
15064 
15065     /* "tables/hdf5extension.pyx":1154
15066  *       # Put this info to 0 just when the class is initialized
15067  *       self.dataset_id = -1
15068  *       self.type_id = -1             # <<<<<<<<<<<<<<
15069  *       self.base_type_id = -1
15070  *       self.disk_type_id = -1
15071  */
15072     __pyx_v_self->type_id = -1LL;
15073 
15074     /* "tables/hdf5extension.pyx":1155
15075  *       self.dataset_id = -1
15076  *       self.type_id = -1
15077  *       self.base_type_id = -1             # <<<<<<<<<<<<<<
15078  *       self.disk_type_id = -1
15079  *     super(Leaf, self)._g_new(where, name, init)
15080  */
15081     __pyx_v_self->base_type_id = -1LL;
15082 
15083     /* "tables/hdf5extension.pyx":1156
15084  *       self.type_id = -1
15085  *       self.base_type_id = -1
15086  *       self.disk_type_id = -1             # <<<<<<<<<<<<<<
15087  *     super(Leaf, self)._g_new(where, name, init)
15088  *
15089  */
15090     __pyx_v_self->disk_type_id = -1LL;
15091 
15092     /* "tables/hdf5extension.pyx":1151
15093  *
15094  *   def _g_new(self, where, name, init):
15095  *     if init:             # <<<<<<<<<<<<<<
15096  *       # Put this info to 0 just when the class is initialized
15097  *       self.dataset_id = -1
15098  */
15099   }
15100 
15101   /* "tables/hdf5extension.pyx":1157
15102  *       self.base_type_id = -1
15103  *       self.disk_type_id = -1
15104  *     super(Leaf, self)._g_new(where, name, init)             # <<<<<<<<<<<<<<
15105  *
15106  *   cdef _get_type_ids(self):
15107  */
15108   __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1157, __pyx_L1_error)
15109   __Pyx_GOTREF(__pyx_t_3);
15110   __Pyx_INCREF(((PyObject *)__pyx_ptype_6tables_13hdf5extension_Leaf));
15111   __Pyx_GIVEREF(((PyObject *)__pyx_ptype_6tables_13hdf5extension_Leaf));
15112   PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_ptype_6tables_13hdf5extension_Leaf));
15113   __Pyx_INCREF(((PyObject *)__pyx_v_self));
15114   __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
15115   PyTuple_SET_ITEM(__pyx_t_3, 1, ((PyObject *)__pyx_v_self));
15116   __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1157, __pyx_L1_error)
15117   __Pyx_GOTREF(__pyx_t_4);
15118   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15119   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_g_new); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1157, __pyx_L1_error)
15120   __Pyx_GOTREF(__pyx_t_3);
15121   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
15122   __pyx_t_4 = NULL;
15123   __pyx_t_5 = 0;
15124   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
15125     __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
15126     if (likely(__pyx_t_4)) {
15127       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
15128       __Pyx_INCREF(__pyx_t_4);
15129       __Pyx_INCREF(function);
15130       __Pyx_DECREF_SET(__pyx_t_3, function);
15131       __pyx_t_5 = 1;
15132     }
15133   }
15134   #if CYTHON_FAST_PYCALL
15135   if (PyFunction_Check(__pyx_t_3)) {
15136     PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_v_where, __pyx_v_name, __pyx_v_init};
15137     __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 3+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1157, __pyx_L1_error)
15138     __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
15139     __Pyx_GOTREF(__pyx_t_2);
15140   } else
15141   #endif
15142   #if CYTHON_FAST_PYCCALL
15143   if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
15144     PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_v_where, __pyx_v_name, __pyx_v_init};
15145     __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 3+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1157, __pyx_L1_error)
15146     __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
15147     __Pyx_GOTREF(__pyx_t_2);
15148   } else
15149   #endif
15150   {
15151     __pyx_t_6 = PyTuple_New(3+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1157, __pyx_L1_error)
15152     __Pyx_GOTREF(__pyx_t_6);
15153     if (__pyx_t_4) {
15154       __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
15155     }
15156     __Pyx_INCREF(__pyx_v_where);
15157     __Pyx_GIVEREF(__pyx_v_where);
15158     PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_v_where);
15159     __Pyx_INCREF(__pyx_v_name);
15160     __Pyx_GIVEREF(__pyx_v_name);
15161     PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_v_name);
15162     __Pyx_INCREF(__pyx_v_init);
15163     __Pyx_GIVEREF(__pyx_v_init);
15164     PyTuple_SET_ITEM(__pyx_t_6, 2+__pyx_t_5, __pyx_v_init);
15165     __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1157, __pyx_L1_error)
15166     __Pyx_GOTREF(__pyx_t_2);
15167     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
15168   }
15169   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15170   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15171 
15172   /* "tables/hdf5extension.pyx":1150
15173  *     return bool(track_times)
15174  *
15175  *   def _g_new(self, where, name, init):             # <<<<<<<<<<<<<<
15176  *     if init:
15177  *       # Put this info to 0 just when the class is initialized
15178  */
15179 
15180   /* function exit code */
15181   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
15182   goto __pyx_L0;
15183   __pyx_L1_error:;
15184   __Pyx_XDECREF(__pyx_t_2);
15185   __Pyx_XDECREF(__pyx_t_3);
15186   __Pyx_XDECREF(__pyx_t_4);
15187   __Pyx_XDECREF(__pyx_t_6);
15188   __Pyx_AddTraceback("tables.hdf5extension.Leaf._g_new", __pyx_clineno, __pyx_lineno, __pyx_filename);
15189   __pyx_r = NULL;
15190   __pyx_L0:;
15191   __Pyx_XGIVEREF(__pyx_r);
15192   __Pyx_RefNannyFinishContext();
15193   return __pyx_r;
15194 }
15195 
15196 /* "tables/hdf5extension.pyx":1159
15197  *     super(Leaf, self)._g_new(where, name, init)
15198  *
15199  *   cdef _get_type_ids(self):             # <<<<<<<<<<<<<<
15200  *     """Get the disk and native HDF5 types associated with this leaf.
15201  *
15202  */
15203 
__pyx_f_6tables_13hdf5extension_4Leaf__get_type_ids(struct __pyx_obj_6tables_13hdf5extension_Leaf * __pyx_v_self)15204 static PyObject *__pyx_f_6tables_13hdf5extension_4Leaf__get_type_ids(struct __pyx_obj_6tables_13hdf5extension_Leaf *__pyx_v_self) {
15205   hid_t __pyx_v_disk_type_id;
15206   hid_t __pyx_v_native_type_id;
15207   PyObject *__pyx_r = NULL;
15208   __Pyx_RefNannyDeclarations
15209   PyObject *__pyx_t_1 = NULL;
15210   PyObject *__pyx_t_2 = NULL;
15211   PyObject *__pyx_t_3 = NULL;
15212   __Pyx_RefNannySetupContext("_get_type_ids", 0);
15213 
15214   /* "tables/hdf5extension.pyx":1169
15215  *     cdef hid_t disk_type_id, native_type_id
15216  *
15217  *     disk_type_id = H5Dget_type(self.dataset_id)             # <<<<<<<<<<<<<<
15218  *     native_type_id = get_native_type(disk_type_id)
15219  *     return disk_type_id, native_type_id
15220  */
15221   __pyx_v_disk_type_id = H5Dget_type(__pyx_v_self->dataset_id);
15222 
15223   /* "tables/hdf5extension.pyx":1170
15224  *
15225  *     disk_type_id = H5Dget_type(self.dataset_id)
15226  *     native_type_id = get_native_type(disk_type_id)             # <<<<<<<<<<<<<<
15227  *     return disk_type_id, native_type_id
15228  *
15229  */
15230   __pyx_v_native_type_id = __pyx_f_6tables_14utilsextension_get_native_type(__pyx_v_disk_type_id);
15231 
15232   /* "tables/hdf5extension.pyx":1171
15233  *     disk_type_id = H5Dget_type(self.dataset_id)
15234  *     native_type_id = get_native_type(disk_type_id)
15235  *     return disk_type_id, native_type_id             # <<<<<<<<<<<<<<
15236  *
15237  *   cdef _convert_time64(self, ndarray nparr, int sense):
15238  */
15239   __Pyx_XDECREF(__pyx_r);
15240   __pyx_t_1 = __Pyx_PyInt_From_hid_t(__pyx_v_disk_type_id); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1171, __pyx_L1_error)
15241   __Pyx_GOTREF(__pyx_t_1);
15242   __pyx_t_2 = __Pyx_PyInt_From_hid_t(__pyx_v_native_type_id); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1171, __pyx_L1_error)
15243   __Pyx_GOTREF(__pyx_t_2);
15244   __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1171, __pyx_L1_error)
15245   __Pyx_GOTREF(__pyx_t_3);
15246   __Pyx_GIVEREF(__pyx_t_1);
15247   PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
15248   __Pyx_GIVEREF(__pyx_t_2);
15249   PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
15250   __pyx_t_1 = 0;
15251   __pyx_t_2 = 0;
15252   __pyx_r = __pyx_t_3;
15253   __pyx_t_3 = 0;
15254   goto __pyx_L0;
15255 
15256   /* "tables/hdf5extension.pyx":1159
15257  *     super(Leaf, self)._g_new(where, name, init)
15258  *
15259  *   cdef _get_type_ids(self):             # <<<<<<<<<<<<<<
15260  *     """Get the disk and native HDF5 types associated with this leaf.
15261  *
15262  */
15263 
15264   /* function exit code */
15265   __pyx_L1_error:;
15266   __Pyx_XDECREF(__pyx_t_1);
15267   __Pyx_XDECREF(__pyx_t_2);
15268   __Pyx_XDECREF(__pyx_t_3);
15269   __Pyx_AddTraceback("tables.hdf5extension.Leaf._get_type_ids", __pyx_clineno, __pyx_lineno, __pyx_filename);
15270   __pyx_r = 0;
15271   __pyx_L0:;
15272   __Pyx_XGIVEREF(__pyx_r);
15273   __Pyx_RefNannyFinishContext();
15274   return __pyx_r;
15275 }
15276 
15277 /* "tables/hdf5extension.pyx":1173
15278  *     return disk_type_id, native_type_id
15279  *
15280  *   cdef _convert_time64(self, ndarray nparr, int sense):             # <<<<<<<<<<<<<<
15281  *     """Converts a NumPy of Time64 elements between NumPy and HDF5 formats.
15282  *
15283  */
15284 
__pyx_f_6tables_13hdf5extension_4Leaf__convert_time64(CYTHON_UNUSED struct __pyx_obj_6tables_13hdf5extension_Leaf * __pyx_v_self,PyArrayObject * __pyx_v_nparr,int __pyx_v_sense)15285 static PyObject *__pyx_f_6tables_13hdf5extension_4Leaf__convert_time64(CYTHON_UNUSED struct __pyx_obj_6tables_13hdf5extension_Leaf *__pyx_v_self, PyArrayObject *__pyx_v_nparr, int __pyx_v_sense) {
15286   void *__pyx_v_t64buf;
15287   long __pyx_v_byteoffset;
15288   long __pyx_v_bytestride;
15289   long __pyx_v_nelements;
15290   hsize_t __pyx_v_nrecords;
15291   PyObject *__pyx_r = NULL;
15292   __Pyx_RefNannyDeclarations
15293   PyObject *__pyx_t_1 = NULL;
15294   PyObject *__pyx_t_2 = NULL;
15295   int __pyx_t_3;
15296   Py_ssize_t __pyx_t_4;
15297   size_t __pyx_t_5;
15298   char *__pyx_t_6;
15299   __Pyx_RefNannySetupContext("_convert_time64", 0);
15300 
15301   /* "tables/hdf5extension.pyx":1186
15302  *     cdef hsize_t nrecords
15303  *
15304  *     byteoffset = 0   # NumPy objects doesn't have an offset             # <<<<<<<<<<<<<<
15305  *     if (<object>nparr).shape == ():
15306  *       # 0-dim array does contain *one* element
15307  */
15308   __pyx_v_byteoffset = 0;
15309 
15310   /* "tables/hdf5extension.pyx":1187
15311  *
15312  *     byteoffset = 0   # NumPy objects doesn't have an offset
15313  *     if (<object>nparr).shape == ():             # <<<<<<<<<<<<<<
15314  *       # 0-dim array does contain *one* element
15315  *       nrecords = 1
15316  */
15317   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_nparr), __pyx_n_s_shape); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1187, __pyx_L1_error)
15318   __Pyx_GOTREF(__pyx_t_1);
15319   __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_empty_tuple, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1187, __pyx_L1_error)
15320   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
15321   __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1187, __pyx_L1_error)
15322   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15323   if (__pyx_t_3) {
15324 
15325     /* "tables/hdf5extension.pyx":1189
15326  *     if (<object>nparr).shape == ():
15327  *       # 0-dim array does contain *one* element
15328  *       nrecords = 1             # <<<<<<<<<<<<<<
15329  *       bytestride = 8
15330  *     else:
15331  */
15332     __pyx_v_nrecords = 1;
15333 
15334     /* "tables/hdf5extension.pyx":1190
15335  *       # 0-dim array does contain *one* element
15336  *       nrecords = 1
15337  *       bytestride = 8             # <<<<<<<<<<<<<<
15338  *     else:
15339  *       nrecords = len(nparr)
15340  */
15341     __pyx_v_bytestride = 8;
15342 
15343     /* "tables/hdf5extension.pyx":1187
15344  *
15345  *     byteoffset = 0   # NumPy objects doesn't have an offset
15346  *     if (<object>nparr).shape == ():             # <<<<<<<<<<<<<<
15347  *       # 0-dim array does contain *one* element
15348  *       nrecords = 1
15349  */
15350     goto __pyx_L3;
15351   }
15352 
15353   /* "tables/hdf5extension.pyx":1192
15354  *       bytestride = 8
15355  *     else:
15356  *       nrecords = len(nparr)             # <<<<<<<<<<<<<<
15357  *       bytestride = nparr.strides[0]  # supports multi-dimensional recarray
15358  *     nelements = <size_t>nparr.size / nrecords
15359  */
15360   /*else*/ {
15361     __pyx_t_4 = PyObject_Length(((PyObject *)__pyx_v_nparr)); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1192, __pyx_L1_error)
15362     __pyx_v_nrecords = __pyx_t_4;
15363 
15364     /* "tables/hdf5extension.pyx":1193
15365  *     else:
15366  *       nrecords = len(nparr)
15367  *       bytestride = nparr.strides[0]  # supports multi-dimensional recarray             # <<<<<<<<<<<<<<
15368  *     nelements = <size_t>nparr.size / nrecords
15369  *     t64buf = nparr.data
15370  */
15371     __pyx_v_bytestride = (__pyx_v_nparr->strides[0]);
15372   }
15373   __pyx_L3:;
15374 
15375   /* "tables/hdf5extension.pyx":1194
15376  *       nrecords = len(nparr)
15377  *       bytestride = nparr.strides[0]  # supports multi-dimensional recarray
15378  *     nelements = <size_t>nparr.size / nrecords             # <<<<<<<<<<<<<<
15379  *     t64buf = nparr.data
15380  *
15381  */
15382   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_nparr), __pyx_n_s_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1194, __pyx_L1_error)
15383   __Pyx_GOTREF(__pyx_t_2);
15384   __pyx_t_5 = __Pyx_PyInt_As_size_t(__pyx_t_2); if (unlikely((__pyx_t_5 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1194, __pyx_L1_error)
15385   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15386   if (unlikely(__pyx_v_nrecords == 0)) {
15387     PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero");
15388     __PYX_ERR(0, 1194, __pyx_L1_error)
15389   }
15390   __pyx_v_nelements = (((size_t)__pyx_t_5) / __pyx_v_nrecords);
15391 
15392   /* "tables/hdf5extension.pyx":1195
15393  *       bytestride = nparr.strides[0]  # supports multi-dimensional recarray
15394  *     nelements = <size_t>nparr.size / nrecords
15395  *     t64buf = nparr.data             # <<<<<<<<<<<<<<
15396  *
15397  *     conv_float64_timeval32(
15398  */
15399   __pyx_t_6 = __pyx_v_nparr->data;
15400   __pyx_v_t64buf = __pyx_t_6;
15401 
15402   /* "tables/hdf5extension.pyx":1197
15403  *     t64buf = nparr.data
15404  *
15405  *     conv_float64_timeval32(             # <<<<<<<<<<<<<<
15406  *       t64buf, byteoffset, bytestride, nrecords, nelements, sense)
15407  *
15408  */
15409   conv_float64_timeval32(__pyx_v_t64buf, __pyx_v_byteoffset, __pyx_v_bytestride, __pyx_v_nrecords, __pyx_v_nelements, __pyx_v_sense);
15410 
15411   /* "tables/hdf5extension.pyx":1173
15412  *     return disk_type_id, native_type_id
15413  *
15414  *   cdef _convert_time64(self, ndarray nparr, int sense):             # <<<<<<<<<<<<<<
15415  *     """Converts a NumPy of Time64 elements between NumPy and HDF5 formats.
15416  *
15417  */
15418 
15419   /* function exit code */
15420   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
15421   goto __pyx_L0;
15422   __pyx_L1_error:;
15423   __Pyx_XDECREF(__pyx_t_1);
15424   __Pyx_XDECREF(__pyx_t_2);
15425   __Pyx_AddTraceback("tables.hdf5extension.Leaf._convert_time64", __pyx_clineno, __pyx_lineno, __pyx_filename);
15426   __pyx_r = 0;
15427   __pyx_L0:;
15428   __Pyx_XGIVEREF(__pyx_r);
15429   __Pyx_RefNannyFinishContext();
15430   return __pyx_r;
15431 }
15432 
15433 /* "tables/hdf5extension.pyx":1202
15434  *   # can't do since cdef'd
15435  *
15436  *   def _g_truncate(self, hsize_t size):             # <<<<<<<<<<<<<<
15437  *     """Truncate a Leaf to `size` nrows."""
15438  *
15439  */
15440 
15441 /* Python wrapper */
15442 static PyObject *__pyx_pw_6tables_13hdf5extension_4Leaf_7_g_truncate(PyObject *__pyx_v_self, PyObject *__pyx_arg_size); /*proto*/
15443 static char __pyx_doc_6tables_13hdf5extension_4Leaf_6_g_truncate[] = "Truncate a Leaf to `size` nrows.";
__pyx_pw_6tables_13hdf5extension_4Leaf_7_g_truncate(PyObject * __pyx_v_self,PyObject * __pyx_arg_size)15444 static PyObject *__pyx_pw_6tables_13hdf5extension_4Leaf_7_g_truncate(PyObject *__pyx_v_self, PyObject *__pyx_arg_size) {
15445   hsize_t __pyx_v_size;
15446   PyObject *__pyx_r = 0;
15447   __Pyx_RefNannyDeclarations
15448   __Pyx_RefNannySetupContext("_g_truncate (wrapper)", 0);
15449   assert(__pyx_arg_size); {
15450     __pyx_v_size = __Pyx_PyInt_As_hsize_t(__pyx_arg_size); if (unlikely((__pyx_v_size == ((hsize_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1202, __pyx_L3_error)
15451   }
15452   goto __pyx_L4_argument_unpacking_done;
15453   __pyx_L3_error:;
15454   __Pyx_AddTraceback("tables.hdf5extension.Leaf._g_truncate", __pyx_clineno, __pyx_lineno, __pyx_filename);
15455   __Pyx_RefNannyFinishContext();
15456   return NULL;
15457   __pyx_L4_argument_unpacking_done:;
15458   __pyx_r = __pyx_pf_6tables_13hdf5extension_4Leaf_6_g_truncate(((struct __pyx_obj_6tables_13hdf5extension_Leaf *)__pyx_v_self), ((hsize_t)__pyx_v_size));
15459 
15460   /* function exit code */
15461   __Pyx_RefNannyFinishContext();
15462   return __pyx_r;
15463 }
15464 
__pyx_pf_6tables_13hdf5extension_4Leaf_6_g_truncate(struct __pyx_obj_6tables_13hdf5extension_Leaf * __pyx_v_self,hsize_t __pyx_v_size)15465 static PyObject *__pyx_pf_6tables_13hdf5extension_4Leaf_6_g_truncate(struct __pyx_obj_6tables_13hdf5extension_Leaf *__pyx_v_self, hsize_t __pyx_v_size) {
15466   hsize_t __pyx_v_ret;
15467   PyObject *__pyx_v_classname = NULL;
15468   PyObject *__pyx_v_shape = NULL;
15469   PyObject *__pyx_r = NULL;
15470   __Pyx_RefNannyDeclarations
15471   PyObject *__pyx_t_1 = NULL;
15472   int __pyx_t_2;
15473   int __pyx_t_3;
15474   PyObject *__pyx_t_4 = NULL;
15475   PyObject *__pyx_t_5 = NULL;
15476   PyObject *__pyx_t_6 = NULL;
15477   int __pyx_t_7;
15478   Py_ssize_t __pyx_t_8;
15479   __Pyx_RefNannySetupContext("_g_truncate", 0);
15480 
15481   /* "tables/hdf5extension.pyx":1207
15482  *     cdef hsize_t ret
15483  *
15484  *     ret = truncate_dset(self.dataset_id, self.maindim, size)             # <<<<<<<<<<<<<<
15485  *     if ret < 0:
15486  *       raise HDF5ExtError("Problems truncating the leaf: %s" % self)
15487  */
15488   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_maindim); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1207, __pyx_L1_error)
15489   __Pyx_GOTREF(__pyx_t_1);
15490   __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1207, __pyx_L1_error)
15491   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
15492   __pyx_v_ret = truncate_dset(__pyx_v_self->dataset_id, __pyx_t_2, __pyx_v_size);
15493 
15494   /* "tables/hdf5extension.pyx":1208
15495  *
15496  *     ret = truncate_dset(self.dataset_id, self.maindim, size)
15497  *     if ret < 0:             # <<<<<<<<<<<<<<
15498  *       raise HDF5ExtError("Problems truncating the leaf: %s" % self)
15499  *
15500  */
15501   __pyx_t_3 = ((__pyx_v_ret < 0) != 0);
15502   if (unlikely(__pyx_t_3)) {
15503 
15504     /* "tables/hdf5extension.pyx":1209
15505  *     ret = truncate_dset(self.dataset_id, self.maindim, size)
15506  *     if ret < 0:
15507  *       raise HDF5ExtError("Problems truncating the leaf: %s" % self)             # <<<<<<<<<<<<<<
15508  *
15509  *     classname = self.__class__.__name__
15510  */
15511     __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_HDF5ExtError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1209, __pyx_L1_error)
15512     __Pyx_GOTREF(__pyx_t_4);
15513     __pyx_t_5 = __Pyx_PyString_Format(__pyx_kp_s_Problems_truncating_the_leaf_s, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1209, __pyx_L1_error)
15514     __Pyx_GOTREF(__pyx_t_5);
15515     __pyx_t_6 = NULL;
15516     if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
15517       __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
15518       if (likely(__pyx_t_6)) {
15519         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
15520         __Pyx_INCREF(__pyx_t_6);
15521         __Pyx_INCREF(function);
15522         __Pyx_DECREF_SET(__pyx_t_4, function);
15523       }
15524     }
15525     __pyx_t_1 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_6, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5);
15526     __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
15527     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
15528     if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1209, __pyx_L1_error)
15529     __Pyx_GOTREF(__pyx_t_1);
15530     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
15531     __Pyx_Raise(__pyx_t_1, 0, 0, 0);
15532     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
15533     __PYX_ERR(0, 1209, __pyx_L1_error)
15534 
15535     /* "tables/hdf5extension.pyx":1208
15536  *
15537  *     ret = truncate_dset(self.dataset_id, self.maindim, size)
15538  *     if ret < 0:             # <<<<<<<<<<<<<<
15539  *       raise HDF5ExtError("Problems truncating the leaf: %s" % self)
15540  *
15541  */
15542   }
15543 
15544   /* "tables/hdf5extension.pyx":1211
15545  *       raise HDF5ExtError("Problems truncating the leaf: %s" % self)
15546  *
15547  *     classname = self.__class__.__name__             # <<<<<<<<<<<<<<
15548  *     if classname in ('EArray', 'CArray'):
15549  *       # Update the new dimensionality
15550  */
15551   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1211, __pyx_L1_error)
15552   __Pyx_GOTREF(__pyx_t_1);
15553   __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_name_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1211, __pyx_L1_error)
15554   __Pyx_GOTREF(__pyx_t_4);
15555   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
15556   __pyx_v_classname = __pyx_t_4;
15557   __pyx_t_4 = 0;
15558 
15559   /* "tables/hdf5extension.pyx":1212
15560  *
15561  *     classname = self.__class__.__name__
15562  *     if classname in ('EArray', 'CArray'):             # <<<<<<<<<<<<<<
15563  *       # Update the new dimensionality
15564  *       self.dims[self.maindim] = size
15565  */
15566   __Pyx_INCREF(__pyx_v_classname);
15567   __pyx_t_4 = __pyx_v_classname;
15568   __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_n_s_EArray, Py_EQ)); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 1212, __pyx_L1_error)
15569   if (!__pyx_t_7) {
15570   } else {
15571     __pyx_t_3 = __pyx_t_7;
15572     goto __pyx_L5_bool_binop_done;
15573   }
15574   __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_n_s_CArray, Py_EQ)); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 1212, __pyx_L1_error)
15575   __pyx_t_3 = __pyx_t_7;
15576   __pyx_L5_bool_binop_done:;
15577   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
15578   __pyx_t_7 = (__pyx_t_3 != 0);
15579   if (__pyx_t_7) {
15580 
15581     /* "tables/hdf5extension.pyx":1214
15582  *     if classname in ('EArray', 'CArray'):
15583  *       # Update the new dimensionality
15584  *       self.dims[self.maindim] = size             # <<<<<<<<<<<<<<
15585  *       # Update the shape
15586  *       shape = list(self.shape)
15587  */
15588     __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_maindim); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1214, __pyx_L1_error)
15589     __Pyx_GOTREF(__pyx_t_4);
15590     __pyx_t_8 = __Pyx_PyIndex_AsSsize_t(__pyx_t_4); if (unlikely((__pyx_t_8 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1214, __pyx_L1_error)
15591     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
15592     (__pyx_v_self->dims[__pyx_t_8]) = __pyx_v_size;
15593 
15594     /* "tables/hdf5extension.pyx":1216
15595  *       self.dims[self.maindim] = size
15596  *       # Update the shape
15597  *       shape = list(self.shape)             # <<<<<<<<<<<<<<
15598  *       shape[self.maindim] = SizeType(size)
15599  *       self.shape = tuple(shape)
15600  */
15601     __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_shape); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1216, __pyx_L1_error)
15602     __Pyx_GOTREF(__pyx_t_4);
15603     __pyx_t_1 = PySequence_List(__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1216, __pyx_L1_error)
15604     __Pyx_GOTREF(__pyx_t_1);
15605     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
15606     __pyx_v_shape = ((PyObject*)__pyx_t_1);
15607     __pyx_t_1 = 0;
15608 
15609     /* "tables/hdf5extension.pyx":1217
15610  *       # Update the shape
15611  *       shape = list(self.shape)
15612  *       shape[self.maindim] = SizeType(size)             # <<<<<<<<<<<<<<
15613  *       self.shape = tuple(shape)
15614  *     elif classname in ('Table', 'VLArray'):
15615  */
15616     __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_SizeType); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1217, __pyx_L1_error)
15617     __Pyx_GOTREF(__pyx_t_4);
15618     __pyx_t_5 = __Pyx_PyInt_From_hsize_t(__pyx_v_size); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1217, __pyx_L1_error)
15619     __Pyx_GOTREF(__pyx_t_5);
15620     __pyx_t_6 = NULL;
15621     if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
15622       __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
15623       if (likely(__pyx_t_6)) {
15624         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
15625         __Pyx_INCREF(__pyx_t_6);
15626         __Pyx_INCREF(function);
15627         __Pyx_DECREF_SET(__pyx_t_4, function);
15628       }
15629     }
15630     __pyx_t_1 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_6, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5);
15631     __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
15632     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
15633     if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1217, __pyx_L1_error)
15634     __Pyx_GOTREF(__pyx_t_1);
15635     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
15636     __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_maindim); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1217, __pyx_L1_error)
15637     __Pyx_GOTREF(__pyx_t_4);
15638     if (unlikely(PyObject_SetItem(__pyx_v_shape, __pyx_t_4, __pyx_t_1) < 0)) __PYX_ERR(0, 1217, __pyx_L1_error)
15639     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
15640     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
15641 
15642     /* "tables/hdf5extension.pyx":1218
15643  *       shape = list(self.shape)
15644  *       shape[self.maindim] = SizeType(size)
15645  *       self.shape = tuple(shape)             # <<<<<<<<<<<<<<
15646  *     elif classname in ('Table', 'VLArray'):
15647  *       self.nrows = size
15648  */
15649     __pyx_t_1 = PyList_AsTuple(__pyx_v_shape); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1218, __pyx_L1_error)
15650     __Pyx_GOTREF(__pyx_t_1);
15651     if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_shape, __pyx_t_1) < 0) __PYX_ERR(0, 1218, __pyx_L1_error)
15652     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
15653 
15654     /* "tables/hdf5extension.pyx":1212
15655  *
15656  *     classname = self.__class__.__name__
15657  *     if classname in ('EArray', 'CArray'):             # <<<<<<<<<<<<<<
15658  *       # Update the new dimensionality
15659  *       self.dims[self.maindim] = size
15660  */
15661     goto __pyx_L4;
15662   }
15663 
15664   /* "tables/hdf5extension.pyx":1219
15665  *       shape[self.maindim] = SizeType(size)
15666  *       self.shape = tuple(shape)
15667  *     elif classname in ('Table', 'VLArray'):             # <<<<<<<<<<<<<<
15668  *       self.nrows = size
15669  *     else:
15670  */
15671   __Pyx_INCREF(__pyx_v_classname);
15672   __pyx_t_1 = __pyx_v_classname;
15673   __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_Table, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1219, __pyx_L1_error)
15674   if (!__pyx_t_3) {
15675   } else {
15676     __pyx_t_7 = __pyx_t_3;
15677     goto __pyx_L7_bool_binop_done;
15678   }
15679   __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_VLArray, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1219, __pyx_L1_error)
15680   __pyx_t_7 = __pyx_t_3;
15681   __pyx_L7_bool_binop_done:;
15682   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
15683   __pyx_t_3 = (__pyx_t_7 != 0);
15684   if (likely(__pyx_t_3)) {
15685 
15686     /* "tables/hdf5extension.pyx":1220
15687  *       self.shape = tuple(shape)
15688  *     elif classname in ('Table', 'VLArray'):
15689  *       self.nrows = size             # <<<<<<<<<<<<<<
15690  *     else:
15691  *       raise ValueError("Unexpected classname: %s" % classname)
15692  */
15693     __pyx_t_1 = __Pyx_PyInt_From_hsize_t(__pyx_v_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1220, __pyx_L1_error)
15694     __Pyx_GOTREF(__pyx_t_1);
15695     if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_nrows, __pyx_t_1) < 0) __PYX_ERR(0, 1220, __pyx_L1_error)
15696     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
15697 
15698     /* "tables/hdf5extension.pyx":1219
15699  *       shape[self.maindim] = SizeType(size)
15700  *       self.shape = tuple(shape)
15701  *     elif classname in ('Table', 'VLArray'):             # <<<<<<<<<<<<<<
15702  *       self.nrows = size
15703  *     else:
15704  */
15705     goto __pyx_L4;
15706   }
15707 
15708   /* "tables/hdf5extension.pyx":1222
15709  *       self.nrows = size
15710  *     else:
15711  *       raise ValueError("Unexpected classname: %s" % classname)             # <<<<<<<<<<<<<<
15712  *
15713  *   def _g_flush(self):
15714  */
15715   /*else*/ {
15716     __pyx_t_1 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Unexpected_classname_s, __pyx_v_classname); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1222, __pyx_L1_error)
15717     __Pyx_GOTREF(__pyx_t_1);
15718     __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1222, __pyx_L1_error)
15719     __Pyx_GOTREF(__pyx_t_4);
15720     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
15721     __Pyx_Raise(__pyx_t_4, 0, 0, 0);
15722     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
15723     __PYX_ERR(0, 1222, __pyx_L1_error)
15724   }
15725   __pyx_L4:;
15726 
15727   /* "tables/hdf5extension.pyx":1202
15728  *   # can't do since cdef'd
15729  *
15730  *   def _g_truncate(self, hsize_t size):             # <<<<<<<<<<<<<<
15731  *     """Truncate a Leaf to `size` nrows."""
15732  *
15733  */
15734 
15735   /* function exit code */
15736   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
15737   goto __pyx_L0;
15738   __pyx_L1_error:;
15739   __Pyx_XDECREF(__pyx_t_1);
15740   __Pyx_XDECREF(__pyx_t_4);
15741   __Pyx_XDECREF(__pyx_t_5);
15742   __Pyx_XDECREF(__pyx_t_6);
15743   __Pyx_AddTraceback("tables.hdf5extension.Leaf._g_truncate", __pyx_clineno, __pyx_lineno, __pyx_filename);
15744   __pyx_r = NULL;
15745   __pyx_L0:;
15746   __Pyx_XDECREF(__pyx_v_classname);
15747   __Pyx_XDECREF(__pyx_v_shape);
15748   __Pyx_XGIVEREF(__pyx_r);
15749   __Pyx_RefNannyFinishContext();
15750   return __pyx_r;
15751 }
15752 
15753 /* "tables/hdf5extension.pyx":1224
15754  *       raise ValueError("Unexpected classname: %s" % classname)
15755  *
15756  *   def _g_flush(self):             # <<<<<<<<<<<<<<
15757  *     # Flush the dataset (in fact, the entire buffers in file!)
15758  *     if self.dataset_id >= 0:
15759  */
15760 
15761 /* Python wrapper */
15762 static PyObject *__pyx_pw_6tables_13hdf5extension_4Leaf_9_g_flush(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
__pyx_pw_6tables_13hdf5extension_4Leaf_9_g_flush(PyObject * __pyx_v_self,CYTHON_UNUSED PyObject * unused)15763 static PyObject *__pyx_pw_6tables_13hdf5extension_4Leaf_9_g_flush(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
15764   PyObject *__pyx_r = 0;
15765   __Pyx_RefNannyDeclarations
15766   __Pyx_RefNannySetupContext("_g_flush (wrapper)", 0);
15767   __pyx_r = __pyx_pf_6tables_13hdf5extension_4Leaf_8_g_flush(((struct __pyx_obj_6tables_13hdf5extension_Leaf *)__pyx_v_self));
15768 
15769   /* function exit code */
15770   __Pyx_RefNannyFinishContext();
15771   return __pyx_r;
15772 }
15773 
__pyx_pf_6tables_13hdf5extension_4Leaf_8_g_flush(struct __pyx_obj_6tables_13hdf5extension_Leaf * __pyx_v_self)15774 static PyObject *__pyx_pf_6tables_13hdf5extension_4Leaf_8_g_flush(struct __pyx_obj_6tables_13hdf5extension_Leaf *__pyx_v_self) {
15775   PyObject *__pyx_r = NULL;
15776   __Pyx_RefNannyDeclarations
15777   int __pyx_t_1;
15778   __Pyx_RefNannySetupContext("_g_flush", 0);
15779 
15780   /* "tables/hdf5extension.pyx":1226
15781  *   def _g_flush(self):
15782  *     # Flush the dataset (in fact, the entire buffers in file!)
15783  *     if self.dataset_id >= 0:             # <<<<<<<<<<<<<<
15784  *         H5Fflush(self.dataset_id, H5F_SCOPE_GLOBAL)
15785  *
15786  */
15787   __pyx_t_1 = ((__pyx_v_self->dataset_id >= 0) != 0);
15788   if (__pyx_t_1) {
15789 
15790     /* "tables/hdf5extension.pyx":1227
15791  *     # Flush the dataset (in fact, the entire buffers in file!)
15792  *     if self.dataset_id >= 0:
15793  *         H5Fflush(self.dataset_id, H5F_SCOPE_GLOBAL)             # <<<<<<<<<<<<<<
15794  *
15795  *   def _g_close(self):
15796  */
15797     (void)(H5Fflush(__pyx_v_self->dataset_id, H5F_SCOPE_GLOBAL));
15798 
15799     /* "tables/hdf5extension.pyx":1226
15800  *   def _g_flush(self):
15801  *     # Flush the dataset (in fact, the entire buffers in file!)
15802  *     if self.dataset_id >= 0:             # <<<<<<<<<<<<<<
15803  *         H5Fflush(self.dataset_id, H5F_SCOPE_GLOBAL)
15804  *
15805  */
15806   }
15807 
15808   /* "tables/hdf5extension.pyx":1224
15809  *       raise ValueError("Unexpected classname: %s" % classname)
15810  *
15811  *   def _g_flush(self):             # <<<<<<<<<<<<<<
15812  *     # Flush the dataset (in fact, the entire buffers in file!)
15813  *     if self.dataset_id >= 0:
15814  */
15815 
15816   /* function exit code */
15817   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
15818   __Pyx_XGIVEREF(__pyx_r);
15819   __Pyx_RefNannyFinishContext();
15820   return __pyx_r;
15821 }
15822 
15823 /* "tables/hdf5extension.pyx":1229
15824  *         H5Fflush(self.dataset_id, H5F_SCOPE_GLOBAL)
15825  *
15826  *   def _g_close(self):             # <<<<<<<<<<<<<<
15827  *     # Close dataset in HDF5 space
15828  *     # Release resources
15829  */
15830 
15831 /* Python wrapper */
15832 static PyObject *__pyx_pw_6tables_13hdf5extension_4Leaf_11_g_close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
__pyx_pw_6tables_13hdf5extension_4Leaf_11_g_close(PyObject * __pyx_v_self,CYTHON_UNUSED PyObject * unused)15833 static PyObject *__pyx_pw_6tables_13hdf5extension_4Leaf_11_g_close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
15834   PyObject *__pyx_r = 0;
15835   __Pyx_RefNannyDeclarations
15836   __Pyx_RefNannySetupContext("_g_close (wrapper)", 0);
15837   __pyx_r = __pyx_pf_6tables_13hdf5extension_4Leaf_10_g_close(((struct __pyx_obj_6tables_13hdf5extension_Leaf *)__pyx_v_self));
15838 
15839   /* function exit code */
15840   __Pyx_RefNannyFinishContext();
15841   return __pyx_r;
15842 }
15843 
__pyx_pf_6tables_13hdf5extension_4Leaf_10_g_close(struct __pyx_obj_6tables_13hdf5extension_Leaf * __pyx_v_self)15844 static PyObject *__pyx_pf_6tables_13hdf5extension_4Leaf_10_g_close(struct __pyx_obj_6tables_13hdf5extension_Leaf *__pyx_v_self) {
15845   PyObject *__pyx_r = NULL;
15846   __Pyx_RefNannyDeclarations
15847   int __pyx_t_1;
15848   __Pyx_RefNannySetupContext("_g_close", 0);
15849 
15850   /* "tables/hdf5extension.pyx":1232
15851  *     # Close dataset in HDF5 space
15852  *     # Release resources
15853  *     if self.type_id >= 0:             # <<<<<<<<<<<<<<
15854  *       H5Tclose(self.type_id)
15855  *     if self.disk_type_id >= 0:
15856  */
15857   __pyx_t_1 = ((__pyx_v_self->type_id >= 0) != 0);
15858   if (__pyx_t_1) {
15859 
15860     /* "tables/hdf5extension.pyx":1233
15861  *     # Release resources
15862  *     if self.type_id >= 0:
15863  *       H5Tclose(self.type_id)             # <<<<<<<<<<<<<<
15864  *     if self.disk_type_id >= 0:
15865  *       H5Tclose(self.disk_type_id)
15866  */
15867     (void)(H5Tclose(__pyx_v_self->type_id));
15868 
15869     /* "tables/hdf5extension.pyx":1232
15870  *     # Close dataset in HDF5 space
15871  *     # Release resources
15872  *     if self.type_id >= 0:             # <<<<<<<<<<<<<<
15873  *       H5Tclose(self.type_id)
15874  *     if self.disk_type_id >= 0:
15875  */
15876   }
15877 
15878   /* "tables/hdf5extension.pyx":1234
15879  *     if self.type_id >= 0:
15880  *       H5Tclose(self.type_id)
15881  *     if self.disk_type_id >= 0:             # <<<<<<<<<<<<<<
15882  *       H5Tclose(self.disk_type_id)
15883  *     if self.base_type_id >= 0:
15884  */
15885   __pyx_t_1 = ((__pyx_v_self->disk_type_id >= 0) != 0);
15886   if (__pyx_t_1) {
15887 
15888     /* "tables/hdf5extension.pyx":1235
15889  *       H5Tclose(self.type_id)
15890  *     if self.disk_type_id >= 0:
15891  *       H5Tclose(self.disk_type_id)             # <<<<<<<<<<<<<<
15892  *     if self.base_type_id >= 0:
15893  *       H5Tclose(self.base_type_id)
15894  */
15895     (void)(H5Tclose(__pyx_v_self->disk_type_id));
15896 
15897     /* "tables/hdf5extension.pyx":1234
15898  *     if self.type_id >= 0:
15899  *       H5Tclose(self.type_id)
15900  *     if self.disk_type_id >= 0:             # <<<<<<<<<<<<<<
15901  *       H5Tclose(self.disk_type_id)
15902  *     if self.base_type_id >= 0:
15903  */
15904   }
15905 
15906   /* "tables/hdf5extension.pyx":1236
15907  *     if self.disk_type_id >= 0:
15908  *       H5Tclose(self.disk_type_id)
15909  *     if self.base_type_id >= 0:             # <<<<<<<<<<<<<<
15910  *       H5Tclose(self.base_type_id)
15911  *     if self.dataset_id >= 0:
15912  */
15913   __pyx_t_1 = ((__pyx_v_self->base_type_id >= 0) != 0);
15914   if (__pyx_t_1) {
15915 
15916     /* "tables/hdf5extension.pyx":1237
15917  *       H5Tclose(self.disk_type_id)
15918  *     if self.base_type_id >= 0:
15919  *       H5Tclose(self.base_type_id)             # <<<<<<<<<<<<<<
15920  *     if self.dataset_id >= 0:
15921  *       H5Dclose(self.dataset_id)
15922  */
15923     (void)(H5Tclose(__pyx_v_self->base_type_id));
15924 
15925     /* "tables/hdf5extension.pyx":1236
15926  *     if self.disk_type_id >= 0:
15927  *       H5Tclose(self.disk_type_id)
15928  *     if self.base_type_id >= 0:             # <<<<<<<<<<<<<<
15929  *       H5Tclose(self.base_type_id)
15930  *     if self.dataset_id >= 0:
15931  */
15932   }
15933 
15934   /* "tables/hdf5extension.pyx":1238
15935  *     if self.base_type_id >= 0:
15936  *       H5Tclose(self.base_type_id)
15937  *     if self.dataset_id >= 0:             # <<<<<<<<<<<<<<
15938  *       H5Dclose(self.dataset_id)
15939  *
15940  */
15941   __pyx_t_1 = ((__pyx_v_self->dataset_id >= 0) != 0);
15942   if (__pyx_t_1) {
15943 
15944     /* "tables/hdf5extension.pyx":1239
15945  *       H5Tclose(self.base_type_id)
15946  *     if self.dataset_id >= 0:
15947  *       H5Dclose(self.dataset_id)             # <<<<<<<<<<<<<<
15948  *
15949  *
15950  */
15951     (void)(H5Dclose(__pyx_v_self->dataset_id));
15952 
15953     /* "tables/hdf5extension.pyx":1238
15954  *     if self.base_type_id >= 0:
15955  *       H5Tclose(self.base_type_id)
15956  *     if self.dataset_id >= 0:             # <<<<<<<<<<<<<<
15957  *       H5Dclose(self.dataset_id)
15958  *
15959  */
15960   }
15961 
15962   /* "tables/hdf5extension.pyx":1229
15963  *         H5Fflush(self.dataset_id, H5F_SCOPE_GLOBAL)
15964  *
15965  *   def _g_close(self):             # <<<<<<<<<<<<<<
15966  *     # Close dataset in HDF5 space
15967  *     # Release resources
15968  */
15969 
15970   /* function exit code */
15971   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
15972   __Pyx_XGIVEREF(__pyx_r);
15973   __Pyx_RefNannyFinishContext();
15974   return __pyx_r;
15975 }
15976 
15977 /* "(tree fragment)":1
15978  * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
15979  *     raise TypeError("self.dims cannot be converted to a Python object for pickling")
15980  * def __setstate_cython__(self, __pyx_state):
15981  */
15982 
15983 /* Python wrapper */
15984 static PyObject *__pyx_pw_6tables_13hdf5extension_4Leaf_13__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
__pyx_pw_6tables_13hdf5extension_4Leaf_13__reduce_cython__(PyObject * __pyx_v_self,CYTHON_UNUSED PyObject * unused)15985 static PyObject *__pyx_pw_6tables_13hdf5extension_4Leaf_13__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
15986   PyObject *__pyx_r = 0;
15987   __Pyx_RefNannyDeclarations
15988   __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
15989   __pyx_r = __pyx_pf_6tables_13hdf5extension_4Leaf_12__reduce_cython__(((struct __pyx_obj_6tables_13hdf5extension_Leaf *)__pyx_v_self));
15990 
15991   /* function exit code */
15992   __Pyx_RefNannyFinishContext();
15993   return __pyx_r;
15994 }
15995 
__pyx_pf_6tables_13hdf5extension_4Leaf_12__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_6tables_13hdf5extension_Leaf * __pyx_v_self)15996 static PyObject *__pyx_pf_6tables_13hdf5extension_4Leaf_12__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_6tables_13hdf5extension_Leaf *__pyx_v_self) {
15997   PyObject *__pyx_r = NULL;
15998   __Pyx_RefNannyDeclarations
15999   PyObject *__pyx_t_1 = NULL;
16000   __Pyx_RefNannySetupContext("__reduce_cython__", 0);
16001 
16002   /* "(tree fragment)":2
16003  * def __reduce_cython__(self):
16004  *     raise TypeError("self.dims cannot be converted to a Python object for pickling")             # <<<<<<<<<<<<<<
16005  * def __setstate_cython__(self, __pyx_state):
16006  *     raise TypeError("self.dims cannot be converted to a Python object for pickling")
16007  */
16008   __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
16009   __Pyx_GOTREF(__pyx_t_1);
16010   __Pyx_Raise(__pyx_t_1, 0, 0, 0);
16011   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
16012   __PYX_ERR(1, 2, __pyx_L1_error)
16013 
16014   /* "(tree fragment)":1
16015  * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
16016  *     raise TypeError("self.dims cannot be converted to a Python object for pickling")
16017  * def __setstate_cython__(self, __pyx_state):
16018  */
16019 
16020   /* function exit code */
16021   __pyx_L1_error:;
16022   __Pyx_XDECREF(__pyx_t_1);
16023   __Pyx_AddTraceback("tables.hdf5extension.Leaf.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
16024   __pyx_r = NULL;
16025   __Pyx_XGIVEREF(__pyx_r);
16026   __Pyx_RefNannyFinishContext();
16027   return __pyx_r;
16028 }
16029 
16030 /* "(tree fragment)":3
16031  * def __reduce_cython__(self):
16032  *     raise TypeError("self.dims cannot be converted to a Python object for pickling")
16033  * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
16034  *     raise TypeError("self.dims cannot be converted to a Python object for pickling")
16035  */
16036 
16037 /* Python wrapper */
16038 static PyObject *__pyx_pw_6tables_13hdf5extension_4Leaf_15__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
__pyx_pw_6tables_13hdf5extension_4Leaf_15__setstate_cython__(PyObject * __pyx_v_self,PyObject * __pyx_v___pyx_state)16039 static PyObject *__pyx_pw_6tables_13hdf5extension_4Leaf_15__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
16040   PyObject *__pyx_r = 0;
16041   __Pyx_RefNannyDeclarations
16042   __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
16043   __pyx_r = __pyx_pf_6tables_13hdf5extension_4Leaf_14__setstate_cython__(((struct __pyx_obj_6tables_13hdf5extension_Leaf *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));
16044 
16045   /* function exit code */
16046   __Pyx_RefNannyFinishContext();
16047   return __pyx_r;
16048 }
16049 
__pyx_pf_6tables_13hdf5extension_4Leaf_14__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_6tables_13hdf5extension_Leaf * __pyx_v_self,CYTHON_UNUSED PyObject * __pyx_v___pyx_state)16050 static PyObject *__pyx_pf_6tables_13hdf5extension_4Leaf_14__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_6tables_13hdf5extension_Leaf *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
16051   PyObject *__pyx_r = NULL;
16052   __Pyx_RefNannyDeclarations
16053   PyObject *__pyx_t_1 = NULL;
16054   __Pyx_RefNannySetupContext("__setstate_cython__", 0);
16055 
16056   /* "(tree fragment)":4
16057  *     raise TypeError("self.dims cannot be converted to a Python object for pickling")
16058  * def __setstate_cython__(self, __pyx_state):
16059  *     raise TypeError("self.dims cannot be converted to a Python object for pickling")             # <<<<<<<<<<<<<<
16060  */
16061   __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__11, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
16062   __Pyx_GOTREF(__pyx_t_1);
16063   __Pyx_Raise(__pyx_t_1, 0, 0, 0);
16064   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
16065   __PYX_ERR(1, 4, __pyx_L1_error)
16066 
16067   /* "(tree fragment)":3
16068  * def __reduce_cython__(self):
16069  *     raise TypeError("self.dims cannot be converted to a Python object for pickling")
16070  * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
16071  *     raise TypeError("self.dims cannot be converted to a Python object for pickling")
16072  */
16073 
16074   /* function exit code */
16075   __pyx_L1_error:;
16076   __Pyx_XDECREF(__pyx_t_1);
16077   __Pyx_AddTraceback("tables.hdf5extension.Leaf.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
16078   __pyx_r = NULL;
16079   __Pyx_XGIVEREF(__pyx_r);
16080   __Pyx_RefNannyFinishContext();
16081   return __pyx_r;
16082 }
16083 
16084 /* "tables/hdf5extension.pyx":1245
16085  *   # Instance variables declared in .pxd
16086  *
16087  *   def _create_array(self, ndarray nparr, object title, object atom):             # <<<<<<<<<<<<<<
16088  *     cdef int i
16089  *     cdef herr_t ret
16090  */
16091 
16092 /* Python wrapper */
16093 static PyObject *__pyx_pw_6tables_13hdf5extension_5Array_1_create_array(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
__pyx_pw_6tables_13hdf5extension_5Array_1_create_array(PyObject * __pyx_v_self,PyObject * __pyx_args,PyObject * __pyx_kwds)16094 static PyObject *__pyx_pw_6tables_13hdf5extension_5Array_1_create_array(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
16095   PyArrayObject *__pyx_v_nparr = 0;
16096   PyObject *__pyx_v_title = 0;
16097   PyObject *__pyx_v_atom = 0;
16098   PyObject *__pyx_r = 0;
16099   __Pyx_RefNannyDeclarations
16100   __Pyx_RefNannySetupContext("_create_array (wrapper)", 0);
16101   {
16102     static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_nparr,&__pyx_n_s_title,&__pyx_n_s_atom,0};
16103     PyObject* values[3] = {0,0,0};
16104     if (unlikely(__pyx_kwds)) {
16105       Py_ssize_t kw_args;
16106       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
16107       switch (pos_args) {
16108         case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
16109         CYTHON_FALLTHROUGH;
16110         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
16111         CYTHON_FALLTHROUGH;
16112         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
16113         CYTHON_FALLTHROUGH;
16114         case  0: break;
16115         default: goto __pyx_L5_argtuple_error;
16116       }
16117       kw_args = PyDict_Size(__pyx_kwds);
16118       switch (pos_args) {
16119         case  0:
16120         if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nparr)) != 0)) kw_args--;
16121         else goto __pyx_L5_argtuple_error;
16122         CYTHON_FALLTHROUGH;
16123         case  1:
16124         if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_title)) != 0)) kw_args--;
16125         else {
16126           __Pyx_RaiseArgtupleInvalid("_create_array", 1, 3, 3, 1); __PYX_ERR(0, 1245, __pyx_L3_error)
16127         }
16128         CYTHON_FALLTHROUGH;
16129         case  2:
16130         if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_atom)) != 0)) kw_args--;
16131         else {
16132           __Pyx_RaiseArgtupleInvalid("_create_array", 1, 3, 3, 2); __PYX_ERR(0, 1245, __pyx_L3_error)
16133         }
16134       }
16135       if (unlikely(kw_args > 0)) {
16136         if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_create_array") < 0)) __PYX_ERR(0, 1245, __pyx_L3_error)
16137       }
16138     } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
16139       goto __pyx_L5_argtuple_error;
16140     } else {
16141       values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
16142       values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
16143       values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
16144     }
16145     __pyx_v_nparr = ((PyArrayObject *)values[0]);
16146     __pyx_v_title = values[1];
16147     __pyx_v_atom = values[2];
16148   }
16149   goto __pyx_L4_argument_unpacking_done;
16150   __pyx_L5_argtuple_error:;
16151   __Pyx_RaiseArgtupleInvalid("_create_array", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1245, __pyx_L3_error)
16152   __pyx_L3_error:;
16153   __Pyx_AddTraceback("tables.hdf5extension.Array._create_array", __pyx_clineno, __pyx_lineno, __pyx_filename);
16154   __Pyx_RefNannyFinishContext();
16155   return NULL;
16156   __pyx_L4_argument_unpacking_done:;
16157   if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_nparr), __pyx_ptype_5numpy_ndarray, 1, "nparr", 0))) __PYX_ERR(0, 1245, __pyx_L1_error)
16158   __pyx_r = __pyx_pf_6tables_13hdf5extension_5Array__create_array(((struct __pyx_obj_6tables_13hdf5extension_Array *)__pyx_v_self), __pyx_v_nparr, __pyx_v_title, __pyx_v_atom);
16159 
16160   /* function exit code */
16161   goto __pyx_L0;
16162   __pyx_L1_error:;
16163   __pyx_r = NULL;
16164   __pyx_L0:;
16165   __Pyx_RefNannyFinishContext();
16166   return __pyx_r;
16167 }
16168 
__pyx_pf_6tables_13hdf5extension_5Array__create_array(struct __pyx_obj_6tables_13hdf5extension_Array * __pyx_v_self,PyArrayObject * __pyx_v_nparr,PyObject * __pyx_v_title,PyObject * __pyx_v_atom)16169 static PyObject *__pyx_pf_6tables_13hdf5extension_5Array__create_array(struct __pyx_obj_6tables_13hdf5extension_Array *__pyx_v_self, PyArrayObject *__pyx_v_nparr, PyObject *__pyx_v_title, PyObject *__pyx_v_atom) {
16170   void *__pyx_v_rbuf;
16171   PyObject *__pyx_v_complib = 0;
16172   PyObject *__pyx_v_version = 0;
16173   PyObject *__pyx_v_class_ = 0;
16174   PyObject *__pyx_v_dtype_ = 0;
16175   PyObject *__pyx_v_atom_ = 0;
16176   PyObject *__pyx_v_shape = 0;
16177   PyArrayObject *__pyx_v_dims = 0;
16178   PyObject *__pyx_v_encoded_title = 0;
16179   PyObject *__pyx_v_encoded_name = 0;
16180   enum H5T_cset_t __pyx_v_cset;
16181   PyObject *__pyx_v_strides = NULL;
16182   PyObject *__pyx_r = NULL;
16183   __Pyx_RefNannyDeclarations
16184   PyObject *__pyx_t_1 = NULL;
16185   PyObject *__pyx_t_2 = NULL;
16186   PyObject *__pyx_t_3 = NULL;
16187   int __pyx_t_4;
16188   int __pyx_t_5;
16189   int __pyx_t_6;
16190   Py_ssize_t __pyx_t_7;
16191   PyObject *__pyx_t_8 = NULL;
16192   int __pyx_t_9;
16193   PyObject *__pyx_t_10 = NULL;
16194   hid_t __pyx_t_11;
16195   char *__pyx_t_12;
16196   char *__pyx_t_13;
16197   int __pyx_t_14;
16198   char *__pyx_t_15;
16199   int __pyx_t_16;
16200   int __pyx_t_17;
16201   hbool_t __pyx_t_18;
16202   __Pyx_RefNannySetupContext("_create_array", 0);
16203 
16204   /* "tables/hdf5extension.pyx":1253
16205  *     cdef ndarray dims
16206  *     cdef bytes encoded_title, encoded_name
16207  *     cdef H5T_cset_t cset = H5T_CSET_ASCII             # <<<<<<<<<<<<<<
16208  *
16209  *     encoded_title = title.encode('utf-8')
16210  */
16211   __pyx_v_cset = H5T_CSET_ASCII;
16212 
16213   /* "tables/hdf5extension.pyx":1255
16214  *     cdef H5T_cset_t cset = H5T_CSET_ASCII
16215  *
16216  *     encoded_title = title.encode('utf-8')             # <<<<<<<<<<<<<<
16217  *     encoded_name = self.name.encode('utf-8')
16218  *
16219  */
16220   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_title, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1255, __pyx_L1_error)
16221   __Pyx_GOTREF(__pyx_t_2);
16222   __pyx_t_3 = NULL;
16223   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
16224     __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
16225     if (likely(__pyx_t_3)) {
16226       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
16227       __Pyx_INCREF(__pyx_t_3);
16228       __Pyx_INCREF(function);
16229       __Pyx_DECREF_SET(__pyx_t_2, function);
16230     }
16231   }
16232   __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_kp_s_utf_8) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_kp_s_utf_8);
16233   __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
16234   if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1255, __pyx_L1_error)
16235   __Pyx_GOTREF(__pyx_t_1);
16236   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
16237   if (!(likely(PyBytes_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 1255, __pyx_L1_error)
16238   __pyx_v_encoded_title = ((PyObject*)__pyx_t_1);
16239   __pyx_t_1 = 0;
16240 
16241   /* "tables/hdf5extension.pyx":1256
16242  *
16243  *     encoded_title = title.encode('utf-8')
16244  *     encoded_name = self.name.encode('utf-8')             # <<<<<<<<<<<<<<
16245  *
16246  *     # Get the HDF5 type associated with this numpy type
16247  */
16248   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->__pyx_base.__pyx_base.name, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1256, __pyx_L1_error)
16249   __Pyx_GOTREF(__pyx_t_2);
16250   __pyx_t_3 = NULL;
16251   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
16252     __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
16253     if (likely(__pyx_t_3)) {
16254       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
16255       __Pyx_INCREF(__pyx_t_3);
16256       __Pyx_INCREF(function);
16257       __Pyx_DECREF_SET(__pyx_t_2, function);
16258     }
16259   }
16260   __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_kp_s_utf_8) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_kp_s_utf_8);
16261   __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
16262   if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1256, __pyx_L1_error)
16263   __Pyx_GOTREF(__pyx_t_1);
16264   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
16265   if (!(likely(PyBytes_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 1256, __pyx_L1_error)
16266   __pyx_v_encoded_name = ((PyObject*)__pyx_t_1);
16267   __pyx_t_1 = 0;
16268 
16269   /* "tables/hdf5extension.pyx":1259
16270  *
16271  *     # Get the HDF5 type associated with this numpy type
16272  *     shape = (<object>nparr).shape             # <<<<<<<<<<<<<<
16273  *     if atom is None or atom.shape == ():
16274  *       dtype_ = nparr.dtype.base
16275  */
16276   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_nparr), __pyx_n_s_shape); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1259, __pyx_L1_error)
16277   __Pyx_GOTREF(__pyx_t_1);
16278   __pyx_v_shape = __pyx_t_1;
16279   __pyx_t_1 = 0;
16280 
16281   /* "tables/hdf5extension.pyx":1260
16282  *     # Get the HDF5 type associated with this numpy type
16283  *     shape = (<object>nparr).shape
16284  *     if atom is None or atom.shape == ():             # <<<<<<<<<<<<<<
16285  *       dtype_ = nparr.dtype.base
16286  *       atom_ = Atom.from_dtype(dtype_)
16287  */
16288   __pyx_t_5 = (__pyx_v_atom == Py_None);
16289   __pyx_t_6 = (__pyx_t_5 != 0);
16290   if (!__pyx_t_6) {
16291   } else {
16292     __pyx_t_4 = __pyx_t_6;
16293     goto __pyx_L4_bool_binop_done;
16294   }
16295   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_atom, __pyx_n_s_shape); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1260, __pyx_L1_error)
16296   __Pyx_GOTREF(__pyx_t_1);
16297   __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_empty_tuple, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1260, __pyx_L1_error)
16298   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
16299   __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 1260, __pyx_L1_error)
16300   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
16301   __pyx_t_4 = __pyx_t_6;
16302   __pyx_L4_bool_binop_done:;
16303   if (__pyx_t_4) {
16304 
16305     /* "tables/hdf5extension.pyx":1261
16306  *     shape = (<object>nparr).shape
16307  *     if atom is None or atom.shape == ():
16308  *       dtype_ = nparr.dtype.base             # <<<<<<<<<<<<<<
16309  *       atom_ = Atom.from_dtype(dtype_)
16310  *     else:
16311  */
16312     __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_nparr), __pyx_n_s_dtype); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1261, __pyx_L1_error)
16313     __Pyx_GOTREF(__pyx_t_2);
16314     __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_base); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1261, __pyx_L1_error)
16315     __Pyx_GOTREF(__pyx_t_1);
16316     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
16317     __pyx_v_dtype_ = __pyx_t_1;
16318     __pyx_t_1 = 0;
16319 
16320     /* "tables/hdf5extension.pyx":1262
16321  *     if atom is None or atom.shape == ():
16322  *       dtype_ = nparr.dtype.base
16323  *       atom_ = Atom.from_dtype(dtype_)             # <<<<<<<<<<<<<<
16324  *     else:
16325  *       atom_ = atom
16326  */
16327     __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Atom); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1262, __pyx_L1_error)
16328     __Pyx_GOTREF(__pyx_t_2);
16329     __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_from_dtype); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1262, __pyx_L1_error)
16330     __Pyx_GOTREF(__pyx_t_3);
16331     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
16332     __pyx_t_2 = NULL;
16333     if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
16334       __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
16335       if (likely(__pyx_t_2)) {
16336         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
16337         __Pyx_INCREF(__pyx_t_2);
16338         __Pyx_INCREF(function);
16339         __Pyx_DECREF_SET(__pyx_t_3, function);
16340       }
16341     }
16342     __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_v_dtype_) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_dtype_);
16343     __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
16344     if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1262, __pyx_L1_error)
16345     __Pyx_GOTREF(__pyx_t_1);
16346     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
16347     __pyx_v_atom_ = __pyx_t_1;
16348     __pyx_t_1 = 0;
16349 
16350     /* "tables/hdf5extension.pyx":1260
16351  *     # Get the HDF5 type associated with this numpy type
16352  *     shape = (<object>nparr).shape
16353  *     if atom is None or atom.shape == ():             # <<<<<<<<<<<<<<
16354  *       dtype_ = nparr.dtype.base
16355  *       atom_ = Atom.from_dtype(dtype_)
16356  */
16357     goto __pyx_L3;
16358   }
16359 
16360   /* "tables/hdf5extension.pyx":1264
16361  *       atom_ = Atom.from_dtype(dtype_)
16362  *     else:
16363  *       atom_ = atom             # <<<<<<<<<<<<<<
16364  *       shape = shape[:-len(atom_.shape)]
16365  *     self.disk_type_id = atom_to_hdf5_type(atom_, self.byteorder)
16366  */
16367   /*else*/ {
16368     __Pyx_INCREF(__pyx_v_atom);
16369     __pyx_v_atom_ = __pyx_v_atom;
16370 
16371     /* "tables/hdf5extension.pyx":1265
16372  *     else:
16373  *       atom_ = atom
16374  *       shape = shape[:-len(atom_.shape)]             # <<<<<<<<<<<<<<
16375  *     self.disk_type_id = atom_to_hdf5_type(atom_, self.byteorder)
16376  *     if self.disk_type_id < 0:
16377  */
16378     __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_atom_, __pyx_n_s_shape); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1265, __pyx_L1_error)
16379     __Pyx_GOTREF(__pyx_t_1);
16380     __pyx_t_7 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_7 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1265, __pyx_L1_error)
16381     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
16382     __pyx_t_1 = __Pyx_PyObject_GetSlice(__pyx_v_shape, 0, (-__pyx_t_7), NULL, NULL, NULL, 0, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1265, __pyx_L1_error)
16383     __Pyx_GOTREF(__pyx_t_1);
16384     __Pyx_DECREF_SET(__pyx_v_shape, __pyx_t_1);
16385     __pyx_t_1 = 0;
16386   }
16387   __pyx_L3:;
16388 
16389   /* "tables/hdf5extension.pyx":1266
16390  *       atom_ = atom
16391  *       shape = shape[:-len(atom_.shape)]
16392  *     self.disk_type_id = atom_to_hdf5_type(atom_, self.byteorder)             # <<<<<<<<<<<<<<
16393  *     if self.disk_type_id < 0:
16394  *       raise HDF5ExtError(
16395  */
16396   __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_atom_to_hdf5_type); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1266, __pyx_L1_error)
16397   __Pyx_GOTREF(__pyx_t_3);
16398   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_byteorder); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1266, __pyx_L1_error)
16399   __Pyx_GOTREF(__pyx_t_2);
16400   __pyx_t_8 = NULL;
16401   __pyx_t_9 = 0;
16402   if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
16403     __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_3);
16404     if (likely(__pyx_t_8)) {
16405       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
16406       __Pyx_INCREF(__pyx_t_8);
16407       __Pyx_INCREF(function);
16408       __Pyx_DECREF_SET(__pyx_t_3, function);
16409       __pyx_t_9 = 1;
16410     }
16411   }
16412   #if CYTHON_FAST_PYCALL
16413   if (PyFunction_Check(__pyx_t_3)) {
16414     PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_v_atom_, __pyx_t_2};
16415     __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1266, __pyx_L1_error)
16416     __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
16417     __Pyx_GOTREF(__pyx_t_1);
16418     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
16419   } else
16420   #endif
16421   #if CYTHON_FAST_PYCCALL
16422   if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
16423     PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_v_atom_, __pyx_t_2};
16424     __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1266, __pyx_L1_error)
16425     __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
16426     __Pyx_GOTREF(__pyx_t_1);
16427     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
16428   } else
16429   #endif
16430   {
16431     __pyx_t_10 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1266, __pyx_L1_error)
16432     __Pyx_GOTREF(__pyx_t_10);
16433     if (__pyx_t_8) {
16434       __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_8); __pyx_t_8 = NULL;
16435     }
16436     __Pyx_INCREF(__pyx_v_atom_);
16437     __Pyx_GIVEREF(__pyx_v_atom_);
16438     PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_9, __pyx_v_atom_);
16439     __Pyx_GIVEREF(__pyx_t_2);
16440     PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_9, __pyx_t_2);
16441     __pyx_t_2 = 0;
16442     __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_10, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1266, __pyx_L1_error)
16443     __Pyx_GOTREF(__pyx_t_1);
16444     __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
16445   }
16446   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
16447   __pyx_t_11 = __Pyx_PyInt_As_hid_t(__pyx_t_1); if (unlikely((__pyx_t_11 == ((hid_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1266, __pyx_L1_error)
16448   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
16449   __pyx_v_self->__pyx_base.disk_type_id = __pyx_t_11;
16450 
16451   /* "tables/hdf5extension.pyx":1267
16452  *       shape = shape[:-len(atom_.shape)]
16453  *     self.disk_type_id = atom_to_hdf5_type(atom_, self.byteorder)
16454  *     if self.disk_type_id < 0:             # <<<<<<<<<<<<<<
16455  *       raise HDF5ExtError(
16456  *         "Problems creating the %s: invalid disk type ID for atom %s" % (
16457  */
16458   __pyx_t_4 = ((__pyx_v_self->__pyx_base.disk_type_id < 0) != 0);
16459   if (unlikely(__pyx_t_4)) {
16460 
16461     /* "tables/hdf5extension.pyx":1268
16462  *     self.disk_type_id = atom_to_hdf5_type(atom_, self.byteorder)
16463  *     if self.disk_type_id < 0:
16464  *       raise HDF5ExtError(             # <<<<<<<<<<<<<<
16465  *         "Problems creating the %s: invalid disk type ID for atom %s" % (
16466  *             self.__class__.__name__, atom_))
16467  */
16468     __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_HDF5ExtError); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1268, __pyx_L1_error)
16469     __Pyx_GOTREF(__pyx_t_3);
16470 
16471     /* "tables/hdf5extension.pyx":1270
16472  *       raise HDF5ExtError(
16473  *         "Problems creating the %s: invalid disk type ID for atom %s" % (
16474  *             self.__class__.__name__, atom_))             # <<<<<<<<<<<<<<
16475  *
16476  *     # Allocate space for the dimension axis info and fill it
16477  */
16478     __pyx_t_10 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1270, __pyx_L1_error)
16479     __Pyx_GOTREF(__pyx_t_10);
16480     __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_name_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1270, __pyx_L1_error)
16481     __Pyx_GOTREF(__pyx_t_2);
16482     __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
16483     __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1270, __pyx_L1_error)
16484     __Pyx_GOTREF(__pyx_t_10);
16485     __Pyx_GIVEREF(__pyx_t_2);
16486     PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_2);
16487     __Pyx_INCREF(__pyx_v_atom_);
16488     __Pyx_GIVEREF(__pyx_v_atom_);
16489     PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_v_atom_);
16490     __pyx_t_2 = 0;
16491 
16492     /* "tables/hdf5extension.pyx":1269
16493  *     if self.disk_type_id < 0:
16494  *       raise HDF5ExtError(
16495  *         "Problems creating the %s: invalid disk type ID for atom %s" % (             # <<<<<<<<<<<<<<
16496  *             self.__class__.__name__, atom_))
16497  *
16498  */
16499     __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_Problems_creating_the_s_invalid, __pyx_t_10); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1269, __pyx_L1_error)
16500     __Pyx_GOTREF(__pyx_t_2);
16501     __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
16502     __pyx_t_10 = NULL;
16503     if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
16504       __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_3);
16505       if (likely(__pyx_t_10)) {
16506         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
16507         __Pyx_INCREF(__pyx_t_10);
16508         __Pyx_INCREF(function);
16509         __Pyx_DECREF_SET(__pyx_t_3, function);
16510       }
16511     }
16512     __pyx_t_1 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_10, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2);
16513     __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
16514     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
16515     if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1268, __pyx_L1_error)
16516     __Pyx_GOTREF(__pyx_t_1);
16517     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
16518     __Pyx_Raise(__pyx_t_1, 0, 0, 0);
16519     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
16520     __PYX_ERR(0, 1268, __pyx_L1_error)
16521 
16522     /* "tables/hdf5extension.pyx":1267
16523  *       shape = shape[:-len(atom_.shape)]
16524  *     self.disk_type_id = atom_to_hdf5_type(atom_, self.byteorder)
16525  *     if self.disk_type_id < 0:             # <<<<<<<<<<<<<<
16526  *       raise HDF5ExtError(
16527  *         "Problems creating the %s: invalid disk type ID for atom %s" % (
16528  */
16529   }
16530 
16531   /* "tables/hdf5extension.pyx":1273
16532  *
16533  *     # Allocate space for the dimension axis info and fill it
16534  *     dims = numpy.array(shape, dtype=numpy.intp)             # <<<<<<<<<<<<<<
16535  *     self.rank = len(shape)
16536  *     self.dims = npy_malloc_dims(self.rank, <npy_intp *>(dims.data))
16537  */
16538   __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1273, __pyx_L1_error)
16539   __Pyx_GOTREF(__pyx_t_1);
16540   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1273, __pyx_L1_error)
16541   __Pyx_GOTREF(__pyx_t_3);
16542   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
16543   __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1273, __pyx_L1_error)
16544   __Pyx_GOTREF(__pyx_t_1);
16545   __Pyx_INCREF(__pyx_v_shape);
16546   __Pyx_GIVEREF(__pyx_v_shape);
16547   PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_shape);
16548   __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1273, __pyx_L1_error)
16549   __Pyx_GOTREF(__pyx_t_2);
16550   __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_numpy); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1273, __pyx_L1_error)
16551   __Pyx_GOTREF(__pyx_t_10);
16552   __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_intp); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1273, __pyx_L1_error)
16553   __Pyx_GOTREF(__pyx_t_8);
16554   __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
16555   if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 1273, __pyx_L1_error)
16556   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
16557   __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1273, __pyx_L1_error)
16558   __Pyx_GOTREF(__pyx_t_8);
16559   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
16560   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
16561   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
16562   if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1273, __pyx_L1_error)
16563   __pyx_v_dims = ((PyArrayObject *)__pyx_t_8);
16564   __pyx_t_8 = 0;
16565 
16566   /* "tables/hdf5extension.pyx":1274
16567  *     # Allocate space for the dimension axis info and fill it
16568  *     dims = numpy.array(shape, dtype=numpy.intp)
16569  *     self.rank = len(shape)             # <<<<<<<<<<<<<<
16570  *     self.dims = npy_malloc_dims(self.rank, <npy_intp *>(dims.data))
16571  *     # Get the pointer to the buffer data area
16572  */
16573   __pyx_t_7 = PyObject_Length(__pyx_v_shape); if (unlikely(__pyx_t_7 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1274, __pyx_L1_error)
16574   __pyx_v_self->rank = __pyx_t_7;
16575 
16576   /* "tables/hdf5extension.pyx":1275
16577  *     dims = numpy.array(shape, dtype=numpy.intp)
16578  *     self.rank = len(shape)
16579  *     self.dims = npy_malloc_dims(self.rank, <npy_intp *>(dims.data))             # <<<<<<<<<<<<<<
16580  *     # Get the pointer to the buffer data area
16581  *     strides = (<object>nparr).strides
16582  */
16583   __pyx_v_self->__pyx_base.dims = __pyx_f_6tables_13hdf5extension_npy_malloc_dims(__pyx_v_self->rank, ((npy_intp *)__pyx_v_dims->data));
16584 
16585   /* "tables/hdf5extension.pyx":1277
16586  *     self.dims = npy_malloc_dims(self.rank, <npy_intp *>(dims.data))
16587  *     # Get the pointer to the buffer data area
16588  *     strides = (<object>nparr).strides             # <<<<<<<<<<<<<<
16589  *     # When the object is not a 0-d ndarray and its strides == 0, that
16590  *     # means that the array does not contain actual data
16591  */
16592   __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_nparr), __pyx_n_s_strides); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1277, __pyx_L1_error)
16593   __Pyx_GOTREF(__pyx_t_8);
16594   __pyx_v_strides = __pyx_t_8;
16595   __pyx_t_8 = 0;
16596 
16597   /* "tables/hdf5extension.pyx":1280
16598  *     # When the object is not a 0-d ndarray and its strides == 0, that
16599  *     # means that the array does not contain actual data
16600  *     if strides != () and sum(strides) == 0:             # <<<<<<<<<<<<<<
16601  *       rbuf = NULL
16602  *     else:
16603  */
16604   __pyx_t_8 = PyObject_RichCompare(__pyx_v_strides, __pyx_empty_tuple, Py_NE); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1280, __pyx_L1_error)
16605   __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 1280, __pyx_L1_error)
16606   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
16607   if (__pyx_t_6) {
16608   } else {
16609     __pyx_t_4 = __pyx_t_6;
16610     goto __pyx_L8_bool_binop_done;
16611   }
16612   __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_builtin_sum, __pyx_v_strides); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1280, __pyx_L1_error)
16613   __Pyx_GOTREF(__pyx_t_8);
16614   __pyx_t_2 = __Pyx_PyInt_EqObjC(__pyx_t_8, __pyx_int_0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1280, __pyx_L1_error)
16615   __Pyx_GOTREF(__pyx_t_2);
16616   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
16617   __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 1280, __pyx_L1_error)
16618   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
16619   __pyx_t_4 = __pyx_t_6;
16620   __pyx_L8_bool_binop_done:;
16621   if (__pyx_t_4) {
16622 
16623     /* "tables/hdf5extension.pyx":1281
16624  *     # means that the array does not contain actual data
16625  *     if strides != () and sum(strides) == 0:
16626  *       rbuf = NULL             # <<<<<<<<<<<<<<
16627  *     else:
16628  *       rbuf = nparr.data
16629  */
16630     __pyx_v_rbuf = NULL;
16631 
16632     /* "tables/hdf5extension.pyx":1280
16633  *     # When the object is not a 0-d ndarray and its strides == 0, that
16634  *     # means that the array does not contain actual data
16635  *     if strides != () and sum(strides) == 0:             # <<<<<<<<<<<<<<
16636  *       rbuf = NULL
16637  *     else:
16638  */
16639     goto __pyx_L7;
16640   }
16641 
16642   /* "tables/hdf5extension.pyx":1283
16643  *       rbuf = NULL
16644  *     else:
16645  *       rbuf = nparr.data             # <<<<<<<<<<<<<<
16646  *     # Save the array
16647  *     complib = (self.filters.complib or '').encode('utf-8')
16648  */
16649   /*else*/ {
16650     __pyx_t_12 = __pyx_v_nparr->data;
16651     __pyx_v_rbuf = __pyx_t_12;
16652   }
16653   __pyx_L7:;
16654 
16655   /* "tables/hdf5extension.pyx":1285
16656  *       rbuf = nparr.data
16657  *     # Save the array
16658  *     complib = (self.filters.complib or '').encode('utf-8')             # <<<<<<<<<<<<<<
16659  *     version = self._v_version.encode('utf-8')
16660  *     class_ = self._c_classid.encode('utf-8')
16661  */
16662   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_filters); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1285, __pyx_L1_error)
16663   __Pyx_GOTREF(__pyx_t_1);
16664   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_complib); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1285, __pyx_L1_error)
16665   __Pyx_GOTREF(__pyx_t_3);
16666   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
16667   __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 1285, __pyx_L1_error)
16668   if (!__pyx_t_4) {
16669     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
16670   } else {
16671     __Pyx_INCREF(__pyx_t_3);
16672     __pyx_t_8 = __pyx_t_3;
16673     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
16674     goto __pyx_L10_bool_binop_done;
16675   }
16676   __Pyx_INCREF(__pyx_kp_s_);
16677   __pyx_t_8 = __pyx_kp_s_;
16678   __pyx_L10_bool_binop_done:;
16679   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_encode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1285, __pyx_L1_error)
16680   __Pyx_GOTREF(__pyx_t_3);
16681   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
16682   __pyx_t_8 = NULL;
16683   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
16684     __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_3);
16685     if (likely(__pyx_t_8)) {
16686       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
16687       __Pyx_INCREF(__pyx_t_8);
16688       __Pyx_INCREF(function);
16689       __Pyx_DECREF_SET(__pyx_t_3, function);
16690     }
16691   }
16692   __pyx_t_2 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_8, __pyx_kp_s_utf_8) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_kp_s_utf_8);
16693   __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
16694   if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1285, __pyx_L1_error)
16695   __Pyx_GOTREF(__pyx_t_2);
16696   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
16697   if (!(likely(PyBytes_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_2)->tp_name), 0))) __PYX_ERR(0, 1285, __pyx_L1_error)
16698   __pyx_v_complib = ((PyObject*)__pyx_t_2);
16699   __pyx_t_2 = 0;
16700 
16701   /* "tables/hdf5extension.pyx":1286
16702  *     # Save the array
16703  *     complib = (self.filters.complib or '').encode('utf-8')
16704  *     version = self._v_version.encode('utf-8')             # <<<<<<<<<<<<<<
16705  *     class_ = self._c_classid.encode('utf-8')
16706  *     self.dataset_id = H5ARRAYmake(self.parent_id, encoded_name, version,
16707  */
16708   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_v_version); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1286, __pyx_L1_error)
16709   __Pyx_GOTREF(__pyx_t_3);
16710   __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_encode); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1286, __pyx_L1_error)
16711   __Pyx_GOTREF(__pyx_t_8);
16712   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
16713   __pyx_t_3 = NULL;
16714   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
16715     __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_8);
16716     if (likely(__pyx_t_3)) {
16717       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
16718       __Pyx_INCREF(__pyx_t_3);
16719       __Pyx_INCREF(function);
16720       __Pyx_DECREF_SET(__pyx_t_8, function);
16721     }
16722   }
16723   __pyx_t_2 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_3, __pyx_kp_s_utf_8) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_kp_s_utf_8);
16724   __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
16725   if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1286, __pyx_L1_error)
16726   __Pyx_GOTREF(__pyx_t_2);
16727   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
16728   if (!(likely(PyBytes_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_2)->tp_name), 0))) __PYX_ERR(0, 1286, __pyx_L1_error)
16729   __pyx_v_version = ((PyObject*)__pyx_t_2);
16730   __pyx_t_2 = 0;
16731 
16732   /* "tables/hdf5extension.pyx":1287
16733  *     complib = (self.filters.complib or '').encode('utf-8')
16734  *     version = self._v_version.encode('utf-8')
16735  *     class_ = self._c_classid.encode('utf-8')             # <<<<<<<<<<<<<<
16736  *     self.dataset_id = H5ARRAYmake(self.parent_id, encoded_name, version,
16737  *                                   self.rank, self.dims,
16738  */
16739   __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_c_classid); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1287, __pyx_L1_error)
16740   __Pyx_GOTREF(__pyx_t_8);
16741   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_encode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1287, __pyx_L1_error)
16742   __Pyx_GOTREF(__pyx_t_3);
16743   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
16744   __pyx_t_8 = NULL;
16745   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
16746     __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_3);
16747     if (likely(__pyx_t_8)) {
16748       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
16749       __Pyx_INCREF(__pyx_t_8);
16750       __Pyx_INCREF(function);
16751       __Pyx_DECREF_SET(__pyx_t_3, function);
16752     }
16753   }
16754   __pyx_t_2 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_8, __pyx_kp_s_utf_8) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_kp_s_utf_8);
16755   __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
16756   if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1287, __pyx_L1_error)
16757   __Pyx_GOTREF(__pyx_t_2);
16758   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
16759   if (!(likely(PyBytes_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_2)->tp_name), 0))) __PYX_ERR(0, 1287, __pyx_L1_error)
16760   __pyx_v_class_ = ((PyObject*)__pyx_t_2);
16761   __pyx_t_2 = 0;
16762 
16763   /* "tables/hdf5extension.pyx":1288
16764  *     version = self._v_version.encode('utf-8')
16765  *     class_ = self._c_classid.encode('utf-8')
16766  *     self.dataset_id = H5ARRAYmake(self.parent_id, encoded_name, version,             # <<<<<<<<<<<<<<
16767  *                                   self.rank, self.dims,
16768  *                                   self.extdim, self.disk_type_id, NULL, NULL,
16769  */
16770   if (unlikely(__pyx_v_encoded_name == Py_None)) {
16771     PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
16772     __PYX_ERR(0, 1288, __pyx_L1_error)
16773   }
16774   __pyx_t_12 = __Pyx_PyBytes_AsWritableString(__pyx_v_encoded_name); if (unlikely((!__pyx_t_12) && PyErr_Occurred())) __PYX_ERR(0, 1288, __pyx_L1_error)
16775   if (unlikely(__pyx_v_version == Py_None)) {
16776     PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
16777     __PYX_ERR(0, 1288, __pyx_L1_error)
16778   }
16779   __pyx_t_13 = __Pyx_PyBytes_AsWritableString(__pyx_v_version); if (unlikely((!__pyx_t_13) && PyErr_Occurred())) __PYX_ERR(0, 1288, __pyx_L1_error)
16780 
16781   /* "tables/hdf5extension.pyx":1290
16782  *     self.dataset_id = H5ARRAYmake(self.parent_id, encoded_name, version,
16783  *                                   self.rank, self.dims,
16784  *                                   self.extdim, self.disk_type_id, NULL, NULL,             # <<<<<<<<<<<<<<
16785  *                                   self.filters.complevel, complib,
16786  *                                   self.filters.shuffle_bitshuffle,
16787  */
16788   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_extdim); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1290, __pyx_L1_error)
16789   __Pyx_GOTREF(__pyx_t_2);
16790   __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1290, __pyx_L1_error)
16791   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
16792 
16793   /* "tables/hdf5extension.pyx":1291
16794  *                                   self.rank, self.dims,
16795  *                                   self.extdim, self.disk_type_id, NULL, NULL,
16796  *                                   self.filters.complevel, complib,             # <<<<<<<<<<<<<<
16797  *                                   self.filters.shuffle_bitshuffle,
16798  *                                   self.filters.fletcher32,
16799  */
16800   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_filters); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1291, __pyx_L1_error)
16801   __Pyx_GOTREF(__pyx_t_2);
16802   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_complevel); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1291, __pyx_L1_error)
16803   __Pyx_GOTREF(__pyx_t_3);
16804   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
16805   __pyx_t_14 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_14 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1291, __pyx_L1_error)
16806   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
16807   if (unlikely(__pyx_v_complib == Py_None)) {
16808     PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
16809     __PYX_ERR(0, 1291, __pyx_L1_error)
16810   }
16811   __pyx_t_15 = __Pyx_PyBytes_AsWritableString(__pyx_v_complib); if (unlikely((!__pyx_t_15) && PyErr_Occurred())) __PYX_ERR(0, 1291, __pyx_L1_error)
16812 
16813   /* "tables/hdf5extension.pyx":1292
16814  *                                   self.extdim, self.disk_type_id, NULL, NULL,
16815  *                                   self.filters.complevel, complib,
16816  *                                   self.filters.shuffle_bitshuffle,             # <<<<<<<<<<<<<<
16817  *                                   self.filters.fletcher32,
16818  *                                   self._want_track_times,
16819  */
16820   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_filters); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1292, __pyx_L1_error)
16821   __Pyx_GOTREF(__pyx_t_3);
16822   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_shuffle_bitshuffle); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1292, __pyx_L1_error)
16823   __Pyx_GOTREF(__pyx_t_2);
16824   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
16825   __pyx_t_16 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_16 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1292, __pyx_L1_error)
16826   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
16827 
16828   /* "tables/hdf5extension.pyx":1293
16829  *                                   self.filters.complevel, complib,
16830  *                                   self.filters.shuffle_bitshuffle,
16831  *                                   self.filters.fletcher32,             # <<<<<<<<<<<<<<
16832  *                                   self._want_track_times,
16833  *                                   rbuf)
16834  */
16835   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_filters); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1293, __pyx_L1_error)
16836   __Pyx_GOTREF(__pyx_t_2);
16837   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_fletcher32); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1293, __pyx_L1_error)
16838   __Pyx_GOTREF(__pyx_t_3);
16839   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
16840   __pyx_t_17 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_17 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1293, __pyx_L1_error)
16841   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
16842 
16843   /* "tables/hdf5extension.pyx":1294
16844  *                                   self.filters.shuffle_bitshuffle,
16845  *                                   self.filters.fletcher32,
16846  *                                   self._want_track_times,             # <<<<<<<<<<<<<<
16847  *                                   rbuf)
16848  *     if self.dataset_id < 0:
16849  */
16850   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_want_track_times); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1294, __pyx_L1_error)
16851   __Pyx_GOTREF(__pyx_t_3);
16852   __pyx_t_18 = __Pyx_PyInt_As_hbool_t(__pyx_t_3); if (unlikely((__pyx_t_18 == ((hbool_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1294, __pyx_L1_error)
16853   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
16854 
16855   /* "tables/hdf5extension.pyx":1288
16856  *     version = self._v_version.encode('utf-8')
16857  *     class_ = self._c_classid.encode('utf-8')
16858  *     self.dataset_id = H5ARRAYmake(self.parent_id, encoded_name, version,             # <<<<<<<<<<<<<<
16859  *                                   self.rank, self.dims,
16860  *                                   self.extdim, self.disk_type_id, NULL, NULL,
16861  */
16862   __pyx_v_self->__pyx_base.dataset_id = H5ARRAYmake(__pyx_v_self->__pyx_base.__pyx_base.parent_id, __pyx_t_12, __pyx_t_13, __pyx_v_self->rank, __pyx_v_self->__pyx_base.dims, __pyx_t_9, __pyx_v_self->__pyx_base.disk_type_id, NULL, NULL, __pyx_t_14, __pyx_t_15, __pyx_t_16, __pyx_t_17, __pyx_t_18, __pyx_v_rbuf);
16863 
16864   /* "tables/hdf5extension.pyx":1296
16865  *                                   self._want_track_times,
16866  *                                   rbuf)
16867  *     if self.dataset_id < 0:             # <<<<<<<<<<<<<<
16868  *       raise HDF5ExtError("Problems creating the %s." % self.__class__.__name__)
16869  *
16870  */
16871   __pyx_t_4 = ((__pyx_v_self->__pyx_base.dataset_id < 0) != 0);
16872   if (unlikely(__pyx_t_4)) {
16873 
16874     /* "tables/hdf5extension.pyx":1297
16875  *                                   rbuf)
16876  *     if self.dataset_id < 0:
16877  *       raise HDF5ExtError("Problems creating the %s." % self.__class__.__name__)             # <<<<<<<<<<<<<<
16878  *
16879  *     if self._v_file.params['PYTABLES_SYS_ATTRS']:
16880  */
16881     __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_HDF5ExtError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1297, __pyx_L1_error)
16882     __Pyx_GOTREF(__pyx_t_2);
16883     __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1297, __pyx_L1_error)
16884     __Pyx_GOTREF(__pyx_t_8);
16885     __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_name_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1297, __pyx_L1_error)
16886     __Pyx_GOTREF(__pyx_t_1);
16887     __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
16888     __pyx_t_8 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Problems_creating_the_s, __pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1297, __pyx_L1_error)
16889     __Pyx_GOTREF(__pyx_t_8);
16890     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
16891     __pyx_t_1 = NULL;
16892     if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
16893       __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2);
16894       if (likely(__pyx_t_1)) {
16895         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
16896         __Pyx_INCREF(__pyx_t_1);
16897         __Pyx_INCREF(function);
16898         __Pyx_DECREF_SET(__pyx_t_2, function);
16899       }
16900     }
16901     __pyx_t_3 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_1, __pyx_t_8) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_8);
16902     __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
16903     __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
16904     if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1297, __pyx_L1_error)
16905     __Pyx_GOTREF(__pyx_t_3);
16906     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
16907     __Pyx_Raise(__pyx_t_3, 0, 0, 0);
16908     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
16909     __PYX_ERR(0, 1297, __pyx_L1_error)
16910 
16911     /* "tables/hdf5extension.pyx":1296
16912  *                                   self._want_track_times,
16913  *                                   rbuf)
16914  *     if self.dataset_id < 0:             # <<<<<<<<<<<<<<
16915  *       raise HDF5ExtError("Problems creating the %s." % self.__class__.__name__)
16916  *
16917  */
16918   }
16919 
16920   /* "tables/hdf5extension.pyx":1299
16921  *       raise HDF5ExtError("Problems creating the %s." % self.__class__.__name__)
16922  *
16923  *     if self._v_file.params['PYTABLES_SYS_ATTRS']:             # <<<<<<<<<<<<<<
16924  *       if PY_MAJOR_VERSION > 2:
16925  *         cset = H5T_CSET_UTF8
16926  */
16927   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_v_file); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1299, __pyx_L1_error)
16928   __Pyx_GOTREF(__pyx_t_3);
16929   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_params); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1299, __pyx_L1_error)
16930   __Pyx_GOTREF(__pyx_t_2);
16931   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
16932   __pyx_t_3 = __Pyx_PyObject_Dict_GetItem(__pyx_t_2, __pyx_n_s_PYTABLES_SYS_ATTRS); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1299, __pyx_L1_error)
16933   __Pyx_GOTREF(__pyx_t_3);
16934   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
16935   __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 1299, __pyx_L1_error)
16936   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
16937   if (__pyx_t_4) {
16938 
16939     /* "tables/hdf5extension.pyx":1300
16940  *
16941  *     if self._v_file.params['PYTABLES_SYS_ATTRS']:
16942  *       if PY_MAJOR_VERSION > 2:             # <<<<<<<<<<<<<<
16943  *         cset = H5T_CSET_UTF8
16944  *       # Set the conforming array attributes
16945  */
16946     __pyx_t_4 = ((PY_MAJOR_VERSION > 2) != 0);
16947     if (__pyx_t_4) {
16948 
16949       /* "tables/hdf5extension.pyx":1301
16950  *     if self._v_file.params['PYTABLES_SYS_ATTRS']:
16951  *       if PY_MAJOR_VERSION > 2:
16952  *         cset = H5T_CSET_UTF8             # <<<<<<<<<<<<<<
16953  *       # Set the conforming array attributes
16954  *       H5ATTRset_attribute_string(self.dataset_id, "CLASS", class_,
16955  */
16956       __pyx_v_cset = H5T_CSET_UTF8;
16957 
16958       /* "tables/hdf5extension.pyx":1300
16959  *
16960  *     if self._v_file.params['PYTABLES_SYS_ATTRS']:
16961  *       if PY_MAJOR_VERSION > 2:             # <<<<<<<<<<<<<<
16962  *         cset = H5T_CSET_UTF8
16963  *       # Set the conforming array attributes
16964  */
16965     }
16966 
16967     /* "tables/hdf5extension.pyx":1303
16968  *         cset = H5T_CSET_UTF8
16969  *       # Set the conforming array attributes
16970  *       H5ATTRset_attribute_string(self.dataset_id, "CLASS", class_,             # <<<<<<<<<<<<<<
16971  *                                  len(class_), cset)
16972  *       H5ATTRset_attribute_string(self.dataset_id, "VERSION", version,
16973  */
16974     if (unlikely(__pyx_v_class_ == Py_None)) {
16975       PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
16976       __PYX_ERR(0, 1303, __pyx_L1_error)
16977     }
16978     __pyx_t_15 = __Pyx_PyBytes_AsWritableString(__pyx_v_class_); if (unlikely((!__pyx_t_15) && PyErr_Occurred())) __PYX_ERR(0, 1303, __pyx_L1_error)
16979 
16980     /* "tables/hdf5extension.pyx":1304
16981  *       # Set the conforming array attributes
16982  *       H5ATTRset_attribute_string(self.dataset_id, "CLASS", class_,
16983  *                                  len(class_), cset)             # <<<<<<<<<<<<<<
16984  *       H5ATTRset_attribute_string(self.dataset_id, "VERSION", version,
16985  *                                  len(version), cset)
16986  */
16987     if (unlikely(__pyx_v_class_ == Py_None)) {
16988       PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
16989       __PYX_ERR(0, 1304, __pyx_L1_error)
16990     }
16991     __pyx_t_7 = PyBytes_GET_SIZE(__pyx_v_class_); if (unlikely(__pyx_t_7 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1304, __pyx_L1_error)
16992 
16993     /* "tables/hdf5extension.pyx":1303
16994  *         cset = H5T_CSET_UTF8
16995  *       # Set the conforming array attributes
16996  *       H5ATTRset_attribute_string(self.dataset_id, "CLASS", class_,             # <<<<<<<<<<<<<<
16997  *                                  len(class_), cset)
16998  *       H5ATTRset_attribute_string(self.dataset_id, "VERSION", version,
16999  */
17000     (void)(H5ATTRset_attribute_string(__pyx_v_self->__pyx_base.dataset_id, ((char *)"CLASS"), __pyx_t_15, __pyx_t_7, __pyx_v_cset));
17001 
17002     /* "tables/hdf5extension.pyx":1305
17003  *       H5ATTRset_attribute_string(self.dataset_id, "CLASS", class_,
17004  *                                  len(class_), cset)
17005  *       H5ATTRset_attribute_string(self.dataset_id, "VERSION", version,             # <<<<<<<<<<<<<<
17006  *                                  len(version), cset)
17007  *       H5ATTRset_attribute_string(self.dataset_id, "TITLE", encoded_title,
17008  */
17009     if (unlikely(__pyx_v_version == Py_None)) {
17010       PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
17011       __PYX_ERR(0, 1305, __pyx_L1_error)
17012     }
17013     __pyx_t_15 = __Pyx_PyBytes_AsWritableString(__pyx_v_version); if (unlikely((!__pyx_t_15) && PyErr_Occurred())) __PYX_ERR(0, 1305, __pyx_L1_error)
17014 
17015     /* "tables/hdf5extension.pyx":1306
17016  *                                  len(class_), cset)
17017  *       H5ATTRset_attribute_string(self.dataset_id, "VERSION", version,
17018  *                                  len(version), cset)             # <<<<<<<<<<<<<<
17019  *       H5ATTRset_attribute_string(self.dataset_id, "TITLE", encoded_title,
17020  *                                  len(encoded_title), cset)
17021  */
17022     if (unlikely(__pyx_v_version == Py_None)) {
17023       PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
17024       __PYX_ERR(0, 1306, __pyx_L1_error)
17025     }
17026     __pyx_t_7 = PyBytes_GET_SIZE(__pyx_v_version); if (unlikely(__pyx_t_7 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1306, __pyx_L1_error)
17027 
17028     /* "tables/hdf5extension.pyx":1305
17029  *       H5ATTRset_attribute_string(self.dataset_id, "CLASS", class_,
17030  *                                  len(class_), cset)
17031  *       H5ATTRset_attribute_string(self.dataset_id, "VERSION", version,             # <<<<<<<<<<<<<<
17032  *                                  len(version), cset)
17033  *       H5ATTRset_attribute_string(self.dataset_id, "TITLE", encoded_title,
17034  */
17035     (void)(H5ATTRset_attribute_string(__pyx_v_self->__pyx_base.dataset_id, ((char *)"VERSION"), __pyx_t_15, __pyx_t_7, __pyx_v_cset));
17036 
17037     /* "tables/hdf5extension.pyx":1307
17038  *       H5ATTRset_attribute_string(self.dataset_id, "VERSION", version,
17039  *                                  len(version), cset)
17040  *       H5ATTRset_attribute_string(self.dataset_id, "TITLE", encoded_title,             # <<<<<<<<<<<<<<
17041  *                                  len(encoded_title), cset)
17042  *
17043  */
17044     if (unlikely(__pyx_v_encoded_title == Py_None)) {
17045       PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
17046       __PYX_ERR(0, 1307, __pyx_L1_error)
17047     }
17048     __pyx_t_15 = __Pyx_PyBytes_AsWritableString(__pyx_v_encoded_title); if (unlikely((!__pyx_t_15) && PyErr_Occurred())) __PYX_ERR(0, 1307, __pyx_L1_error)
17049 
17050     /* "tables/hdf5extension.pyx":1308
17051  *                                  len(version), cset)
17052  *       H5ATTRset_attribute_string(self.dataset_id, "TITLE", encoded_title,
17053  *                                  len(encoded_title), cset)             # <<<<<<<<<<<<<<
17054  *
17055  *     # Get the native type (so that it is HDF5 who is the responsible to deal
17056  */
17057     if (unlikely(__pyx_v_encoded_title == Py_None)) {
17058       PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
17059       __PYX_ERR(0, 1308, __pyx_L1_error)
17060     }
17061     __pyx_t_7 = PyBytes_GET_SIZE(__pyx_v_encoded_title); if (unlikely(__pyx_t_7 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1308, __pyx_L1_error)
17062 
17063     /* "tables/hdf5extension.pyx":1307
17064  *       H5ATTRset_attribute_string(self.dataset_id, "VERSION", version,
17065  *                                  len(version), cset)
17066  *       H5ATTRset_attribute_string(self.dataset_id, "TITLE", encoded_title,             # <<<<<<<<<<<<<<
17067  *                                  len(encoded_title), cset)
17068  *
17069  */
17070     (void)(H5ATTRset_attribute_string(__pyx_v_self->__pyx_base.dataset_id, ((char *)"TITLE"), __pyx_t_15, __pyx_t_7, __pyx_v_cset));
17071 
17072     /* "tables/hdf5extension.pyx":1299
17073  *       raise HDF5ExtError("Problems creating the %s." % self.__class__.__name__)
17074  *
17075  *     if self._v_file.params['PYTABLES_SYS_ATTRS']:             # <<<<<<<<<<<<<<
17076  *       if PY_MAJOR_VERSION > 2:
17077  *         cset = H5T_CSET_UTF8
17078  */
17079   }
17080 
17081   /* "tables/hdf5extension.pyx":1312
17082  *     # Get the native type (so that it is HDF5 who is the responsible to deal
17083  *     # with non-native byteorders on-disk)
17084  *     self.type_id = get_native_type(self.disk_type_id)             # <<<<<<<<<<<<<<
17085  *
17086  *     return self.dataset_id, shape, atom_
17087  */
17088   __pyx_v_self->__pyx_base.type_id = __pyx_f_6tables_14utilsextension_get_native_type(__pyx_v_self->__pyx_base.disk_type_id);
17089 
17090   /* "tables/hdf5extension.pyx":1314
17091  *     self.type_id = get_native_type(self.disk_type_id)
17092  *
17093  *     return self.dataset_id, shape, atom_             # <<<<<<<<<<<<<<
17094  *
17095  *
17096  */
17097   __Pyx_XDECREF(__pyx_r);
17098   __pyx_t_3 = __Pyx_PyInt_From_hid_t(__pyx_v_self->__pyx_base.dataset_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1314, __pyx_L1_error)
17099   __Pyx_GOTREF(__pyx_t_3);
17100   __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1314, __pyx_L1_error)
17101   __Pyx_GOTREF(__pyx_t_2);
17102   __Pyx_GIVEREF(__pyx_t_3);
17103   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3);
17104   __Pyx_INCREF(__pyx_v_shape);
17105   __Pyx_GIVEREF(__pyx_v_shape);
17106   PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_shape);
17107   __Pyx_INCREF(__pyx_v_atom_);
17108   __Pyx_GIVEREF(__pyx_v_atom_);
17109   PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_atom_);
17110   __pyx_t_3 = 0;
17111   __pyx_r = __pyx_t_2;
17112   __pyx_t_2 = 0;
17113   goto __pyx_L0;
17114 
17115   /* "tables/hdf5extension.pyx":1245
17116  *   # Instance variables declared in .pxd
17117  *
17118  *   def _create_array(self, ndarray nparr, object title, object atom):             # <<<<<<<<<<<<<<
17119  *     cdef int i
17120  *     cdef herr_t ret
17121  */
17122 
17123   /* function exit code */
17124   __pyx_L1_error:;
17125   __Pyx_XDECREF(__pyx_t_1);
17126   __Pyx_XDECREF(__pyx_t_2);
17127   __Pyx_XDECREF(__pyx_t_3);
17128   __Pyx_XDECREF(__pyx_t_8);
17129   __Pyx_XDECREF(__pyx_t_10);
17130   __Pyx_AddTraceback("tables.hdf5extension.Array._create_array", __pyx_clineno, __pyx_lineno, __pyx_filename);
17131   __pyx_r = NULL;
17132   __pyx_L0:;
17133   __Pyx_XDECREF(__pyx_v_complib);
17134   __Pyx_XDECREF(__pyx_v_version);
17135   __Pyx_XDECREF(__pyx_v_class_);
17136   __Pyx_XDECREF(__pyx_v_dtype_);
17137   __Pyx_XDECREF(__pyx_v_atom_);
17138   __Pyx_XDECREF(__pyx_v_shape);
17139   __Pyx_XDECREF((PyObject *)__pyx_v_dims);
17140   __Pyx_XDECREF(__pyx_v_encoded_title);
17141   __Pyx_XDECREF(__pyx_v_encoded_name);
17142   __Pyx_XDECREF(__pyx_v_strides);
17143   __Pyx_XGIVEREF(__pyx_r);
17144   __Pyx_RefNannyFinishContext();
17145   return __pyx_r;
17146 }
17147 
17148 /* "tables/hdf5extension.pyx":1317
17149  *
17150  *
17151  *   def _create_carray(self, object title):             # <<<<<<<<<<<<<<
17152  *     cdef int i
17153  *     cdef herr_t ret
17154  */
17155 
17156 /* Python wrapper */
17157 static PyObject *__pyx_pw_6tables_13hdf5extension_5Array_3_create_carray(PyObject *__pyx_v_self, PyObject *__pyx_v_title); /*proto*/
__pyx_pw_6tables_13hdf5extension_5Array_3_create_carray(PyObject * __pyx_v_self,PyObject * __pyx_v_title)17158 static PyObject *__pyx_pw_6tables_13hdf5extension_5Array_3_create_carray(PyObject *__pyx_v_self, PyObject *__pyx_v_title) {
17159   PyObject *__pyx_r = 0;
17160   __Pyx_RefNannyDeclarations
17161   __Pyx_RefNannySetupContext("_create_carray (wrapper)", 0);
17162   __pyx_r = __pyx_pf_6tables_13hdf5extension_5Array_2_create_carray(((struct __pyx_obj_6tables_13hdf5extension_Array *)__pyx_v_self), ((PyObject *)__pyx_v_title));
17163 
17164   /* function exit code */
17165   __Pyx_RefNannyFinishContext();
17166   return __pyx_r;
17167 }
17168 
__pyx_pf_6tables_13hdf5extension_5Array_2_create_carray(struct __pyx_obj_6tables_13hdf5extension_Array * __pyx_v_self,PyObject * __pyx_v_title)17169 static PyObject *__pyx_pf_6tables_13hdf5extension_5Array_2_create_carray(struct __pyx_obj_6tables_13hdf5extension_Array *__pyx_v_self, PyObject *__pyx_v_title) {
17170   void *__pyx_v_rbuf;
17171   PyObject *__pyx_v_complib = 0;
17172   PyObject *__pyx_v_version = 0;
17173   PyObject *__pyx_v_class_ = 0;
17174   PyArrayObject *__pyx_v_dflts = 0;
17175   void *__pyx_v_fill_data;
17176   PyArrayObject *__pyx_v_extdim = 0;
17177   PyObject *__pyx_v_atom = 0;
17178   PyObject *__pyx_v_encoded_title = 0;
17179   PyObject *__pyx_v_encoded_name = 0;
17180   PyObject *__pyx_r = NULL;
17181   __Pyx_RefNannyDeclarations
17182   PyObject *__pyx_t_1 = NULL;
17183   PyObject *__pyx_t_2 = NULL;
17184   PyObject *__pyx_t_3 = NULL;
17185   PyObject *__pyx_t_4 = NULL;
17186   int __pyx_t_5;
17187   PyObject *__pyx_t_6 = NULL;
17188   hid_t __pyx_t_7;
17189   Py_ssize_t __pyx_t_8;
17190   int __pyx_t_9;
17191   int __pyx_t_10;
17192   int __pyx_t_11;
17193   char *__pyx_t_12;
17194   char *__pyx_t_13;
17195   int __pyx_t_14;
17196   char *__pyx_t_15;
17197   int __pyx_t_16;
17198   int __pyx_t_17;
17199   hbool_t __pyx_t_18;
17200   __Pyx_RefNannySetupContext("_create_carray", 0);
17201 
17202   /* "tables/hdf5extension.pyx":1328
17203  *     cdef bytes encoded_title, encoded_name
17204  *
17205  *     encoded_title = title.encode('utf-8')             # <<<<<<<<<<<<<<
17206  *     encoded_name = self.name.encode('utf-8')
17207  *
17208  */
17209   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_title, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1328, __pyx_L1_error)
17210   __Pyx_GOTREF(__pyx_t_2);
17211   __pyx_t_3 = NULL;
17212   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
17213     __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
17214     if (likely(__pyx_t_3)) {
17215       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
17216       __Pyx_INCREF(__pyx_t_3);
17217       __Pyx_INCREF(function);
17218       __Pyx_DECREF_SET(__pyx_t_2, function);
17219     }
17220   }
17221   __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_kp_s_utf_8) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_kp_s_utf_8);
17222   __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
17223   if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1328, __pyx_L1_error)
17224   __Pyx_GOTREF(__pyx_t_1);
17225   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
17226   if (!(likely(PyBytes_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 1328, __pyx_L1_error)
17227   __pyx_v_encoded_title = ((PyObject*)__pyx_t_1);
17228   __pyx_t_1 = 0;
17229 
17230   /* "tables/hdf5extension.pyx":1329
17231  *
17232  *     encoded_title = title.encode('utf-8')
17233  *     encoded_name = self.name.encode('utf-8')             # <<<<<<<<<<<<<<
17234  *
17235  *     atom = self.atom
17236  */
17237   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->__pyx_base.__pyx_base.name, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1329, __pyx_L1_error)
17238   __Pyx_GOTREF(__pyx_t_2);
17239   __pyx_t_3 = NULL;
17240   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
17241     __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
17242     if (likely(__pyx_t_3)) {
17243       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
17244       __Pyx_INCREF(__pyx_t_3);
17245       __Pyx_INCREF(function);
17246       __Pyx_DECREF_SET(__pyx_t_2, function);
17247     }
17248   }
17249   __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_kp_s_utf_8) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_kp_s_utf_8);
17250   __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
17251   if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1329, __pyx_L1_error)
17252   __Pyx_GOTREF(__pyx_t_1);
17253   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
17254   if (!(likely(PyBytes_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 1329, __pyx_L1_error)
17255   __pyx_v_encoded_name = ((PyObject*)__pyx_t_1);
17256   __pyx_t_1 = 0;
17257 
17258   /* "tables/hdf5extension.pyx":1331
17259  *     encoded_name = self.name.encode('utf-8')
17260  *
17261  *     atom = self.atom             # <<<<<<<<<<<<<<
17262  *     self.disk_type_id = atom_to_hdf5_type(atom, self.byteorder)
17263  *
17264  */
17265   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_atom); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1331, __pyx_L1_error)
17266   __Pyx_GOTREF(__pyx_t_1);
17267   __pyx_v_atom = __pyx_t_1;
17268   __pyx_t_1 = 0;
17269 
17270   /* "tables/hdf5extension.pyx":1332
17271  *
17272  *     atom = self.atom
17273  *     self.disk_type_id = atom_to_hdf5_type(atom, self.byteorder)             # <<<<<<<<<<<<<<
17274  *
17275  *     self.rank = len(self.shape)
17276  */
17277   __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_atom_to_hdf5_type); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1332, __pyx_L1_error)
17278   __Pyx_GOTREF(__pyx_t_2);
17279   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_byteorder); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1332, __pyx_L1_error)
17280   __Pyx_GOTREF(__pyx_t_3);
17281   __pyx_t_4 = NULL;
17282   __pyx_t_5 = 0;
17283   if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
17284     __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
17285     if (likely(__pyx_t_4)) {
17286       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
17287       __Pyx_INCREF(__pyx_t_4);
17288       __Pyx_INCREF(function);
17289       __Pyx_DECREF_SET(__pyx_t_2, function);
17290       __pyx_t_5 = 1;
17291     }
17292   }
17293   #if CYTHON_FAST_PYCALL
17294   if (PyFunction_Check(__pyx_t_2)) {
17295     PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_atom, __pyx_t_3};
17296     __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1332, __pyx_L1_error)
17297     __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
17298     __Pyx_GOTREF(__pyx_t_1);
17299     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
17300   } else
17301   #endif
17302   #if CYTHON_FAST_PYCCALL
17303   if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
17304     PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_atom, __pyx_t_3};
17305     __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1332, __pyx_L1_error)
17306     __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
17307     __Pyx_GOTREF(__pyx_t_1);
17308     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
17309   } else
17310   #endif
17311   {
17312     __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1332, __pyx_L1_error)
17313     __Pyx_GOTREF(__pyx_t_6);
17314     if (__pyx_t_4) {
17315       __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
17316     }
17317     __Pyx_INCREF(__pyx_v_atom);
17318     __Pyx_GIVEREF(__pyx_v_atom);
17319     PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_v_atom);
17320     __Pyx_GIVEREF(__pyx_t_3);
17321     PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_t_3);
17322     __pyx_t_3 = 0;
17323     __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1332, __pyx_L1_error)
17324     __Pyx_GOTREF(__pyx_t_1);
17325     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
17326   }
17327   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
17328   __pyx_t_7 = __Pyx_PyInt_As_hid_t(__pyx_t_1); if (unlikely((__pyx_t_7 == ((hid_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1332, __pyx_L1_error)
17329   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
17330   __pyx_v_self->__pyx_base.disk_type_id = __pyx_t_7;
17331 
17332   /* "tables/hdf5extension.pyx":1334
17333  *     self.disk_type_id = atom_to_hdf5_type(atom, self.byteorder)
17334  *
17335  *     self.rank = len(self.shape)             # <<<<<<<<<<<<<<
17336  *     self.dims = malloc_dims(self.shape)
17337  *     if self.chunkshape:
17338  */
17339   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_shape); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1334, __pyx_L1_error)
17340   __Pyx_GOTREF(__pyx_t_1);
17341   __pyx_t_8 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1334, __pyx_L1_error)
17342   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
17343   __pyx_v_self->rank = __pyx_t_8;
17344 
17345   /* "tables/hdf5extension.pyx":1335
17346  *
17347  *     self.rank = len(self.shape)
17348  *     self.dims = malloc_dims(self.shape)             # <<<<<<<<<<<<<<
17349  *     if self.chunkshape:
17350  *       self.dims_chunk = malloc_dims(self.chunkshape)
17351  */
17352   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_shape); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1335, __pyx_L1_error)
17353   __Pyx_GOTREF(__pyx_t_1);
17354   __pyx_v_self->__pyx_base.dims = __pyx_f_6tables_14utilsextension_malloc_dims(__pyx_t_1);
17355   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
17356 
17357   /* "tables/hdf5extension.pyx":1336
17358  *     self.rank = len(self.shape)
17359  *     self.dims = malloc_dims(self.shape)
17360  *     if self.chunkshape:             # <<<<<<<<<<<<<<
17361  *       self.dims_chunk = malloc_dims(self.chunkshape)
17362  *
17363  */
17364   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_chunkshape); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1336, __pyx_L1_error)
17365   __Pyx_GOTREF(__pyx_t_1);
17366   __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 1336, __pyx_L1_error)
17367   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
17368   if (__pyx_t_9) {
17369 
17370     /* "tables/hdf5extension.pyx":1337
17371  *     self.dims = malloc_dims(self.shape)
17372  *     if self.chunkshape:
17373  *       self.dims_chunk = malloc_dims(self.chunkshape)             # <<<<<<<<<<<<<<
17374  *
17375  *     rbuf = NULL   # The data pointer. We don't have data to save initially
17376  */
17377     __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_chunkshape); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1337, __pyx_L1_error)
17378     __Pyx_GOTREF(__pyx_t_1);
17379     __pyx_v_self->dims_chunk = __pyx_f_6tables_14utilsextension_malloc_dims(__pyx_t_1);
17380     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
17381 
17382     /* "tables/hdf5extension.pyx":1336
17383  *     self.rank = len(self.shape)
17384  *     self.dims = malloc_dims(self.shape)
17385  *     if self.chunkshape:             # <<<<<<<<<<<<<<
17386  *       self.dims_chunk = malloc_dims(self.chunkshape)
17387  *
17388  */
17389   }
17390 
17391   /* "tables/hdf5extension.pyx":1339
17392  *       self.dims_chunk = malloc_dims(self.chunkshape)
17393  *
17394  *     rbuf = NULL   # The data pointer. We don't have data to save initially             # <<<<<<<<<<<<<<
17395  *     # Encode strings
17396  *     complib = (self.filters.complib or '').encode('utf-8')
17397  */
17398   __pyx_v_rbuf = NULL;
17399 
17400   /* "tables/hdf5extension.pyx":1341
17401  *     rbuf = NULL   # The data pointer. We don't have data to save initially
17402  *     # Encode strings
17403  *     complib = (self.filters.complib or '').encode('utf-8')             # <<<<<<<<<<<<<<
17404  *     version = self._v_version.encode('utf-8')
17405  *     class_ = self._c_classid.encode('utf-8')
17406  */
17407   __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_filters); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1341, __pyx_L1_error)
17408   __Pyx_GOTREF(__pyx_t_6);
17409   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_complib); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1341, __pyx_L1_error)
17410   __Pyx_GOTREF(__pyx_t_3);
17411   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
17412   __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 1341, __pyx_L1_error)
17413   if (!__pyx_t_9) {
17414     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
17415   } else {
17416     __Pyx_INCREF(__pyx_t_3);
17417     __pyx_t_2 = __pyx_t_3;
17418     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
17419     goto __pyx_L4_bool_binop_done;
17420   }
17421   __Pyx_INCREF(__pyx_kp_s_);
17422   __pyx_t_2 = __pyx_kp_s_;
17423   __pyx_L4_bool_binop_done:;
17424   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_encode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1341, __pyx_L1_error)
17425   __Pyx_GOTREF(__pyx_t_3);
17426   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
17427   __pyx_t_2 = NULL;
17428   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
17429     __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
17430     if (likely(__pyx_t_2)) {
17431       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
17432       __Pyx_INCREF(__pyx_t_2);
17433       __Pyx_INCREF(function);
17434       __Pyx_DECREF_SET(__pyx_t_3, function);
17435     }
17436   }
17437   __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_kp_s_utf_8) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_kp_s_utf_8);
17438   __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
17439   if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1341, __pyx_L1_error)
17440   __Pyx_GOTREF(__pyx_t_1);
17441   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
17442   if (!(likely(PyBytes_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 1341, __pyx_L1_error)
17443   __pyx_v_complib = ((PyObject*)__pyx_t_1);
17444   __pyx_t_1 = 0;
17445 
17446   /* "tables/hdf5extension.pyx":1342
17447  *     # Encode strings
17448  *     complib = (self.filters.complib or '').encode('utf-8')
17449  *     version = self._v_version.encode('utf-8')             # <<<<<<<<<<<<<<
17450  *     class_ = self._c_classid.encode('utf-8')
17451  *
17452  */
17453   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_v_version); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1342, __pyx_L1_error)
17454   __Pyx_GOTREF(__pyx_t_3);
17455   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1342, __pyx_L1_error)
17456   __Pyx_GOTREF(__pyx_t_2);
17457   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
17458   __pyx_t_3 = NULL;
17459   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
17460     __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
17461     if (likely(__pyx_t_3)) {
17462       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
17463       __Pyx_INCREF(__pyx_t_3);
17464       __Pyx_INCREF(function);
17465       __Pyx_DECREF_SET(__pyx_t_2, function);
17466     }
17467   }
17468   __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_kp_s_utf_8) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_kp_s_utf_8);
17469   __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
17470   if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1342, __pyx_L1_error)
17471   __Pyx_GOTREF(__pyx_t_1);
17472   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
17473   if (!(likely(PyBytes_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 1342, __pyx_L1_error)
17474   __pyx_v_version = ((PyObject*)__pyx_t_1);
17475   __pyx_t_1 = 0;
17476 
17477   /* "tables/hdf5extension.pyx":1343
17478  *     complib = (self.filters.complib or '').encode('utf-8')
17479  *     version = self._v_version.encode('utf-8')
17480  *     class_ = self._c_classid.encode('utf-8')             # <<<<<<<<<<<<<<
17481  *
17482  *     # Get the fill values
17483  */
17484   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_c_classid); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1343, __pyx_L1_error)
17485   __Pyx_GOTREF(__pyx_t_2);
17486   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_encode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1343, __pyx_L1_error)
17487   __Pyx_GOTREF(__pyx_t_3);
17488   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
17489   __pyx_t_2 = NULL;
17490   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
17491     __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
17492     if (likely(__pyx_t_2)) {
17493       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
17494       __Pyx_INCREF(__pyx_t_2);
17495       __Pyx_INCREF(function);
17496       __Pyx_DECREF_SET(__pyx_t_3, function);
17497     }
17498   }
17499   __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_kp_s_utf_8) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_kp_s_utf_8);
17500   __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
17501   if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1343, __pyx_L1_error)
17502   __Pyx_GOTREF(__pyx_t_1);
17503   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
17504   if (!(likely(PyBytes_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 1343, __pyx_L1_error)
17505   __pyx_v_class_ = ((PyObject*)__pyx_t_1);
17506   __pyx_t_1 = 0;
17507 
17508   /* "tables/hdf5extension.pyx":1346
17509  *
17510  *     # Get the fill values
17511  *     if isinstance(atom.dflt, numpy.ndarray) or atom.dflt:             # <<<<<<<<<<<<<<
17512  *       dflts = numpy.array(atom.dflt, dtype=atom.dtype)
17513  *       fill_data = dflts.data
17514  */
17515   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_atom, __pyx_n_s_dflt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1346, __pyx_L1_error)
17516   __Pyx_GOTREF(__pyx_t_1);
17517   __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1346, __pyx_L1_error)
17518   __Pyx_GOTREF(__pyx_t_3);
17519   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_ndarray); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1346, __pyx_L1_error)
17520   __Pyx_GOTREF(__pyx_t_2);
17521   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
17522   __pyx_t_10 = PyObject_IsInstance(__pyx_t_1, __pyx_t_2); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 1346, __pyx_L1_error)
17523   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
17524   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
17525   __pyx_t_11 = (__pyx_t_10 != 0);
17526   if (!__pyx_t_11) {
17527   } else {
17528     __pyx_t_9 = __pyx_t_11;
17529     goto __pyx_L7_bool_binop_done;
17530   }
17531   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_atom, __pyx_n_s_dflt); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1346, __pyx_L1_error)
17532   __Pyx_GOTREF(__pyx_t_2);
17533   __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(0, 1346, __pyx_L1_error)
17534   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
17535   __pyx_t_9 = __pyx_t_11;
17536   __pyx_L7_bool_binop_done:;
17537   if (__pyx_t_9) {
17538 
17539     /* "tables/hdf5extension.pyx":1347
17540  *     # Get the fill values
17541  *     if isinstance(atom.dflt, numpy.ndarray) or atom.dflt:
17542  *       dflts = numpy.array(atom.dflt, dtype=atom.dtype)             # <<<<<<<<<<<<<<
17543  *       fill_data = dflts.data
17544  *     else:
17545  */
17546     __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1347, __pyx_L1_error)
17547     __Pyx_GOTREF(__pyx_t_2);
17548     __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1347, __pyx_L1_error)
17549     __Pyx_GOTREF(__pyx_t_1);
17550     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
17551     __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_atom, __pyx_n_s_dflt); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1347, __pyx_L1_error)
17552     __Pyx_GOTREF(__pyx_t_2);
17553     __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1347, __pyx_L1_error)
17554     __Pyx_GOTREF(__pyx_t_3);
17555     __Pyx_GIVEREF(__pyx_t_2);
17556     PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
17557     __pyx_t_2 = 0;
17558     __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1347, __pyx_L1_error)
17559     __Pyx_GOTREF(__pyx_t_2);
17560     __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_atom, __pyx_n_s_dtype); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1347, __pyx_L1_error)
17561     __Pyx_GOTREF(__pyx_t_6);
17562     if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 1347, __pyx_L1_error)
17563     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
17564     __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1347, __pyx_L1_error)
17565     __Pyx_GOTREF(__pyx_t_6);
17566     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
17567     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
17568     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
17569     if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1347, __pyx_L1_error)
17570     __pyx_v_dflts = ((PyArrayObject *)__pyx_t_6);
17571     __pyx_t_6 = 0;
17572 
17573     /* "tables/hdf5extension.pyx":1348
17574  *     if isinstance(atom.dflt, numpy.ndarray) or atom.dflt:
17575  *       dflts = numpy.array(atom.dflt, dtype=atom.dtype)
17576  *       fill_data = dflts.data             # <<<<<<<<<<<<<<
17577  *     else:
17578  *       dflts = numpy.zeros((), dtype=atom.dtype)
17579  */
17580     __pyx_t_12 = __pyx_v_dflts->data;
17581     __pyx_v_fill_data = __pyx_t_12;
17582 
17583     /* "tables/hdf5extension.pyx":1346
17584  *
17585  *     # Get the fill values
17586  *     if isinstance(atom.dflt, numpy.ndarray) or atom.dflt:             # <<<<<<<<<<<<<<
17587  *       dflts = numpy.array(atom.dflt, dtype=atom.dtype)
17588  *       fill_data = dflts.data
17589  */
17590     goto __pyx_L6;
17591   }
17592 
17593   /* "tables/hdf5extension.pyx":1350
17594  *       fill_data = dflts.data
17595  *     else:
17596  *       dflts = numpy.zeros((), dtype=atom.dtype)             # <<<<<<<<<<<<<<
17597  *       fill_data = NULL
17598  *     if atom.shape == ():
17599  */
17600   /*else*/ {
17601     __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1350, __pyx_L1_error)
17602     __Pyx_GOTREF(__pyx_t_6);
17603     __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_zeros); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1350, __pyx_L1_error)
17604     __Pyx_GOTREF(__pyx_t_2);
17605     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
17606     __pyx_t_6 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1350, __pyx_L1_error)
17607     __Pyx_GOTREF(__pyx_t_6);
17608     __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_atom, __pyx_n_s_dtype); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1350, __pyx_L1_error)
17609     __Pyx_GOTREF(__pyx_t_3);
17610     if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_3) < 0) __PYX_ERR(0, 1350, __pyx_L1_error)
17611     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
17612     __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__12, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1350, __pyx_L1_error)
17613     __Pyx_GOTREF(__pyx_t_3);
17614     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
17615     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
17616     if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1350, __pyx_L1_error)
17617     __pyx_v_dflts = ((PyArrayObject *)__pyx_t_3);
17618     __pyx_t_3 = 0;
17619 
17620     /* "tables/hdf5extension.pyx":1351
17621  *     else:
17622  *       dflts = numpy.zeros((), dtype=atom.dtype)
17623  *       fill_data = NULL             # <<<<<<<<<<<<<<
17624  *     if atom.shape == ():
17625  *       # The default is preferred as a scalar value instead of 0-dim array
17626  */
17627     __pyx_v_fill_data = NULL;
17628   }
17629   __pyx_L6:;
17630 
17631   /* "tables/hdf5extension.pyx":1352
17632  *       dflts = numpy.zeros((), dtype=atom.dtype)
17633  *       fill_data = NULL
17634  *     if atom.shape == ():             # <<<<<<<<<<<<<<
17635  *       # The default is preferred as a scalar value instead of 0-dim array
17636  *       atom.dflt = dflts[()]
17637  */
17638   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_atom, __pyx_n_s_shape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1352, __pyx_L1_error)
17639   __Pyx_GOTREF(__pyx_t_3);
17640   __pyx_t_6 = PyObject_RichCompare(__pyx_t_3, __pyx_empty_tuple, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1352, __pyx_L1_error)
17641   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
17642   __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 1352, __pyx_L1_error)
17643   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
17644   if (__pyx_t_9) {
17645 
17646     /* "tables/hdf5extension.pyx":1354
17647  *     if atom.shape == ():
17648  *       # The default is preferred as a scalar value instead of 0-dim array
17649  *       atom.dflt = dflts[()]             # <<<<<<<<<<<<<<
17650  *     else:
17651  *       atom.dflt = dflts
17652  */
17653     __pyx_t_6 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_dflts), __pyx_empty_tuple); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1354, __pyx_L1_error)
17654     __Pyx_GOTREF(__pyx_t_6);
17655     if (__Pyx_PyObject_SetAttrStr(__pyx_v_atom, __pyx_n_s_dflt, __pyx_t_6) < 0) __PYX_ERR(0, 1354, __pyx_L1_error)
17656     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
17657 
17658     /* "tables/hdf5extension.pyx":1352
17659  *       dflts = numpy.zeros((), dtype=atom.dtype)
17660  *       fill_data = NULL
17661  *     if atom.shape == ():             # <<<<<<<<<<<<<<
17662  *       # The default is preferred as a scalar value instead of 0-dim array
17663  *       atom.dflt = dflts[()]
17664  */
17665     goto __pyx_L9;
17666   }
17667 
17668   /* "tables/hdf5extension.pyx":1356
17669  *       atom.dflt = dflts[()]
17670  *     else:
17671  *       atom.dflt = dflts             # <<<<<<<<<<<<<<
17672  *
17673  *     # Create the CArray/EArray
17674  */
17675   /*else*/ {
17676     if (__Pyx_PyObject_SetAttrStr(__pyx_v_atom, __pyx_n_s_dflt, ((PyObject *)__pyx_v_dflts)) < 0) __PYX_ERR(0, 1356, __pyx_L1_error)
17677   }
17678   __pyx_L9:;
17679 
17680   /* "tables/hdf5extension.pyx":1360
17681  *     # Create the CArray/EArray
17682  *     self.dataset_id = H5ARRAYmake(
17683  *       self.parent_id, encoded_name, version, self.rank,             # <<<<<<<<<<<<<<
17684  *       self.dims, self.extdim, self.disk_type_id, self.dims_chunk,
17685  *       fill_data, self.filters.complevel, complib,
17686  */
17687   if (unlikely(__pyx_v_encoded_name == Py_None)) {
17688     PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
17689     __PYX_ERR(0, 1360, __pyx_L1_error)
17690   }
17691   __pyx_t_12 = __Pyx_PyBytes_AsWritableString(__pyx_v_encoded_name); if (unlikely((!__pyx_t_12) && PyErr_Occurred())) __PYX_ERR(0, 1360, __pyx_L1_error)
17692   if (unlikely(__pyx_v_version == Py_None)) {
17693     PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
17694     __PYX_ERR(0, 1360, __pyx_L1_error)
17695   }
17696   __pyx_t_13 = __Pyx_PyBytes_AsWritableString(__pyx_v_version); if (unlikely((!__pyx_t_13) && PyErr_Occurred())) __PYX_ERR(0, 1360, __pyx_L1_error)
17697 
17698   /* "tables/hdf5extension.pyx":1361
17699  *     self.dataset_id = H5ARRAYmake(
17700  *       self.parent_id, encoded_name, version, self.rank,
17701  *       self.dims, self.extdim, self.disk_type_id, self.dims_chunk,             # <<<<<<<<<<<<<<
17702  *       fill_data, self.filters.complevel, complib,
17703  *         self.filters.shuffle_bitshuffle, self.filters.fletcher32,
17704  */
17705   __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_extdim); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1361, __pyx_L1_error)
17706   __Pyx_GOTREF(__pyx_t_6);
17707   __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_6); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1361, __pyx_L1_error)
17708   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
17709 
17710   /* "tables/hdf5extension.pyx":1362
17711  *       self.parent_id, encoded_name, version, self.rank,
17712  *       self.dims, self.extdim, self.disk_type_id, self.dims_chunk,
17713  *       fill_data, self.filters.complevel, complib,             # <<<<<<<<<<<<<<
17714  *         self.filters.shuffle_bitshuffle, self.filters.fletcher32,
17715  *         self._want_track_times, rbuf)
17716  */
17717   __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_filters); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1362, __pyx_L1_error)
17718   __Pyx_GOTREF(__pyx_t_6);
17719   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_complevel); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1362, __pyx_L1_error)
17720   __Pyx_GOTREF(__pyx_t_3);
17721   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
17722   __pyx_t_14 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_14 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1362, __pyx_L1_error)
17723   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
17724   if (unlikely(__pyx_v_complib == Py_None)) {
17725     PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
17726     __PYX_ERR(0, 1362, __pyx_L1_error)
17727   }
17728   __pyx_t_15 = __Pyx_PyBytes_AsWritableString(__pyx_v_complib); if (unlikely((!__pyx_t_15) && PyErr_Occurred())) __PYX_ERR(0, 1362, __pyx_L1_error)
17729 
17730   /* "tables/hdf5extension.pyx":1363
17731  *       self.dims, self.extdim, self.disk_type_id, self.dims_chunk,
17732  *       fill_data, self.filters.complevel, complib,
17733  *         self.filters.shuffle_bitshuffle, self.filters.fletcher32,             # <<<<<<<<<<<<<<
17734  *         self._want_track_times, rbuf)
17735  *     if self.dataset_id < 0:
17736  */
17737   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_filters); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1363, __pyx_L1_error)
17738   __Pyx_GOTREF(__pyx_t_3);
17739   __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_shuffle_bitshuffle); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1363, __pyx_L1_error)
17740   __Pyx_GOTREF(__pyx_t_6);
17741   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
17742   __pyx_t_16 = __Pyx_PyInt_As_int(__pyx_t_6); if (unlikely((__pyx_t_16 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1363, __pyx_L1_error)
17743   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
17744   __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_filters); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1363, __pyx_L1_error)
17745   __Pyx_GOTREF(__pyx_t_6);
17746   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_fletcher32); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1363, __pyx_L1_error)
17747   __Pyx_GOTREF(__pyx_t_3);
17748   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
17749   __pyx_t_17 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_17 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1363, __pyx_L1_error)
17750   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
17751 
17752   /* "tables/hdf5extension.pyx":1364
17753  *       fill_data, self.filters.complevel, complib,
17754  *         self.filters.shuffle_bitshuffle, self.filters.fletcher32,
17755  *         self._want_track_times, rbuf)             # <<<<<<<<<<<<<<
17756  *     if self.dataset_id < 0:
17757  *       raise HDF5ExtError("Problems creating the %s." % self.__class__.__name__)
17758  */
17759   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_want_track_times); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1364, __pyx_L1_error)
17760   __Pyx_GOTREF(__pyx_t_3);
17761   __pyx_t_18 = __Pyx_PyInt_As_hbool_t(__pyx_t_3); if (unlikely((__pyx_t_18 == ((hbool_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1364, __pyx_L1_error)
17762   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
17763 
17764   /* "tables/hdf5extension.pyx":1359
17765  *
17766  *     # Create the CArray/EArray
17767  *     self.dataset_id = H5ARRAYmake(             # <<<<<<<<<<<<<<
17768  *       self.parent_id, encoded_name, version, self.rank,
17769  *       self.dims, self.extdim, self.disk_type_id, self.dims_chunk,
17770  */
17771   __pyx_v_self->__pyx_base.dataset_id = H5ARRAYmake(__pyx_v_self->__pyx_base.__pyx_base.parent_id, __pyx_t_12, __pyx_t_13, __pyx_v_self->rank, __pyx_v_self->__pyx_base.dims, __pyx_t_5, __pyx_v_self->__pyx_base.disk_type_id, __pyx_v_self->dims_chunk, __pyx_v_fill_data, __pyx_t_14, __pyx_t_15, __pyx_t_16, __pyx_t_17, __pyx_t_18, __pyx_v_rbuf);
17772 
17773   /* "tables/hdf5extension.pyx":1365
17774  *         self.filters.shuffle_bitshuffle, self.filters.fletcher32,
17775  *         self._want_track_times, rbuf)
17776  *     if self.dataset_id < 0:             # <<<<<<<<<<<<<<
17777  *       raise HDF5ExtError("Problems creating the %s." % self.__class__.__name__)
17778  *
17779  */
17780   __pyx_t_9 = ((__pyx_v_self->__pyx_base.dataset_id < 0) != 0);
17781   if (unlikely(__pyx_t_9)) {
17782 
17783     /* "tables/hdf5extension.pyx":1366
17784  *         self._want_track_times, rbuf)
17785  *     if self.dataset_id < 0:
17786  *       raise HDF5ExtError("Problems creating the %s." % self.__class__.__name__)             # <<<<<<<<<<<<<<
17787  *
17788  *     if self._v_file.params['PYTABLES_SYS_ATTRS']:
17789  */
17790     __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_HDF5ExtError); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1366, __pyx_L1_error)
17791     __Pyx_GOTREF(__pyx_t_6);
17792     __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1366, __pyx_L1_error)
17793     __Pyx_GOTREF(__pyx_t_2);
17794     __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_name_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1366, __pyx_L1_error)
17795     __Pyx_GOTREF(__pyx_t_1);
17796     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
17797     __pyx_t_2 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Problems_creating_the_s, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1366, __pyx_L1_error)
17798     __Pyx_GOTREF(__pyx_t_2);
17799     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
17800     __pyx_t_1 = NULL;
17801     if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
17802       __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6);
17803       if (likely(__pyx_t_1)) {
17804         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
17805         __Pyx_INCREF(__pyx_t_1);
17806         __Pyx_INCREF(function);
17807         __Pyx_DECREF_SET(__pyx_t_6, function);
17808       }
17809     }
17810     __pyx_t_3 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_2);
17811     __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
17812     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
17813     if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1366, __pyx_L1_error)
17814     __Pyx_GOTREF(__pyx_t_3);
17815     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
17816     __Pyx_Raise(__pyx_t_3, 0, 0, 0);
17817     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
17818     __PYX_ERR(0, 1366, __pyx_L1_error)
17819 
17820     /* "tables/hdf5extension.pyx":1365
17821  *         self.filters.shuffle_bitshuffle, self.filters.fletcher32,
17822  *         self._want_track_times, rbuf)
17823  *     if self.dataset_id < 0:             # <<<<<<<<<<<<<<
17824  *       raise HDF5ExtError("Problems creating the %s." % self.__class__.__name__)
17825  *
17826  */
17827   }
17828 
17829   /* "tables/hdf5extension.pyx":1368
17830  *       raise HDF5ExtError("Problems creating the %s." % self.__class__.__name__)
17831  *
17832  *     if self._v_file.params['PYTABLES_SYS_ATTRS']:             # <<<<<<<<<<<<<<
17833  *       # Set the conforming array attributes
17834  *       H5ATTRset_attribute_string(self.dataset_id, "CLASS", class_,
17835  */
17836   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_v_file); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1368, __pyx_L1_error)
17837   __Pyx_GOTREF(__pyx_t_3);
17838   __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_params); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1368, __pyx_L1_error)
17839   __Pyx_GOTREF(__pyx_t_6);
17840   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
17841   __pyx_t_3 = __Pyx_PyObject_Dict_GetItem(__pyx_t_6, __pyx_n_s_PYTABLES_SYS_ATTRS); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1368, __pyx_L1_error)
17842   __Pyx_GOTREF(__pyx_t_3);
17843   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
17844   __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 1368, __pyx_L1_error)
17845   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
17846   if (__pyx_t_9) {
17847 
17848     /* "tables/hdf5extension.pyx":1370
17849  *     if self._v_file.params['PYTABLES_SYS_ATTRS']:
17850  *       # Set the conforming array attributes
17851  *       H5ATTRset_attribute_string(self.dataset_id, "CLASS", class_,             # <<<<<<<<<<<<<<
17852  *                                  len(class_), H5T_CSET_ASCII)
17853  *       H5ATTRset_attribute_string(self.dataset_id, "VERSION", version,
17854  */
17855     if (unlikely(__pyx_v_class_ == Py_None)) {
17856       PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
17857       __PYX_ERR(0, 1370, __pyx_L1_error)
17858     }
17859     __pyx_t_15 = __Pyx_PyBytes_AsWritableString(__pyx_v_class_); if (unlikely((!__pyx_t_15) && PyErr_Occurred())) __PYX_ERR(0, 1370, __pyx_L1_error)
17860 
17861     /* "tables/hdf5extension.pyx":1371
17862  *       # Set the conforming array attributes
17863  *       H5ATTRset_attribute_string(self.dataset_id, "CLASS", class_,
17864  *                                  len(class_), H5T_CSET_ASCII)             # <<<<<<<<<<<<<<
17865  *       H5ATTRset_attribute_string(self.dataset_id, "VERSION", version,
17866  *                                  len(version), H5T_CSET_ASCII)
17867  */
17868     if (unlikely(__pyx_v_class_ == Py_None)) {
17869       PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
17870       __PYX_ERR(0, 1371, __pyx_L1_error)
17871     }
17872     __pyx_t_8 = PyBytes_GET_SIZE(__pyx_v_class_); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1371, __pyx_L1_error)
17873 
17874     /* "tables/hdf5extension.pyx":1370
17875  *     if self._v_file.params['PYTABLES_SYS_ATTRS']:
17876  *       # Set the conforming array attributes
17877  *       H5ATTRset_attribute_string(self.dataset_id, "CLASS", class_,             # <<<<<<<<<<<<<<
17878  *                                  len(class_), H5T_CSET_ASCII)
17879  *       H5ATTRset_attribute_string(self.dataset_id, "VERSION", version,
17880  */
17881     (void)(H5ATTRset_attribute_string(__pyx_v_self->__pyx_base.dataset_id, ((char *)"CLASS"), __pyx_t_15, __pyx_t_8, H5T_CSET_ASCII));
17882 
17883     /* "tables/hdf5extension.pyx":1372
17884  *       H5ATTRset_attribute_string(self.dataset_id, "CLASS", class_,
17885  *                                  len(class_), H5T_CSET_ASCII)
17886  *       H5ATTRset_attribute_string(self.dataset_id, "VERSION", version,             # <<<<<<<<<<<<<<
17887  *                                  len(version), H5T_CSET_ASCII)
17888  *       H5ATTRset_attribute_string(self.dataset_id, "TITLE", encoded_title,
17889  */
17890     if (unlikely(__pyx_v_version == Py_None)) {
17891       PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
17892       __PYX_ERR(0, 1372, __pyx_L1_error)
17893     }
17894     __pyx_t_15 = __Pyx_PyBytes_AsWritableString(__pyx_v_version); if (unlikely((!__pyx_t_15) && PyErr_Occurred())) __PYX_ERR(0, 1372, __pyx_L1_error)
17895 
17896     /* "tables/hdf5extension.pyx":1373
17897  *                                  len(class_), H5T_CSET_ASCII)
17898  *       H5ATTRset_attribute_string(self.dataset_id, "VERSION", version,
17899  *                                  len(version), H5T_CSET_ASCII)             # <<<<<<<<<<<<<<
17900  *       H5ATTRset_attribute_string(self.dataset_id, "TITLE", encoded_title,
17901  *                                  len(encoded_title), H5T_CSET_ASCII)
17902  */
17903     if (unlikely(__pyx_v_version == Py_None)) {
17904       PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
17905       __PYX_ERR(0, 1373, __pyx_L1_error)
17906     }
17907     __pyx_t_8 = PyBytes_GET_SIZE(__pyx_v_version); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1373, __pyx_L1_error)
17908 
17909     /* "tables/hdf5extension.pyx":1372
17910  *       H5ATTRset_attribute_string(self.dataset_id, "CLASS", class_,
17911  *                                  len(class_), H5T_CSET_ASCII)
17912  *       H5ATTRset_attribute_string(self.dataset_id, "VERSION", version,             # <<<<<<<<<<<<<<
17913  *                                  len(version), H5T_CSET_ASCII)
17914  *       H5ATTRset_attribute_string(self.dataset_id, "TITLE", encoded_title,
17915  */
17916     (void)(H5ATTRset_attribute_string(__pyx_v_self->__pyx_base.dataset_id, ((char *)"VERSION"), __pyx_t_15, __pyx_t_8, H5T_CSET_ASCII));
17917 
17918     /* "tables/hdf5extension.pyx":1374
17919  *       H5ATTRset_attribute_string(self.dataset_id, "VERSION", version,
17920  *                                  len(version), H5T_CSET_ASCII)
17921  *       H5ATTRset_attribute_string(self.dataset_id, "TITLE", encoded_title,             # <<<<<<<<<<<<<<
17922  *                                  len(encoded_title), H5T_CSET_ASCII)
17923  *       if self.extdim >= 0:
17924  */
17925     if (unlikely(__pyx_v_encoded_title == Py_None)) {
17926       PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
17927       __PYX_ERR(0, 1374, __pyx_L1_error)
17928     }
17929     __pyx_t_15 = __Pyx_PyBytes_AsWritableString(__pyx_v_encoded_title); if (unlikely((!__pyx_t_15) && PyErr_Occurred())) __PYX_ERR(0, 1374, __pyx_L1_error)
17930 
17931     /* "tables/hdf5extension.pyx":1375
17932  *                                  len(version), H5T_CSET_ASCII)
17933  *       H5ATTRset_attribute_string(self.dataset_id, "TITLE", encoded_title,
17934  *                                  len(encoded_title), H5T_CSET_ASCII)             # <<<<<<<<<<<<<<
17935  *       if self.extdim >= 0:
17936  *         extdim = <ndarray>numpy.array([self.extdim], dtype="int32")
17937  */
17938     if (unlikely(__pyx_v_encoded_title == Py_None)) {
17939       PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
17940       __PYX_ERR(0, 1375, __pyx_L1_error)
17941     }
17942     __pyx_t_8 = PyBytes_GET_SIZE(__pyx_v_encoded_title); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1375, __pyx_L1_error)
17943 
17944     /* "tables/hdf5extension.pyx":1374
17945  *       H5ATTRset_attribute_string(self.dataset_id, "VERSION", version,
17946  *                                  len(version), H5T_CSET_ASCII)
17947  *       H5ATTRset_attribute_string(self.dataset_id, "TITLE", encoded_title,             # <<<<<<<<<<<<<<
17948  *                                  len(encoded_title), H5T_CSET_ASCII)
17949  *       if self.extdim >= 0:
17950  */
17951     (void)(H5ATTRset_attribute_string(__pyx_v_self->__pyx_base.dataset_id, ((char *)"TITLE"), __pyx_t_15, __pyx_t_8, H5T_CSET_ASCII));
17952 
17953     /* "tables/hdf5extension.pyx":1376
17954  *       H5ATTRset_attribute_string(self.dataset_id, "TITLE", encoded_title,
17955  *                                  len(encoded_title), H5T_CSET_ASCII)
17956  *       if self.extdim >= 0:             # <<<<<<<<<<<<<<
17957  *         extdim = <ndarray>numpy.array([self.extdim], dtype="int32")
17958  *         # Attach the EXTDIM attribute in case of enlargeable arrays
17959  */
17960     __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_extdim); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1376, __pyx_L1_error)
17961     __Pyx_GOTREF(__pyx_t_3);
17962     __pyx_t_6 = PyObject_RichCompare(__pyx_t_3, __pyx_int_0, Py_GE); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1376, __pyx_L1_error)
17963     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
17964     __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 1376, __pyx_L1_error)
17965     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
17966     if (__pyx_t_9) {
17967 
17968       /* "tables/hdf5extension.pyx":1377
17969  *                                  len(encoded_title), H5T_CSET_ASCII)
17970  *       if self.extdim >= 0:
17971  *         extdim = <ndarray>numpy.array([self.extdim], dtype="int32")             # <<<<<<<<<<<<<<
17972  *         # Attach the EXTDIM attribute in case of enlargeable arrays
17973  *         H5ATTRset_attribute(self.dataset_id, "EXTDIM", H5T_NATIVE_INT,
17974  */
17975       __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1377, __pyx_L1_error)
17976       __Pyx_GOTREF(__pyx_t_6);
17977       __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1377, __pyx_L1_error)
17978       __Pyx_GOTREF(__pyx_t_3);
17979       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
17980       __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_extdim); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1377, __pyx_L1_error)
17981       __Pyx_GOTREF(__pyx_t_6);
17982       __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1377, __pyx_L1_error)
17983       __Pyx_GOTREF(__pyx_t_2);
17984       __Pyx_GIVEREF(__pyx_t_6);
17985       PyList_SET_ITEM(__pyx_t_2, 0, __pyx_t_6);
17986       __pyx_t_6 = 0;
17987       __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1377, __pyx_L1_error)
17988       __Pyx_GOTREF(__pyx_t_6);
17989       __Pyx_GIVEREF(__pyx_t_2);
17990       PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2);
17991       __pyx_t_2 = 0;
17992       __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1377, __pyx_L1_error)
17993       __Pyx_GOTREF(__pyx_t_2);
17994       if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, __pyx_n_s_int32) < 0) __PYX_ERR(0, 1377, __pyx_L1_error)
17995       __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1377, __pyx_L1_error)
17996       __Pyx_GOTREF(__pyx_t_1);
17997       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
17998       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
17999       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
18000       __pyx_t_2 = __pyx_t_1;
18001       __Pyx_INCREF(__pyx_t_2);
18002       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
18003       __pyx_v_extdim = ((PyArrayObject *)__pyx_t_2);
18004       __pyx_t_2 = 0;
18005 
18006       /* "tables/hdf5extension.pyx":1379
18007  *         extdim = <ndarray>numpy.array([self.extdim], dtype="int32")
18008  *         # Attach the EXTDIM attribute in case of enlargeable arrays
18009  *         H5ATTRset_attribute(self.dataset_id, "EXTDIM", H5T_NATIVE_INT,             # <<<<<<<<<<<<<<
18010  *                             0, NULL, extdim.data)
18011  *
18012  */
18013       (void)(H5ATTRset_attribute(__pyx_v_self->__pyx_base.dataset_id, ((char *)"EXTDIM"), H5T_NATIVE_INT, 0, NULL, __pyx_v_extdim->data));
18014 
18015       /* "tables/hdf5extension.pyx":1376
18016  *       H5ATTRset_attribute_string(self.dataset_id, "TITLE", encoded_title,
18017  *                                  len(encoded_title), H5T_CSET_ASCII)
18018  *       if self.extdim >= 0:             # <<<<<<<<<<<<<<
18019  *         extdim = <ndarray>numpy.array([self.extdim], dtype="int32")
18020  *         # Attach the EXTDIM attribute in case of enlargeable arrays
18021  */
18022     }
18023 
18024     /* "tables/hdf5extension.pyx":1368
18025  *       raise HDF5ExtError("Problems creating the %s." % self.__class__.__name__)
18026  *
18027  *     if self._v_file.params['PYTABLES_SYS_ATTRS']:             # <<<<<<<<<<<<<<
18028  *       # Set the conforming array attributes
18029  *       H5ATTRset_attribute_string(self.dataset_id, "CLASS", class_,
18030  */
18031   }
18032 
18033   /* "tables/hdf5extension.pyx":1384
18034  *     # Get the native type (so that it is HDF5 who is the responsible to deal
18035  *     # with non-native byteorders on-disk)
18036  *     self.type_id = get_native_type(self.disk_type_id)             # <<<<<<<<<<<<<<
18037  *
18038  *     return self.dataset_id
18039  */
18040   __pyx_v_self->__pyx_base.type_id = __pyx_f_6tables_14utilsextension_get_native_type(__pyx_v_self->__pyx_base.disk_type_id);
18041 
18042   /* "tables/hdf5extension.pyx":1386
18043  *     self.type_id = get_native_type(self.disk_type_id)
18044  *
18045  *     return self.dataset_id             # <<<<<<<<<<<<<<
18046  *
18047  *
18048  */
18049   __Pyx_XDECREF(__pyx_r);
18050   __pyx_t_2 = __Pyx_PyInt_From_hid_t(__pyx_v_self->__pyx_base.dataset_id); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1386, __pyx_L1_error)
18051   __Pyx_GOTREF(__pyx_t_2);
18052   __pyx_r = __pyx_t_2;
18053   __pyx_t_2 = 0;
18054   goto __pyx_L0;
18055 
18056   /* "tables/hdf5extension.pyx":1317
18057  *
18058  *
18059  *   def _create_carray(self, object title):             # <<<<<<<<<<<<<<
18060  *     cdef int i
18061  *     cdef herr_t ret
18062  */
18063 
18064   /* function exit code */
18065   __pyx_L1_error:;
18066   __Pyx_XDECREF(__pyx_t_1);
18067   __Pyx_XDECREF(__pyx_t_2);
18068   __Pyx_XDECREF(__pyx_t_3);
18069   __Pyx_XDECREF(__pyx_t_4);
18070   __Pyx_XDECREF(__pyx_t_6);
18071   __Pyx_AddTraceback("tables.hdf5extension.Array._create_carray", __pyx_clineno, __pyx_lineno, __pyx_filename);
18072   __pyx_r = NULL;
18073   __pyx_L0:;
18074   __Pyx_XDECREF(__pyx_v_complib);
18075   __Pyx_XDECREF(__pyx_v_version);
18076   __Pyx_XDECREF(__pyx_v_class_);
18077   __Pyx_XDECREF((PyObject *)__pyx_v_dflts);
18078   __Pyx_XDECREF((PyObject *)__pyx_v_extdim);
18079   __Pyx_XDECREF(__pyx_v_atom);
18080   __Pyx_XDECREF(__pyx_v_encoded_title);
18081   __Pyx_XDECREF(__pyx_v_encoded_name);
18082   __Pyx_XGIVEREF(__pyx_r);
18083   __Pyx_RefNannyFinishContext();
18084   return __pyx_r;
18085 }
18086 
18087 /* "tables/hdf5extension.pyx":1389
18088  *
18089  *
18090  *   def _open_array(self):             # <<<<<<<<<<<<<<
18091  *     cdef size_t type_size, type_precision
18092  *     cdef H5T_class_t class_id
18093  */
18094 
18095 /* Python wrapper */
18096 static PyObject *__pyx_pw_6tables_13hdf5extension_5Array_5_open_array(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
__pyx_pw_6tables_13hdf5extension_5Array_5_open_array(PyObject * __pyx_v_self,CYTHON_UNUSED PyObject * unused)18097 static PyObject *__pyx_pw_6tables_13hdf5extension_5Array_5_open_array(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
18098   PyObject *__pyx_r = 0;
18099   __Pyx_RefNannyDeclarations
18100   __Pyx_RefNannySetupContext("_open_array (wrapper)", 0);
18101   __pyx_r = __pyx_pf_6tables_13hdf5extension_5Array_4_open_array(((struct __pyx_obj_6tables_13hdf5extension_Array *)__pyx_v_self));
18102 
18103   /* function exit code */
18104   __Pyx_RefNannyFinishContext();
18105   return __pyx_r;
18106 }
18107 
__pyx_pf_6tables_13hdf5extension_5Array_4_open_array(struct __pyx_obj_6tables_13hdf5extension_Array * __pyx_v_self)18108 static PyObject *__pyx_pf_6tables_13hdf5extension_5Array_4_open_array(struct __pyx_obj_6tables_13hdf5extension_Array *__pyx_v_self) {
18109   enum H5T_class_t __pyx_v_class_id;
18110   char __pyx_v_cbyteorder[11];
18111   int __pyx_v_i;
18112   herr_t __pyx_v_ret;
18113   PyObject *__pyx_v_shape = 0;
18114   PyObject *__pyx_v_chunkshapes = 0;
18115   PyObject *__pyx_v_atom = 0;
18116   int __pyx_v_fill_status;
18117   PyArrayObject *__pyx_v_dflts = 0;
18118   void *__pyx_v_fill_data;
18119   PyObject *__pyx_v_encoded_name = 0;
18120   PyObject *__pyx_v_byteorder = 0;
18121   PyObject *__pyx_r = NULL;
18122   __Pyx_RefNannyDeclarations
18123   PyObject *__pyx_t_1 = NULL;
18124   PyObject *__pyx_t_2 = NULL;
18125   PyObject *__pyx_t_3 = NULL;
18126   char *__pyx_t_4;
18127   int __pyx_t_5;
18128   PyObject *__pyx_t_6 = NULL;
18129   PyObject *(*__pyx_t_7)(PyObject *);
18130   hid_t __pyx_t_8;
18131   hid_t __pyx_t_9;
18132   int __pyx_t_10;
18133   int __pyx_t_11;
18134   int __pyx_t_12;
18135   PyObject *__pyx_t_13 = NULL;
18136   __Pyx_RefNannySetupContext("_open_array", 0);
18137 
18138   /* "tables/hdf5extension.pyx":1403
18139  *     cdef str byteorder
18140  *
18141  *     encoded_name = self.name.encode('utf-8')             # <<<<<<<<<<<<<<
18142  *
18143  *     # Open the dataset
18144  */
18145   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->__pyx_base.__pyx_base.name, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1403, __pyx_L1_error)
18146   __Pyx_GOTREF(__pyx_t_2);
18147   __pyx_t_3 = NULL;
18148   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
18149     __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
18150     if (likely(__pyx_t_3)) {
18151       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
18152       __Pyx_INCREF(__pyx_t_3);
18153       __Pyx_INCREF(function);
18154       __Pyx_DECREF_SET(__pyx_t_2, function);
18155     }
18156   }
18157   __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_kp_s_utf_8) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_kp_s_utf_8);
18158   __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
18159   if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1403, __pyx_L1_error)
18160   __Pyx_GOTREF(__pyx_t_1);
18161   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
18162   if (!(likely(PyBytes_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 1403, __pyx_L1_error)
18163   __pyx_v_encoded_name = ((PyObject*)__pyx_t_1);
18164   __pyx_t_1 = 0;
18165 
18166   /* "tables/hdf5extension.pyx":1406
18167  *
18168  *     # Open the dataset
18169  *     self.dataset_id = H5Dopen(self.parent_id, encoded_name, H5P_DEFAULT)             # <<<<<<<<<<<<<<
18170  *     if self.dataset_id < 0:
18171  *       raise HDF5ExtError("Non-existing node ``%s`` under ``%s``" %
18172  */
18173   if (unlikely(__pyx_v_encoded_name == Py_None)) {
18174     PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
18175     __PYX_ERR(0, 1406, __pyx_L1_error)
18176   }
18177   __pyx_t_4 = __Pyx_PyBytes_AsWritableString(__pyx_v_encoded_name); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 1406, __pyx_L1_error)
18178   __pyx_v_self->__pyx_base.dataset_id = H5Dopen(__pyx_v_self->__pyx_base.__pyx_base.parent_id, __pyx_t_4, H5P_DEFAULT);
18179 
18180   /* "tables/hdf5extension.pyx":1407
18181  *     # Open the dataset
18182  *     self.dataset_id = H5Dopen(self.parent_id, encoded_name, H5P_DEFAULT)
18183  *     if self.dataset_id < 0:             # <<<<<<<<<<<<<<
18184  *       raise HDF5ExtError("Non-existing node ``%s`` under ``%s``" %
18185  *                          (self.name, self._v_parent._v_pathname))
18186  */
18187   __pyx_t_5 = ((__pyx_v_self->__pyx_base.dataset_id < 0) != 0);
18188   if (unlikely(__pyx_t_5)) {
18189 
18190     /* "tables/hdf5extension.pyx":1408
18191  *     self.dataset_id = H5Dopen(self.parent_id, encoded_name, H5P_DEFAULT)
18192  *     if self.dataset_id < 0:
18193  *       raise HDF5ExtError("Non-existing node ``%s`` under ``%s``" %             # <<<<<<<<<<<<<<
18194  *                          (self.name, self._v_parent._v_pathname))
18195  *     # Get the datatype handles
18196  */
18197     __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_HDF5ExtError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1408, __pyx_L1_error)
18198     __Pyx_GOTREF(__pyx_t_2);
18199 
18200     /* "tables/hdf5extension.pyx":1409
18201  *     if self.dataset_id < 0:
18202  *       raise HDF5ExtError("Non-existing node ``%s`` under ``%s``" %
18203  *                          (self.name, self._v_parent._v_pathname))             # <<<<<<<<<<<<<<
18204  *     # Get the datatype handles
18205  *     self.disk_type_id, self.type_id = self._get_type_ids()
18206  */
18207     __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_v_parent); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1409, __pyx_L1_error)
18208     __Pyx_GOTREF(__pyx_t_3);
18209     __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_v_pathname); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1409, __pyx_L1_error)
18210     __Pyx_GOTREF(__pyx_t_6);
18211     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
18212     __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1409, __pyx_L1_error)
18213     __Pyx_GOTREF(__pyx_t_3);
18214     __Pyx_INCREF(__pyx_v_self->__pyx_base.__pyx_base.name);
18215     __Pyx_GIVEREF(__pyx_v_self->__pyx_base.__pyx_base.name);
18216     PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_self->__pyx_base.__pyx_base.name);
18217     __Pyx_GIVEREF(__pyx_t_6);
18218     PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_6);
18219     __pyx_t_6 = 0;
18220 
18221     /* "tables/hdf5extension.pyx":1408
18222  *     self.dataset_id = H5Dopen(self.parent_id, encoded_name, H5P_DEFAULT)
18223  *     if self.dataset_id < 0:
18224  *       raise HDF5ExtError("Non-existing node ``%s`` under ``%s``" %             # <<<<<<<<<<<<<<
18225  *                          (self.name, self._v_parent._v_pathname))
18226  *     # Get the datatype handles
18227  */
18228     __pyx_t_6 = __Pyx_PyString_Format(__pyx_kp_s_Non_existing_node_s_under_s, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1408, __pyx_L1_error)
18229     __Pyx_GOTREF(__pyx_t_6);
18230     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
18231     __pyx_t_3 = NULL;
18232     if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
18233       __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
18234       if (likely(__pyx_t_3)) {
18235         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
18236         __Pyx_INCREF(__pyx_t_3);
18237         __Pyx_INCREF(function);
18238         __Pyx_DECREF_SET(__pyx_t_2, function);
18239       }
18240     }
18241     __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_6);
18242     __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
18243     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
18244     if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1408, __pyx_L1_error)
18245     __Pyx_GOTREF(__pyx_t_1);
18246     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
18247     __Pyx_Raise(__pyx_t_1, 0, 0, 0);
18248     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
18249     __PYX_ERR(0, 1408, __pyx_L1_error)
18250 
18251     /* "tables/hdf5extension.pyx":1407
18252  *     # Open the dataset
18253  *     self.dataset_id = H5Dopen(self.parent_id, encoded_name, H5P_DEFAULT)
18254  *     if self.dataset_id < 0:             # <<<<<<<<<<<<<<
18255  *       raise HDF5ExtError("Non-existing node ``%s`` under ``%s``" %
18256  *                          (self.name, self._v_parent._v_pathname))
18257  */
18258   }
18259 
18260   /* "tables/hdf5extension.pyx":1411
18261  *                          (self.name, self._v_parent._v_pathname))
18262  *     # Get the datatype handles
18263  *     self.disk_type_id, self.type_id = self._get_type_ids()             # <<<<<<<<<<<<<<
18264  *     # Get the atom for this type
18265  *     atom = atom_from_hdf5_type(self.type_id)
18266  */
18267   __pyx_t_1 = ((struct __pyx_vtabstruct_6tables_13hdf5extension_Array *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._get_type_ids(((struct __pyx_obj_6tables_13hdf5extension_Leaf *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1411, __pyx_L1_error)
18268   __Pyx_GOTREF(__pyx_t_1);
18269   if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
18270     PyObject* sequence = __pyx_t_1;
18271     Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
18272     if (unlikely(size != 2)) {
18273       if (size > 2) __Pyx_RaiseTooManyValuesError(2);
18274       else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
18275       __PYX_ERR(0, 1411, __pyx_L1_error)
18276     }
18277     #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
18278     if (likely(PyTuple_CheckExact(sequence))) {
18279       __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0);
18280       __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1);
18281     } else {
18282       __pyx_t_2 = PyList_GET_ITEM(sequence, 0);
18283       __pyx_t_6 = PyList_GET_ITEM(sequence, 1);
18284     }
18285     __Pyx_INCREF(__pyx_t_2);
18286     __Pyx_INCREF(__pyx_t_6);
18287     #else
18288     __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1411, __pyx_L1_error)
18289     __Pyx_GOTREF(__pyx_t_2);
18290     __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1411, __pyx_L1_error)
18291     __Pyx_GOTREF(__pyx_t_6);
18292     #endif
18293     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
18294   } else {
18295     Py_ssize_t index = -1;
18296     __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1411, __pyx_L1_error)
18297     __Pyx_GOTREF(__pyx_t_3);
18298     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
18299     __pyx_t_7 = Py_TYPE(__pyx_t_3)->tp_iternext;
18300     index = 0; __pyx_t_2 = __pyx_t_7(__pyx_t_3); if (unlikely(!__pyx_t_2)) goto __pyx_L4_unpacking_failed;
18301     __Pyx_GOTREF(__pyx_t_2);
18302     index = 1; __pyx_t_6 = __pyx_t_7(__pyx_t_3); if (unlikely(!__pyx_t_6)) goto __pyx_L4_unpacking_failed;
18303     __Pyx_GOTREF(__pyx_t_6);
18304     if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_3), 2) < 0) __PYX_ERR(0, 1411, __pyx_L1_error)
18305     __pyx_t_7 = NULL;
18306     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
18307     goto __pyx_L5_unpacking_done;
18308     __pyx_L4_unpacking_failed:;
18309     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
18310     __pyx_t_7 = NULL;
18311     if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
18312     __PYX_ERR(0, 1411, __pyx_L1_error)
18313     __pyx_L5_unpacking_done:;
18314   }
18315   __pyx_t_8 = __Pyx_PyInt_As_hid_t(__pyx_t_2); if (unlikely((__pyx_t_8 == ((hid_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1411, __pyx_L1_error)
18316   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
18317   __pyx_t_9 = __Pyx_PyInt_As_hid_t(__pyx_t_6); if (unlikely((__pyx_t_9 == ((hid_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1411, __pyx_L1_error)
18318   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
18319   __pyx_v_self->__pyx_base.disk_type_id = __pyx_t_8;
18320   __pyx_v_self->__pyx_base.type_id = __pyx_t_9;
18321 
18322   /* "tables/hdf5extension.pyx":1413
18323  *     self.disk_type_id, self.type_id = self._get_type_ids()
18324  *     # Get the atom for this type
18325  *     atom = atom_from_hdf5_type(self.type_id)             # <<<<<<<<<<<<<<
18326  *
18327  *     # Get the rank for this array object
18328  */
18329   __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_atom_from_hdf5_type); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1413, __pyx_L1_error)
18330   __Pyx_GOTREF(__pyx_t_6);
18331   __pyx_t_2 = __Pyx_PyInt_From_hid_t(__pyx_v_self->__pyx_base.type_id); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1413, __pyx_L1_error)
18332   __Pyx_GOTREF(__pyx_t_2);
18333   __pyx_t_3 = NULL;
18334   if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
18335     __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6);
18336     if (likely(__pyx_t_3)) {
18337       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
18338       __Pyx_INCREF(__pyx_t_3);
18339       __Pyx_INCREF(function);
18340       __Pyx_DECREF_SET(__pyx_t_6, function);
18341     }
18342   }
18343   __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_3, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_2);
18344   __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
18345   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
18346   if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1413, __pyx_L1_error)
18347   __Pyx_GOTREF(__pyx_t_1);
18348   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
18349   __pyx_v_atom = __pyx_t_1;
18350   __pyx_t_1 = 0;
18351 
18352   /* "tables/hdf5extension.pyx":1416
18353  *
18354  *     # Get the rank for this array object
18355  *     if H5ARRAYget_ndims(self.dataset_id, &self.rank) < 0:             # <<<<<<<<<<<<<<
18356  *       raise HDF5ExtError("Problems getting ndims!")
18357  *     # Allocate space for the dimension axis info
18358  */
18359   __pyx_t_5 = ((H5ARRAYget_ndims(__pyx_v_self->__pyx_base.dataset_id, (&__pyx_v_self->rank)) < 0) != 0);
18360   if (unlikely(__pyx_t_5)) {
18361 
18362     /* "tables/hdf5extension.pyx":1417
18363  *     # Get the rank for this array object
18364  *     if H5ARRAYget_ndims(self.dataset_id, &self.rank) < 0:
18365  *       raise HDF5ExtError("Problems getting ndims!")             # <<<<<<<<<<<<<<
18366  *     # Allocate space for the dimension axis info
18367  *     self.dims = <hsize_t *>malloc(self.rank * sizeof(hsize_t))
18368  */
18369     __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_HDF5ExtError); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1417, __pyx_L1_error)
18370     __Pyx_GOTREF(__pyx_t_6);
18371     __pyx_t_2 = NULL;
18372     if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
18373       __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_6);
18374       if (likely(__pyx_t_2)) {
18375         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
18376         __Pyx_INCREF(__pyx_t_2);
18377         __Pyx_INCREF(function);
18378         __Pyx_DECREF_SET(__pyx_t_6, function);
18379       }
18380     }
18381     __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_2, __pyx_kp_s_Problems_getting_ndims) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_kp_s_Problems_getting_ndims);
18382     __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
18383     if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1417, __pyx_L1_error)
18384     __Pyx_GOTREF(__pyx_t_1);
18385     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
18386     __Pyx_Raise(__pyx_t_1, 0, 0, 0);
18387     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
18388     __PYX_ERR(0, 1417, __pyx_L1_error)
18389 
18390     /* "tables/hdf5extension.pyx":1416
18391  *
18392  *     # Get the rank for this array object
18393  *     if H5ARRAYget_ndims(self.dataset_id, &self.rank) < 0:             # <<<<<<<<<<<<<<
18394  *       raise HDF5ExtError("Problems getting ndims!")
18395  *     # Allocate space for the dimension axis info
18396  */
18397   }
18398 
18399   /* "tables/hdf5extension.pyx":1419
18400  *       raise HDF5ExtError("Problems getting ndims!")
18401  *     # Allocate space for the dimension axis info
18402  *     self.dims = <hsize_t *>malloc(self.rank * sizeof(hsize_t))             # <<<<<<<<<<<<<<
18403  *     self.maxdims = <hsize_t *>malloc(self.rank * sizeof(hsize_t))
18404  *     # Get info on dimensions, class and type (of base class)
18405  */
18406   __pyx_v_self->__pyx_base.dims = ((hsize_t *)malloc((__pyx_v_self->rank * (sizeof(hsize_t)))));
18407 
18408   /* "tables/hdf5extension.pyx":1420
18409  *     # Allocate space for the dimension axis info
18410  *     self.dims = <hsize_t *>malloc(self.rank * sizeof(hsize_t))
18411  *     self.maxdims = <hsize_t *>malloc(self.rank * sizeof(hsize_t))             # <<<<<<<<<<<<<<
18412  *     # Get info on dimensions, class and type (of base class)
18413  *     ret = H5ARRAYget_info(self.dataset_id, self.disk_type_id,
18414  */
18415   __pyx_v_self->maxdims = ((hsize_t *)malloc((__pyx_v_self->rank * (sizeof(hsize_t)))));
18416 
18417   /* "tables/hdf5extension.pyx":1422
18418  *     self.maxdims = <hsize_t *>malloc(self.rank * sizeof(hsize_t))
18419  *     # Get info on dimensions, class and type (of base class)
18420  *     ret = H5ARRAYget_info(self.dataset_id, self.disk_type_id,             # <<<<<<<<<<<<<<
18421  *                           self.dims, self.maxdims,
18422  *                           &class_id, cbyteorder)
18423  */
18424   __pyx_v_ret = H5ARRAYget_info(__pyx_v_self->__pyx_base.dataset_id, __pyx_v_self->__pyx_base.disk_type_id, __pyx_v_self->__pyx_base.dims, __pyx_v_self->maxdims, (&__pyx_v_class_id), __pyx_v_cbyteorder);
18425 
18426   /* "tables/hdf5extension.pyx":1425
18427  *                           self.dims, self.maxdims,
18428  *                           &class_id, cbyteorder)
18429  *     if ret < 0:             # <<<<<<<<<<<<<<
18430  *       raise HDF5ExtError("Unable to get array info.")
18431  *
18432  */
18433   __pyx_t_5 = ((__pyx_v_ret < 0) != 0);
18434   if (unlikely(__pyx_t_5)) {
18435 
18436     /* "tables/hdf5extension.pyx":1426
18437  *                           &class_id, cbyteorder)
18438  *     if ret < 0:
18439  *       raise HDF5ExtError("Unable to get array info.")             # <<<<<<<<<<<<<<
18440  *
18441  *     byteorder = cstr_to_pystr(cbyteorder)
18442  */
18443     __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_HDF5ExtError); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1426, __pyx_L1_error)
18444     __Pyx_GOTREF(__pyx_t_6);
18445     __pyx_t_2 = NULL;
18446     if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
18447       __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_6);
18448       if (likely(__pyx_t_2)) {
18449         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
18450         __Pyx_INCREF(__pyx_t_2);
18451         __Pyx_INCREF(function);
18452         __Pyx_DECREF_SET(__pyx_t_6, function);
18453       }
18454     }
18455     __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_2, __pyx_kp_s_Unable_to_get_array_info) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_kp_s_Unable_to_get_array_info);
18456     __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
18457     if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1426, __pyx_L1_error)
18458     __Pyx_GOTREF(__pyx_t_1);
18459     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
18460     __Pyx_Raise(__pyx_t_1, 0, 0, 0);
18461     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
18462     __PYX_ERR(0, 1426, __pyx_L1_error)
18463 
18464     /* "tables/hdf5extension.pyx":1425
18465  *                           self.dims, self.maxdims,
18466  *                           &class_id, cbyteorder)
18467  *     if ret < 0:             # <<<<<<<<<<<<<<
18468  *       raise HDF5ExtError("Unable to get array info.")
18469  *
18470  */
18471   }
18472 
18473   /* "tables/hdf5extension.pyx":1428
18474  *       raise HDF5ExtError("Unable to get array info.")
18475  *
18476  *     byteorder = cstr_to_pystr(cbyteorder)             # <<<<<<<<<<<<<<
18477  *
18478  *     # Get the extendable dimension (if any)
18479  */
18480   __pyx_t_1 = __pyx_f_6tables_14utilsextension_cstr_to_pystr(__pyx_v_cbyteorder); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1428, __pyx_L1_error)
18481   __Pyx_GOTREF(__pyx_t_1);
18482   __pyx_v_byteorder = ((PyObject*)__pyx_t_1);
18483   __pyx_t_1 = 0;
18484 
18485   /* "tables/hdf5extension.pyx":1431
18486  *
18487  *     # Get the extendable dimension (if any)
18488  *     self.extdim = -1  # default is non-extensible Array             # <<<<<<<<<<<<<<
18489  *     for i from 0 <= i < self.rank:
18490  *       if self.maxdims[i] == -1:
18491  */
18492   if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_extdim, __pyx_int_neg_1) < 0) __PYX_ERR(0, 1431, __pyx_L1_error)
18493 
18494   /* "tables/hdf5extension.pyx":1432
18495  *     # Get the extendable dimension (if any)
18496  *     self.extdim = -1  # default is non-extensible Array
18497  *     for i from 0 <= i < self.rank:             # <<<<<<<<<<<<<<
18498  *       if self.maxdims[i] == -1:
18499  *         self.extdim = i
18500  */
18501   __pyx_t_10 = __pyx_v_self->rank;
18502   for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_10; __pyx_v_i++) {
18503 
18504     /* "tables/hdf5extension.pyx":1433
18505  *     self.extdim = -1  # default is non-extensible Array
18506  *     for i from 0 <= i < self.rank:
18507  *       if self.maxdims[i] == -1:             # <<<<<<<<<<<<<<
18508  *         self.extdim = i
18509  *         break
18510  */
18511     __pyx_t_5 = (((__pyx_v_self->maxdims[__pyx_v_i]) == -1LL) != 0);
18512     if (__pyx_t_5) {
18513 
18514       /* "tables/hdf5extension.pyx":1434
18515  *     for i from 0 <= i < self.rank:
18516  *       if self.maxdims[i] == -1:
18517  *         self.extdim = i             # <<<<<<<<<<<<<<
18518  *         break
18519  *
18520  */
18521       __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_i); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1434, __pyx_L1_error)
18522       __Pyx_GOTREF(__pyx_t_1);
18523       if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_extdim, __pyx_t_1) < 0) __PYX_ERR(0, 1434, __pyx_L1_error)
18524       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
18525 
18526       /* "tables/hdf5extension.pyx":1435
18527  *       if self.maxdims[i] == -1:
18528  *         self.extdim = i
18529  *         break             # <<<<<<<<<<<<<<
18530  *
18531  *     # Get the shape as a python tuple
18532  */
18533       goto __pyx_L9_break;
18534 
18535       /* "tables/hdf5extension.pyx":1433
18536  *     self.extdim = -1  # default is non-extensible Array
18537  *     for i from 0 <= i < self.rank:
18538  *       if self.maxdims[i] == -1:             # <<<<<<<<<<<<<<
18539  *         self.extdim = i
18540  *         break
18541  */
18542     }
18543   }
18544   __pyx_L9_break:;
18545 
18546   /* "tables/hdf5extension.pyx":1438
18547  *
18548  *     # Get the shape as a python tuple
18549  *     shape = getshape(self.rank, self.dims)             # <<<<<<<<<<<<<<
18550  *
18551  *     # Allocate space for the dimension chunking info
18552  */
18553   __pyx_t_1 = __pyx_f_6tables_13hdf5extension_getshape(__pyx_v_self->rank, __pyx_v_self->__pyx_base.dims); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1438, __pyx_L1_error)
18554   __Pyx_GOTREF(__pyx_t_1);
18555   __pyx_v_shape = __pyx_t_1;
18556   __pyx_t_1 = 0;
18557 
18558   /* "tables/hdf5extension.pyx":1441
18559  *
18560  *     # Allocate space for the dimension chunking info
18561  *     self.dims_chunk = <hsize_t *>malloc(self.rank * sizeof(hsize_t))             # <<<<<<<<<<<<<<
18562  *     if H5ARRAYget_chunkshape(self.dataset_id, self.rank, self.dims_chunk) < 0:
18563  *       # The Array class is not chunked!
18564  */
18565   __pyx_v_self->dims_chunk = ((hsize_t *)malloc((__pyx_v_self->rank * (sizeof(hsize_t)))));
18566 
18567   /* "tables/hdf5extension.pyx":1442
18568  *     # Allocate space for the dimension chunking info
18569  *     self.dims_chunk = <hsize_t *>malloc(self.rank * sizeof(hsize_t))
18570  *     if H5ARRAYget_chunkshape(self.dataset_id, self.rank, self.dims_chunk) < 0:             # <<<<<<<<<<<<<<
18571  *       # The Array class is not chunked!
18572  *       chunkshapes = None
18573  */
18574   __pyx_t_5 = ((H5ARRAYget_chunkshape(__pyx_v_self->__pyx_base.dataset_id, __pyx_v_self->rank, __pyx_v_self->dims_chunk) < 0) != 0);
18575   if (__pyx_t_5) {
18576 
18577     /* "tables/hdf5extension.pyx":1444
18578  *     if H5ARRAYget_chunkshape(self.dataset_id, self.rank, self.dims_chunk) < 0:
18579  *       # The Array class is not chunked!
18580  *       chunkshapes = None             # <<<<<<<<<<<<<<
18581  *     else:
18582  *       # Get the chunkshape as a python tuple
18583  */
18584     __Pyx_INCREF(Py_None);
18585     __pyx_v_chunkshapes = Py_None;
18586 
18587     /* "tables/hdf5extension.pyx":1442
18588  *     # Allocate space for the dimension chunking info
18589  *     self.dims_chunk = <hsize_t *>malloc(self.rank * sizeof(hsize_t))
18590  *     if H5ARRAYget_chunkshape(self.dataset_id, self.rank, self.dims_chunk) < 0:             # <<<<<<<<<<<<<<
18591  *       # The Array class is not chunked!
18592  *       chunkshapes = None
18593  */
18594     goto __pyx_L11;
18595   }
18596 
18597   /* "tables/hdf5extension.pyx":1447
18598  *     else:
18599  *       # Get the chunkshape as a python tuple
18600  *       chunkshapes = getshape(self.rank, self.dims_chunk)             # <<<<<<<<<<<<<<
18601  *
18602  *     # object arrays should not be read directly into memory
18603  */
18604   /*else*/ {
18605     __pyx_t_1 = __pyx_f_6tables_13hdf5extension_getshape(__pyx_v_self->rank, __pyx_v_self->dims_chunk); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1447, __pyx_L1_error)
18606     __Pyx_GOTREF(__pyx_t_1);
18607     __pyx_v_chunkshapes = __pyx_t_1;
18608     __pyx_t_1 = 0;
18609   }
18610   __pyx_L11:;
18611 
18612   /* "tables/hdf5extension.pyx":1450
18613  *
18614  *     # object arrays should not be read directly into memory
18615  *     if atom.dtype != numpy.object:             # <<<<<<<<<<<<<<
18616  *       # Get the fill value
18617  *       dflts = numpy.zeros((), dtype=atom.dtype)
18618  */
18619   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_atom, __pyx_n_s_dtype); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1450, __pyx_L1_error)
18620   __Pyx_GOTREF(__pyx_t_1);
18621   __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1450, __pyx_L1_error)
18622   __Pyx_GOTREF(__pyx_t_6);
18623   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_object); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1450, __pyx_L1_error)
18624   __Pyx_GOTREF(__pyx_t_2);
18625   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
18626   __pyx_t_6 = PyObject_RichCompare(__pyx_t_1, __pyx_t_2, Py_NE); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1450, __pyx_L1_error)
18627   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
18628   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
18629   __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 1450, __pyx_L1_error)
18630   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
18631   if (__pyx_t_5) {
18632 
18633     /* "tables/hdf5extension.pyx":1452
18634  *     if atom.dtype != numpy.object:
18635  *       # Get the fill value
18636  *       dflts = numpy.zeros((), dtype=atom.dtype)             # <<<<<<<<<<<<<<
18637  *       fill_data = dflts.data
18638  *       H5ARRAYget_fill_value(self.dataset_id, self.type_id,
18639  */
18640     __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1452, __pyx_L1_error)
18641     __Pyx_GOTREF(__pyx_t_6);
18642     __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_zeros); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1452, __pyx_L1_error)
18643     __Pyx_GOTREF(__pyx_t_2);
18644     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
18645     __pyx_t_6 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1452, __pyx_L1_error)
18646     __Pyx_GOTREF(__pyx_t_6);
18647     __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_atom, __pyx_n_s_dtype); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1452, __pyx_L1_error)
18648     __Pyx_GOTREF(__pyx_t_1);
18649     if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 1452, __pyx_L1_error)
18650     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
18651     __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__12, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1452, __pyx_L1_error)
18652     __Pyx_GOTREF(__pyx_t_1);
18653     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
18654     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
18655     if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1452, __pyx_L1_error)
18656     __pyx_v_dflts = ((PyArrayObject *)__pyx_t_1);
18657     __pyx_t_1 = 0;
18658 
18659     /* "tables/hdf5extension.pyx":1453
18660  *       # Get the fill value
18661  *       dflts = numpy.zeros((), dtype=atom.dtype)
18662  *       fill_data = dflts.data             # <<<<<<<<<<<<<<
18663  *       H5ARRAYget_fill_value(self.dataset_id, self.type_id,
18664  *                             &fill_status, fill_data);
18665  */
18666     __pyx_t_4 = __pyx_v_dflts->data;
18667     __pyx_v_fill_data = __pyx_t_4;
18668 
18669     /* "tables/hdf5extension.pyx":1454
18670  *       dflts = numpy.zeros((), dtype=atom.dtype)
18671  *       fill_data = dflts.data
18672  *       H5ARRAYget_fill_value(self.dataset_id, self.type_id,             # <<<<<<<<<<<<<<
18673  *                             &fill_status, fill_data);
18674  *       if fill_status == H5D_FILL_VALUE_UNDEFINED:
18675  */
18676     (void)(H5ARRAYget_fill_value(__pyx_v_self->__pyx_base.dataset_id, __pyx_v_self->__pyx_base.type_id, (&__pyx_v_fill_status), __pyx_v_fill_data));
18677 
18678     /* "tables/hdf5extension.pyx":1456
18679  *       H5ARRAYget_fill_value(self.dataset_id, self.type_id,
18680  *                             &fill_status, fill_data);
18681  *       if fill_status == H5D_FILL_VALUE_UNDEFINED:             # <<<<<<<<<<<<<<
18682  *         # This can only happen with datasets created with other libraries
18683  *         # than PyTables.
18684  */
18685     __pyx_t_5 = ((__pyx_v_fill_status == H5D_FILL_VALUE_UNDEFINED) != 0);
18686     if (__pyx_t_5) {
18687 
18688       /* "tables/hdf5extension.pyx":1459
18689  *         # This can only happen with datasets created with other libraries
18690  *         # than PyTables.
18691  *         dflts = None             # <<<<<<<<<<<<<<
18692  *       if dflts is not None and atom.shape == ():
18693  *         # The default is preferred as a scalar value instead of 0-dim array
18694  */
18695       __Pyx_INCREF(Py_None);
18696       __Pyx_DECREF_SET(__pyx_v_dflts, ((PyArrayObject *)Py_None));
18697 
18698       /* "tables/hdf5extension.pyx":1456
18699  *       H5ARRAYget_fill_value(self.dataset_id, self.type_id,
18700  *                             &fill_status, fill_data);
18701  *       if fill_status == H5D_FILL_VALUE_UNDEFINED:             # <<<<<<<<<<<<<<
18702  *         # This can only happen with datasets created with other libraries
18703  *         # than PyTables.
18704  */
18705     }
18706 
18707     /* "tables/hdf5extension.pyx":1460
18708  *         # than PyTables.
18709  *         dflts = None
18710  *       if dflts is not None and atom.shape == ():             # <<<<<<<<<<<<<<
18711  *         # The default is preferred as a scalar value instead of 0-dim array
18712  *         atom.dflt = dflts[()]
18713  */
18714     __pyx_t_11 = (((PyObject *)__pyx_v_dflts) != Py_None);
18715     __pyx_t_12 = (__pyx_t_11 != 0);
18716     if (__pyx_t_12) {
18717     } else {
18718       __pyx_t_5 = __pyx_t_12;
18719       goto __pyx_L15_bool_binop_done;
18720     }
18721     __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_atom, __pyx_n_s_shape); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1460, __pyx_L1_error)
18722     __Pyx_GOTREF(__pyx_t_1);
18723     __pyx_t_6 = PyObject_RichCompare(__pyx_t_1, __pyx_empty_tuple, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1460, __pyx_L1_error)
18724     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
18725     __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_12 < 0)) __PYX_ERR(0, 1460, __pyx_L1_error)
18726     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
18727     __pyx_t_5 = __pyx_t_12;
18728     __pyx_L15_bool_binop_done:;
18729     if (__pyx_t_5) {
18730 
18731       /* "tables/hdf5extension.pyx":1462
18732  *       if dflts is not None and atom.shape == ():
18733  *         # The default is preferred as a scalar value instead of 0-dim array
18734  *         atom.dflt = dflts[()]             # <<<<<<<<<<<<<<
18735  *       else:
18736  *         atom.dflt = dflts
18737  */
18738       __pyx_t_6 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_dflts), __pyx_empty_tuple); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1462, __pyx_L1_error)
18739       __Pyx_GOTREF(__pyx_t_6);
18740       if (__Pyx_PyObject_SetAttrStr(__pyx_v_atom, __pyx_n_s_dflt, __pyx_t_6) < 0) __PYX_ERR(0, 1462, __pyx_L1_error)
18741       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
18742 
18743       /* "tables/hdf5extension.pyx":1460
18744  *         # than PyTables.
18745  *         dflts = None
18746  *       if dflts is not None and atom.shape == ():             # <<<<<<<<<<<<<<
18747  *         # The default is preferred as a scalar value instead of 0-dim array
18748  *         atom.dflt = dflts[()]
18749  */
18750       goto __pyx_L14;
18751     }
18752 
18753     /* "tables/hdf5extension.pyx":1464
18754  *         atom.dflt = dflts[()]
18755  *       else:
18756  *         atom.dflt = dflts             # <<<<<<<<<<<<<<
18757  *
18758  *     # Get the byteorder
18759  */
18760     /*else*/ {
18761       if (__Pyx_PyObject_SetAttrStr(__pyx_v_atom, __pyx_n_s_dflt, ((PyObject *)__pyx_v_dflts)) < 0) __PYX_ERR(0, 1464, __pyx_L1_error)
18762     }
18763     __pyx_L14:;
18764 
18765     /* "tables/hdf5extension.pyx":1450
18766  *
18767  *     # object arrays should not be read directly into memory
18768  *     if atom.dtype != numpy.object:             # <<<<<<<<<<<<<<
18769  *       # Get the fill value
18770  *       dflts = numpy.zeros((), dtype=atom.dtype)
18771  */
18772   }
18773 
18774   /* "tables/hdf5extension.pyx":1467
18775  *
18776  *     # Get the byteorder
18777  *     self.byteorder = correct_byteorder(atom.type, byteorder)             # <<<<<<<<<<<<<<
18778  *
18779  *     return self.dataset_id, atom, shape, chunkshapes
18780  */
18781   __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_correct_byteorder); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1467, __pyx_L1_error)
18782   __Pyx_GOTREF(__pyx_t_1);
18783   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_atom, __pyx_n_s_type); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1467, __pyx_L1_error)
18784   __Pyx_GOTREF(__pyx_t_2);
18785   __pyx_t_3 = NULL;
18786   __pyx_t_10 = 0;
18787   if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
18788     __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
18789     if (likely(__pyx_t_3)) {
18790       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
18791       __Pyx_INCREF(__pyx_t_3);
18792       __Pyx_INCREF(function);
18793       __Pyx_DECREF_SET(__pyx_t_1, function);
18794       __pyx_t_10 = 1;
18795     }
18796   }
18797   #if CYTHON_FAST_PYCALL
18798   if (PyFunction_Check(__pyx_t_1)) {
18799     PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_t_2, __pyx_v_byteorder};
18800     __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1467, __pyx_L1_error)
18801     __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
18802     __Pyx_GOTREF(__pyx_t_6);
18803     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
18804   } else
18805   #endif
18806   #if CYTHON_FAST_PYCCALL
18807   if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
18808     PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_t_2, __pyx_v_byteorder};
18809     __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1467, __pyx_L1_error)
18810     __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
18811     __Pyx_GOTREF(__pyx_t_6);
18812     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
18813   } else
18814   #endif
18815   {
18816     __pyx_t_13 = PyTuple_New(2+__pyx_t_10); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1467, __pyx_L1_error)
18817     __Pyx_GOTREF(__pyx_t_13);
18818     if (__pyx_t_3) {
18819       __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_3); __pyx_t_3 = NULL;
18820     }
18821     __Pyx_GIVEREF(__pyx_t_2);
18822     PyTuple_SET_ITEM(__pyx_t_13, 0+__pyx_t_10, __pyx_t_2);
18823     __Pyx_INCREF(__pyx_v_byteorder);
18824     __Pyx_GIVEREF(__pyx_v_byteorder);
18825     PyTuple_SET_ITEM(__pyx_t_13, 1+__pyx_t_10, __pyx_v_byteorder);
18826     __pyx_t_2 = 0;
18827     __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_13, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1467, __pyx_L1_error)
18828     __Pyx_GOTREF(__pyx_t_6);
18829     __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
18830   }
18831   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
18832   if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_byteorder, __pyx_t_6) < 0) __PYX_ERR(0, 1467, __pyx_L1_error)
18833   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
18834 
18835   /* "tables/hdf5extension.pyx":1469
18836  *     self.byteorder = correct_byteorder(atom.type, byteorder)
18837  *
18838  *     return self.dataset_id, atom, shape, chunkshapes             # <<<<<<<<<<<<<<
18839  *
18840  *
18841  */
18842   __Pyx_XDECREF(__pyx_r);
18843   __pyx_t_6 = __Pyx_PyInt_From_hid_t(__pyx_v_self->__pyx_base.dataset_id); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1469, __pyx_L1_error)
18844   __Pyx_GOTREF(__pyx_t_6);
18845   __pyx_t_1 = PyTuple_New(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1469, __pyx_L1_error)
18846   __Pyx_GOTREF(__pyx_t_1);
18847   __Pyx_GIVEREF(__pyx_t_6);
18848   PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6);
18849   __Pyx_INCREF(__pyx_v_atom);
18850   __Pyx_GIVEREF(__pyx_v_atom);
18851   PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_atom);
18852   __Pyx_INCREF(__pyx_v_shape);
18853   __Pyx_GIVEREF(__pyx_v_shape);
18854   PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_shape);
18855   __Pyx_INCREF(__pyx_v_chunkshapes);
18856   __Pyx_GIVEREF(__pyx_v_chunkshapes);
18857   PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_v_chunkshapes);
18858   __pyx_t_6 = 0;
18859   __pyx_r = __pyx_t_1;
18860   __pyx_t_1 = 0;
18861   goto __pyx_L0;
18862 
18863   /* "tables/hdf5extension.pyx":1389
18864  *
18865  *
18866  *   def _open_array(self):             # <<<<<<<<<<<<<<
18867  *     cdef size_t type_size, type_precision
18868  *     cdef H5T_class_t class_id
18869  */
18870 
18871   /* function exit code */
18872   __pyx_L1_error:;
18873   __Pyx_XDECREF(__pyx_t_1);
18874   __Pyx_XDECREF(__pyx_t_2);
18875   __Pyx_XDECREF(__pyx_t_3);
18876   __Pyx_XDECREF(__pyx_t_6);
18877   __Pyx_XDECREF(__pyx_t_13);
18878   __Pyx_AddTraceback("tables.hdf5extension.Array._open_array", __pyx_clineno, __pyx_lineno, __pyx_filename);
18879   __pyx_r = NULL;
18880   __pyx_L0:;
18881   __Pyx_XDECREF(__pyx_v_shape);
18882   __Pyx_XDECREF(__pyx_v_chunkshapes);
18883   __Pyx_XDECREF(__pyx_v_atom);
18884   __Pyx_XDECREF((PyObject *)__pyx_v_dflts);
18885   __Pyx_XDECREF(__pyx_v_encoded_name);
18886   __Pyx_XDECREF(__pyx_v_byteorder);
18887   __Pyx_XGIVEREF(__pyx_r);
18888   __Pyx_RefNannyFinishContext();
18889   return __pyx_r;
18890 }
18891 
18892 /* "tables/hdf5extension.pyx":1472
18893  *
18894  *
18895  *   def _append(self, ndarray nparr):             # <<<<<<<<<<<<<<
18896  *     cdef int ret, extdim
18897  *     cdef hsize_t *dims_arr
18898  */
18899 
18900 /* Python wrapper */
18901 static PyObject *__pyx_pw_6tables_13hdf5extension_5Array_7_append(PyObject *__pyx_v_self, PyObject *__pyx_v_nparr); /*proto*/
__pyx_pw_6tables_13hdf5extension_5Array_7_append(PyObject * __pyx_v_self,PyObject * __pyx_v_nparr)18902 static PyObject *__pyx_pw_6tables_13hdf5extension_5Array_7_append(PyObject *__pyx_v_self, PyObject *__pyx_v_nparr) {
18903   PyObject *__pyx_r = 0;
18904   __Pyx_RefNannyDeclarations
18905   __Pyx_RefNannySetupContext("_append (wrapper)", 0);
18906   if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_nparr), __pyx_ptype_5numpy_ndarray, 1, "nparr", 0))) __PYX_ERR(0, 1472, __pyx_L1_error)
18907   __pyx_r = __pyx_pf_6tables_13hdf5extension_5Array_6_append(((struct __pyx_obj_6tables_13hdf5extension_Array *)__pyx_v_self), ((PyArrayObject *)__pyx_v_nparr));
18908 
18909   /* function exit code */
18910   goto __pyx_L0;
18911   __pyx_L1_error:;
18912   __pyx_r = NULL;
18913   __pyx_L0:;
18914   __Pyx_RefNannyFinishContext();
18915   return __pyx_r;
18916 }
18917 
__pyx_pf_6tables_13hdf5extension_5Array_6_append(struct __pyx_obj_6tables_13hdf5extension_Array * __pyx_v_self,PyArrayObject * __pyx_v_nparr)18918 static PyObject *__pyx_pf_6tables_13hdf5extension_5Array_6_append(struct __pyx_obj_6tables_13hdf5extension_Array *__pyx_v_self, PyArrayObject *__pyx_v_nparr) {
18919   int __pyx_v_ret;
18920   int __pyx_v_extdim;
18921   hsize_t *__pyx_v_dims_arr;
18922   void *__pyx_v_rbuf;
18923   PyObject *__pyx_v_shape = 0;
18924   PyObject *__pyx_r = NULL;
18925   __Pyx_RefNannyDeclarations
18926   PyObject *__pyx_t_1 = NULL;
18927   PyObject *__pyx_t_2 = NULL;
18928   int __pyx_t_3;
18929   char *__pyx_t_4;
18930   int __pyx_t_5;
18931   PyObject *__pyx_t_6 = NULL;
18932   Py_ssize_t __pyx_t_7;
18933   PyObject *__pyx_t_8 = NULL;
18934   __Pyx_RefNannySetupContext("_append", 0);
18935 
18936   /* "tables/hdf5extension.pyx":1478
18937  *     cdef object shape
18938  *
18939  *     if self.atom.kind == "reference":             # <<<<<<<<<<<<<<
18940  *       raise ValueError("Cannot append to the reference types")
18941  *
18942  */
18943   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_atom); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1478, __pyx_L1_error)
18944   __Pyx_GOTREF(__pyx_t_1);
18945   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_kind); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1478, __pyx_L1_error)
18946   __Pyx_GOTREF(__pyx_t_2);
18947   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
18948   __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_2, __pyx_n_s_reference, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1478, __pyx_L1_error)
18949   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
18950   if (unlikely(__pyx_t_3)) {
18951 
18952     /* "tables/hdf5extension.pyx":1479
18953  *
18954  *     if self.atom.kind == "reference":
18955  *       raise ValueError("Cannot append to the reference types")             # <<<<<<<<<<<<<<
18956  *
18957  *     # Allocate space for the dimension axis info
18958  */
18959     __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__13, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1479, __pyx_L1_error)
18960     __Pyx_GOTREF(__pyx_t_2);
18961     __Pyx_Raise(__pyx_t_2, 0, 0, 0);
18962     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
18963     __PYX_ERR(0, 1479, __pyx_L1_error)
18964 
18965     /* "tables/hdf5extension.pyx":1478
18966  *     cdef object shape
18967  *
18968  *     if self.atom.kind == "reference":             # <<<<<<<<<<<<<<
18969  *       raise ValueError("Cannot append to the reference types")
18970  *
18971  */
18972   }
18973 
18974   /* "tables/hdf5extension.pyx":1482
18975  *
18976  *     # Allocate space for the dimension axis info
18977  *     dims_arr = npy_malloc_dims(self.rank, nparr.shape)             # <<<<<<<<<<<<<<
18978  *     # Get the pointer to the buffer data area
18979  *     rbuf = nparr.data
18980  */
18981   __pyx_v_dims_arr = __pyx_f_6tables_13hdf5extension_npy_malloc_dims(__pyx_v_self->rank, __pyx_v_nparr->dimensions);
18982 
18983   /* "tables/hdf5extension.pyx":1484
18984  *     dims_arr = npy_malloc_dims(self.rank, nparr.shape)
18985  *     # Get the pointer to the buffer data area
18986  *     rbuf = nparr.data             # <<<<<<<<<<<<<<
18987  *     # Convert some NumPy types to HDF5 before storing.
18988  *     if self.atom.type == 'time64':
18989  */
18990   __pyx_t_4 = __pyx_v_nparr->data;
18991   __pyx_v_rbuf = __pyx_t_4;
18992 
18993   /* "tables/hdf5extension.pyx":1486
18994  *     rbuf = nparr.data
18995  *     # Convert some NumPy types to HDF5 before storing.
18996  *     if self.atom.type == 'time64':             # <<<<<<<<<<<<<<
18997  *       self._convert_time64(nparr, 0)
18998  *
18999  */
19000   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_atom); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1486, __pyx_L1_error)
19001   __Pyx_GOTREF(__pyx_t_2);
19002   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_type); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1486, __pyx_L1_error)
19003   __Pyx_GOTREF(__pyx_t_1);
19004   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
19005   __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_time64, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1486, __pyx_L1_error)
19006   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
19007   if (__pyx_t_3) {
19008 
19009     /* "tables/hdf5extension.pyx":1487
19010  *     # Convert some NumPy types to HDF5 before storing.
19011  *     if self.atom.type == 'time64':
19012  *       self._convert_time64(nparr, 0)             # <<<<<<<<<<<<<<
19013  *
19014  *     # Append the records
19015  */
19016     __pyx_t_1 = ((struct __pyx_vtabstruct_6tables_13hdf5extension_Array *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._convert_time64(((struct __pyx_obj_6tables_13hdf5extension_Leaf *)__pyx_v_self), __pyx_v_nparr, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1487, __pyx_L1_error)
19017     __Pyx_GOTREF(__pyx_t_1);
19018     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
19019 
19020     /* "tables/hdf5extension.pyx":1486
19021  *     rbuf = nparr.data
19022  *     # Convert some NumPy types to HDF5 before storing.
19023  *     if self.atom.type == 'time64':             # <<<<<<<<<<<<<<
19024  *       self._convert_time64(nparr, 0)
19025  *
19026  */
19027   }
19028 
19029   /* "tables/hdf5extension.pyx":1490
19030  *
19031  *     # Append the records
19032  *     extdim = self.extdim             # <<<<<<<<<<<<<<
19033  *     with nogil:
19034  *         ret = H5ARRAYappend_records(self.dataset_id, self.type_id, self.rank,
19035  */
19036   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_extdim); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1490, __pyx_L1_error)
19037   __Pyx_GOTREF(__pyx_t_1);
19038   __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1490, __pyx_L1_error)
19039   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
19040   __pyx_v_extdim = __pyx_t_5;
19041 
19042   /* "tables/hdf5extension.pyx":1491
19043  *     # Append the records
19044  *     extdim = self.extdim
19045  *     with nogil:             # <<<<<<<<<<<<<<
19046  *         ret = H5ARRAYappend_records(self.dataset_id, self.type_id, self.rank,
19047  *                                     self.dims, dims_arr, extdim, rbuf)
19048  */
19049   {
19050       #ifdef WITH_THREAD
19051       PyThreadState *_save;
19052       Py_UNBLOCK_THREADS
19053       __Pyx_FastGIL_Remember();
19054       #endif
19055       /*try:*/ {
19056 
19057         /* "tables/hdf5extension.pyx":1492
19058  *     extdim = self.extdim
19059  *     with nogil:
19060  *         ret = H5ARRAYappend_records(self.dataset_id, self.type_id, self.rank,             # <<<<<<<<<<<<<<
19061  *                                     self.dims, dims_arr, extdim, rbuf)
19062  *
19063  */
19064         __pyx_v_ret = H5ARRAYappend_records(__pyx_v_self->__pyx_base.dataset_id, __pyx_v_self->__pyx_base.type_id, __pyx_v_self->rank, __pyx_v_self->__pyx_base.dims, __pyx_v_dims_arr, __pyx_v_extdim, __pyx_v_rbuf);
19065       }
19066 
19067       /* "tables/hdf5extension.pyx":1491
19068  *     # Append the records
19069  *     extdim = self.extdim
19070  *     with nogil:             # <<<<<<<<<<<<<<
19071  *         ret = H5ARRAYappend_records(self.dataset_id, self.type_id, self.rank,
19072  *                                     self.dims, dims_arr, extdim, rbuf)
19073  */
19074       /*finally:*/ {
19075         /*normal exit:*/{
19076           #ifdef WITH_THREAD
19077           __Pyx_FastGIL_Forget();
19078           Py_BLOCK_THREADS
19079           #endif
19080           goto __pyx_L7;
19081         }
19082         __pyx_L7:;
19083       }
19084   }
19085 
19086   /* "tables/hdf5extension.pyx":1495
19087  *                                     self.dims, dims_arr, extdim, rbuf)
19088  *
19089  *     if ret < 0:             # <<<<<<<<<<<<<<
19090  *       raise HDF5ExtError("Problems appending the elements")
19091  *
19092  */
19093   __pyx_t_3 = ((__pyx_v_ret < 0) != 0);
19094   if (unlikely(__pyx_t_3)) {
19095 
19096     /* "tables/hdf5extension.pyx":1496
19097  *
19098  *     if ret < 0:
19099  *       raise HDF5ExtError("Problems appending the elements")             # <<<<<<<<<<<<<<
19100  *
19101  *     free(dims_arr)
19102  */
19103     __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_HDF5ExtError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1496, __pyx_L1_error)
19104     __Pyx_GOTREF(__pyx_t_2);
19105     __pyx_t_6 = NULL;
19106     if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
19107       __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
19108       if (likely(__pyx_t_6)) {
19109         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
19110         __Pyx_INCREF(__pyx_t_6);
19111         __Pyx_INCREF(function);
19112         __Pyx_DECREF_SET(__pyx_t_2, function);
19113       }
19114     }
19115     __pyx_t_1 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_6, __pyx_kp_s_Problems_appending_the_elements) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_kp_s_Problems_appending_the_elements);
19116     __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
19117     if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1496, __pyx_L1_error)
19118     __Pyx_GOTREF(__pyx_t_1);
19119     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
19120     __Pyx_Raise(__pyx_t_1, 0, 0, 0);
19121     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
19122     __PYX_ERR(0, 1496, __pyx_L1_error)
19123 
19124     /* "tables/hdf5extension.pyx":1495
19125  *                                     self.dims, dims_arr, extdim, rbuf)
19126  *
19127  *     if ret < 0:             # <<<<<<<<<<<<<<
19128  *       raise HDF5ExtError("Problems appending the elements")
19129  *
19130  */
19131   }
19132 
19133   /* "tables/hdf5extension.pyx":1498
19134  *       raise HDF5ExtError("Problems appending the elements")
19135  *
19136  *     free(dims_arr)             # <<<<<<<<<<<<<<
19137  *     # Update the new dimensionality
19138  *     shape = list(self.shape)
19139  */
19140   free(__pyx_v_dims_arr);
19141 
19142   /* "tables/hdf5extension.pyx":1500
19143  *     free(dims_arr)
19144  *     # Update the new dimensionality
19145  *     shape = list(self.shape)             # <<<<<<<<<<<<<<
19146  *     shape[self.extdim] = SizeType(self.dims[self.extdim])
19147  *     self.shape = tuple(shape)
19148  */
19149   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_shape); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1500, __pyx_L1_error)
19150   __Pyx_GOTREF(__pyx_t_1);
19151   __pyx_t_2 = PySequence_List(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1500, __pyx_L1_error)
19152   __Pyx_GOTREF(__pyx_t_2);
19153   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
19154   __pyx_v_shape = __pyx_t_2;
19155   __pyx_t_2 = 0;
19156 
19157   /* "tables/hdf5extension.pyx":1501
19158  *     # Update the new dimensionality
19159  *     shape = list(self.shape)
19160  *     shape[self.extdim] = SizeType(self.dims[self.extdim])             # <<<<<<<<<<<<<<
19161  *     self.shape = tuple(shape)
19162  *
19163  */
19164   __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_SizeType); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1501, __pyx_L1_error)
19165   __Pyx_GOTREF(__pyx_t_1);
19166   __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_extdim); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1501, __pyx_L1_error)
19167   __Pyx_GOTREF(__pyx_t_6);
19168   __pyx_t_7 = __Pyx_PyIndex_AsSsize_t(__pyx_t_6); if (unlikely((__pyx_t_7 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1501, __pyx_L1_error)
19169   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
19170   __pyx_t_6 = __Pyx_PyInt_From_hsize_t((__pyx_v_self->__pyx_base.dims[__pyx_t_7])); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1501, __pyx_L1_error)
19171   __Pyx_GOTREF(__pyx_t_6);
19172   __pyx_t_8 = NULL;
19173   if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
19174     __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_1);
19175     if (likely(__pyx_t_8)) {
19176       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
19177       __Pyx_INCREF(__pyx_t_8);
19178       __Pyx_INCREF(function);
19179       __Pyx_DECREF_SET(__pyx_t_1, function);
19180     }
19181   }
19182   __pyx_t_2 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_8, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_6);
19183   __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
19184   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
19185   if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1501, __pyx_L1_error)
19186   __Pyx_GOTREF(__pyx_t_2);
19187   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
19188   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_extdim); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1501, __pyx_L1_error)
19189   __Pyx_GOTREF(__pyx_t_1);
19190   if (unlikely(PyObject_SetItem(__pyx_v_shape, __pyx_t_1, __pyx_t_2) < 0)) __PYX_ERR(0, 1501, __pyx_L1_error)
19191   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
19192   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
19193 
19194   /* "tables/hdf5extension.pyx":1502
19195  *     shape = list(self.shape)
19196  *     shape[self.extdim] = SizeType(self.dims[self.extdim])
19197  *     self.shape = tuple(shape)             # <<<<<<<<<<<<<<
19198  *
19199  *   def _read_array(self, hsize_t start, hsize_t stop, hsize_t step,
19200  */
19201   __pyx_t_2 = __Pyx_PySequence_Tuple(__pyx_v_shape); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1502, __pyx_L1_error)
19202   __Pyx_GOTREF(__pyx_t_2);
19203   if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_shape, __pyx_t_2) < 0) __PYX_ERR(0, 1502, __pyx_L1_error)
19204   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
19205 
19206   /* "tables/hdf5extension.pyx":1472
19207  *
19208  *
19209  *   def _append(self, ndarray nparr):             # <<<<<<<<<<<<<<
19210  *     cdef int ret, extdim
19211  *     cdef hsize_t *dims_arr
19212  */
19213 
19214   /* function exit code */
19215   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
19216   goto __pyx_L0;
19217   __pyx_L1_error:;
19218   __Pyx_XDECREF(__pyx_t_1);
19219   __Pyx_XDECREF(__pyx_t_2);
19220   __Pyx_XDECREF(__pyx_t_6);
19221   __Pyx_XDECREF(__pyx_t_8);
19222   __Pyx_AddTraceback("tables.hdf5extension.Array._append", __pyx_clineno, __pyx_lineno, __pyx_filename);
19223   __pyx_r = NULL;
19224   __pyx_L0:;
19225   __Pyx_XDECREF(__pyx_v_shape);
19226   __Pyx_XGIVEREF(__pyx_r);
19227   __Pyx_RefNannyFinishContext();
19228   return __pyx_r;
19229 }
19230 
19231 /* "tables/hdf5extension.pyx":1504
19232  *     self.shape = tuple(shape)
19233  *
19234  *   def _read_array(self, hsize_t start, hsize_t stop, hsize_t step,             # <<<<<<<<<<<<<<
19235  *                  ndarray nparr):
19236  *     cdef herr_t ret
19237  */
19238 
19239 /* Python wrapper */
19240 static PyObject *__pyx_pw_6tables_13hdf5extension_5Array_9_read_array(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
__pyx_pw_6tables_13hdf5extension_5Array_9_read_array(PyObject * __pyx_v_self,PyObject * __pyx_args,PyObject * __pyx_kwds)19241 static PyObject *__pyx_pw_6tables_13hdf5extension_5Array_9_read_array(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
19242   hsize_t __pyx_v_start;
19243   hsize_t __pyx_v_stop;
19244   hsize_t __pyx_v_step;
19245   PyArrayObject *__pyx_v_nparr = 0;
19246   PyObject *__pyx_r = 0;
19247   __Pyx_RefNannyDeclarations
19248   __Pyx_RefNannySetupContext("_read_array (wrapper)", 0);
19249   {
19250     static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_start,&__pyx_n_s_stop,&__pyx_n_s_step,&__pyx_n_s_nparr,0};
19251     PyObject* values[4] = {0,0,0,0};
19252     if (unlikely(__pyx_kwds)) {
19253       Py_ssize_t kw_args;
19254       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
19255       switch (pos_args) {
19256         case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
19257         CYTHON_FALLTHROUGH;
19258         case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
19259         CYTHON_FALLTHROUGH;
19260         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
19261         CYTHON_FALLTHROUGH;
19262         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
19263         CYTHON_FALLTHROUGH;
19264         case  0: break;
19265         default: goto __pyx_L5_argtuple_error;
19266       }
19267       kw_args = PyDict_Size(__pyx_kwds);
19268       switch (pos_args) {
19269         case  0:
19270         if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start)) != 0)) kw_args--;
19271         else goto __pyx_L5_argtuple_error;
19272         CYTHON_FALLTHROUGH;
19273         case  1:
19274         if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_stop)) != 0)) kw_args--;
19275         else {
19276           __Pyx_RaiseArgtupleInvalid("_read_array", 1, 4, 4, 1); __PYX_ERR(0, 1504, __pyx_L3_error)
19277         }
19278         CYTHON_FALLTHROUGH;
19279         case  2:
19280         if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_step)) != 0)) kw_args--;
19281         else {
19282           __Pyx_RaiseArgtupleInvalid("_read_array", 1, 4, 4, 2); __PYX_ERR(0, 1504, __pyx_L3_error)
19283         }
19284         CYTHON_FALLTHROUGH;
19285         case  3:
19286         if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nparr)) != 0)) kw_args--;
19287         else {
19288           __Pyx_RaiseArgtupleInvalid("_read_array", 1, 4, 4, 3); __PYX_ERR(0, 1504, __pyx_L3_error)
19289         }
19290       }
19291       if (unlikely(kw_args > 0)) {
19292         if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_read_array") < 0)) __PYX_ERR(0, 1504, __pyx_L3_error)
19293       }
19294     } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
19295       goto __pyx_L5_argtuple_error;
19296     } else {
19297       values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
19298       values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
19299       values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
19300       values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
19301     }
19302     __pyx_v_start = __Pyx_PyInt_As_hsize_t(values[0]); if (unlikely((__pyx_v_start == ((hsize_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1504, __pyx_L3_error)
19303     __pyx_v_stop = __Pyx_PyInt_As_hsize_t(values[1]); if (unlikely((__pyx_v_stop == ((hsize_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1504, __pyx_L3_error)
19304     __pyx_v_step = __Pyx_PyInt_As_hsize_t(values[2]); if (unlikely((__pyx_v_step == ((hsize_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1504, __pyx_L3_error)
19305     __pyx_v_nparr = ((PyArrayObject *)values[3]);
19306   }
19307   goto __pyx_L4_argument_unpacking_done;
19308   __pyx_L5_argtuple_error:;
19309   __Pyx_RaiseArgtupleInvalid("_read_array", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1504, __pyx_L3_error)
19310   __pyx_L3_error:;
19311   __Pyx_AddTraceback("tables.hdf5extension.Array._read_array", __pyx_clineno, __pyx_lineno, __pyx_filename);
19312   __Pyx_RefNannyFinishContext();
19313   return NULL;
19314   __pyx_L4_argument_unpacking_done:;
19315   if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_nparr), __pyx_ptype_5numpy_ndarray, 1, "nparr", 0))) __PYX_ERR(0, 1505, __pyx_L1_error)
19316   __pyx_r = __pyx_pf_6tables_13hdf5extension_5Array_8_read_array(((struct __pyx_obj_6tables_13hdf5extension_Array *)__pyx_v_self), __pyx_v_start, __pyx_v_stop, __pyx_v_step, __pyx_v_nparr);
19317 
19318   /* function exit code */
19319   goto __pyx_L0;
19320   __pyx_L1_error:;
19321   __pyx_r = NULL;
19322   __pyx_L0:;
19323   __Pyx_RefNannyFinishContext();
19324   return __pyx_r;
19325 }
19326 
__pyx_pf_6tables_13hdf5extension_5Array_8_read_array(struct __pyx_obj_6tables_13hdf5extension_Array * __pyx_v_self,hsize_t __pyx_v_start,hsize_t __pyx_v_stop,hsize_t __pyx_v_step,PyArrayObject * __pyx_v_nparr)19327 static PyObject *__pyx_pf_6tables_13hdf5extension_5Array_8_read_array(struct __pyx_obj_6tables_13hdf5extension_Array *__pyx_v_self, hsize_t __pyx_v_start, hsize_t __pyx_v_stop, hsize_t __pyx_v_step, PyArrayObject *__pyx_v_nparr) {
19328   herr_t __pyx_v_ret;
19329   void *__pyx_v_rbuf;
19330   hsize_t __pyx_v_nrows;
19331   int __pyx_v_extdim;
19332   size_t __pyx_v_item_size;
19333   void *__pyx_v_refbuf;
19334   PyObject *__pyx_r = NULL;
19335   __Pyx_RefNannyDeclarations
19336   PyObject *__pyx_t_1 = NULL;
19337   PyObject *__pyx_t_2 = NULL;
19338   int __pyx_t_3;
19339   char *__pyx_t_4;
19340   int __pyx_t_5;
19341   int __pyx_t_6;
19342   PyObject *__pyx_t_7 = NULL;
19343   int __pyx_t_8;
19344   char const *__pyx_t_9;
19345   PyObject *__pyx_t_10 = NULL;
19346   PyObject *__pyx_t_11 = NULL;
19347   PyObject *__pyx_t_12 = NULL;
19348   PyObject *__pyx_t_13 = NULL;
19349   PyObject *__pyx_t_14 = NULL;
19350   PyObject *__pyx_t_15 = NULL;
19351   __Pyx_RefNannySetupContext("_read_array", 0);
19352 
19353   /* "tables/hdf5extension.pyx":1510
19354  *     cdef hsize_t nrows
19355  *     cdef int extdim
19356  *     cdef size_t item_size = H5Tget_size(self.type_id)             # <<<<<<<<<<<<<<
19357  *     cdef void * refbuf = NULL
19358  *
19359  */
19360   __pyx_v_item_size = H5Tget_size(__pyx_v_self->__pyx_base.type_id);
19361 
19362   /* "tables/hdf5extension.pyx":1511
19363  *     cdef int extdim
19364  *     cdef size_t item_size = H5Tget_size(self.type_id)
19365  *     cdef void * refbuf = NULL             # <<<<<<<<<<<<<<
19366  *
19367  *     # Number of rows to read
19368  */
19369   __pyx_v_refbuf = NULL;
19370 
19371   /* "tables/hdf5extension.pyx":1514
19372  *
19373  *     # Number of rows to read
19374  *     nrows = get_len_of_range(start, stop, step)             # <<<<<<<<<<<<<<
19375  *
19376  *     # Get the pointer to the buffer data area
19377  */
19378   __pyx_v_nrows = get_len_of_range(__pyx_v_start, __pyx_v_stop, __pyx_v_step);
19379 
19380   /* "tables/hdf5extension.pyx":1517
19381  *
19382  *     # Get the pointer to the buffer data area
19383  *     if self.atom.kind == "reference":             # <<<<<<<<<<<<<<
19384  *       refbuf = malloc(nrows * item_size)
19385  *       rbuf = refbuf
19386  */
19387   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_atom); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1517, __pyx_L1_error)
19388   __Pyx_GOTREF(__pyx_t_1);
19389   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_kind); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1517, __pyx_L1_error)
19390   __Pyx_GOTREF(__pyx_t_2);
19391   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
19392   __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_2, __pyx_n_s_reference, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1517, __pyx_L1_error)
19393   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
19394   if (__pyx_t_3) {
19395 
19396     /* "tables/hdf5extension.pyx":1518
19397  *     # Get the pointer to the buffer data area
19398  *     if self.atom.kind == "reference":
19399  *       refbuf = malloc(nrows * item_size)             # <<<<<<<<<<<<<<
19400  *       rbuf = refbuf
19401  *     else:
19402  */
19403     __pyx_v_refbuf = malloc((__pyx_v_nrows * __pyx_v_item_size));
19404 
19405     /* "tables/hdf5extension.pyx":1519
19406  *     if self.atom.kind == "reference":
19407  *       refbuf = malloc(nrows * item_size)
19408  *       rbuf = refbuf             # <<<<<<<<<<<<<<
19409  *     else:
19410  *       rbuf = nparr.data
19411  */
19412     __pyx_v_rbuf = __pyx_v_refbuf;
19413 
19414     /* "tables/hdf5extension.pyx":1517
19415  *
19416  *     # Get the pointer to the buffer data area
19417  *     if self.atom.kind == "reference":             # <<<<<<<<<<<<<<
19418  *       refbuf = malloc(nrows * item_size)
19419  *       rbuf = refbuf
19420  */
19421     goto __pyx_L3;
19422   }
19423 
19424   /* "tables/hdf5extension.pyx":1521
19425  *       rbuf = refbuf
19426  *     else:
19427  *       rbuf = nparr.data             # <<<<<<<<<<<<<<
19428  *
19429  *     if hasattr(self, "extdim"):
19430  */
19431   /*else*/ {
19432     __pyx_t_4 = __pyx_v_nparr->data;
19433     __pyx_v_rbuf = __pyx_t_4;
19434   }
19435   __pyx_L3:;
19436 
19437   /* "tables/hdf5extension.pyx":1523
19438  *       rbuf = nparr.data
19439  *
19440  *     if hasattr(self, "extdim"):             # <<<<<<<<<<<<<<
19441  *       extdim = self.extdim
19442  *     else:
19443  */
19444   __pyx_t_3 = __Pyx_HasAttr(((PyObject *)__pyx_v_self), __pyx_n_s_extdim); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 1523, __pyx_L1_error)
19445   __pyx_t_5 = (__pyx_t_3 != 0);
19446   if (__pyx_t_5) {
19447 
19448     /* "tables/hdf5extension.pyx":1524
19449  *
19450  *     if hasattr(self, "extdim"):
19451  *       extdim = self.extdim             # <<<<<<<<<<<<<<
19452  *     else:
19453  *       extdim = -1
19454  */
19455     __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_extdim); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1524, __pyx_L1_error)
19456     __Pyx_GOTREF(__pyx_t_2);
19457     __pyx_t_6 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1524, __pyx_L1_error)
19458     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
19459     __pyx_v_extdim = __pyx_t_6;
19460 
19461     /* "tables/hdf5extension.pyx":1523
19462  *       rbuf = nparr.data
19463  *
19464  *     if hasattr(self, "extdim"):             # <<<<<<<<<<<<<<
19465  *       extdim = self.extdim
19466  *     else:
19467  */
19468     goto __pyx_L4;
19469   }
19470 
19471   /* "tables/hdf5extension.pyx":1526
19472  *       extdim = self.extdim
19473  *     else:
19474  *       extdim = -1             # <<<<<<<<<<<<<<
19475  *
19476  *     # Do the physical read
19477  */
19478   /*else*/ {
19479     __pyx_v_extdim = -1;
19480   }
19481   __pyx_L4:;
19482 
19483   /* "tables/hdf5extension.pyx":1529
19484  *
19485  *     # Do the physical read
19486  *     with nogil:             # <<<<<<<<<<<<<<
19487  *         ret = H5ARRAYread(self.dataset_id, self.type_id, start, nrows, step,
19488  *                           extdim, rbuf)
19489  */
19490   {
19491       #ifdef WITH_THREAD
19492       PyThreadState *_save;
19493       Py_UNBLOCK_THREADS
19494       __Pyx_FastGIL_Remember();
19495       #endif
19496       /*try:*/ {
19497 
19498         /* "tables/hdf5extension.pyx":1530
19499  *     # Do the physical read
19500  *     with nogil:
19501  *         ret = H5ARRAYread(self.dataset_id, self.type_id, start, nrows, step,             # <<<<<<<<<<<<<<
19502  *                           extdim, rbuf)
19503  *
19504  */
19505         __pyx_v_ret = H5ARRAYread(__pyx_v_self->__pyx_base.dataset_id, __pyx_v_self->__pyx_base.type_id, __pyx_v_start, __pyx_v_nrows, __pyx_v_step, __pyx_v_extdim, __pyx_v_rbuf);
19506       }
19507 
19508       /* "tables/hdf5extension.pyx":1529
19509  *
19510  *     # Do the physical read
19511  *     with nogil:             # <<<<<<<<<<<<<<
19512  *         ret = H5ARRAYread(self.dataset_id, self.type_id, start, nrows, step,
19513  *                           extdim, rbuf)
19514  */
19515       /*finally:*/ {
19516         /*normal exit:*/{
19517           #ifdef WITH_THREAD
19518           __Pyx_FastGIL_Forget();
19519           Py_BLOCK_THREADS
19520           #endif
19521           goto __pyx_L7;
19522         }
19523         __pyx_L7:;
19524       }
19525   }
19526 
19527   /* "tables/hdf5extension.pyx":1533
19528  *                           extdim, rbuf)
19529  *
19530  *     try:             # <<<<<<<<<<<<<<
19531  *       if ret < 0:
19532  *         raise HDF5ExtError("Problems reading the array data.")
19533  */
19534   /*try:*/ {
19535 
19536     /* "tables/hdf5extension.pyx":1534
19537  *
19538  *     try:
19539  *       if ret < 0:             # <<<<<<<<<<<<<<
19540  *         raise HDF5ExtError("Problems reading the array data.")
19541  *
19542  */
19543     __pyx_t_5 = ((__pyx_v_ret < 0) != 0);
19544     if (unlikely(__pyx_t_5)) {
19545 
19546       /* "tables/hdf5extension.pyx":1535
19547  *     try:
19548  *       if ret < 0:
19549  *         raise HDF5ExtError("Problems reading the array data.")             # <<<<<<<<<<<<<<
19550  *
19551  *       # Get the pointer to the buffer data area
19552  */
19553       __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_HDF5ExtError); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1535, __pyx_L9_error)
19554       __Pyx_GOTREF(__pyx_t_1);
19555       __pyx_t_7 = NULL;
19556       if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
19557         __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1);
19558         if (likely(__pyx_t_7)) {
19559           PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
19560           __Pyx_INCREF(__pyx_t_7);
19561           __Pyx_INCREF(function);
19562           __Pyx_DECREF_SET(__pyx_t_1, function);
19563         }
19564       }
19565       __pyx_t_2 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_7, __pyx_kp_s_Problems_reading_the_array_data) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_kp_s_Problems_reading_the_array_data);
19566       __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
19567       if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1535, __pyx_L9_error)
19568       __Pyx_GOTREF(__pyx_t_2);
19569       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
19570       __Pyx_Raise(__pyx_t_2, 0, 0, 0);
19571       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
19572       __PYX_ERR(0, 1535, __pyx_L9_error)
19573 
19574       /* "tables/hdf5extension.pyx":1534
19575  *
19576  *     try:
19577  *       if ret < 0:             # <<<<<<<<<<<<<<
19578  *         raise HDF5ExtError("Problems reading the array data.")
19579  *
19580  */
19581     }
19582 
19583     /* "tables/hdf5extension.pyx":1538
19584  *
19585  *       # Get the pointer to the buffer data area
19586  *       if self.atom.kind == "reference":             # <<<<<<<<<<<<<<
19587  *         load_reference(self.dataset_id, <hobj_ref_t *>rbuf, item_size, nparr)
19588  *     finally:
19589  */
19590     __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_atom); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1538, __pyx_L9_error)
19591     __Pyx_GOTREF(__pyx_t_2);
19592     __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_kind); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1538, __pyx_L9_error)
19593     __Pyx_GOTREF(__pyx_t_1);
19594     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
19595     __pyx_t_5 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_reference, Py_EQ)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 1538, __pyx_L9_error)
19596     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
19597     if (__pyx_t_5) {
19598 
19599       /* "tables/hdf5extension.pyx":1539
19600  *       # Get the pointer to the buffer data area
19601  *       if self.atom.kind == "reference":
19602  *         load_reference(self.dataset_id, <hobj_ref_t *>rbuf, item_size, nparr)             # <<<<<<<<<<<<<<
19603  *     finally:
19604  *       if refbuf:
19605  */
19606       __pyx_t_6 = __pyx_f_6tables_14utilsextension_load_reference(__pyx_v_self->__pyx_base.dataset_id, ((hobj_ref_t *)__pyx_v_rbuf), __pyx_v_item_size, __pyx_v_nparr); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 1539, __pyx_L9_error)
19607 
19608       /* "tables/hdf5extension.pyx":1538
19609  *
19610  *       # Get the pointer to the buffer data area
19611  *       if self.atom.kind == "reference":             # <<<<<<<<<<<<<<
19612  *         load_reference(self.dataset_id, <hobj_ref_t *>rbuf, item_size, nparr)
19613  *     finally:
19614  */
19615     }
19616   }
19617 
19618   /* "tables/hdf5extension.pyx":1541
19619  *         load_reference(self.dataset_id, <hobj_ref_t *>rbuf, item_size, nparr)
19620  *     finally:
19621  *       if refbuf:             # <<<<<<<<<<<<<<
19622  *         free(refbuf)
19623  *         refbuf = NULL
19624  */
19625   /*finally:*/ {
19626     /*normal exit:*/{
19627       __pyx_t_5 = (__pyx_v_refbuf != 0);
19628       if (__pyx_t_5) {
19629 
19630         /* "tables/hdf5extension.pyx":1542
19631  *     finally:
19632  *       if refbuf:
19633  *         free(refbuf)             # <<<<<<<<<<<<<<
19634  *         refbuf = NULL
19635  *
19636  */
19637         free(__pyx_v_refbuf);
19638 
19639         /* "tables/hdf5extension.pyx":1543
19640  *       if refbuf:
19641  *         free(refbuf)
19642  *         refbuf = NULL             # <<<<<<<<<<<<<<
19643  *
19644  *     if self.atom.kind == 'time':
19645  */
19646         __pyx_v_refbuf = NULL;
19647 
19648         /* "tables/hdf5extension.pyx":1541
19649  *         load_reference(self.dataset_id, <hobj_ref_t *>rbuf, item_size, nparr)
19650  *     finally:
19651  *       if refbuf:             # <<<<<<<<<<<<<<
19652  *         free(refbuf)
19653  *         refbuf = NULL
19654  */
19655       }
19656       goto __pyx_L10;
19657     }
19658     __pyx_L9_error:;
19659     /*exception exit:*/{
19660       __Pyx_PyThreadState_declare
19661       __Pyx_PyThreadState_assign
19662       __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0;
19663       __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
19664       __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
19665       __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
19666       if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15);
19667       if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12) < 0)) __Pyx_ErrFetch(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
19668       __Pyx_XGOTREF(__pyx_t_10);
19669       __Pyx_XGOTREF(__pyx_t_11);
19670       __Pyx_XGOTREF(__pyx_t_12);
19671       __Pyx_XGOTREF(__pyx_t_13);
19672       __Pyx_XGOTREF(__pyx_t_14);
19673       __Pyx_XGOTREF(__pyx_t_15);
19674       __pyx_t_6 = __pyx_lineno; __pyx_t_8 = __pyx_clineno; __pyx_t_9 = __pyx_filename;
19675       {
19676         __pyx_t_5 = (__pyx_v_refbuf != 0);
19677         if (__pyx_t_5) {
19678 
19679           /* "tables/hdf5extension.pyx":1542
19680  *     finally:
19681  *       if refbuf:
19682  *         free(refbuf)             # <<<<<<<<<<<<<<
19683  *         refbuf = NULL
19684  *
19685  */
19686           free(__pyx_v_refbuf);
19687 
19688           /* "tables/hdf5extension.pyx":1543
19689  *       if refbuf:
19690  *         free(refbuf)
19691  *         refbuf = NULL             # <<<<<<<<<<<<<<
19692  *
19693  *     if self.atom.kind == 'time':
19694  */
19695           __pyx_v_refbuf = NULL;
19696 
19697           /* "tables/hdf5extension.pyx":1541
19698  *         load_reference(self.dataset_id, <hobj_ref_t *>rbuf, item_size, nparr)
19699  *     finally:
19700  *       if refbuf:             # <<<<<<<<<<<<<<
19701  *         free(refbuf)
19702  *         refbuf = NULL
19703  */
19704         }
19705       }
19706       if (PY_MAJOR_VERSION >= 3) {
19707         __Pyx_XGIVEREF(__pyx_t_13);
19708         __Pyx_XGIVEREF(__pyx_t_14);
19709         __Pyx_XGIVEREF(__pyx_t_15);
19710         __Pyx_ExceptionReset(__pyx_t_13, __pyx_t_14, __pyx_t_15);
19711       }
19712       __Pyx_XGIVEREF(__pyx_t_10);
19713       __Pyx_XGIVEREF(__pyx_t_11);
19714       __Pyx_XGIVEREF(__pyx_t_12);
19715       __Pyx_ErrRestore(__pyx_t_10, __pyx_t_11, __pyx_t_12);
19716       __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0;
19717       __pyx_lineno = __pyx_t_6; __pyx_clineno = __pyx_t_8; __pyx_filename = __pyx_t_9;
19718       goto __pyx_L1_error;
19719     }
19720     __pyx_L10:;
19721   }
19722 
19723   /* "tables/hdf5extension.pyx":1545
19724  *         refbuf = NULL
19725  *
19726  *     if self.atom.kind == 'time':             # <<<<<<<<<<<<<<
19727  *       # Swap the byteorder by hand (this is not currently supported by HDF5)
19728  *       if H5Tget_order(self.type_id) != platform_byteorder:
19729  */
19730   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_atom); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1545, __pyx_L1_error)
19731   __Pyx_GOTREF(__pyx_t_1);
19732   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_kind); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1545, __pyx_L1_error)
19733   __Pyx_GOTREF(__pyx_t_2);
19734   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
19735   __pyx_t_5 = (__Pyx_PyString_Equals(__pyx_t_2, __pyx_n_s_time, Py_EQ)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 1545, __pyx_L1_error)
19736   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
19737   if (__pyx_t_5) {
19738 
19739     /* "tables/hdf5extension.pyx":1547
19740  *     if self.atom.kind == 'time':
19741  *       # Swap the byteorder by hand (this is not currently supported by HDF5)
19742  *       if H5Tget_order(self.type_id) != platform_byteorder:             # <<<<<<<<<<<<<<
19743  *         nparr.byteswap(True)
19744  *
19745  */
19746     __pyx_t_2 = __Pyx_PyInt_From_enum__H5T_order_t(H5Tget_order(__pyx_v_self->__pyx_base.type_id)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1547, __pyx_L1_error)
19747     __Pyx_GOTREF(__pyx_t_2);
19748     __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_platform_byteorder); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1547, __pyx_L1_error)
19749     __Pyx_GOTREF(__pyx_t_1);
19750     __pyx_t_7 = PyObject_RichCompare(__pyx_t_2, __pyx_t_1, Py_NE); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1547, __pyx_L1_error)
19751     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
19752     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
19753     __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 1547, __pyx_L1_error)
19754     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
19755     if (__pyx_t_5) {
19756 
19757       /* "tables/hdf5extension.pyx":1548
19758  *       # Swap the byteorder by hand (this is not currently supported by HDF5)
19759  *       if H5Tget_order(self.type_id) != platform_byteorder:
19760  *         nparr.byteswap(True)             # <<<<<<<<<<<<<<
19761  *
19762  *     # Convert some HDF5 types to NumPy after reading.
19763  */
19764       __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_nparr), __pyx_n_s_byteswap); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1548, __pyx_L1_error)
19765       __Pyx_GOTREF(__pyx_t_1);
19766       __pyx_t_2 = NULL;
19767       if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
19768         __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1);
19769         if (likely(__pyx_t_2)) {
19770           PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
19771           __Pyx_INCREF(__pyx_t_2);
19772           __Pyx_INCREF(function);
19773           __Pyx_DECREF_SET(__pyx_t_1, function);
19774         }
19775       }
19776       __pyx_t_7 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_2, Py_True) : __Pyx_PyObject_CallOneArg(__pyx_t_1, Py_True);
19777       __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
19778       if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1548, __pyx_L1_error)
19779       __Pyx_GOTREF(__pyx_t_7);
19780       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
19781       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
19782 
19783       /* "tables/hdf5extension.pyx":1547
19784  *     if self.atom.kind == 'time':
19785  *       # Swap the byteorder by hand (this is not currently supported by HDF5)
19786  *       if H5Tget_order(self.type_id) != platform_byteorder:             # <<<<<<<<<<<<<<
19787  *         nparr.byteswap(True)
19788  *
19789  */
19790     }
19791 
19792     /* "tables/hdf5extension.pyx":1545
19793  *         refbuf = NULL
19794  *
19795  *     if self.atom.kind == 'time':             # <<<<<<<<<<<<<<
19796  *       # Swap the byteorder by hand (this is not currently supported by HDF5)
19797  *       if H5Tget_order(self.type_id) != platform_byteorder:
19798  */
19799   }
19800 
19801   /* "tables/hdf5extension.pyx":1551
19802  *
19803  *     # Convert some HDF5 types to NumPy after reading.
19804  *     if self.atom.type == 'time64':             # <<<<<<<<<<<<<<
19805  *       self._convert_time64(nparr, 1)
19806  *
19807  */
19808   __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_atom); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1551, __pyx_L1_error)
19809   __Pyx_GOTREF(__pyx_t_7);
19810   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_type); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1551, __pyx_L1_error)
19811   __Pyx_GOTREF(__pyx_t_1);
19812   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
19813   __pyx_t_5 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_time64, Py_EQ)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 1551, __pyx_L1_error)
19814   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
19815   if (__pyx_t_5) {
19816 
19817     /* "tables/hdf5extension.pyx":1552
19818  *     # Convert some HDF5 types to NumPy after reading.
19819  *     if self.atom.type == 'time64':
19820  *       self._convert_time64(nparr, 1)             # <<<<<<<<<<<<<<
19821  *
19822  *     return
19823  */
19824     __pyx_t_1 = ((struct __pyx_vtabstruct_6tables_13hdf5extension_Array *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._convert_time64(((struct __pyx_obj_6tables_13hdf5extension_Leaf *)__pyx_v_self), __pyx_v_nparr, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1552, __pyx_L1_error)
19825     __Pyx_GOTREF(__pyx_t_1);
19826     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
19827 
19828     /* "tables/hdf5extension.pyx":1551
19829  *
19830  *     # Convert some HDF5 types to NumPy after reading.
19831  *     if self.atom.type == 'time64':             # <<<<<<<<<<<<<<
19832  *       self._convert_time64(nparr, 1)
19833  *
19834  */
19835   }
19836 
19837   /* "tables/hdf5extension.pyx":1554
19838  *       self._convert_time64(nparr, 1)
19839  *
19840  *     return             # <<<<<<<<<<<<<<
19841  *
19842  *
19843  */
19844   __Pyx_XDECREF(__pyx_r);
19845   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
19846   goto __pyx_L0;
19847 
19848   /* "tables/hdf5extension.pyx":1504
19849  *     self.shape = tuple(shape)
19850  *
19851  *   def _read_array(self, hsize_t start, hsize_t stop, hsize_t step,             # <<<<<<<<<<<<<<
19852  *                  ndarray nparr):
19853  *     cdef herr_t ret
19854  */
19855 
19856   /* function exit code */
19857   __pyx_L1_error:;
19858   __Pyx_XDECREF(__pyx_t_1);
19859   __Pyx_XDECREF(__pyx_t_2);
19860   __Pyx_XDECREF(__pyx_t_7);
19861   __Pyx_AddTraceback("tables.hdf5extension.Array._read_array", __pyx_clineno, __pyx_lineno, __pyx_filename);
19862   __pyx_r = NULL;
19863   __pyx_L0:;
19864   __Pyx_XGIVEREF(__pyx_r);
19865   __Pyx_RefNannyFinishContext();
19866   return __pyx_r;
19867 }
19868 
19869 /* "tables/hdf5extension.pyx":1557
19870  *
19871  *
19872  *   def _g_read_slice(self, ndarray startl, ndarray stopl, ndarray stepl,             # <<<<<<<<<<<<<<
19873  *                    ndarray nparr):
19874  *     cdef herr_t ret
19875  */
19876 
19877 /* Python wrapper */
19878 static PyObject *__pyx_pw_6tables_13hdf5extension_5Array_11_g_read_slice(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
__pyx_pw_6tables_13hdf5extension_5Array_11_g_read_slice(PyObject * __pyx_v_self,PyObject * __pyx_args,PyObject * __pyx_kwds)19879 static PyObject *__pyx_pw_6tables_13hdf5extension_5Array_11_g_read_slice(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
19880   PyArrayObject *__pyx_v_startl = 0;
19881   PyArrayObject *__pyx_v_stopl = 0;
19882   PyArrayObject *__pyx_v_stepl = 0;
19883   PyArrayObject *__pyx_v_nparr = 0;
19884   PyObject *__pyx_r = 0;
19885   __Pyx_RefNannyDeclarations
19886   __Pyx_RefNannySetupContext("_g_read_slice (wrapper)", 0);
19887   {
19888     static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_startl,&__pyx_n_s_stopl,&__pyx_n_s_stepl,&__pyx_n_s_nparr,0};
19889     PyObject* values[4] = {0,0,0,0};
19890     if (unlikely(__pyx_kwds)) {
19891       Py_ssize_t kw_args;
19892       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
19893       switch (pos_args) {
19894         case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
19895         CYTHON_FALLTHROUGH;
19896         case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
19897         CYTHON_FALLTHROUGH;
19898         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
19899         CYTHON_FALLTHROUGH;
19900         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
19901         CYTHON_FALLTHROUGH;
19902         case  0: break;
19903         default: goto __pyx_L5_argtuple_error;
19904       }
19905       kw_args = PyDict_Size(__pyx_kwds);
19906       switch (pos_args) {
19907         case  0:
19908         if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_startl)) != 0)) kw_args--;
19909         else goto __pyx_L5_argtuple_error;
19910         CYTHON_FALLTHROUGH;
19911         case  1:
19912         if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_stopl)) != 0)) kw_args--;
19913         else {
19914           __Pyx_RaiseArgtupleInvalid("_g_read_slice", 1, 4, 4, 1); __PYX_ERR(0, 1557, __pyx_L3_error)
19915         }
19916         CYTHON_FALLTHROUGH;
19917         case  2:
19918         if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_stepl)) != 0)) kw_args--;
19919         else {
19920           __Pyx_RaiseArgtupleInvalid("_g_read_slice", 1, 4, 4, 2); __PYX_ERR(0, 1557, __pyx_L3_error)
19921         }
19922         CYTHON_FALLTHROUGH;
19923         case  3:
19924         if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nparr)) != 0)) kw_args--;
19925         else {
19926           __Pyx_RaiseArgtupleInvalid("_g_read_slice", 1, 4, 4, 3); __PYX_ERR(0, 1557, __pyx_L3_error)
19927         }
19928       }
19929       if (unlikely(kw_args > 0)) {
19930         if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_g_read_slice") < 0)) __PYX_ERR(0, 1557, __pyx_L3_error)
19931       }
19932     } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
19933       goto __pyx_L5_argtuple_error;
19934     } else {
19935       values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
19936       values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
19937       values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
19938       values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
19939     }
19940     __pyx_v_startl = ((PyArrayObject *)values[0]);
19941     __pyx_v_stopl = ((PyArrayObject *)values[1]);
19942     __pyx_v_stepl = ((PyArrayObject *)values[2]);
19943     __pyx_v_nparr = ((PyArrayObject *)values[3]);
19944   }
19945   goto __pyx_L4_argument_unpacking_done;
19946   __pyx_L5_argtuple_error:;
19947   __Pyx_RaiseArgtupleInvalid("_g_read_slice", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1557, __pyx_L3_error)
19948   __pyx_L3_error:;
19949   __Pyx_AddTraceback("tables.hdf5extension.Array._g_read_slice", __pyx_clineno, __pyx_lineno, __pyx_filename);
19950   __Pyx_RefNannyFinishContext();
19951   return NULL;
19952   __pyx_L4_argument_unpacking_done:;
19953   if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_startl), __pyx_ptype_5numpy_ndarray, 1, "startl", 0))) __PYX_ERR(0, 1557, __pyx_L1_error)
19954   if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_stopl), __pyx_ptype_5numpy_ndarray, 1, "stopl", 0))) __PYX_ERR(0, 1557, __pyx_L1_error)
19955   if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_stepl), __pyx_ptype_5numpy_ndarray, 1, "stepl", 0))) __PYX_ERR(0, 1557, __pyx_L1_error)
19956   if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_nparr), __pyx_ptype_5numpy_ndarray, 1, "nparr", 0))) __PYX_ERR(0, 1558, __pyx_L1_error)
19957   __pyx_r = __pyx_pf_6tables_13hdf5extension_5Array_10_g_read_slice(((struct __pyx_obj_6tables_13hdf5extension_Array *)__pyx_v_self), __pyx_v_startl, __pyx_v_stopl, __pyx_v_stepl, __pyx_v_nparr);
19958 
19959   /* function exit code */
19960   goto __pyx_L0;
19961   __pyx_L1_error:;
19962   __pyx_r = NULL;
19963   __pyx_L0:;
19964   __Pyx_RefNannyFinishContext();
19965   return __pyx_r;
19966 }
19967 
__pyx_pf_6tables_13hdf5extension_5Array_10_g_read_slice(struct __pyx_obj_6tables_13hdf5extension_Array * __pyx_v_self,PyArrayObject * __pyx_v_startl,PyArrayObject * __pyx_v_stopl,PyArrayObject * __pyx_v_stepl,PyArrayObject * __pyx_v_nparr)19968 static PyObject *__pyx_pf_6tables_13hdf5extension_5Array_10_g_read_slice(struct __pyx_obj_6tables_13hdf5extension_Array *__pyx_v_self, PyArrayObject *__pyx_v_startl, PyArrayObject *__pyx_v_stopl, PyArrayObject *__pyx_v_stepl, PyArrayObject *__pyx_v_nparr) {
19969   herr_t __pyx_v_ret;
19970   hsize_t *__pyx_v_start;
19971   hsize_t *__pyx_v_stop;
19972   hsize_t *__pyx_v_step;
19973   void *__pyx_v_rbuf;
19974   size_t __pyx_v_item_size;
19975   void *__pyx_v_refbuf;
19976   PyObject *__pyx_r = NULL;
19977   __Pyx_RefNannyDeclarations
19978   PyObject *__pyx_t_1 = NULL;
19979   PyObject *__pyx_t_2 = NULL;
19980   int __pyx_t_3;
19981   PyObject *__pyx_t_4 = NULL;
19982   size_t __pyx_t_5;
19983   char *__pyx_t_6;
19984   int __pyx_t_7;
19985   int __pyx_t_8;
19986   char const *__pyx_t_9;
19987   PyObject *__pyx_t_10 = NULL;
19988   PyObject *__pyx_t_11 = NULL;
19989   PyObject *__pyx_t_12 = NULL;
19990   PyObject *__pyx_t_13 = NULL;
19991   PyObject *__pyx_t_14 = NULL;
19992   PyObject *__pyx_t_15 = NULL;
19993   __Pyx_RefNannySetupContext("_g_read_slice", 0);
19994 
19995   /* "tables/hdf5extension.pyx":1564
19996  *     cdef hsize_t *step
19997  *     cdef void *rbuf
19998  *     cdef size_t item_size = H5Tget_size(self.type_id)             # <<<<<<<<<<<<<<
19999  *     cdef void * refbuf = NULL
20000  *
20001  */
20002   __pyx_v_item_size = H5Tget_size(__pyx_v_self->__pyx_base.type_id);
20003 
20004   /* "tables/hdf5extension.pyx":1565
20005  *     cdef void *rbuf
20006  *     cdef size_t item_size = H5Tget_size(self.type_id)
20007  *     cdef void * refbuf = NULL             # <<<<<<<<<<<<<<
20008  *
20009  *     # Get the pointer to the buffer data area of startl, stopl and stepl arrays
20010  */
20011   __pyx_v_refbuf = NULL;
20012 
20013   /* "tables/hdf5extension.pyx":1568
20014  *
20015  *     # Get the pointer to the buffer data area of startl, stopl and stepl arrays
20016  *     start = <hsize_t *>startl.data             # <<<<<<<<<<<<<<
20017  *     stop = <hsize_t *>stopl.data
20018  *     step = <hsize_t *>stepl.data
20019  */
20020   __pyx_v_start = ((hsize_t *)__pyx_v_startl->data);
20021 
20022   /* "tables/hdf5extension.pyx":1569
20023  *     # Get the pointer to the buffer data area of startl, stopl and stepl arrays
20024  *     start = <hsize_t *>startl.data
20025  *     stop = <hsize_t *>stopl.data             # <<<<<<<<<<<<<<
20026  *     step = <hsize_t *>stepl.data
20027  *
20028  */
20029   __pyx_v_stop = ((hsize_t *)__pyx_v_stopl->data);
20030 
20031   /* "tables/hdf5extension.pyx":1570
20032  *     start = <hsize_t *>startl.data
20033  *     stop = <hsize_t *>stopl.data
20034  *     step = <hsize_t *>stepl.data             # <<<<<<<<<<<<<<
20035  *
20036  *     # Get the pointer to the buffer data area
20037  */
20038   __pyx_v_step = ((hsize_t *)__pyx_v_stepl->data);
20039 
20040   /* "tables/hdf5extension.pyx":1573
20041  *
20042  *     # Get the pointer to the buffer data area
20043  *     if self.atom.kind == "reference":             # <<<<<<<<<<<<<<
20044  *       refbuf = malloc(nparr.size * item_size)
20045  *       rbuf = refbuf
20046  */
20047   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_atom); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1573, __pyx_L1_error)
20048   __Pyx_GOTREF(__pyx_t_1);
20049   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_kind); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1573, __pyx_L1_error)
20050   __Pyx_GOTREF(__pyx_t_2);
20051   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
20052   __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_2, __pyx_n_s_reference, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1573, __pyx_L1_error)
20053   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
20054   if (__pyx_t_3) {
20055 
20056     /* "tables/hdf5extension.pyx":1574
20057  *     # Get the pointer to the buffer data area
20058  *     if self.atom.kind == "reference":
20059  *       refbuf = malloc(nparr.size * item_size)             # <<<<<<<<<<<<<<
20060  *       rbuf = refbuf
20061  *     else:
20062  */
20063     __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_nparr), __pyx_n_s_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1574, __pyx_L1_error)
20064     __Pyx_GOTREF(__pyx_t_2);
20065     __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_item_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1574, __pyx_L1_error)
20066     __Pyx_GOTREF(__pyx_t_1);
20067     __pyx_t_4 = PyNumber_Multiply(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1574, __pyx_L1_error)
20068     __Pyx_GOTREF(__pyx_t_4);
20069     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
20070     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
20071     __pyx_t_5 = __Pyx_PyInt_As_size_t(__pyx_t_4); if (unlikely((__pyx_t_5 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1574, __pyx_L1_error)
20072     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
20073     __pyx_v_refbuf = malloc(__pyx_t_5);
20074 
20075     /* "tables/hdf5extension.pyx":1575
20076  *     if self.atom.kind == "reference":
20077  *       refbuf = malloc(nparr.size * item_size)
20078  *       rbuf = refbuf             # <<<<<<<<<<<<<<
20079  *     else:
20080  *       rbuf = nparr.data
20081  */
20082     __pyx_v_rbuf = __pyx_v_refbuf;
20083 
20084     /* "tables/hdf5extension.pyx":1573
20085  *
20086  *     # Get the pointer to the buffer data area
20087  *     if self.atom.kind == "reference":             # <<<<<<<<<<<<<<
20088  *       refbuf = malloc(nparr.size * item_size)
20089  *       rbuf = refbuf
20090  */
20091     goto __pyx_L3;
20092   }
20093 
20094   /* "tables/hdf5extension.pyx":1577
20095  *       rbuf = refbuf
20096  *     else:
20097  *       rbuf = nparr.data             # <<<<<<<<<<<<<<
20098  *
20099  *     # Do the physical read
20100  */
20101   /*else*/ {
20102     __pyx_t_6 = __pyx_v_nparr->data;
20103     __pyx_v_rbuf = __pyx_t_6;
20104   }
20105   __pyx_L3:;
20106 
20107   /* "tables/hdf5extension.pyx":1580
20108  *
20109  *     # Do the physical read
20110  *     with nogil:             # <<<<<<<<<<<<<<
20111  *         ret = H5ARRAYreadSlice(self.dataset_id, self.type_id,
20112  *                                start, stop, step, rbuf)
20113  */
20114   {
20115       #ifdef WITH_THREAD
20116       PyThreadState *_save;
20117       Py_UNBLOCK_THREADS
20118       __Pyx_FastGIL_Remember();
20119       #endif
20120       /*try:*/ {
20121 
20122         /* "tables/hdf5extension.pyx":1581
20123  *     # Do the physical read
20124  *     with nogil:
20125  *         ret = H5ARRAYreadSlice(self.dataset_id, self.type_id,             # <<<<<<<<<<<<<<
20126  *                                start, stop, step, rbuf)
20127  *     try:
20128  */
20129         __pyx_v_ret = H5ARRAYreadSlice(__pyx_v_self->__pyx_base.dataset_id, __pyx_v_self->__pyx_base.type_id, __pyx_v_start, __pyx_v_stop, __pyx_v_step, __pyx_v_rbuf);
20130       }
20131 
20132       /* "tables/hdf5extension.pyx":1580
20133  *
20134  *     # Do the physical read
20135  *     with nogil:             # <<<<<<<<<<<<<<
20136  *         ret = H5ARRAYreadSlice(self.dataset_id, self.type_id,
20137  *                                start, stop, step, rbuf)
20138  */
20139       /*finally:*/ {
20140         /*normal exit:*/{
20141           #ifdef WITH_THREAD
20142           __Pyx_FastGIL_Forget();
20143           Py_BLOCK_THREADS
20144           #endif
20145           goto __pyx_L6;
20146         }
20147         __pyx_L6:;
20148       }
20149   }
20150 
20151   /* "tables/hdf5extension.pyx":1583
20152  *         ret = H5ARRAYreadSlice(self.dataset_id, self.type_id,
20153  *                                start, stop, step, rbuf)
20154  *     try:             # <<<<<<<<<<<<<<
20155  *       if ret < 0:
20156  *         raise HDF5ExtError("Problems reading the array data.")
20157  */
20158   /*try:*/ {
20159 
20160     /* "tables/hdf5extension.pyx":1584
20161  *                                start, stop, step, rbuf)
20162  *     try:
20163  *       if ret < 0:             # <<<<<<<<<<<<<<
20164  *         raise HDF5ExtError("Problems reading the array data.")
20165  *
20166  */
20167     __pyx_t_3 = ((__pyx_v_ret < 0) != 0);
20168     if (unlikely(__pyx_t_3)) {
20169 
20170       /* "tables/hdf5extension.pyx":1585
20171  *     try:
20172  *       if ret < 0:
20173  *         raise HDF5ExtError("Problems reading the array data.")             # <<<<<<<<<<<<<<
20174  *
20175  *       # Get the pointer to the buffer data area
20176  */
20177       __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_HDF5ExtError); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1585, __pyx_L8_error)
20178       __Pyx_GOTREF(__pyx_t_1);
20179       __pyx_t_2 = NULL;
20180       if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
20181         __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1);
20182         if (likely(__pyx_t_2)) {
20183           PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
20184           __Pyx_INCREF(__pyx_t_2);
20185           __Pyx_INCREF(function);
20186           __Pyx_DECREF_SET(__pyx_t_1, function);
20187         }
20188       }
20189       __pyx_t_4 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_2, __pyx_kp_s_Problems_reading_the_array_data) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_kp_s_Problems_reading_the_array_data);
20190       __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
20191       if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1585, __pyx_L8_error)
20192       __Pyx_GOTREF(__pyx_t_4);
20193       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
20194       __Pyx_Raise(__pyx_t_4, 0, 0, 0);
20195       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
20196       __PYX_ERR(0, 1585, __pyx_L8_error)
20197 
20198       /* "tables/hdf5extension.pyx":1584
20199  *                                start, stop, step, rbuf)
20200  *     try:
20201  *       if ret < 0:             # <<<<<<<<<<<<<<
20202  *         raise HDF5ExtError("Problems reading the array data.")
20203  *
20204  */
20205     }
20206 
20207     /* "tables/hdf5extension.pyx":1588
20208  *
20209  *       # Get the pointer to the buffer data area
20210  *       if self.atom.kind == "reference":             # <<<<<<<<<<<<<<
20211  *         load_reference(self.dataset_id, <hobj_ref_t *>rbuf, item_size, nparr)
20212  *     finally:
20213  */
20214     __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_atom); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1588, __pyx_L8_error)
20215     __Pyx_GOTREF(__pyx_t_4);
20216     __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_kind); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1588, __pyx_L8_error)
20217     __Pyx_GOTREF(__pyx_t_1);
20218     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
20219     __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_reference, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1588, __pyx_L8_error)
20220     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
20221     if (__pyx_t_3) {
20222 
20223       /* "tables/hdf5extension.pyx":1589
20224  *       # Get the pointer to the buffer data area
20225  *       if self.atom.kind == "reference":
20226  *         load_reference(self.dataset_id, <hobj_ref_t *>rbuf, item_size, nparr)             # <<<<<<<<<<<<<<
20227  *     finally:
20228  *       if refbuf:
20229  */
20230       __pyx_t_7 = __pyx_f_6tables_14utilsextension_load_reference(__pyx_v_self->__pyx_base.dataset_id, ((hobj_ref_t *)__pyx_v_rbuf), __pyx_v_item_size, __pyx_v_nparr); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(0, 1589, __pyx_L8_error)
20231 
20232       /* "tables/hdf5extension.pyx":1588
20233  *
20234  *       # Get the pointer to the buffer data area
20235  *       if self.atom.kind == "reference":             # <<<<<<<<<<<<<<
20236  *         load_reference(self.dataset_id, <hobj_ref_t *>rbuf, item_size, nparr)
20237  *     finally:
20238  */
20239     }
20240   }
20241 
20242   /* "tables/hdf5extension.pyx":1591
20243  *         load_reference(self.dataset_id, <hobj_ref_t *>rbuf, item_size, nparr)
20244  *     finally:
20245  *       if refbuf:             # <<<<<<<<<<<<<<
20246  *         free(refbuf)
20247  *         refbuf = NULL
20248  */
20249   /*finally:*/ {
20250     /*normal exit:*/{
20251       __pyx_t_3 = (__pyx_v_refbuf != 0);
20252       if (__pyx_t_3) {
20253 
20254         /* "tables/hdf5extension.pyx":1592
20255  *     finally:
20256  *       if refbuf:
20257  *         free(refbuf)             # <<<<<<<<<<<<<<
20258  *         refbuf = NULL
20259  *
20260  */
20261         free(__pyx_v_refbuf);
20262 
20263         /* "tables/hdf5extension.pyx":1593
20264  *       if refbuf:
20265  *         free(refbuf)
20266  *         refbuf = NULL             # <<<<<<<<<<<<<<
20267  *
20268  *     if self.atom.kind == 'time':
20269  */
20270         __pyx_v_refbuf = NULL;
20271 
20272         /* "tables/hdf5extension.pyx":1591
20273  *         load_reference(self.dataset_id, <hobj_ref_t *>rbuf, item_size, nparr)
20274  *     finally:
20275  *       if refbuf:             # <<<<<<<<<<<<<<
20276  *         free(refbuf)
20277  *         refbuf = NULL
20278  */
20279       }
20280       goto __pyx_L9;
20281     }
20282     __pyx_L8_error:;
20283     /*exception exit:*/{
20284       __Pyx_PyThreadState_declare
20285       __Pyx_PyThreadState_assign
20286       __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0;
20287       __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
20288       __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
20289       __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
20290       if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15);
20291       if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12) < 0)) __Pyx_ErrFetch(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
20292       __Pyx_XGOTREF(__pyx_t_10);
20293       __Pyx_XGOTREF(__pyx_t_11);
20294       __Pyx_XGOTREF(__pyx_t_12);
20295       __Pyx_XGOTREF(__pyx_t_13);
20296       __Pyx_XGOTREF(__pyx_t_14);
20297       __Pyx_XGOTREF(__pyx_t_15);
20298       __pyx_t_7 = __pyx_lineno; __pyx_t_8 = __pyx_clineno; __pyx_t_9 = __pyx_filename;
20299       {
20300         __pyx_t_3 = (__pyx_v_refbuf != 0);
20301         if (__pyx_t_3) {
20302 
20303           /* "tables/hdf5extension.pyx":1592
20304  *     finally:
20305  *       if refbuf:
20306  *         free(refbuf)             # <<<<<<<<<<<<<<
20307  *         refbuf = NULL
20308  *
20309  */
20310           free(__pyx_v_refbuf);
20311 
20312           /* "tables/hdf5extension.pyx":1593
20313  *       if refbuf:
20314  *         free(refbuf)
20315  *         refbuf = NULL             # <<<<<<<<<<<<<<
20316  *
20317  *     if self.atom.kind == 'time':
20318  */
20319           __pyx_v_refbuf = NULL;
20320 
20321           /* "tables/hdf5extension.pyx":1591
20322  *         load_reference(self.dataset_id, <hobj_ref_t *>rbuf, item_size, nparr)
20323  *     finally:
20324  *       if refbuf:             # <<<<<<<<<<<<<<
20325  *         free(refbuf)
20326  *         refbuf = NULL
20327  */
20328         }
20329       }
20330       if (PY_MAJOR_VERSION >= 3) {
20331         __Pyx_XGIVEREF(__pyx_t_13);
20332         __Pyx_XGIVEREF(__pyx_t_14);
20333         __Pyx_XGIVEREF(__pyx_t_15);
20334         __Pyx_ExceptionReset(__pyx_t_13, __pyx_t_14, __pyx_t_15);
20335       }
20336       __Pyx_XGIVEREF(__pyx_t_10);
20337       __Pyx_XGIVEREF(__pyx_t_11);
20338       __Pyx_XGIVEREF(__pyx_t_12);
20339       __Pyx_ErrRestore(__pyx_t_10, __pyx_t_11, __pyx_t_12);
20340       __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0;
20341       __pyx_lineno = __pyx_t_7; __pyx_clineno = __pyx_t_8; __pyx_filename = __pyx_t_9;
20342       goto __pyx_L1_error;
20343     }
20344     __pyx_L9:;
20345   }
20346 
20347   /* "tables/hdf5extension.pyx":1595
20348  *         refbuf = NULL
20349  *
20350  *     if self.atom.kind == 'time':             # <<<<<<<<<<<<<<
20351  *       # Swap the byteorder by hand (this is not currently supported by HDF5)
20352  *       if H5Tget_order(self.type_id) != platform_byteorder:
20353  */
20354   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_atom); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1595, __pyx_L1_error)
20355   __Pyx_GOTREF(__pyx_t_1);
20356   __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_kind); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1595, __pyx_L1_error)
20357   __Pyx_GOTREF(__pyx_t_4);
20358   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
20359   __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_n_s_time, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1595, __pyx_L1_error)
20360   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
20361   if (__pyx_t_3) {
20362 
20363     /* "tables/hdf5extension.pyx":1597
20364  *     if self.atom.kind == 'time':
20365  *       # Swap the byteorder by hand (this is not currently supported by HDF5)
20366  *       if H5Tget_order(self.type_id) != platform_byteorder:             # <<<<<<<<<<<<<<
20367  *         nparr.byteswap(True)
20368  *
20369  */
20370     __pyx_t_4 = __Pyx_PyInt_From_enum__H5T_order_t(H5Tget_order(__pyx_v_self->__pyx_base.type_id)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1597, __pyx_L1_error)
20371     __Pyx_GOTREF(__pyx_t_4);
20372     __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_platform_byteorder); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1597, __pyx_L1_error)
20373     __Pyx_GOTREF(__pyx_t_1);
20374     __pyx_t_2 = PyObject_RichCompare(__pyx_t_4, __pyx_t_1, Py_NE); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1597, __pyx_L1_error)
20375     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
20376     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
20377     __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1597, __pyx_L1_error)
20378     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
20379     if (__pyx_t_3) {
20380 
20381       /* "tables/hdf5extension.pyx":1598
20382  *       # Swap the byteorder by hand (this is not currently supported by HDF5)
20383  *       if H5Tget_order(self.type_id) != platform_byteorder:
20384  *         nparr.byteswap(True)             # <<<<<<<<<<<<<<
20385  *
20386  *     # Convert some HDF5 types to NumPy after reading
20387  */
20388       __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_nparr), __pyx_n_s_byteswap); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1598, __pyx_L1_error)
20389       __Pyx_GOTREF(__pyx_t_1);
20390       __pyx_t_4 = NULL;
20391       if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
20392         __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1);
20393         if (likely(__pyx_t_4)) {
20394           PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
20395           __Pyx_INCREF(__pyx_t_4);
20396           __Pyx_INCREF(function);
20397           __Pyx_DECREF_SET(__pyx_t_1, function);
20398         }
20399       }
20400       __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_4, Py_True) : __Pyx_PyObject_CallOneArg(__pyx_t_1, Py_True);
20401       __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
20402       if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1598, __pyx_L1_error)
20403       __Pyx_GOTREF(__pyx_t_2);
20404       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
20405       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
20406 
20407       /* "tables/hdf5extension.pyx":1597
20408  *     if self.atom.kind == 'time':
20409  *       # Swap the byteorder by hand (this is not currently supported by HDF5)
20410  *       if H5Tget_order(self.type_id) != platform_byteorder:             # <<<<<<<<<<<<<<
20411  *         nparr.byteswap(True)
20412  *
20413  */
20414     }
20415 
20416     /* "tables/hdf5extension.pyx":1595
20417  *         refbuf = NULL
20418  *
20419  *     if self.atom.kind == 'time':             # <<<<<<<<<<<<<<
20420  *       # Swap the byteorder by hand (this is not currently supported by HDF5)
20421  *       if H5Tget_order(self.type_id) != platform_byteorder:
20422  */
20423   }
20424 
20425   /* "tables/hdf5extension.pyx":1601
20426  *
20427  *     # Convert some HDF5 types to NumPy after reading
20428  *     if self.atom.type == 'time64':             # <<<<<<<<<<<<<<
20429  *       self._convert_time64(nparr, 1)
20430  *
20431  */
20432   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_atom); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1601, __pyx_L1_error)
20433   __Pyx_GOTREF(__pyx_t_2);
20434   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_type); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1601, __pyx_L1_error)
20435   __Pyx_GOTREF(__pyx_t_1);
20436   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
20437   __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_time64, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1601, __pyx_L1_error)
20438   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
20439   if (__pyx_t_3) {
20440 
20441     /* "tables/hdf5extension.pyx":1602
20442  *     # Convert some HDF5 types to NumPy after reading
20443  *     if self.atom.type == 'time64':
20444  *       self._convert_time64(nparr, 1)             # <<<<<<<<<<<<<<
20445  *
20446  *     return
20447  */
20448     __pyx_t_1 = ((struct __pyx_vtabstruct_6tables_13hdf5extension_Array *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._convert_time64(((struct __pyx_obj_6tables_13hdf5extension_Leaf *)__pyx_v_self), __pyx_v_nparr, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1602, __pyx_L1_error)
20449     __Pyx_GOTREF(__pyx_t_1);
20450     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
20451 
20452     /* "tables/hdf5extension.pyx":1601
20453  *
20454  *     # Convert some HDF5 types to NumPy after reading
20455  *     if self.atom.type == 'time64':             # <<<<<<<<<<<<<<
20456  *       self._convert_time64(nparr, 1)
20457  *
20458  */
20459   }
20460 
20461   /* "tables/hdf5extension.pyx":1604
20462  *       self._convert_time64(nparr, 1)
20463  *
20464  *     return             # <<<<<<<<<<<<<<
20465  *
20466  *
20467  */
20468   __Pyx_XDECREF(__pyx_r);
20469   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
20470   goto __pyx_L0;
20471 
20472   /* "tables/hdf5extension.pyx":1557
20473  *
20474  *
20475  *   def _g_read_slice(self, ndarray startl, ndarray stopl, ndarray stepl,             # <<<<<<<<<<<<<<
20476  *                    ndarray nparr):
20477  *     cdef herr_t ret
20478  */
20479 
20480   /* function exit code */
20481   __pyx_L1_error:;
20482   __Pyx_XDECREF(__pyx_t_1);
20483   __Pyx_XDECREF(__pyx_t_2);
20484   __Pyx_XDECREF(__pyx_t_4);
20485   __Pyx_AddTraceback("tables.hdf5extension.Array._g_read_slice", __pyx_clineno, __pyx_lineno, __pyx_filename);
20486   __pyx_r = NULL;
20487   __pyx_L0:;
20488   __Pyx_XGIVEREF(__pyx_r);
20489   __Pyx_RefNannyFinishContext();
20490   return __pyx_r;
20491 }
20492 
20493 /* "tables/hdf5extension.pyx":1607
20494  *
20495  *
20496  *   def _g_read_coords(self, ndarray coords, ndarray nparr):             # <<<<<<<<<<<<<<
20497  *     """Read coordinates in an already created NumPy array."""
20498  *
20499  */
20500 
20501 /* Python wrapper */
20502 static PyObject *__pyx_pw_6tables_13hdf5extension_5Array_13_g_read_coords(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
20503 static char __pyx_doc_6tables_13hdf5extension_5Array_12_g_read_coords[] = "Read coordinates in an already created NumPy array.";
__pyx_pw_6tables_13hdf5extension_5Array_13_g_read_coords(PyObject * __pyx_v_self,PyObject * __pyx_args,PyObject * __pyx_kwds)20504 static PyObject *__pyx_pw_6tables_13hdf5extension_5Array_13_g_read_coords(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
20505   PyArrayObject *__pyx_v_coords = 0;
20506   PyArrayObject *__pyx_v_nparr = 0;
20507   PyObject *__pyx_r = 0;
20508   __Pyx_RefNannyDeclarations
20509   __Pyx_RefNannySetupContext("_g_read_coords (wrapper)", 0);
20510   {
20511     static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_coords,&__pyx_n_s_nparr,0};
20512     PyObject* values[2] = {0,0};
20513     if (unlikely(__pyx_kwds)) {
20514       Py_ssize_t kw_args;
20515       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
20516       switch (pos_args) {
20517         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
20518         CYTHON_FALLTHROUGH;
20519         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
20520         CYTHON_FALLTHROUGH;
20521         case  0: break;
20522         default: goto __pyx_L5_argtuple_error;
20523       }
20524       kw_args = PyDict_Size(__pyx_kwds);
20525       switch (pos_args) {
20526         case  0:
20527         if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_coords)) != 0)) kw_args--;
20528         else goto __pyx_L5_argtuple_error;
20529         CYTHON_FALLTHROUGH;
20530         case  1:
20531         if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nparr)) != 0)) kw_args--;
20532         else {
20533           __Pyx_RaiseArgtupleInvalid("_g_read_coords", 1, 2, 2, 1); __PYX_ERR(0, 1607, __pyx_L3_error)
20534         }
20535       }
20536       if (unlikely(kw_args > 0)) {
20537         if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_g_read_coords") < 0)) __PYX_ERR(0, 1607, __pyx_L3_error)
20538       }
20539     } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
20540       goto __pyx_L5_argtuple_error;
20541     } else {
20542       values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
20543       values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
20544     }
20545     __pyx_v_coords = ((PyArrayObject *)values[0]);
20546     __pyx_v_nparr = ((PyArrayObject *)values[1]);
20547   }
20548   goto __pyx_L4_argument_unpacking_done;
20549   __pyx_L5_argtuple_error:;
20550   __Pyx_RaiseArgtupleInvalid("_g_read_coords", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1607, __pyx_L3_error)
20551   __pyx_L3_error:;
20552   __Pyx_AddTraceback("tables.hdf5extension.Array._g_read_coords", __pyx_clineno, __pyx_lineno, __pyx_filename);
20553   __Pyx_RefNannyFinishContext();
20554   return NULL;
20555   __pyx_L4_argument_unpacking_done:;
20556   if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_coords), __pyx_ptype_5numpy_ndarray, 1, "coords", 0))) __PYX_ERR(0, 1607, __pyx_L1_error)
20557   if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_nparr), __pyx_ptype_5numpy_ndarray, 1, "nparr", 0))) __PYX_ERR(0, 1607, __pyx_L1_error)
20558   __pyx_r = __pyx_pf_6tables_13hdf5extension_5Array_12_g_read_coords(((struct __pyx_obj_6tables_13hdf5extension_Array *)__pyx_v_self), __pyx_v_coords, __pyx_v_nparr);
20559 
20560   /* function exit code */
20561   goto __pyx_L0;
20562   __pyx_L1_error:;
20563   __pyx_r = NULL;
20564   __pyx_L0:;
20565   __Pyx_RefNannyFinishContext();
20566   return __pyx_r;
20567 }
20568 
__pyx_pf_6tables_13hdf5extension_5Array_12_g_read_coords(struct __pyx_obj_6tables_13hdf5extension_Array * __pyx_v_self,PyArrayObject * __pyx_v_coords,PyArrayObject * __pyx_v_nparr)20569 static PyObject *__pyx_pf_6tables_13hdf5extension_5Array_12_g_read_coords(struct __pyx_obj_6tables_13hdf5extension_Array *__pyx_v_self, PyArrayObject *__pyx_v_coords, PyArrayObject *__pyx_v_nparr) {
20570   herr_t __pyx_v_ret;
20571   hid_t __pyx_v_space_id;
20572   hid_t __pyx_v_mem_space_id;
20573   hsize_t __pyx_v_size;
20574   void *__pyx_v_rbuf;
20575   size_t __pyx_v_item_size;
20576   void *__pyx_v_refbuf;
20577   PyObject *__pyx_r = NULL;
20578   __Pyx_RefNannyDeclarations
20579   PyObject *__pyx_t_1 = NULL;
20580   hsize_t __pyx_t_2;
20581   PyObject *__pyx_t_3 = NULL;
20582   int __pyx_t_4;
20583   PyObject *__pyx_t_5 = NULL;
20584   size_t __pyx_t_6;
20585   char *__pyx_t_7;
20586   int __pyx_t_8;
20587   int __pyx_t_9;
20588   char const *__pyx_t_10;
20589   PyObject *__pyx_t_11 = NULL;
20590   PyObject *__pyx_t_12 = NULL;
20591   PyObject *__pyx_t_13 = NULL;
20592   PyObject *__pyx_t_14 = NULL;
20593   PyObject *__pyx_t_15 = NULL;
20594   PyObject *__pyx_t_16 = NULL;
20595   __Pyx_RefNannySetupContext("_g_read_coords", 0);
20596 
20597   /* "tables/hdf5extension.pyx":1616
20598  *     cdef void *rbuf
20599  *     cdef object mode
20600  *     cdef size_t item_size = H5Tget_size(self.type_id)             # <<<<<<<<<<<<<<
20601  *     cdef void * refbuf = NULL
20602  *
20603  */
20604   __pyx_v_item_size = H5Tget_size(__pyx_v_self->__pyx_base.type_id);
20605 
20606   /* "tables/hdf5extension.pyx":1617
20607  *     cdef object mode
20608  *     cdef size_t item_size = H5Tget_size(self.type_id)
20609  *     cdef void * refbuf = NULL             # <<<<<<<<<<<<<<
20610  *
20611  *     # Get the dataspace handle
20612  */
20613   __pyx_v_refbuf = NULL;
20614 
20615   /* "tables/hdf5extension.pyx":1620
20616  *
20617  *     # Get the dataspace handle
20618  *     space_id = H5Dget_space(self.dataset_id)             # <<<<<<<<<<<<<<
20619  *     # Create a memory dataspace handle
20620  *     size = nparr.size
20621  */
20622   __pyx_v_space_id = H5Dget_space(__pyx_v_self->__pyx_base.dataset_id);
20623 
20624   /* "tables/hdf5extension.pyx":1622
20625  *     space_id = H5Dget_space(self.dataset_id)
20626  *     # Create a memory dataspace handle
20627  *     size = nparr.size             # <<<<<<<<<<<<<<
20628  *     mem_space_id = H5Screate_simple(1, &size, NULL)
20629  *
20630  */
20631   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_nparr), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1622, __pyx_L1_error)
20632   __Pyx_GOTREF(__pyx_t_1);
20633   __pyx_t_2 = __Pyx_PyInt_As_hsize_t(__pyx_t_1); if (unlikely((__pyx_t_2 == ((hsize_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1622, __pyx_L1_error)
20634   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
20635   __pyx_v_size = __pyx_t_2;
20636 
20637   /* "tables/hdf5extension.pyx":1623
20638  *     # Create a memory dataspace handle
20639  *     size = nparr.size
20640  *     mem_space_id = H5Screate_simple(1, &size, NULL)             # <<<<<<<<<<<<<<
20641  *
20642  *     # Select the dataspace to be read
20643  */
20644   __pyx_v_mem_space_id = H5Screate_simple(1, (&__pyx_v_size), NULL);
20645 
20646   /* "tables/hdf5extension.pyx":1626
20647  *
20648  *     # Select the dataspace to be read
20649  *     H5Sselect_elements(space_id, H5S_SELECT_SET,             # <<<<<<<<<<<<<<
20650  *                        <size_t>size, <hsize_t *>coords.data)
20651  *
20652  */
20653   (void)(H5Sselect_elements(__pyx_v_space_id, H5S_SELECT_SET, ((size_t)__pyx_v_size), ((hsize_t *)__pyx_v_coords->data)));
20654 
20655   /* "tables/hdf5extension.pyx":1630
20656  *
20657  *     # Get the pointer to the buffer data area
20658  *     if self.atom.kind == "reference":             # <<<<<<<<<<<<<<
20659  *       refbuf = malloc(nparr.size * item_size)
20660  *       rbuf = refbuf
20661  */
20662   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_atom); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1630, __pyx_L1_error)
20663   __Pyx_GOTREF(__pyx_t_1);
20664   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_kind); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1630, __pyx_L1_error)
20665   __Pyx_GOTREF(__pyx_t_3);
20666   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
20667   __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_t_3, __pyx_n_s_reference, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 1630, __pyx_L1_error)
20668   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
20669   if (__pyx_t_4) {
20670 
20671     /* "tables/hdf5extension.pyx":1631
20672  *     # Get the pointer to the buffer data area
20673  *     if self.atom.kind == "reference":
20674  *       refbuf = malloc(nparr.size * item_size)             # <<<<<<<<<<<<<<
20675  *       rbuf = refbuf
20676  *     else:
20677  */
20678     __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_nparr), __pyx_n_s_size); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1631, __pyx_L1_error)
20679     __Pyx_GOTREF(__pyx_t_3);
20680     __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_item_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1631, __pyx_L1_error)
20681     __Pyx_GOTREF(__pyx_t_1);
20682     __pyx_t_5 = PyNumber_Multiply(__pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1631, __pyx_L1_error)
20683     __Pyx_GOTREF(__pyx_t_5);
20684     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
20685     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
20686     __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_t_5); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1631, __pyx_L1_error)
20687     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
20688     __pyx_v_refbuf = malloc(__pyx_t_6);
20689 
20690     /* "tables/hdf5extension.pyx":1632
20691  *     if self.atom.kind == "reference":
20692  *       refbuf = malloc(nparr.size * item_size)
20693  *       rbuf = refbuf             # <<<<<<<<<<<<<<
20694  *     else:
20695  *       rbuf = nparr.data
20696  */
20697     __pyx_v_rbuf = __pyx_v_refbuf;
20698 
20699     /* "tables/hdf5extension.pyx":1630
20700  *
20701  *     # Get the pointer to the buffer data area
20702  *     if self.atom.kind == "reference":             # <<<<<<<<<<<<<<
20703  *       refbuf = malloc(nparr.size * item_size)
20704  *       rbuf = refbuf
20705  */
20706     goto __pyx_L3;
20707   }
20708 
20709   /* "tables/hdf5extension.pyx":1634
20710  *       rbuf = refbuf
20711  *     else:
20712  *       rbuf = nparr.data             # <<<<<<<<<<<<<<
20713  *
20714  *     # Do the actual read
20715  */
20716   /*else*/ {
20717     __pyx_t_7 = __pyx_v_nparr->data;
20718     __pyx_v_rbuf = __pyx_t_7;
20719   }
20720   __pyx_L3:;
20721 
20722   /* "tables/hdf5extension.pyx":1637
20723  *
20724  *     # Do the actual read
20725  *     with nogil:             # <<<<<<<<<<<<<<
20726  *         ret = H5Dread(self.dataset_id, self.type_id, mem_space_id, space_id,
20727  *                       H5P_DEFAULT, rbuf)
20728  */
20729   {
20730       #ifdef WITH_THREAD
20731       PyThreadState *_save;
20732       Py_UNBLOCK_THREADS
20733       __Pyx_FastGIL_Remember();
20734       #endif
20735       /*try:*/ {
20736 
20737         /* "tables/hdf5extension.pyx":1638
20738  *     # Do the actual read
20739  *     with nogil:
20740  *         ret = H5Dread(self.dataset_id, self.type_id, mem_space_id, space_id,             # <<<<<<<<<<<<<<
20741  *                       H5P_DEFAULT, rbuf)
20742  *
20743  */
20744         __pyx_v_ret = H5Dread(__pyx_v_self->__pyx_base.dataset_id, __pyx_v_self->__pyx_base.type_id, __pyx_v_mem_space_id, __pyx_v_space_id, H5P_DEFAULT, __pyx_v_rbuf);
20745       }
20746 
20747       /* "tables/hdf5extension.pyx":1637
20748  *
20749  *     # Do the actual read
20750  *     with nogil:             # <<<<<<<<<<<<<<
20751  *         ret = H5Dread(self.dataset_id, self.type_id, mem_space_id, space_id,
20752  *                       H5P_DEFAULT, rbuf)
20753  */
20754       /*finally:*/ {
20755         /*normal exit:*/{
20756           #ifdef WITH_THREAD
20757           __Pyx_FastGIL_Forget();
20758           Py_BLOCK_THREADS
20759           #endif
20760           goto __pyx_L6;
20761         }
20762         __pyx_L6:;
20763       }
20764   }
20765 
20766   /* "tables/hdf5extension.pyx":1641
20767  *                       H5P_DEFAULT, rbuf)
20768  *
20769  *     try:             # <<<<<<<<<<<<<<
20770  *       if ret < 0:
20771  *         raise HDF5ExtError("Problems reading the array data.")
20772  */
20773   /*try:*/ {
20774 
20775     /* "tables/hdf5extension.pyx":1642
20776  *
20777  *     try:
20778  *       if ret < 0:             # <<<<<<<<<<<<<<
20779  *         raise HDF5ExtError("Problems reading the array data.")
20780  *
20781  */
20782     __pyx_t_4 = ((__pyx_v_ret < 0) != 0);
20783     if (unlikely(__pyx_t_4)) {
20784 
20785       /* "tables/hdf5extension.pyx":1643
20786  *     try:
20787  *       if ret < 0:
20788  *         raise HDF5ExtError("Problems reading the array data.")             # <<<<<<<<<<<<<<
20789  *
20790  *       # Get the pointer to the buffer data area
20791  */
20792       __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_HDF5ExtError); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1643, __pyx_L8_error)
20793       __Pyx_GOTREF(__pyx_t_1);
20794       __pyx_t_3 = NULL;
20795       if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
20796         __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
20797         if (likely(__pyx_t_3)) {
20798           PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
20799           __Pyx_INCREF(__pyx_t_3);
20800           __Pyx_INCREF(function);
20801           __Pyx_DECREF_SET(__pyx_t_1, function);
20802         }
20803       }
20804       __pyx_t_5 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_3, __pyx_kp_s_Problems_reading_the_array_data) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_kp_s_Problems_reading_the_array_data);
20805       __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
20806       if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1643, __pyx_L8_error)
20807       __Pyx_GOTREF(__pyx_t_5);
20808       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
20809       __Pyx_Raise(__pyx_t_5, 0, 0, 0);
20810       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
20811       __PYX_ERR(0, 1643, __pyx_L8_error)
20812 
20813       /* "tables/hdf5extension.pyx":1642
20814  *
20815  *     try:
20816  *       if ret < 0:             # <<<<<<<<<<<<<<
20817  *         raise HDF5ExtError("Problems reading the array data.")
20818  *
20819  */
20820     }
20821 
20822     /* "tables/hdf5extension.pyx":1646
20823  *
20824  *       # Get the pointer to the buffer data area
20825  *       if self.atom.kind == "reference":             # <<<<<<<<<<<<<<
20826  *         load_reference(self.dataset_id, <hobj_ref_t *>rbuf, item_size, nparr)
20827  *     finally:
20828  */
20829     __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_atom); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1646, __pyx_L8_error)
20830     __Pyx_GOTREF(__pyx_t_5);
20831     __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_kind); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1646, __pyx_L8_error)
20832     __Pyx_GOTREF(__pyx_t_1);
20833     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
20834     __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_reference, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 1646, __pyx_L8_error)
20835     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
20836     if (__pyx_t_4) {
20837 
20838       /* "tables/hdf5extension.pyx":1647
20839  *       # Get the pointer to the buffer data area
20840  *       if self.atom.kind == "reference":
20841  *         load_reference(self.dataset_id, <hobj_ref_t *>rbuf, item_size, nparr)             # <<<<<<<<<<<<<<
20842  *     finally:
20843  *       if refbuf:
20844  */
20845       __pyx_t_8 = __pyx_f_6tables_14utilsextension_load_reference(__pyx_v_self->__pyx_base.dataset_id, ((hobj_ref_t *)__pyx_v_rbuf), __pyx_v_item_size, __pyx_v_nparr); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(0, 1647, __pyx_L8_error)
20846 
20847       /* "tables/hdf5extension.pyx":1646
20848  *
20849  *       # Get the pointer to the buffer data area
20850  *       if self.atom.kind == "reference":             # <<<<<<<<<<<<<<
20851  *         load_reference(self.dataset_id, <hobj_ref_t *>rbuf, item_size, nparr)
20852  *     finally:
20853  */
20854     }
20855   }
20856 
20857   /* "tables/hdf5extension.pyx":1649
20858  *         load_reference(self.dataset_id, <hobj_ref_t *>rbuf, item_size, nparr)
20859  *     finally:
20860  *       if refbuf:             # <<<<<<<<<<<<<<
20861  *         free(refbuf)
20862  *         refbuf = NULL
20863  */
20864   /*finally:*/ {
20865     /*normal exit:*/{
20866       __pyx_t_4 = (__pyx_v_refbuf != 0);
20867       if (__pyx_t_4) {
20868 
20869         /* "tables/hdf5extension.pyx":1650
20870  *     finally:
20871  *       if refbuf:
20872  *         free(refbuf)             # <<<<<<<<<<<<<<
20873  *         refbuf = NULL
20874  *
20875  */
20876         free(__pyx_v_refbuf);
20877 
20878         /* "tables/hdf5extension.pyx":1651
20879  *       if refbuf:
20880  *         free(refbuf)
20881  *         refbuf = NULL             # <<<<<<<<<<<<<<
20882  *
20883  *     # Terminate access to the memory dataspace
20884  */
20885         __pyx_v_refbuf = NULL;
20886 
20887         /* "tables/hdf5extension.pyx":1649
20888  *         load_reference(self.dataset_id, <hobj_ref_t *>rbuf, item_size, nparr)
20889  *     finally:
20890  *       if refbuf:             # <<<<<<<<<<<<<<
20891  *         free(refbuf)
20892  *         refbuf = NULL
20893  */
20894       }
20895       goto __pyx_L9;
20896     }
20897     __pyx_L8_error:;
20898     /*exception exit:*/{
20899       __Pyx_PyThreadState_declare
20900       __Pyx_PyThreadState_assign
20901       __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0;
20902       __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
20903       __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
20904       __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
20905       if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16);
20906       if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13) < 0)) __Pyx_ErrFetch(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13);
20907       __Pyx_XGOTREF(__pyx_t_11);
20908       __Pyx_XGOTREF(__pyx_t_12);
20909       __Pyx_XGOTREF(__pyx_t_13);
20910       __Pyx_XGOTREF(__pyx_t_14);
20911       __Pyx_XGOTREF(__pyx_t_15);
20912       __Pyx_XGOTREF(__pyx_t_16);
20913       __pyx_t_8 = __pyx_lineno; __pyx_t_9 = __pyx_clineno; __pyx_t_10 = __pyx_filename;
20914       {
20915         __pyx_t_4 = (__pyx_v_refbuf != 0);
20916         if (__pyx_t_4) {
20917 
20918           /* "tables/hdf5extension.pyx":1650
20919  *     finally:
20920  *       if refbuf:
20921  *         free(refbuf)             # <<<<<<<<<<<<<<
20922  *         refbuf = NULL
20923  *
20924  */
20925           free(__pyx_v_refbuf);
20926 
20927           /* "tables/hdf5extension.pyx":1651
20928  *       if refbuf:
20929  *         free(refbuf)
20930  *         refbuf = NULL             # <<<<<<<<<<<<<<
20931  *
20932  *     # Terminate access to the memory dataspace
20933  */
20934           __pyx_v_refbuf = NULL;
20935 
20936           /* "tables/hdf5extension.pyx":1649
20937  *         load_reference(self.dataset_id, <hobj_ref_t *>rbuf, item_size, nparr)
20938  *     finally:
20939  *       if refbuf:             # <<<<<<<<<<<<<<
20940  *         free(refbuf)
20941  *         refbuf = NULL
20942  */
20943         }
20944       }
20945       if (PY_MAJOR_VERSION >= 3) {
20946         __Pyx_XGIVEREF(__pyx_t_14);
20947         __Pyx_XGIVEREF(__pyx_t_15);
20948         __Pyx_XGIVEREF(__pyx_t_16);
20949         __Pyx_ExceptionReset(__pyx_t_14, __pyx_t_15, __pyx_t_16);
20950       }
20951       __Pyx_XGIVEREF(__pyx_t_11);
20952       __Pyx_XGIVEREF(__pyx_t_12);
20953       __Pyx_XGIVEREF(__pyx_t_13);
20954       __Pyx_ErrRestore(__pyx_t_11, __pyx_t_12, __pyx_t_13);
20955       __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0;
20956       __pyx_lineno = __pyx_t_8; __pyx_clineno = __pyx_t_9; __pyx_filename = __pyx_t_10;
20957       goto __pyx_L1_error;
20958     }
20959     __pyx_L9:;
20960   }
20961 
20962   /* "tables/hdf5extension.pyx":1654
20963  *
20964  *     # Terminate access to the memory dataspace
20965  *     H5Sclose(mem_space_id)             # <<<<<<<<<<<<<<
20966  *     # Terminate access to the dataspace
20967  *     H5Sclose(space_id)
20968  */
20969   (void)(H5Sclose(__pyx_v_mem_space_id));
20970 
20971   /* "tables/hdf5extension.pyx":1656
20972  *     H5Sclose(mem_space_id)
20973  *     # Terminate access to the dataspace
20974  *     H5Sclose(space_id)             # <<<<<<<<<<<<<<
20975  *
20976  *     if self.atom.kind == 'time':
20977  */
20978   (void)(H5Sclose(__pyx_v_space_id));
20979 
20980   /* "tables/hdf5extension.pyx":1658
20981  *     H5Sclose(space_id)
20982  *
20983  *     if self.atom.kind == 'time':             # <<<<<<<<<<<<<<
20984  *       # Swap the byteorder by hand (this is not currently supported by HDF5)
20985  *       if H5Tget_order(self.type_id) != platform_byteorder:
20986  */
20987   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_atom); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1658, __pyx_L1_error)
20988   __Pyx_GOTREF(__pyx_t_1);
20989   __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_kind); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1658, __pyx_L1_error)
20990   __Pyx_GOTREF(__pyx_t_5);
20991   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
20992   __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_n_s_time, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 1658, __pyx_L1_error)
20993   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
20994   if (__pyx_t_4) {
20995 
20996     /* "tables/hdf5extension.pyx":1660
20997  *     if self.atom.kind == 'time':
20998  *       # Swap the byteorder by hand (this is not currently supported by HDF5)
20999  *       if H5Tget_order(self.type_id) != platform_byteorder:             # <<<<<<<<<<<<<<
21000  *         nparr.byteswap(True)
21001  *
21002  */
21003     __pyx_t_5 = __Pyx_PyInt_From_enum__H5T_order_t(H5Tget_order(__pyx_v_self->__pyx_base.type_id)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1660, __pyx_L1_error)
21004     __Pyx_GOTREF(__pyx_t_5);
21005     __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_platform_byteorder); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1660, __pyx_L1_error)
21006     __Pyx_GOTREF(__pyx_t_1);
21007     __pyx_t_3 = PyObject_RichCompare(__pyx_t_5, __pyx_t_1, Py_NE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1660, __pyx_L1_error)
21008     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
21009     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
21010     __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 1660, __pyx_L1_error)
21011     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
21012     if (__pyx_t_4) {
21013 
21014       /* "tables/hdf5extension.pyx":1661
21015  *       # Swap the byteorder by hand (this is not currently supported by HDF5)
21016  *       if H5Tget_order(self.type_id) != platform_byteorder:
21017  *         nparr.byteswap(True)             # <<<<<<<<<<<<<<
21018  *
21019  *     # Convert some HDF5 types to NumPy after reading
21020  */
21021       __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_nparr), __pyx_n_s_byteswap); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1661, __pyx_L1_error)
21022       __Pyx_GOTREF(__pyx_t_1);
21023       __pyx_t_5 = NULL;
21024       if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
21025         __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
21026         if (likely(__pyx_t_5)) {
21027           PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
21028           __Pyx_INCREF(__pyx_t_5);
21029           __Pyx_INCREF(function);
21030           __Pyx_DECREF_SET(__pyx_t_1, function);
21031         }
21032       }
21033       __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_5, Py_True) : __Pyx_PyObject_CallOneArg(__pyx_t_1, Py_True);
21034       __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
21035       if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1661, __pyx_L1_error)
21036       __Pyx_GOTREF(__pyx_t_3);
21037       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
21038       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
21039 
21040       /* "tables/hdf5extension.pyx":1660
21041  *     if self.atom.kind == 'time':
21042  *       # Swap the byteorder by hand (this is not currently supported by HDF5)
21043  *       if H5Tget_order(self.type_id) != platform_byteorder:             # <<<<<<<<<<<<<<
21044  *         nparr.byteswap(True)
21045  *
21046  */
21047     }
21048 
21049     /* "tables/hdf5extension.pyx":1658
21050  *     H5Sclose(space_id)
21051  *
21052  *     if self.atom.kind == 'time':             # <<<<<<<<<<<<<<
21053  *       # Swap the byteorder by hand (this is not currently supported by HDF5)
21054  *       if H5Tget_order(self.type_id) != platform_byteorder:
21055  */
21056   }
21057 
21058   /* "tables/hdf5extension.pyx":1664
21059  *
21060  *     # Convert some HDF5 types to NumPy after reading
21061  *     if self.atom.type == 'time64':             # <<<<<<<<<<<<<<
21062  *       self._convert_time64(nparr, 1)
21063  *
21064  */
21065   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_atom); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1664, __pyx_L1_error)
21066   __Pyx_GOTREF(__pyx_t_3);
21067   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_type); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1664, __pyx_L1_error)
21068   __Pyx_GOTREF(__pyx_t_1);
21069   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
21070   __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_time64, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 1664, __pyx_L1_error)
21071   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
21072   if (__pyx_t_4) {
21073 
21074     /* "tables/hdf5extension.pyx":1665
21075  *     # Convert some HDF5 types to NumPy after reading
21076  *     if self.atom.type == 'time64':
21077  *       self._convert_time64(nparr, 1)             # <<<<<<<<<<<<<<
21078  *
21079  *     return
21080  */
21081     __pyx_t_1 = ((struct __pyx_vtabstruct_6tables_13hdf5extension_Array *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._convert_time64(((struct __pyx_obj_6tables_13hdf5extension_Leaf *)__pyx_v_self), __pyx_v_nparr, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1665, __pyx_L1_error)
21082     __Pyx_GOTREF(__pyx_t_1);
21083     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
21084 
21085     /* "tables/hdf5extension.pyx":1664
21086  *
21087  *     # Convert some HDF5 types to NumPy after reading
21088  *     if self.atom.type == 'time64':             # <<<<<<<<<<<<<<
21089  *       self._convert_time64(nparr, 1)
21090  *
21091  */
21092   }
21093 
21094   /* "tables/hdf5extension.pyx":1667
21095  *       self._convert_time64(nparr, 1)
21096  *
21097  *     return             # <<<<<<<<<<<<<<
21098  *
21099  *
21100  */
21101   __Pyx_XDECREF(__pyx_r);
21102   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
21103   goto __pyx_L0;
21104 
21105   /* "tables/hdf5extension.pyx":1607
21106  *
21107  *
21108  *   def _g_read_coords(self, ndarray coords, ndarray nparr):             # <<<<<<<<<<<<<<
21109  *     """Read coordinates in an already created NumPy array."""
21110  *
21111  */
21112 
21113   /* function exit code */
21114   __pyx_L1_error:;
21115   __Pyx_XDECREF(__pyx_t_1);
21116   __Pyx_XDECREF(__pyx_t_3);
21117   __Pyx_XDECREF(__pyx_t_5);
21118   __Pyx_AddTraceback("tables.hdf5extension.Array._g_read_coords", __pyx_clineno, __pyx_lineno, __pyx_filename);
21119   __pyx_r = NULL;
21120   __pyx_L0:;
21121   __Pyx_XGIVEREF(__pyx_r);
21122   __Pyx_RefNannyFinishContext();
21123   return __pyx_r;
21124 }
21125 
21126 /* "tables/hdf5extension.pyx":1670
21127  *
21128  *
21129  *   def perform_selection(self, space_id, start, count, step, idx, mode):             # <<<<<<<<<<<<<<
21130  *     """Performs a selection using start/count/step in the given axis.
21131  *
21132  */
21133 
21134 /* Python wrapper */
21135 static PyObject *__pyx_pw_6tables_13hdf5extension_5Array_15perform_selection(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
21136 static char __pyx_doc_6tables_13hdf5extension_5Array_14perform_selection[] = "Performs a selection using start/count/step in the given axis.\n\n    All other axes have their full range selected.  The selection is\n    added to the current `space_id` selection using the given mode.\n\n    Note: This is a backport from the h5py project.\n\n    ";
__pyx_pw_6tables_13hdf5extension_5Array_15perform_selection(PyObject * __pyx_v_self,PyObject * __pyx_args,PyObject * __pyx_kwds)21137 static PyObject *__pyx_pw_6tables_13hdf5extension_5Array_15perform_selection(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
21138   PyObject *__pyx_v_space_id = 0;
21139   PyObject *__pyx_v_start = 0;
21140   PyObject *__pyx_v_count = 0;
21141   PyObject *__pyx_v_step = 0;
21142   PyObject *__pyx_v_idx = 0;
21143   PyObject *__pyx_v_mode = 0;
21144   PyObject *__pyx_r = 0;
21145   __Pyx_RefNannyDeclarations
21146   __Pyx_RefNannySetupContext("perform_selection (wrapper)", 0);
21147   {
21148     static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_space_id,&__pyx_n_s_start,&__pyx_n_s_count,&__pyx_n_s_step,&__pyx_n_s_idx,&__pyx_n_s_mode,0};
21149     PyObject* values[6] = {0,0,0,0,0,0};
21150     if (unlikely(__pyx_kwds)) {
21151       Py_ssize_t kw_args;
21152       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
21153       switch (pos_args) {
21154         case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
21155         CYTHON_FALLTHROUGH;
21156         case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
21157         CYTHON_FALLTHROUGH;
21158         case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
21159         CYTHON_FALLTHROUGH;
21160         case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
21161         CYTHON_FALLTHROUGH;
21162         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
21163         CYTHON_FALLTHROUGH;
21164         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
21165         CYTHON_FALLTHROUGH;
21166         case  0: break;
21167         default: goto __pyx_L5_argtuple_error;
21168       }
21169       kw_args = PyDict_Size(__pyx_kwds);
21170       switch (pos_args) {
21171         case  0:
21172         if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_space_id)) != 0)) kw_args--;
21173         else goto __pyx_L5_argtuple_error;
21174         CYTHON_FALLTHROUGH;
21175         case  1:
21176         if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start)) != 0)) kw_args--;
21177         else {
21178           __Pyx_RaiseArgtupleInvalid("perform_selection", 1, 6, 6, 1); __PYX_ERR(0, 1670, __pyx_L3_error)
21179         }
21180         CYTHON_FALLTHROUGH;
21181         case  2:
21182         if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_count)) != 0)) kw_args--;
21183         else {
21184           __Pyx_RaiseArgtupleInvalid("perform_selection", 1, 6, 6, 2); __PYX_ERR(0, 1670, __pyx_L3_error)
21185         }
21186         CYTHON_FALLTHROUGH;
21187         case  3:
21188         if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_step)) != 0)) kw_args--;
21189         else {
21190           __Pyx_RaiseArgtupleInvalid("perform_selection", 1, 6, 6, 3); __PYX_ERR(0, 1670, __pyx_L3_error)
21191         }
21192         CYTHON_FALLTHROUGH;
21193         case  4:
21194         if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_idx)) != 0)) kw_args--;
21195         else {
21196           __Pyx_RaiseArgtupleInvalid("perform_selection", 1, 6, 6, 4); __PYX_ERR(0, 1670, __pyx_L3_error)
21197         }
21198         CYTHON_FALLTHROUGH;
21199         case  5:
21200         if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_mode)) != 0)) kw_args--;
21201         else {
21202           __Pyx_RaiseArgtupleInvalid("perform_selection", 1, 6, 6, 5); __PYX_ERR(0, 1670, __pyx_L3_error)
21203         }
21204       }
21205       if (unlikely(kw_args > 0)) {
21206         if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "perform_selection") < 0)) __PYX_ERR(0, 1670, __pyx_L3_error)
21207       }
21208     } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
21209       goto __pyx_L5_argtuple_error;
21210     } else {
21211       values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
21212       values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
21213       values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
21214       values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
21215       values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
21216       values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
21217     }
21218     __pyx_v_space_id = values[0];
21219     __pyx_v_start = values[1];
21220     __pyx_v_count = values[2];
21221     __pyx_v_step = values[3];
21222     __pyx_v_idx = values[4];
21223     __pyx_v_mode = values[5];
21224   }
21225   goto __pyx_L4_argument_unpacking_done;
21226   __pyx_L5_argtuple_error:;
21227   __Pyx_RaiseArgtupleInvalid("perform_selection", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1670, __pyx_L3_error)
21228   __pyx_L3_error:;
21229   __Pyx_AddTraceback("tables.hdf5extension.Array.perform_selection", __pyx_clineno, __pyx_lineno, __pyx_filename);
21230   __Pyx_RefNannyFinishContext();
21231   return NULL;
21232   __pyx_L4_argument_unpacking_done:;
21233   __pyx_r = __pyx_pf_6tables_13hdf5extension_5Array_14perform_selection(((struct __pyx_obj_6tables_13hdf5extension_Array *)__pyx_v_self), __pyx_v_space_id, __pyx_v_start, __pyx_v_count, __pyx_v_step, __pyx_v_idx, __pyx_v_mode);
21234 
21235   /* function exit code */
21236   __Pyx_RefNannyFinishContext();
21237   return __pyx_r;
21238 }
21239 
__pyx_pf_6tables_13hdf5extension_5Array_14perform_selection(struct __pyx_obj_6tables_13hdf5extension_Array * __pyx_v_self,PyObject * __pyx_v_space_id,PyObject * __pyx_v_start,PyObject * __pyx_v_count,PyObject * __pyx_v_step,PyObject * __pyx_v_idx,PyObject * __pyx_v_mode)21240 static PyObject *__pyx_pf_6tables_13hdf5extension_5Array_14perform_selection(struct __pyx_obj_6tables_13hdf5extension_Array *__pyx_v_self, PyObject *__pyx_v_space_id, PyObject *__pyx_v_start, PyObject *__pyx_v_count, PyObject *__pyx_v_step, PyObject *__pyx_v_idx, PyObject *__pyx_v_mode) {
21241   int __pyx_v_select_mode;
21242   PyArrayObject *__pyx_v_start_ = 0;
21243   PyArrayObject *__pyx_v_count_ = 0;
21244   PyArrayObject *__pyx_v_step_ = 0;
21245   hsize_t *__pyx_v_startp;
21246   hsize_t *__pyx_v_countp;
21247   hsize_t *__pyx_v_stepp;
21248   PyObject *__pyx_v_startl = NULL;
21249   PyObject *__pyx_v_countl = NULL;
21250   PyObject *__pyx_v_stepl = NULL;
21251   PyObject *__pyx_v_i = NULL;
21252   PyObject *__pyx_v_x = NULL;
21253   PyObject *__pyx_v_select_modes = NULL;
21254   PyObject *__pyx_r = NULL;
21255   __Pyx_RefNannyDeclarations
21256   PyObject *__pyx_t_1 = NULL;
21257   PyObject *__pyx_t_2 = NULL;
21258   PyObject *__pyx_t_3 = NULL;
21259   Py_ssize_t __pyx_t_4;
21260   PyObject *(*__pyx_t_5)(PyObject *);
21261   int __pyx_t_6;
21262   int __pyx_t_7;
21263   PyObject *__pyx_t_8 = NULL;
21264   int __pyx_t_9;
21265   hid_t __pyx_t_10;
21266   __Pyx_RefNannySetupContext("perform_selection", 0);
21267 
21268   /* "tables/hdf5extension.pyx":1687
21269  *
21270  *     # Build arrays for the selection parameters
21271  *     startl, countl, stepl = [], [], []             # <<<<<<<<<<<<<<
21272  *     for i, x in enumerate(self.shape):
21273  *       if i != idx:
21274  */
21275   __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1687, __pyx_L1_error)
21276   __Pyx_GOTREF(__pyx_t_1);
21277   __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1687, __pyx_L1_error)
21278   __Pyx_GOTREF(__pyx_t_2);
21279   __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1687, __pyx_L1_error)
21280   __Pyx_GOTREF(__pyx_t_3);
21281   __pyx_v_startl = ((PyObject*)__pyx_t_1);
21282   __pyx_t_1 = 0;
21283   __pyx_v_countl = ((PyObject*)__pyx_t_2);
21284   __pyx_t_2 = 0;
21285   __pyx_v_stepl = ((PyObject*)__pyx_t_3);
21286   __pyx_t_3 = 0;
21287 
21288   /* "tables/hdf5extension.pyx":1688
21289  *     # Build arrays for the selection parameters
21290  *     startl, countl, stepl = [], [], []
21291  *     for i, x in enumerate(self.shape):             # <<<<<<<<<<<<<<
21292  *       if i != idx:
21293  *         startl.append(0)
21294  */
21295   __Pyx_INCREF(__pyx_int_0);
21296   __pyx_t_3 = __pyx_int_0;
21297   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_shape); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1688, __pyx_L1_error)
21298   __Pyx_GOTREF(__pyx_t_2);
21299   if (likely(PyList_CheckExact(__pyx_t_2)) || PyTuple_CheckExact(__pyx_t_2)) {
21300     __pyx_t_1 = __pyx_t_2; __Pyx_INCREF(__pyx_t_1); __pyx_t_4 = 0;
21301     __pyx_t_5 = NULL;
21302   } else {
21303     __pyx_t_4 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1688, __pyx_L1_error)
21304     __Pyx_GOTREF(__pyx_t_1);
21305     __pyx_t_5 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1688, __pyx_L1_error)
21306   }
21307   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
21308   for (;;) {
21309     if (likely(!__pyx_t_5)) {
21310       if (likely(PyList_CheckExact(__pyx_t_1))) {
21311         if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_1)) break;
21312         #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
21313         __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1688, __pyx_L1_error)
21314         #else
21315         __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1688, __pyx_L1_error)
21316         __Pyx_GOTREF(__pyx_t_2);
21317         #endif
21318       } else {
21319         if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
21320         #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
21321         __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1688, __pyx_L1_error)
21322         #else
21323         __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1688, __pyx_L1_error)
21324         __Pyx_GOTREF(__pyx_t_2);
21325         #endif
21326       }
21327     } else {
21328       __pyx_t_2 = __pyx_t_5(__pyx_t_1);
21329       if (unlikely(!__pyx_t_2)) {
21330         PyObject* exc_type = PyErr_Occurred();
21331         if (exc_type) {
21332           if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
21333           else __PYX_ERR(0, 1688, __pyx_L1_error)
21334         }
21335         break;
21336       }
21337       __Pyx_GOTREF(__pyx_t_2);
21338     }
21339     __Pyx_XDECREF_SET(__pyx_v_x, __pyx_t_2);
21340     __pyx_t_2 = 0;
21341     __Pyx_INCREF(__pyx_t_3);
21342     __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_3);
21343     __pyx_t_2 = __Pyx_PyInt_AddObjC(__pyx_t_3, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1688, __pyx_L1_error)
21344     __Pyx_GOTREF(__pyx_t_2);
21345     __Pyx_DECREF(__pyx_t_3);
21346     __pyx_t_3 = __pyx_t_2;
21347     __pyx_t_2 = 0;
21348 
21349     /* "tables/hdf5extension.pyx":1689
21350  *     startl, countl, stepl = [], [], []
21351  *     for i, x in enumerate(self.shape):
21352  *       if i != idx:             # <<<<<<<<<<<<<<
21353  *         startl.append(0)
21354  *         countl.append(x)
21355  */
21356     __pyx_t_2 = PyObject_RichCompare(__pyx_v_i, __pyx_v_idx, Py_NE); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1689, __pyx_L1_error)
21357     __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 1689, __pyx_L1_error)
21358     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
21359     if (__pyx_t_6) {
21360 
21361       /* "tables/hdf5extension.pyx":1690
21362  *     for i, x in enumerate(self.shape):
21363  *       if i != idx:
21364  *         startl.append(0)             # <<<<<<<<<<<<<<
21365  *         countl.append(x)
21366  *         stepl.append(1)
21367  */
21368       __pyx_t_7 = __Pyx_PyList_Append(__pyx_v_startl, __pyx_int_0); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(0, 1690, __pyx_L1_error)
21369 
21370       /* "tables/hdf5extension.pyx":1691
21371  *       if i != idx:
21372  *         startl.append(0)
21373  *         countl.append(x)             # <<<<<<<<<<<<<<
21374  *         stepl.append(1)
21375  *       else:
21376  */
21377       __pyx_t_7 = __Pyx_PyList_Append(__pyx_v_countl, __pyx_v_x); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(0, 1691, __pyx_L1_error)
21378 
21379       /* "tables/hdf5extension.pyx":1692
21380  *         startl.append(0)
21381  *         countl.append(x)
21382  *         stepl.append(1)             # <<<<<<<<<<<<<<
21383  *       else:
21384  *         startl.append(start)
21385  */
21386       __pyx_t_7 = __Pyx_PyList_Append(__pyx_v_stepl, __pyx_int_1); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(0, 1692, __pyx_L1_error)
21387 
21388       /* "tables/hdf5extension.pyx":1689
21389  *     startl, countl, stepl = [], [], []
21390  *     for i, x in enumerate(self.shape):
21391  *       if i != idx:             # <<<<<<<<<<<<<<
21392  *         startl.append(0)
21393  *         countl.append(x)
21394  */
21395       goto __pyx_L5;
21396     }
21397 
21398     /* "tables/hdf5extension.pyx":1694
21399  *         stepl.append(1)
21400  *       else:
21401  *         startl.append(start)             # <<<<<<<<<<<<<<
21402  *         countl.append(count)
21403  *         stepl.append(step)
21404  */
21405     /*else*/ {
21406       __pyx_t_7 = __Pyx_PyList_Append(__pyx_v_startl, __pyx_v_start); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(0, 1694, __pyx_L1_error)
21407 
21408       /* "tables/hdf5extension.pyx":1695
21409  *       else:
21410  *         startl.append(start)
21411  *         countl.append(count)             # <<<<<<<<<<<<<<
21412  *         stepl.append(step)
21413  *     start_ = numpy.array(startl, dtype="i8")
21414  */
21415       __pyx_t_7 = __Pyx_PyList_Append(__pyx_v_countl, __pyx_v_count); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(0, 1695, __pyx_L1_error)
21416 
21417       /* "tables/hdf5extension.pyx":1696
21418  *         startl.append(start)
21419  *         countl.append(count)
21420  *         stepl.append(step)             # <<<<<<<<<<<<<<
21421  *     start_ = numpy.array(startl, dtype="i8")
21422  *     count_ = numpy.array(countl, dtype="i8")
21423  */
21424       __pyx_t_7 = __Pyx_PyList_Append(__pyx_v_stepl, __pyx_v_step); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(0, 1696, __pyx_L1_error)
21425     }
21426     __pyx_L5:;
21427 
21428     /* "tables/hdf5extension.pyx":1688
21429  *     # Build arrays for the selection parameters
21430  *     startl, countl, stepl = [], [], []
21431  *     for i, x in enumerate(self.shape):             # <<<<<<<<<<<<<<
21432  *       if i != idx:
21433  *         startl.append(0)
21434  */
21435   }
21436   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
21437   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
21438 
21439   /* "tables/hdf5extension.pyx":1697
21440  *         countl.append(count)
21441  *         stepl.append(step)
21442  *     start_ = numpy.array(startl, dtype="i8")             # <<<<<<<<<<<<<<
21443  *     count_ = numpy.array(countl, dtype="i8")
21444  *     step_ = numpy.array(stepl, dtype="i8")
21445  */
21446   __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1697, __pyx_L1_error)
21447   __Pyx_GOTREF(__pyx_t_3);
21448   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_array); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1697, __pyx_L1_error)
21449   __Pyx_GOTREF(__pyx_t_1);
21450   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
21451   __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1697, __pyx_L1_error)
21452   __Pyx_GOTREF(__pyx_t_3);
21453   __Pyx_INCREF(__pyx_v_startl);
21454   __Pyx_GIVEREF(__pyx_v_startl);
21455   PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_startl);
21456   __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1697, __pyx_L1_error)
21457   __Pyx_GOTREF(__pyx_t_2);
21458   if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, __pyx_n_s_i8) < 0) __PYX_ERR(0, 1697, __pyx_L1_error)
21459   __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1697, __pyx_L1_error)
21460   __Pyx_GOTREF(__pyx_t_8);
21461   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
21462   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
21463   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
21464   if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1697, __pyx_L1_error)
21465   __pyx_v_start_ = ((PyArrayObject *)__pyx_t_8);
21466   __pyx_t_8 = 0;
21467 
21468   /* "tables/hdf5extension.pyx":1698
21469  *         stepl.append(step)
21470  *     start_ = numpy.array(startl, dtype="i8")
21471  *     count_ = numpy.array(countl, dtype="i8")             # <<<<<<<<<<<<<<
21472  *     step_ = numpy.array(stepl, dtype="i8")
21473  *
21474  */
21475   __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_numpy); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1698, __pyx_L1_error)
21476   __Pyx_GOTREF(__pyx_t_8);
21477   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_array); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1698, __pyx_L1_error)
21478   __Pyx_GOTREF(__pyx_t_2);
21479   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
21480   __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1698, __pyx_L1_error)
21481   __Pyx_GOTREF(__pyx_t_8);
21482   __Pyx_INCREF(__pyx_v_countl);
21483   __Pyx_GIVEREF(__pyx_v_countl);
21484   PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_countl);
21485   __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1698, __pyx_L1_error)
21486   __Pyx_GOTREF(__pyx_t_3);
21487   if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_n_s_i8) < 0) __PYX_ERR(0, 1698, __pyx_L1_error)
21488   __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_8, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1698, __pyx_L1_error)
21489   __Pyx_GOTREF(__pyx_t_1);
21490   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
21491   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
21492   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
21493   if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1698, __pyx_L1_error)
21494   __pyx_v_count_ = ((PyArrayObject *)__pyx_t_1);
21495   __pyx_t_1 = 0;
21496 
21497   /* "tables/hdf5extension.pyx":1699
21498  *     start_ = numpy.array(startl, dtype="i8")
21499  *     count_ = numpy.array(countl, dtype="i8")
21500  *     step_ = numpy.array(stepl, dtype="i8")             # <<<<<<<<<<<<<<
21501  *
21502  *     # Get the pointers to array data
21503  */
21504   __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1699, __pyx_L1_error)
21505   __Pyx_GOTREF(__pyx_t_1);
21506   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1699, __pyx_L1_error)
21507   __Pyx_GOTREF(__pyx_t_3);
21508   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
21509   __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1699, __pyx_L1_error)
21510   __Pyx_GOTREF(__pyx_t_1);
21511   __Pyx_INCREF(__pyx_v_stepl);
21512   __Pyx_GIVEREF(__pyx_v_stepl);
21513   PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_stepl);
21514   __pyx_t_8 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1699, __pyx_L1_error)
21515   __Pyx_GOTREF(__pyx_t_8);
21516   if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_n_s_i8) < 0) __PYX_ERR(0, 1699, __pyx_L1_error)
21517   __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_1, __pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1699, __pyx_L1_error)
21518   __Pyx_GOTREF(__pyx_t_2);
21519   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
21520   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
21521   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
21522   if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1699, __pyx_L1_error)
21523   __pyx_v_step_ = ((PyArrayObject *)__pyx_t_2);
21524   __pyx_t_2 = 0;
21525 
21526   /* "tables/hdf5extension.pyx":1702
21527  *
21528  *     # Get the pointers to array data
21529  *     startp = <hsize_t *>start_.data             # <<<<<<<<<<<<<<
21530  *     countp = <hsize_t *>count_.data
21531  *     stepp = <hsize_t *>step_.data
21532  */
21533   __pyx_v_startp = ((hsize_t *)__pyx_v_start_->data);
21534 
21535   /* "tables/hdf5extension.pyx":1703
21536  *     # Get the pointers to array data
21537  *     startp = <hsize_t *>start_.data
21538  *     countp = <hsize_t *>count_.data             # <<<<<<<<<<<<<<
21539  *     stepp = <hsize_t *>step_.data
21540  *
21541  */
21542   __pyx_v_countp = ((hsize_t *)__pyx_v_count_->data);
21543 
21544   /* "tables/hdf5extension.pyx":1704
21545  *     startp = <hsize_t *>start_.data
21546  *     countp = <hsize_t *>count_.data
21547  *     stepp = <hsize_t *>step_.data             # <<<<<<<<<<<<<<
21548  *
21549  *     # Do the actual selection
21550  */
21551   __pyx_v_stepp = ((hsize_t *)__pyx_v_step_->data);
21552 
21553   /* "tables/hdf5extension.pyx":1707
21554  *
21555  *     # Do the actual selection
21556  *     select_modes = {"AND": H5S_SELECT_AND, "NOTB": H5S_SELECT_NOTB}             # <<<<<<<<<<<<<<
21557  *     assert mode in select_modes
21558  *     select_mode = select_modes[mode]
21559  */
21560   __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1707, __pyx_L1_error)
21561   __Pyx_GOTREF(__pyx_t_2);
21562   __pyx_t_8 = __Pyx_PyInt_From_enum__H5S_seloper_t(H5S_SELECT_AND); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1707, __pyx_L1_error)
21563   __Pyx_GOTREF(__pyx_t_8);
21564   if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_AND, __pyx_t_8) < 0) __PYX_ERR(0, 1707, __pyx_L1_error)
21565   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
21566   __pyx_t_8 = __Pyx_PyInt_From_enum__H5S_seloper_t(H5S_SELECT_NOTB); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1707, __pyx_L1_error)
21567   __Pyx_GOTREF(__pyx_t_8);
21568   if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_NOTB, __pyx_t_8) < 0) __PYX_ERR(0, 1707, __pyx_L1_error)
21569   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
21570   __pyx_v_select_modes = ((PyObject*)__pyx_t_2);
21571   __pyx_t_2 = 0;
21572 
21573   /* "tables/hdf5extension.pyx":1708
21574  *     # Do the actual selection
21575  *     select_modes = {"AND": H5S_SELECT_AND, "NOTB": H5S_SELECT_NOTB}
21576  *     assert mode in select_modes             # <<<<<<<<<<<<<<
21577  *     select_mode = select_modes[mode]
21578  *     H5Sselect_hyperslab(space_id, <H5S_seloper_t>select_mode,
21579  */
21580   #ifndef CYTHON_WITHOUT_ASSERTIONS
21581   if (unlikely(!Py_OptimizeFlag)) {
21582     __pyx_t_6 = (__Pyx_PyDict_ContainsTF(__pyx_v_mode, __pyx_v_select_modes, Py_EQ)); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 1708, __pyx_L1_error)
21583     if (unlikely(!(__pyx_t_6 != 0))) {
21584       PyErr_SetNone(PyExc_AssertionError);
21585       __PYX_ERR(0, 1708, __pyx_L1_error)
21586     }
21587   }
21588   #endif
21589 
21590   /* "tables/hdf5extension.pyx":1709
21591  *     select_modes = {"AND": H5S_SELECT_AND, "NOTB": H5S_SELECT_NOTB}
21592  *     assert mode in select_modes
21593  *     select_mode = select_modes[mode]             # <<<<<<<<<<<<<<
21594  *     H5Sselect_hyperslab(space_id, <H5S_seloper_t>select_mode,
21595  *                         startp, stepp, countp, NULL)
21596  */
21597   __pyx_t_2 = __Pyx_PyDict_GetItem(__pyx_v_select_modes, __pyx_v_mode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1709, __pyx_L1_error)
21598   __Pyx_GOTREF(__pyx_t_2);
21599   __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1709, __pyx_L1_error)
21600   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
21601   __pyx_v_select_mode = __pyx_t_9;
21602 
21603   /* "tables/hdf5extension.pyx":1710
21604  *     assert mode in select_modes
21605  *     select_mode = select_modes[mode]
21606  *     H5Sselect_hyperslab(space_id, <H5S_seloper_t>select_mode,             # <<<<<<<<<<<<<<
21607  *                         startp, stepp, countp, NULL)
21608  *
21609  */
21610   __pyx_t_10 = __Pyx_PyInt_As_hid_t(__pyx_v_space_id); if (unlikely((__pyx_t_10 == ((hid_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1710, __pyx_L1_error)
21611 
21612   /* "tables/hdf5extension.pyx":1711
21613  *     select_mode = select_modes[mode]
21614  *     H5Sselect_hyperslab(space_id, <H5S_seloper_t>select_mode,
21615  *                         startp, stepp, countp, NULL)             # <<<<<<<<<<<<<<
21616  *
21617  *   def _g_read_selection(self, object selection, ndarray nparr):
21618  */
21619   (void)(H5Sselect_hyperslab(__pyx_t_10, ((enum H5S_seloper_t)__pyx_v_select_mode), __pyx_v_startp, __pyx_v_stepp, __pyx_v_countp, NULL));
21620 
21621   /* "tables/hdf5extension.pyx":1670
21622  *
21623  *
21624  *   def perform_selection(self, space_id, start, count, step, idx, mode):             # <<<<<<<<<<<<<<
21625  *     """Performs a selection using start/count/step in the given axis.
21626  *
21627  */
21628 
21629   /* function exit code */
21630   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
21631   goto __pyx_L0;
21632   __pyx_L1_error:;
21633   __Pyx_XDECREF(__pyx_t_1);
21634   __Pyx_XDECREF(__pyx_t_2);
21635   __Pyx_XDECREF(__pyx_t_3);
21636   __Pyx_XDECREF(__pyx_t_8);
21637   __Pyx_AddTraceback("tables.hdf5extension.Array.perform_selection", __pyx_clineno, __pyx_lineno, __pyx_filename);
21638   __pyx_r = NULL;
21639   __pyx_L0:;
21640   __Pyx_XDECREF((PyObject *)__pyx_v_start_);
21641   __Pyx_XDECREF((PyObject *)__pyx_v_count_);
21642   __Pyx_XDECREF((PyObject *)__pyx_v_step_);
21643   __Pyx_XDECREF(__pyx_v_startl);
21644   __Pyx_XDECREF(__pyx_v_countl);
21645   __Pyx_XDECREF(__pyx_v_stepl);
21646   __Pyx_XDECREF(__pyx_v_i);
21647   __Pyx_XDECREF(__pyx_v_x);
21648   __Pyx_XDECREF(__pyx_v_select_modes);
21649   __Pyx_XGIVEREF(__pyx_r);
21650   __Pyx_RefNannyFinishContext();
21651   return __pyx_r;
21652 }
21653 
21654 /* "tables/hdf5extension.pyx":1713
21655  *                         startp, stepp, countp, NULL)
21656  *
21657  *   def _g_read_selection(self, object selection, ndarray nparr):             # <<<<<<<<<<<<<<
21658  *     """Read a selection in an already created NumPy array."""
21659  *
21660  */
21661 
21662 /* Python wrapper */
21663 static PyObject *__pyx_pw_6tables_13hdf5extension_5Array_17_g_read_selection(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
21664 static char __pyx_doc_6tables_13hdf5extension_5Array_16_g_read_selection[] = "Read a selection in an already created NumPy array.";
__pyx_pw_6tables_13hdf5extension_5Array_17_g_read_selection(PyObject * __pyx_v_self,PyObject * __pyx_args,PyObject * __pyx_kwds)21665 static PyObject *__pyx_pw_6tables_13hdf5extension_5Array_17_g_read_selection(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
21666   PyObject *__pyx_v_selection = 0;
21667   PyArrayObject *__pyx_v_nparr = 0;
21668   PyObject *__pyx_r = 0;
21669   __Pyx_RefNannyDeclarations
21670   __Pyx_RefNannySetupContext("_g_read_selection (wrapper)", 0);
21671   {
21672     static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_selection,&__pyx_n_s_nparr,0};
21673     PyObject* values[2] = {0,0};
21674     if (unlikely(__pyx_kwds)) {
21675       Py_ssize_t kw_args;
21676       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
21677       switch (pos_args) {
21678         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
21679         CYTHON_FALLTHROUGH;
21680         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
21681         CYTHON_FALLTHROUGH;
21682         case  0: break;
21683         default: goto __pyx_L5_argtuple_error;
21684       }
21685       kw_args = PyDict_Size(__pyx_kwds);
21686       switch (pos_args) {
21687         case  0:
21688         if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_selection)) != 0)) kw_args--;
21689         else goto __pyx_L5_argtuple_error;
21690         CYTHON_FALLTHROUGH;
21691         case  1:
21692         if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nparr)) != 0)) kw_args--;
21693         else {
21694           __Pyx_RaiseArgtupleInvalid("_g_read_selection", 1, 2, 2, 1); __PYX_ERR(0, 1713, __pyx_L3_error)
21695         }
21696       }
21697       if (unlikely(kw_args > 0)) {
21698         if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_g_read_selection") < 0)) __PYX_ERR(0, 1713, __pyx_L3_error)
21699       }
21700     } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
21701       goto __pyx_L5_argtuple_error;
21702     } else {
21703       values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
21704       values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
21705     }
21706     __pyx_v_selection = values[0];
21707     __pyx_v_nparr = ((PyArrayObject *)values[1]);
21708   }
21709   goto __pyx_L4_argument_unpacking_done;
21710   __pyx_L5_argtuple_error:;
21711   __Pyx_RaiseArgtupleInvalid("_g_read_selection", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1713, __pyx_L3_error)
21712   __pyx_L3_error:;
21713   __Pyx_AddTraceback("tables.hdf5extension.Array._g_read_selection", __pyx_clineno, __pyx_lineno, __pyx_filename);
21714   __Pyx_RefNannyFinishContext();
21715   return NULL;
21716   __pyx_L4_argument_unpacking_done:;
21717   if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_nparr), __pyx_ptype_5numpy_ndarray, 1, "nparr", 0))) __PYX_ERR(0, 1713, __pyx_L1_error)
21718   __pyx_r = __pyx_pf_6tables_13hdf5extension_5Array_16_g_read_selection(((struct __pyx_obj_6tables_13hdf5extension_Array *)__pyx_v_self), __pyx_v_selection, __pyx_v_nparr);
21719 
21720   /* function exit code */
21721   goto __pyx_L0;
21722   __pyx_L1_error:;
21723   __pyx_r = NULL;
21724   __pyx_L0:;
21725   __Pyx_RefNannyFinishContext();
21726   return __pyx_r;
21727 }
21728 
__pyx_pf_6tables_13hdf5extension_5Array_16_g_read_selection(struct __pyx_obj_6tables_13hdf5extension_Array * __pyx_v_self,PyObject * __pyx_v_selection,PyArrayObject * __pyx_v_nparr)21729 static PyObject *__pyx_pf_6tables_13hdf5extension_5Array_16_g_read_selection(struct __pyx_obj_6tables_13hdf5extension_Array *__pyx_v_self, PyObject *__pyx_v_selection, PyArrayObject *__pyx_v_nparr) {
21730   herr_t __pyx_v_ret;
21731   hid_t __pyx_v_space_id;
21732   hid_t __pyx_v_mem_space_id;
21733   hsize_t __pyx_v_size;
21734   void *__pyx_v_rbuf;
21735   size_t __pyx_v_item_size;
21736   void *__pyx_v_refbuf;
21737   PyObject *__pyx_v_args = NULL;
21738   PyObject *__pyx_r = NULL;
21739   __Pyx_RefNannyDeclarations
21740   PyObject *__pyx_t_1 = NULL;
21741   hsize_t __pyx_t_2;
21742   Py_ssize_t __pyx_t_3;
21743   PyObject *(*__pyx_t_4)(PyObject *);
21744   PyObject *__pyx_t_5 = NULL;
21745   PyObject *__pyx_t_6 = NULL;
21746   PyObject *__pyx_t_7 = NULL;
21747   PyObject *__pyx_t_8 = NULL;
21748   int __pyx_t_9;
21749   size_t __pyx_t_10;
21750   char *__pyx_t_11;
21751   int __pyx_t_12;
21752   int __pyx_t_13;
21753   char const *__pyx_t_14;
21754   PyObject *__pyx_t_15 = NULL;
21755   PyObject *__pyx_t_16 = NULL;
21756   PyObject *__pyx_t_17 = NULL;
21757   PyObject *__pyx_t_18 = NULL;
21758   PyObject *__pyx_t_19 = NULL;
21759   PyObject *__pyx_t_20 = NULL;
21760   __Pyx_RefNannySetupContext("_g_read_selection", 0);
21761 
21762   /* "tables/hdf5extension.pyx":1722
21763  *     cdef void *rbuf
21764  *     cdef object mode
21765  *     cdef size_t item_size = H5Tget_size(self.type_id)             # <<<<<<<<<<<<<<
21766  *     cdef void * refbuf = NULL
21767  *
21768  */
21769   __pyx_v_item_size = H5Tget_size(__pyx_v_self->__pyx_base.type_id);
21770 
21771   /* "tables/hdf5extension.pyx":1723
21772  *     cdef object mode
21773  *     cdef size_t item_size = H5Tget_size(self.type_id)
21774  *     cdef void * refbuf = NULL             # <<<<<<<<<<<<<<
21775  *
21776  *     # Get the dataspace handle
21777  */
21778   __pyx_v_refbuf = NULL;
21779 
21780   /* "tables/hdf5extension.pyx":1726
21781  *
21782  *     # Get the dataspace handle
21783  *     space_id = H5Dget_space(self.dataset_id)             # <<<<<<<<<<<<<<
21784  *     # Create a memory dataspace handle
21785  *     size = nparr.size
21786  */
21787   __pyx_v_space_id = H5Dget_space(__pyx_v_self->__pyx_base.dataset_id);
21788 
21789   /* "tables/hdf5extension.pyx":1728
21790  *     space_id = H5Dget_space(self.dataset_id)
21791  *     # Create a memory dataspace handle
21792  *     size = nparr.size             # <<<<<<<<<<<<<<
21793  *     mem_space_id = H5Screate_simple(1, &size, NULL)
21794  *
21795  */
21796   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_nparr), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1728, __pyx_L1_error)
21797   __Pyx_GOTREF(__pyx_t_1);
21798   __pyx_t_2 = __Pyx_PyInt_As_hsize_t(__pyx_t_1); if (unlikely((__pyx_t_2 == ((hsize_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1728, __pyx_L1_error)
21799   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
21800   __pyx_v_size = __pyx_t_2;
21801 
21802   /* "tables/hdf5extension.pyx":1729
21803  *     # Create a memory dataspace handle
21804  *     size = nparr.size
21805  *     mem_space_id = H5Screate_simple(1, &size, NULL)             # <<<<<<<<<<<<<<
21806  *
21807  *     # Select the dataspace to be read
21808  */
21809   __pyx_v_mem_space_id = H5Screate_simple(1, (&__pyx_v_size), NULL);
21810 
21811   /* "tables/hdf5extension.pyx":1733
21812  *     # Select the dataspace to be read
21813  *     # Start by selecting everything
21814  *     H5Sselect_all(space_id)             # <<<<<<<<<<<<<<
21815  *     # Now refine with outstanding selections
21816  *     for args in selection:
21817  */
21818   (void)(H5Sselect_all(__pyx_v_space_id));
21819 
21820   /* "tables/hdf5extension.pyx":1735
21821  *     H5Sselect_all(space_id)
21822  *     # Now refine with outstanding selections
21823  *     for args in selection:             # <<<<<<<<<<<<<<
21824  *       self.perform_selection(space_id, *args)
21825  *
21826  */
21827   if (likely(PyList_CheckExact(__pyx_v_selection)) || PyTuple_CheckExact(__pyx_v_selection)) {
21828     __pyx_t_1 = __pyx_v_selection; __Pyx_INCREF(__pyx_t_1); __pyx_t_3 = 0;
21829     __pyx_t_4 = NULL;
21830   } else {
21831     __pyx_t_3 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_selection); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1735, __pyx_L1_error)
21832     __Pyx_GOTREF(__pyx_t_1);
21833     __pyx_t_4 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1735, __pyx_L1_error)
21834   }
21835   for (;;) {
21836     if (likely(!__pyx_t_4)) {
21837       if (likely(PyList_CheckExact(__pyx_t_1))) {
21838         if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_1)) break;
21839         #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
21840         __pyx_t_5 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 1735, __pyx_L1_error)
21841         #else
21842         __pyx_t_5 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1735, __pyx_L1_error)
21843         __Pyx_GOTREF(__pyx_t_5);
21844         #endif
21845       } else {
21846         if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
21847         #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
21848         __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 1735, __pyx_L1_error)
21849         #else
21850         __pyx_t_5 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1735, __pyx_L1_error)
21851         __Pyx_GOTREF(__pyx_t_5);
21852         #endif
21853       }
21854     } else {
21855       __pyx_t_5 = __pyx_t_4(__pyx_t_1);
21856       if (unlikely(!__pyx_t_5)) {
21857         PyObject* exc_type = PyErr_Occurred();
21858         if (exc_type) {
21859           if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
21860           else __PYX_ERR(0, 1735, __pyx_L1_error)
21861         }
21862         break;
21863       }
21864       __Pyx_GOTREF(__pyx_t_5);
21865     }
21866     __Pyx_XDECREF_SET(__pyx_v_args, __pyx_t_5);
21867     __pyx_t_5 = 0;
21868 
21869     /* "tables/hdf5extension.pyx":1736
21870  *     # Now refine with outstanding selections
21871  *     for args in selection:
21872  *       self.perform_selection(space_id, *args)             # <<<<<<<<<<<<<<
21873  *
21874  *     # Get the pointer to the buffer data area
21875  */
21876     __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_perform_selection); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1736, __pyx_L1_error)
21877     __Pyx_GOTREF(__pyx_t_5);
21878     __pyx_t_6 = __Pyx_PyInt_From_hid_t(__pyx_v_space_id); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1736, __pyx_L1_error)
21879     __Pyx_GOTREF(__pyx_t_6);
21880     __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1736, __pyx_L1_error)
21881     __Pyx_GOTREF(__pyx_t_7);
21882     __Pyx_GIVEREF(__pyx_t_6);
21883     PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6);
21884     __pyx_t_6 = 0;
21885     __pyx_t_6 = __Pyx_PySequence_Tuple(__pyx_v_args); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1736, __pyx_L1_error)
21886     __Pyx_GOTREF(__pyx_t_6);
21887     __pyx_t_8 = PyNumber_Add(__pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1736, __pyx_L1_error)
21888     __Pyx_GOTREF(__pyx_t_8);
21889     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
21890     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
21891     __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_8, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1736, __pyx_L1_error)
21892     __Pyx_GOTREF(__pyx_t_6);
21893     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
21894     __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
21895     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
21896 
21897     /* "tables/hdf5extension.pyx":1735
21898  *     H5Sselect_all(space_id)
21899  *     # Now refine with outstanding selections
21900  *     for args in selection:             # <<<<<<<<<<<<<<
21901  *       self.perform_selection(space_id, *args)
21902  *
21903  */
21904   }
21905   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
21906 
21907   /* "tables/hdf5extension.pyx":1739
21908  *
21909  *     # Get the pointer to the buffer data area
21910  *     if self.atom.kind == "reference":             # <<<<<<<<<<<<<<
21911  *       refbuf = malloc(nparr.size * item_size)
21912  *       rbuf = refbuf
21913  */
21914   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_atom); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1739, __pyx_L1_error)
21915   __Pyx_GOTREF(__pyx_t_1);
21916   __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_kind); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1739, __pyx_L1_error)
21917   __Pyx_GOTREF(__pyx_t_6);
21918   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
21919   __pyx_t_9 = (__Pyx_PyString_Equals(__pyx_t_6, __pyx_n_s_reference, Py_EQ)); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 1739, __pyx_L1_error)
21920   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
21921   if (__pyx_t_9) {
21922 
21923     /* "tables/hdf5extension.pyx":1740
21924  *     # Get the pointer to the buffer data area
21925  *     if self.atom.kind == "reference":
21926  *       refbuf = malloc(nparr.size * item_size)             # <<<<<<<<<<<<<<
21927  *       rbuf = refbuf
21928  *     else:
21929  */
21930     __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_nparr), __pyx_n_s_size); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1740, __pyx_L1_error)
21931     __Pyx_GOTREF(__pyx_t_6);
21932     __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_item_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1740, __pyx_L1_error)
21933     __Pyx_GOTREF(__pyx_t_1);
21934     __pyx_t_8 = PyNumber_Multiply(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1740, __pyx_L1_error)
21935     __Pyx_GOTREF(__pyx_t_8);
21936     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
21937     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
21938     __pyx_t_10 = __Pyx_PyInt_As_size_t(__pyx_t_8); if (unlikely((__pyx_t_10 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1740, __pyx_L1_error)
21939     __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
21940     __pyx_v_refbuf = malloc(__pyx_t_10);
21941 
21942     /* "tables/hdf5extension.pyx":1741
21943  *     if self.atom.kind == "reference":
21944  *       refbuf = malloc(nparr.size * item_size)
21945  *       rbuf = refbuf             # <<<<<<<<<<<<<<
21946  *     else:
21947  *       rbuf = nparr.data
21948  */
21949     __pyx_v_rbuf = __pyx_v_refbuf;
21950 
21951     /* "tables/hdf5extension.pyx":1739
21952  *
21953  *     # Get the pointer to the buffer data area
21954  *     if self.atom.kind == "reference":             # <<<<<<<<<<<<<<
21955  *       refbuf = malloc(nparr.size * item_size)
21956  *       rbuf = refbuf
21957  */
21958     goto __pyx_L5;
21959   }
21960 
21961   /* "tables/hdf5extension.pyx":1743
21962  *       rbuf = refbuf
21963  *     else:
21964  *       rbuf = nparr.data             # <<<<<<<<<<<<<<
21965  *
21966  *     # Do the actual read
21967  */
21968   /*else*/ {
21969     __pyx_t_11 = __pyx_v_nparr->data;
21970     __pyx_v_rbuf = __pyx_t_11;
21971   }
21972   __pyx_L5:;
21973 
21974   /* "tables/hdf5extension.pyx":1746
21975  *
21976  *     # Do the actual read
21977  *     with nogil:             # <<<<<<<<<<<<<<
21978  *         ret = H5Dread(self.dataset_id, self.type_id, mem_space_id, space_id,
21979  *                       H5P_DEFAULT, rbuf)
21980  */
21981   {
21982       #ifdef WITH_THREAD
21983       PyThreadState *_save;
21984       Py_UNBLOCK_THREADS
21985       __Pyx_FastGIL_Remember();
21986       #endif
21987       /*try:*/ {
21988 
21989         /* "tables/hdf5extension.pyx":1747
21990  *     # Do the actual read
21991  *     with nogil:
21992  *         ret = H5Dread(self.dataset_id, self.type_id, mem_space_id, space_id,             # <<<<<<<<<<<<<<
21993  *                       H5P_DEFAULT, rbuf)
21994  *
21995  */
21996         __pyx_v_ret = H5Dread(__pyx_v_self->__pyx_base.dataset_id, __pyx_v_self->__pyx_base.type_id, __pyx_v_mem_space_id, __pyx_v_space_id, H5P_DEFAULT, __pyx_v_rbuf);
21997       }
21998 
21999       /* "tables/hdf5extension.pyx":1746
22000  *
22001  *     # Do the actual read
22002  *     with nogil:             # <<<<<<<<<<<<<<
22003  *         ret = H5Dread(self.dataset_id, self.type_id, mem_space_id, space_id,
22004  *                       H5P_DEFAULT, rbuf)
22005  */
22006       /*finally:*/ {
22007         /*normal exit:*/{
22008           #ifdef WITH_THREAD
22009           __Pyx_FastGIL_Forget();
22010           Py_BLOCK_THREADS
22011           #endif
22012           goto __pyx_L8;
22013         }
22014         __pyx_L8:;
22015       }
22016   }
22017 
22018   /* "tables/hdf5extension.pyx":1750
22019  *                       H5P_DEFAULT, rbuf)
22020  *
22021  *     try:             # <<<<<<<<<<<<<<
22022  *       if ret < 0:
22023  *         raise HDF5ExtError("Problems reading the array data.")
22024  */
22025   /*try:*/ {
22026 
22027     /* "tables/hdf5extension.pyx":1751
22028  *
22029  *     try:
22030  *       if ret < 0:             # <<<<<<<<<<<<<<
22031  *         raise HDF5ExtError("Problems reading the array data.")
22032  *
22033  */
22034     __pyx_t_9 = ((__pyx_v_ret < 0) != 0);
22035     if (unlikely(__pyx_t_9)) {
22036 
22037       /* "tables/hdf5extension.pyx":1752
22038  *     try:
22039  *       if ret < 0:
22040  *         raise HDF5ExtError("Problems reading the array data.")             # <<<<<<<<<<<<<<
22041  *
22042  *       # Get the pointer to the buffer data area
22043  */
22044       __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_HDF5ExtError); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1752, __pyx_L10_error)
22045       __Pyx_GOTREF(__pyx_t_1);
22046       __pyx_t_6 = NULL;
22047       if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
22048         __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1);
22049         if (likely(__pyx_t_6)) {
22050           PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
22051           __Pyx_INCREF(__pyx_t_6);
22052           __Pyx_INCREF(function);
22053           __Pyx_DECREF_SET(__pyx_t_1, function);
22054         }
22055       }
22056       __pyx_t_8 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_6, __pyx_kp_s_Problems_reading_the_array_data) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_kp_s_Problems_reading_the_array_data);
22057       __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
22058       if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1752, __pyx_L10_error)
22059       __Pyx_GOTREF(__pyx_t_8);
22060       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
22061       __Pyx_Raise(__pyx_t_8, 0, 0, 0);
22062       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
22063       __PYX_ERR(0, 1752, __pyx_L10_error)
22064 
22065       /* "tables/hdf5extension.pyx":1751
22066  *
22067  *     try:
22068  *       if ret < 0:             # <<<<<<<<<<<<<<
22069  *         raise HDF5ExtError("Problems reading the array data.")
22070  *
22071  */
22072     }
22073 
22074     /* "tables/hdf5extension.pyx":1755
22075  *
22076  *       # Get the pointer to the buffer data area
22077  *       if self.atom.kind == "reference":             # <<<<<<<<<<<<<<
22078  *         load_reference(self.dataset_id, <hobj_ref_t *>rbuf, item_size, nparr)
22079  *     finally:
22080  */
22081     __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_atom); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1755, __pyx_L10_error)
22082     __Pyx_GOTREF(__pyx_t_8);
22083     __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_kind); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1755, __pyx_L10_error)
22084     __Pyx_GOTREF(__pyx_t_1);
22085     __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
22086     __pyx_t_9 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_reference, Py_EQ)); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 1755, __pyx_L10_error)
22087     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
22088     if (__pyx_t_9) {
22089 
22090       /* "tables/hdf5extension.pyx":1756
22091  *       # Get the pointer to the buffer data area
22092  *       if self.atom.kind == "reference":
22093  *         load_reference(self.dataset_id, <hobj_ref_t *>rbuf, item_size, nparr)             # <<<<<<<<<<<<<<
22094  *     finally:
22095  *       if refbuf:
22096  */
22097       __pyx_t_12 = __pyx_f_6tables_14utilsextension_load_reference(__pyx_v_self->__pyx_base.dataset_id, ((hobj_ref_t *)__pyx_v_rbuf), __pyx_v_item_size, __pyx_v_nparr); if (unlikely(__pyx_t_12 == ((int)-1))) __PYX_ERR(0, 1756, __pyx_L10_error)
22098 
22099       /* "tables/hdf5extension.pyx":1755
22100  *
22101  *       # Get the pointer to the buffer data area
22102  *       if self.atom.kind == "reference":             # <<<<<<<<<<<<<<
22103  *         load_reference(self.dataset_id, <hobj_ref_t *>rbuf, item_size, nparr)
22104  *     finally:
22105  */
22106     }
22107   }
22108 
22109   /* "tables/hdf5extension.pyx":1758
22110  *         load_reference(self.dataset_id, <hobj_ref_t *>rbuf, item_size, nparr)
22111  *     finally:
22112  *       if refbuf:             # <<<<<<<<<<<<<<
22113  *         free(refbuf)
22114  *         refbuf = NULL
22115  */
22116   /*finally:*/ {
22117     /*normal exit:*/{
22118       __pyx_t_9 = (__pyx_v_refbuf != 0);
22119       if (__pyx_t_9) {
22120 
22121         /* "tables/hdf5extension.pyx":1759
22122  *     finally:
22123  *       if refbuf:
22124  *         free(refbuf)             # <<<<<<<<<<<<<<
22125  *         refbuf = NULL
22126  *
22127  */
22128         free(__pyx_v_refbuf);
22129 
22130         /* "tables/hdf5extension.pyx":1760
22131  *       if refbuf:
22132  *         free(refbuf)
22133  *         refbuf = NULL             # <<<<<<<<<<<<<<
22134  *
22135  *     # Terminate access to the memory dataspace
22136  */
22137         __pyx_v_refbuf = NULL;
22138 
22139         /* "tables/hdf5extension.pyx":1758
22140  *         load_reference(self.dataset_id, <hobj_ref_t *>rbuf, item_size, nparr)
22141  *     finally:
22142  *       if refbuf:             # <<<<<<<<<<<<<<
22143  *         free(refbuf)
22144  *         refbuf = NULL
22145  */
22146       }
22147       goto __pyx_L11;
22148     }
22149     __pyx_L10_error:;
22150     /*exception exit:*/{
22151       __Pyx_PyThreadState_declare
22152       __Pyx_PyThreadState_assign
22153       __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0;
22154       __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
22155       __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
22156       __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
22157       __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
22158       __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
22159       if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_18, &__pyx_t_19, &__pyx_t_20);
22160       if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17) < 0)) __Pyx_ErrFetch(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17);
22161       __Pyx_XGOTREF(__pyx_t_15);
22162       __Pyx_XGOTREF(__pyx_t_16);
22163       __Pyx_XGOTREF(__pyx_t_17);
22164       __Pyx_XGOTREF(__pyx_t_18);
22165       __Pyx_XGOTREF(__pyx_t_19);
22166       __Pyx_XGOTREF(__pyx_t_20);
22167       __pyx_t_12 = __pyx_lineno; __pyx_t_13 = __pyx_clineno; __pyx_t_14 = __pyx_filename;
22168       {
22169         __pyx_t_9 = (__pyx_v_refbuf != 0);
22170         if (__pyx_t_9) {
22171 
22172           /* "tables/hdf5extension.pyx":1759
22173  *     finally:
22174  *       if refbuf:
22175  *         free(refbuf)             # <<<<<<<<<<<<<<
22176  *         refbuf = NULL
22177  *
22178  */
22179           free(__pyx_v_refbuf);
22180 
22181           /* "tables/hdf5extension.pyx":1760
22182  *       if refbuf:
22183  *         free(refbuf)
22184  *         refbuf = NULL             # <<<<<<<<<<<<<<
22185  *
22186  *     # Terminate access to the memory dataspace
22187  */
22188           __pyx_v_refbuf = NULL;
22189 
22190           /* "tables/hdf5extension.pyx":1758
22191  *         load_reference(self.dataset_id, <hobj_ref_t *>rbuf, item_size, nparr)
22192  *     finally:
22193  *       if refbuf:             # <<<<<<<<<<<<<<
22194  *         free(refbuf)
22195  *         refbuf = NULL
22196  */
22197         }
22198       }
22199       if (PY_MAJOR_VERSION >= 3) {
22200         __Pyx_XGIVEREF(__pyx_t_18);
22201         __Pyx_XGIVEREF(__pyx_t_19);
22202         __Pyx_XGIVEREF(__pyx_t_20);
22203         __Pyx_ExceptionReset(__pyx_t_18, __pyx_t_19, __pyx_t_20);
22204       }
22205       __Pyx_XGIVEREF(__pyx_t_15);
22206       __Pyx_XGIVEREF(__pyx_t_16);
22207       __Pyx_XGIVEREF(__pyx_t_17);
22208       __Pyx_ErrRestore(__pyx_t_15, __pyx_t_16, __pyx_t_17);
22209       __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0;
22210       __pyx_lineno = __pyx_t_12; __pyx_clineno = __pyx_t_13; __pyx_filename = __pyx_t_14;
22211       goto __pyx_L1_error;
22212     }
22213     __pyx_L11:;
22214   }
22215 
22216   /* "tables/hdf5extension.pyx":1763
22217  *
22218  *     # Terminate access to the memory dataspace
22219  *     H5Sclose(mem_space_id)             # <<<<<<<<<<<<<<
22220  *     # Terminate access to the dataspace
22221  *     H5Sclose(space_id)
22222  */
22223   (void)(H5Sclose(__pyx_v_mem_space_id));
22224 
22225   /* "tables/hdf5extension.pyx":1765
22226  *     H5Sclose(mem_space_id)
22227  *     # Terminate access to the dataspace
22228  *     H5Sclose(space_id)             # <<<<<<<<<<<<<<
22229  *
22230  *     if self.atom.kind == 'time':
22231  */
22232   (void)(H5Sclose(__pyx_v_space_id));
22233 
22234   /* "tables/hdf5extension.pyx":1767
22235  *     H5Sclose(space_id)
22236  *
22237  *     if self.atom.kind == 'time':             # <<<<<<<<<<<<<<
22238  *       # Swap the byteorder by hand (this is not currently supported by HDF5)
22239  *       if H5Tget_order(self.type_id) != platform_byteorder:
22240  */
22241   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_atom); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1767, __pyx_L1_error)
22242   __Pyx_GOTREF(__pyx_t_1);
22243   __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_kind); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1767, __pyx_L1_error)
22244   __Pyx_GOTREF(__pyx_t_8);
22245   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
22246   __pyx_t_9 = (__Pyx_PyString_Equals(__pyx_t_8, __pyx_n_s_time, Py_EQ)); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 1767, __pyx_L1_error)
22247   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
22248   if (__pyx_t_9) {
22249 
22250     /* "tables/hdf5extension.pyx":1769
22251  *     if self.atom.kind == 'time':
22252  *       # Swap the byteorder by hand (this is not currently supported by HDF5)
22253  *       if H5Tget_order(self.type_id) != platform_byteorder:             # <<<<<<<<<<<<<<
22254  *         nparr.byteswap(True)
22255  *
22256  */
22257     __pyx_t_8 = __Pyx_PyInt_From_enum__H5T_order_t(H5Tget_order(__pyx_v_self->__pyx_base.type_id)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1769, __pyx_L1_error)
22258     __Pyx_GOTREF(__pyx_t_8);
22259     __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_platform_byteorder); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1769, __pyx_L1_error)
22260     __Pyx_GOTREF(__pyx_t_1);
22261     __pyx_t_6 = PyObject_RichCompare(__pyx_t_8, __pyx_t_1, Py_NE); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1769, __pyx_L1_error)
22262     __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
22263     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
22264     __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 1769, __pyx_L1_error)
22265     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
22266     if (__pyx_t_9) {
22267 
22268       /* "tables/hdf5extension.pyx":1770
22269  *       # Swap the byteorder by hand (this is not currently supported by HDF5)
22270  *       if H5Tget_order(self.type_id) != platform_byteorder:
22271  *         nparr.byteswap(True)             # <<<<<<<<<<<<<<
22272  *
22273  *     # Convert some HDF5 types to NumPy after reading
22274  */
22275       __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_nparr), __pyx_n_s_byteswap); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1770, __pyx_L1_error)
22276       __Pyx_GOTREF(__pyx_t_1);
22277       __pyx_t_8 = NULL;
22278       if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
22279         __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_1);
22280         if (likely(__pyx_t_8)) {
22281           PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
22282           __Pyx_INCREF(__pyx_t_8);
22283           __Pyx_INCREF(function);
22284           __Pyx_DECREF_SET(__pyx_t_1, function);
22285         }
22286       }
22287       __pyx_t_6 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_8, Py_True) : __Pyx_PyObject_CallOneArg(__pyx_t_1, Py_True);
22288       __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
22289       if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1770, __pyx_L1_error)
22290       __Pyx_GOTREF(__pyx_t_6);
22291       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
22292       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
22293 
22294       /* "tables/hdf5extension.pyx":1769
22295  *     if self.atom.kind == 'time':
22296  *       # Swap the byteorder by hand (this is not currently supported by HDF5)
22297  *       if H5Tget_order(self.type_id) != platform_byteorder:             # <<<<<<<<<<<<<<
22298  *         nparr.byteswap(True)
22299  *
22300  */
22301     }
22302 
22303     /* "tables/hdf5extension.pyx":1767
22304  *     H5Sclose(space_id)
22305  *
22306  *     if self.atom.kind == 'time':             # <<<<<<<<<<<<<<
22307  *       # Swap the byteorder by hand (this is not currently supported by HDF5)
22308  *       if H5Tget_order(self.type_id) != platform_byteorder:
22309  */
22310   }
22311 
22312   /* "tables/hdf5extension.pyx":1773
22313  *
22314  *     # Convert some HDF5 types to NumPy after reading
22315  *     if self.atom.type == 'time64':             # <<<<<<<<<<<<<<
22316  *       self._convert_time64(nparr, 1)
22317  *
22318  */
22319   __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_atom); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1773, __pyx_L1_error)
22320   __Pyx_GOTREF(__pyx_t_6);
22321   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_type); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1773, __pyx_L1_error)
22322   __Pyx_GOTREF(__pyx_t_1);
22323   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
22324   __pyx_t_9 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_time64, Py_EQ)); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 1773, __pyx_L1_error)
22325   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
22326   if (__pyx_t_9) {
22327 
22328     /* "tables/hdf5extension.pyx":1774
22329  *     # Convert some HDF5 types to NumPy after reading
22330  *     if self.atom.type == 'time64':
22331  *       self._convert_time64(nparr, 1)             # <<<<<<<<<<<<<<
22332  *
22333  *     return
22334  */
22335     __pyx_t_1 = ((struct __pyx_vtabstruct_6tables_13hdf5extension_Array *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._convert_time64(((struct __pyx_obj_6tables_13hdf5extension_Leaf *)__pyx_v_self), __pyx_v_nparr, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1774, __pyx_L1_error)
22336     __Pyx_GOTREF(__pyx_t_1);
22337     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
22338 
22339     /* "tables/hdf5extension.pyx":1773
22340  *
22341  *     # Convert some HDF5 types to NumPy after reading
22342  *     if self.atom.type == 'time64':             # <<<<<<<<<<<<<<
22343  *       self._convert_time64(nparr, 1)
22344  *
22345  */
22346   }
22347 
22348   /* "tables/hdf5extension.pyx":1776
22349  *       self._convert_time64(nparr, 1)
22350  *
22351  *     return             # <<<<<<<<<<<<<<
22352  *
22353  *
22354  */
22355   __Pyx_XDECREF(__pyx_r);
22356   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
22357   goto __pyx_L0;
22358 
22359   /* "tables/hdf5extension.pyx":1713
22360  *                         startp, stepp, countp, NULL)
22361  *
22362  *   def _g_read_selection(self, object selection, ndarray nparr):             # <<<<<<<<<<<<<<
22363  *     """Read a selection in an already created NumPy array."""
22364  *
22365  */
22366 
22367   /* function exit code */
22368   __pyx_L1_error:;
22369   __Pyx_XDECREF(__pyx_t_1);
22370   __Pyx_XDECREF(__pyx_t_5);
22371   __Pyx_XDECREF(__pyx_t_6);
22372   __Pyx_XDECREF(__pyx_t_7);
22373   __Pyx_XDECREF(__pyx_t_8);
22374   __Pyx_AddTraceback("tables.hdf5extension.Array._g_read_selection", __pyx_clineno, __pyx_lineno, __pyx_filename);
22375   __pyx_r = NULL;
22376   __pyx_L0:;
22377   __Pyx_XDECREF(__pyx_v_args);
22378   __Pyx_XGIVEREF(__pyx_r);
22379   __Pyx_RefNannyFinishContext();
22380   return __pyx_r;
22381 }
22382 
22383 /* "tables/hdf5extension.pyx":1779
22384  *
22385  *
22386  *   def _g_write_slice(self, ndarray startl, ndarray stepl, ndarray countl,             # <<<<<<<<<<<<<<
22387  *                     ndarray nparr):
22388  *     """Write a slice in an already created NumPy array."""
22389  */
22390 
22391 /* Python wrapper */
22392 static PyObject *__pyx_pw_6tables_13hdf5extension_5Array_19_g_write_slice(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
22393 static char __pyx_doc_6tables_13hdf5extension_5Array_18_g_write_slice[] = "Write a slice in an already created NumPy array.";
__pyx_pw_6tables_13hdf5extension_5Array_19_g_write_slice(PyObject * __pyx_v_self,PyObject * __pyx_args,PyObject * __pyx_kwds)22394 static PyObject *__pyx_pw_6tables_13hdf5extension_5Array_19_g_write_slice(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
22395   PyArrayObject *__pyx_v_startl = 0;
22396   PyArrayObject *__pyx_v_stepl = 0;
22397   PyArrayObject *__pyx_v_countl = 0;
22398   PyArrayObject *__pyx_v_nparr = 0;
22399   PyObject *__pyx_r = 0;
22400   __Pyx_RefNannyDeclarations
22401   __Pyx_RefNannySetupContext("_g_write_slice (wrapper)", 0);
22402   {
22403     static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_startl,&__pyx_n_s_stepl,&__pyx_n_s_countl,&__pyx_n_s_nparr,0};
22404     PyObject* values[4] = {0,0,0,0};
22405     if (unlikely(__pyx_kwds)) {
22406       Py_ssize_t kw_args;
22407       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
22408       switch (pos_args) {
22409         case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
22410         CYTHON_FALLTHROUGH;
22411         case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
22412         CYTHON_FALLTHROUGH;
22413         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
22414         CYTHON_FALLTHROUGH;
22415         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
22416         CYTHON_FALLTHROUGH;
22417         case  0: break;
22418         default: goto __pyx_L5_argtuple_error;
22419       }
22420       kw_args = PyDict_Size(__pyx_kwds);
22421       switch (pos_args) {
22422         case  0:
22423         if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_startl)) != 0)) kw_args--;
22424         else goto __pyx_L5_argtuple_error;
22425         CYTHON_FALLTHROUGH;
22426         case  1:
22427         if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_stepl)) != 0)) kw_args--;
22428         else {
22429           __Pyx_RaiseArgtupleInvalid("_g_write_slice", 1, 4, 4, 1); __PYX_ERR(0, 1779, __pyx_L3_error)
22430         }
22431         CYTHON_FALLTHROUGH;
22432         case  2:
22433         if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_countl)) != 0)) kw_args--;
22434         else {
22435           __Pyx_RaiseArgtupleInvalid("_g_write_slice", 1, 4, 4, 2); __PYX_ERR(0, 1779, __pyx_L3_error)
22436         }
22437         CYTHON_FALLTHROUGH;
22438         case  3:
22439         if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nparr)) != 0)) kw_args--;
22440         else {
22441           __Pyx_RaiseArgtupleInvalid("_g_write_slice", 1, 4, 4, 3); __PYX_ERR(0, 1779, __pyx_L3_error)
22442         }
22443       }
22444       if (unlikely(kw_args > 0)) {
22445         if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_g_write_slice") < 0)) __PYX_ERR(0, 1779, __pyx_L3_error)
22446       }
22447     } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
22448       goto __pyx_L5_argtuple_error;
22449     } else {
22450       values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
22451       values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
22452       values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
22453       values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
22454     }
22455     __pyx_v_startl = ((PyArrayObject *)values[0]);
22456     __pyx_v_stepl = ((PyArrayObject *)values[1]);
22457     __pyx_v_countl = ((PyArrayObject *)values[2]);
22458     __pyx_v_nparr = ((PyArrayObject *)values[3]);
22459   }
22460   goto __pyx_L4_argument_unpacking_done;
22461   __pyx_L5_argtuple_error:;
22462   __Pyx_RaiseArgtupleInvalid("_g_write_slice", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1779, __pyx_L3_error)
22463   __pyx_L3_error:;
22464   __Pyx_AddTraceback("tables.hdf5extension.Array._g_write_slice", __pyx_clineno, __pyx_lineno, __pyx_filename);
22465   __Pyx_RefNannyFinishContext();
22466   return NULL;
22467   __pyx_L4_argument_unpacking_done:;
22468   if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_startl), __pyx_ptype_5numpy_ndarray, 1, "startl", 0))) __PYX_ERR(0, 1779, __pyx_L1_error)
22469   if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_stepl), __pyx_ptype_5numpy_ndarray, 1, "stepl", 0))) __PYX_ERR(0, 1779, __pyx_L1_error)
22470   if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_countl), __pyx_ptype_5numpy_ndarray, 1, "countl", 0))) __PYX_ERR(0, 1779, __pyx_L1_error)
22471   if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_nparr), __pyx_ptype_5numpy_ndarray, 1, "nparr", 0))) __PYX_ERR(0, 1780, __pyx_L1_error)
22472   __pyx_r = __pyx_pf_6tables_13hdf5extension_5Array_18_g_write_slice(((struct __pyx_obj_6tables_13hdf5extension_Array *)__pyx_v_self), __pyx_v_startl, __pyx_v_stepl, __pyx_v_countl, __pyx_v_nparr);
22473 
22474   /* function exit code */
22475   goto __pyx_L0;
22476   __pyx_L1_error:;
22477   __pyx_r = NULL;
22478   __pyx_L0:;
22479   __Pyx_RefNannyFinishContext();
22480   return __pyx_r;
22481 }
22482 
__pyx_pf_6tables_13hdf5extension_5Array_18_g_write_slice(struct __pyx_obj_6tables_13hdf5extension_Array * __pyx_v_self,PyArrayObject * __pyx_v_startl,PyArrayObject * __pyx_v_stepl,PyArrayObject * __pyx_v_countl,PyArrayObject * __pyx_v_nparr)22483 static PyObject *__pyx_pf_6tables_13hdf5extension_5Array_18_g_write_slice(struct __pyx_obj_6tables_13hdf5extension_Array *__pyx_v_self, PyArrayObject *__pyx_v_startl, PyArrayObject *__pyx_v_stepl, PyArrayObject *__pyx_v_countl, PyArrayObject *__pyx_v_nparr) {
22484   int __pyx_v_ret;
22485   void *__pyx_v_rbuf;
22486   hsize_t *__pyx_v_start;
22487   hsize_t *__pyx_v_step;
22488   hsize_t *__pyx_v_count;
22489   PyObject *__pyx_r = NULL;
22490   __Pyx_RefNannyDeclarations
22491   PyObject *__pyx_t_1 = NULL;
22492   PyObject *__pyx_t_2 = NULL;
22493   int __pyx_t_3;
22494   char *__pyx_t_4;
22495   PyObject *__pyx_t_5 = NULL;
22496   PyObject *__pyx_t_6 = NULL;
22497   __Pyx_RefNannySetupContext("_g_write_slice", 0);
22498 
22499   /* "tables/hdf5extension.pyx":1790
22500  *     cdef hsize_t *count
22501  *
22502  *     if self.atom.kind == "reference":             # <<<<<<<<<<<<<<
22503  *       raise ValueError("Cannot write reference types yet")
22504  *     # Get the pointer to the buffer data area
22505  */
22506   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_atom); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1790, __pyx_L1_error)
22507   __Pyx_GOTREF(__pyx_t_1);
22508   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_kind); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1790, __pyx_L1_error)
22509   __Pyx_GOTREF(__pyx_t_2);
22510   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
22511   __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_2, __pyx_n_s_reference, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1790, __pyx_L1_error)
22512   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
22513   if (unlikely(__pyx_t_3)) {
22514 
22515     /* "tables/hdf5extension.pyx":1791
22516  *
22517  *     if self.atom.kind == "reference":
22518  *       raise ValueError("Cannot write reference types yet")             # <<<<<<<<<<<<<<
22519  *     # Get the pointer to the buffer data area
22520  *     rbuf = nparr.data
22521  */
22522     __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__14, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1791, __pyx_L1_error)
22523     __Pyx_GOTREF(__pyx_t_2);
22524     __Pyx_Raise(__pyx_t_2, 0, 0, 0);
22525     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
22526     __PYX_ERR(0, 1791, __pyx_L1_error)
22527 
22528     /* "tables/hdf5extension.pyx":1790
22529  *     cdef hsize_t *count
22530  *
22531  *     if self.atom.kind == "reference":             # <<<<<<<<<<<<<<
22532  *       raise ValueError("Cannot write reference types yet")
22533  *     # Get the pointer to the buffer data area
22534  */
22535   }
22536 
22537   /* "tables/hdf5extension.pyx":1793
22538  *       raise ValueError("Cannot write reference types yet")
22539  *     # Get the pointer to the buffer data area
22540  *     rbuf = nparr.data             # <<<<<<<<<<<<<<
22541  *     # Get the start, step and count values
22542  *     start = <hsize_t *>startl.data
22543  */
22544   __pyx_t_4 = __pyx_v_nparr->data;
22545   __pyx_v_rbuf = __pyx_t_4;
22546 
22547   /* "tables/hdf5extension.pyx":1795
22548  *     rbuf = nparr.data
22549  *     # Get the start, step and count values
22550  *     start = <hsize_t *>startl.data             # <<<<<<<<<<<<<<
22551  *     step = <hsize_t *>stepl.data
22552  *     count = <hsize_t *>countl.data
22553  */
22554   __pyx_v_start = ((hsize_t *)__pyx_v_startl->data);
22555 
22556   /* "tables/hdf5extension.pyx":1796
22557  *     # Get the start, step and count values
22558  *     start = <hsize_t *>startl.data
22559  *     step = <hsize_t *>stepl.data             # <<<<<<<<<<<<<<
22560  *     count = <hsize_t *>countl.data
22561  *
22562  */
22563   __pyx_v_step = ((hsize_t *)__pyx_v_stepl->data);
22564 
22565   /* "tables/hdf5extension.pyx":1797
22566  *     start = <hsize_t *>startl.data
22567  *     step = <hsize_t *>stepl.data
22568  *     count = <hsize_t *>countl.data             # <<<<<<<<<<<<<<
22569  *
22570  *     # Convert some NumPy types to HDF5 before storing.
22571  */
22572   __pyx_v_count = ((hsize_t *)__pyx_v_countl->data);
22573 
22574   /* "tables/hdf5extension.pyx":1800
22575  *
22576  *     # Convert some NumPy types to HDF5 before storing.
22577  *     if self.atom.type == 'time64':             # <<<<<<<<<<<<<<
22578  *       self._convert_time64(nparr, 0)
22579  *
22580  */
22581   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_atom); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1800, __pyx_L1_error)
22582   __Pyx_GOTREF(__pyx_t_2);
22583   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_type); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1800, __pyx_L1_error)
22584   __Pyx_GOTREF(__pyx_t_1);
22585   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
22586   __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_time64, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1800, __pyx_L1_error)
22587   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
22588   if (__pyx_t_3) {
22589 
22590     /* "tables/hdf5extension.pyx":1801
22591  *     # Convert some NumPy types to HDF5 before storing.
22592  *     if self.atom.type == 'time64':
22593  *       self._convert_time64(nparr, 0)             # <<<<<<<<<<<<<<
22594  *
22595  *     # Modify the elements:
22596  */
22597     __pyx_t_1 = ((struct __pyx_vtabstruct_6tables_13hdf5extension_Array *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._convert_time64(((struct __pyx_obj_6tables_13hdf5extension_Leaf *)__pyx_v_self), __pyx_v_nparr, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1801, __pyx_L1_error)
22598     __Pyx_GOTREF(__pyx_t_1);
22599     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
22600 
22601     /* "tables/hdf5extension.pyx":1800
22602  *
22603  *     # Convert some NumPy types to HDF5 before storing.
22604  *     if self.atom.type == 'time64':             # <<<<<<<<<<<<<<
22605  *       self._convert_time64(nparr, 0)
22606  *
22607  */
22608   }
22609 
22610   /* "tables/hdf5extension.pyx":1804
22611  *
22612  *     # Modify the elements:
22613  *     with nogil:             # <<<<<<<<<<<<<<
22614  *         ret = H5ARRAYwrite_records(self.dataset_id, self.type_id, self.rank,
22615  *                                    start, step, count, rbuf)
22616  */
22617   {
22618       #ifdef WITH_THREAD
22619       PyThreadState *_save;
22620       Py_UNBLOCK_THREADS
22621       __Pyx_FastGIL_Remember();
22622       #endif
22623       /*try:*/ {
22624 
22625         /* "tables/hdf5extension.pyx":1805
22626  *     # Modify the elements:
22627  *     with nogil:
22628  *         ret = H5ARRAYwrite_records(self.dataset_id, self.type_id, self.rank,             # <<<<<<<<<<<<<<
22629  *                                    start, step, count, rbuf)
22630  *
22631  */
22632         __pyx_v_ret = H5ARRAYwrite_records(__pyx_v_self->__pyx_base.dataset_id, __pyx_v_self->__pyx_base.type_id, __pyx_v_self->rank, __pyx_v_start, __pyx_v_step, __pyx_v_count, __pyx_v_rbuf);
22633       }
22634 
22635       /* "tables/hdf5extension.pyx":1804
22636  *
22637  *     # Modify the elements:
22638  *     with nogil:             # <<<<<<<<<<<<<<
22639  *         ret = H5ARRAYwrite_records(self.dataset_id, self.type_id, self.rank,
22640  *                                    start, step, count, rbuf)
22641  */
22642       /*finally:*/ {
22643         /*normal exit:*/{
22644           #ifdef WITH_THREAD
22645           __Pyx_FastGIL_Forget();
22646           Py_BLOCK_THREADS
22647           #endif
22648           goto __pyx_L7;
22649         }
22650         __pyx_L7:;
22651       }
22652   }
22653 
22654   /* "tables/hdf5extension.pyx":1808
22655  *                                    start, step, count, rbuf)
22656  *
22657  *     if ret < 0:             # <<<<<<<<<<<<<<
22658  *       raise HDF5ExtError("Internal error modifying the elements "
22659  *                 "(H5ARRAYwrite_records returned errorcode -%i)" % (-ret))
22660  */
22661   __pyx_t_3 = ((__pyx_v_ret < 0) != 0);
22662   if (unlikely(__pyx_t_3)) {
22663 
22664     /* "tables/hdf5extension.pyx":1809
22665  *
22666  *     if ret < 0:
22667  *       raise HDF5ExtError("Internal error modifying the elements "             # <<<<<<<<<<<<<<
22668  *                 "(H5ARRAYwrite_records returned errorcode -%i)" % (-ret))
22669  *
22670  */
22671     __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_HDF5ExtError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1809, __pyx_L1_error)
22672     __Pyx_GOTREF(__pyx_t_2);
22673 
22674     /* "tables/hdf5extension.pyx":1810
22675  *     if ret < 0:
22676  *       raise HDF5ExtError("Internal error modifying the elements "
22677  *                 "(H5ARRAYwrite_records returned errorcode -%i)" % (-ret))             # <<<<<<<<<<<<<<
22678  *
22679  *     return
22680  */
22681     __pyx_t_5 = __Pyx_PyInt_From_int((-__pyx_v_ret)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1810, __pyx_L1_error)
22682     __Pyx_GOTREF(__pyx_t_5);
22683     __pyx_t_6 = __Pyx_PyString_Format(__pyx_kp_s_Internal_error_modifying_the_ele, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1810, __pyx_L1_error)
22684     __Pyx_GOTREF(__pyx_t_6);
22685     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
22686     __pyx_t_5 = NULL;
22687     if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
22688       __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
22689       if (likely(__pyx_t_5)) {
22690         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
22691         __Pyx_INCREF(__pyx_t_5);
22692         __Pyx_INCREF(function);
22693         __Pyx_DECREF_SET(__pyx_t_2, function);
22694       }
22695     }
22696     __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_6);
22697     __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
22698     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
22699     if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1809, __pyx_L1_error)
22700     __Pyx_GOTREF(__pyx_t_1);
22701     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
22702     __Pyx_Raise(__pyx_t_1, 0, 0, 0);
22703     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
22704     __PYX_ERR(0, 1809, __pyx_L1_error)
22705 
22706     /* "tables/hdf5extension.pyx":1808
22707  *                                    start, step, count, rbuf)
22708  *
22709  *     if ret < 0:             # <<<<<<<<<<<<<<
22710  *       raise HDF5ExtError("Internal error modifying the elements "
22711  *                 "(H5ARRAYwrite_records returned errorcode -%i)" % (-ret))
22712  */
22713   }
22714 
22715   /* "tables/hdf5extension.pyx":1812
22716  *                 "(H5ARRAYwrite_records returned errorcode -%i)" % (-ret))
22717  *
22718  *     return             # <<<<<<<<<<<<<<
22719  *
22720  *
22721  */
22722   __Pyx_XDECREF(__pyx_r);
22723   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
22724   goto __pyx_L0;
22725 
22726   /* "tables/hdf5extension.pyx":1779
22727  *
22728  *
22729  *   def _g_write_slice(self, ndarray startl, ndarray stepl, ndarray countl,             # <<<<<<<<<<<<<<
22730  *                     ndarray nparr):
22731  *     """Write a slice in an already created NumPy array."""
22732  */
22733 
22734   /* function exit code */
22735   __pyx_L1_error:;
22736   __Pyx_XDECREF(__pyx_t_1);
22737   __Pyx_XDECREF(__pyx_t_2);
22738   __Pyx_XDECREF(__pyx_t_5);
22739   __Pyx_XDECREF(__pyx_t_6);
22740   __Pyx_AddTraceback("tables.hdf5extension.Array._g_write_slice", __pyx_clineno, __pyx_lineno, __pyx_filename);
22741   __pyx_r = NULL;
22742   __pyx_L0:;
22743   __Pyx_XGIVEREF(__pyx_r);
22744   __Pyx_RefNannyFinishContext();
22745   return __pyx_r;
22746 }
22747 
22748 /* "tables/hdf5extension.pyx":1815
22749  *
22750  *
22751  *   def _g_write_coords(self, ndarray coords, ndarray nparr):             # <<<<<<<<<<<<<<
22752  *     """Write a selection in an already created NumPy array."""
22753  *
22754  */
22755 
22756 /* Python wrapper */
22757 static PyObject *__pyx_pw_6tables_13hdf5extension_5Array_21_g_write_coords(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
22758 static char __pyx_doc_6tables_13hdf5extension_5Array_20_g_write_coords[] = "Write a selection in an already created NumPy array.";
__pyx_pw_6tables_13hdf5extension_5Array_21_g_write_coords(PyObject * __pyx_v_self,PyObject * __pyx_args,PyObject * __pyx_kwds)22759 static PyObject *__pyx_pw_6tables_13hdf5extension_5Array_21_g_write_coords(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
22760   PyArrayObject *__pyx_v_coords = 0;
22761   PyArrayObject *__pyx_v_nparr = 0;
22762   PyObject *__pyx_r = 0;
22763   __Pyx_RefNannyDeclarations
22764   __Pyx_RefNannySetupContext("_g_write_coords (wrapper)", 0);
22765   {
22766     static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_coords,&__pyx_n_s_nparr,0};
22767     PyObject* values[2] = {0,0};
22768     if (unlikely(__pyx_kwds)) {
22769       Py_ssize_t kw_args;
22770       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
22771       switch (pos_args) {
22772         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
22773         CYTHON_FALLTHROUGH;
22774         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
22775         CYTHON_FALLTHROUGH;
22776         case  0: break;
22777         default: goto __pyx_L5_argtuple_error;
22778       }
22779       kw_args = PyDict_Size(__pyx_kwds);
22780       switch (pos_args) {
22781         case  0:
22782         if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_coords)) != 0)) kw_args--;
22783         else goto __pyx_L5_argtuple_error;
22784         CYTHON_FALLTHROUGH;
22785         case  1:
22786         if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nparr)) != 0)) kw_args--;
22787         else {
22788           __Pyx_RaiseArgtupleInvalid("_g_write_coords", 1, 2, 2, 1); __PYX_ERR(0, 1815, __pyx_L3_error)
22789         }
22790       }
22791       if (unlikely(kw_args > 0)) {
22792         if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_g_write_coords") < 0)) __PYX_ERR(0, 1815, __pyx_L3_error)
22793       }
22794     } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
22795       goto __pyx_L5_argtuple_error;
22796     } else {
22797       values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
22798       values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
22799     }
22800     __pyx_v_coords = ((PyArrayObject *)values[0]);
22801     __pyx_v_nparr = ((PyArrayObject *)values[1]);
22802   }
22803   goto __pyx_L4_argument_unpacking_done;
22804   __pyx_L5_argtuple_error:;
22805   __Pyx_RaiseArgtupleInvalid("_g_write_coords", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1815, __pyx_L3_error)
22806   __pyx_L3_error:;
22807   __Pyx_AddTraceback("tables.hdf5extension.Array._g_write_coords", __pyx_clineno, __pyx_lineno, __pyx_filename);
22808   __Pyx_RefNannyFinishContext();
22809   return NULL;
22810   __pyx_L4_argument_unpacking_done:;
22811   if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_coords), __pyx_ptype_5numpy_ndarray, 1, "coords", 0))) __PYX_ERR(0, 1815, __pyx_L1_error)
22812   if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_nparr), __pyx_ptype_5numpy_ndarray, 1, "nparr", 0))) __PYX_ERR(0, 1815, __pyx_L1_error)
22813   __pyx_r = __pyx_pf_6tables_13hdf5extension_5Array_20_g_write_coords(((struct __pyx_obj_6tables_13hdf5extension_Array *)__pyx_v_self), __pyx_v_coords, __pyx_v_nparr);
22814 
22815   /* function exit code */
22816   goto __pyx_L0;
22817   __pyx_L1_error:;
22818   __pyx_r = NULL;
22819   __pyx_L0:;
22820   __Pyx_RefNannyFinishContext();
22821   return __pyx_r;
22822 }
22823 
__pyx_pf_6tables_13hdf5extension_5Array_20_g_write_coords(struct __pyx_obj_6tables_13hdf5extension_Array * __pyx_v_self,PyArrayObject * __pyx_v_coords,PyArrayObject * __pyx_v_nparr)22824 static PyObject *__pyx_pf_6tables_13hdf5extension_5Array_20_g_write_coords(struct __pyx_obj_6tables_13hdf5extension_Array *__pyx_v_self, PyArrayObject *__pyx_v_coords, PyArrayObject *__pyx_v_nparr) {
22825   herr_t __pyx_v_ret;
22826   hid_t __pyx_v_space_id;
22827   hid_t __pyx_v_mem_space_id;
22828   hsize_t __pyx_v_size;
22829   void *__pyx_v_rbuf;
22830   PyObject *__pyx_r = NULL;
22831   __Pyx_RefNannyDeclarations
22832   PyObject *__pyx_t_1 = NULL;
22833   PyObject *__pyx_t_2 = NULL;
22834   int __pyx_t_3;
22835   hsize_t __pyx_t_4;
22836   char *__pyx_t_5;
22837   PyObject *__pyx_t_6 = NULL;
22838   __Pyx_RefNannySetupContext("_g_write_coords", 0);
22839 
22840   /* "tables/hdf5extension.pyx":1825
22841  *     cdef object mode
22842  *
22843  *     if self.atom.kind == "reference":             # <<<<<<<<<<<<<<
22844  *       raise ValueError("Cannot write reference types yet")
22845  *     # Get the dataspace handle
22846  */
22847   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_atom); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1825, __pyx_L1_error)
22848   __Pyx_GOTREF(__pyx_t_1);
22849   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_kind); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1825, __pyx_L1_error)
22850   __Pyx_GOTREF(__pyx_t_2);
22851   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
22852   __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_2, __pyx_n_s_reference, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1825, __pyx_L1_error)
22853   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
22854   if (unlikely(__pyx_t_3)) {
22855 
22856     /* "tables/hdf5extension.pyx":1826
22857  *
22858  *     if self.atom.kind == "reference":
22859  *       raise ValueError("Cannot write reference types yet")             # <<<<<<<<<<<<<<
22860  *     # Get the dataspace handle
22861  *     space_id = H5Dget_space(self.dataset_id)
22862  */
22863     __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__14, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1826, __pyx_L1_error)
22864     __Pyx_GOTREF(__pyx_t_2);
22865     __Pyx_Raise(__pyx_t_2, 0, 0, 0);
22866     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
22867     __PYX_ERR(0, 1826, __pyx_L1_error)
22868 
22869     /* "tables/hdf5extension.pyx":1825
22870  *     cdef object mode
22871  *
22872  *     if self.atom.kind == "reference":             # <<<<<<<<<<<<<<
22873  *       raise ValueError("Cannot write reference types yet")
22874  *     # Get the dataspace handle
22875  */
22876   }
22877 
22878   /* "tables/hdf5extension.pyx":1828
22879  *       raise ValueError("Cannot write reference types yet")
22880  *     # Get the dataspace handle
22881  *     space_id = H5Dget_space(self.dataset_id)             # <<<<<<<<<<<<<<
22882  *     # Create a memory dataspace handle
22883  *     size = nparr.size
22884  */
22885   __pyx_v_space_id = H5Dget_space(__pyx_v_self->__pyx_base.dataset_id);
22886 
22887   /* "tables/hdf5extension.pyx":1830
22888  *     space_id = H5Dget_space(self.dataset_id)
22889  *     # Create a memory dataspace handle
22890  *     size = nparr.size             # <<<<<<<<<<<<<<
22891  *     mem_space_id = H5Screate_simple(1, &size, NULL)
22892  *
22893  */
22894   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_nparr), __pyx_n_s_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1830, __pyx_L1_error)
22895   __Pyx_GOTREF(__pyx_t_2);
22896   __pyx_t_4 = __Pyx_PyInt_As_hsize_t(__pyx_t_2); if (unlikely((__pyx_t_4 == ((hsize_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1830, __pyx_L1_error)
22897   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
22898   __pyx_v_size = __pyx_t_4;
22899 
22900   /* "tables/hdf5extension.pyx":1831
22901  *     # Create a memory dataspace handle
22902  *     size = nparr.size
22903  *     mem_space_id = H5Screate_simple(1, &size, NULL)             # <<<<<<<<<<<<<<
22904  *
22905  *     # Select the dataspace to be written
22906  */
22907   __pyx_v_mem_space_id = H5Screate_simple(1, (&__pyx_v_size), NULL);
22908 
22909   /* "tables/hdf5extension.pyx":1834
22910  *
22911  *     # Select the dataspace to be written
22912  *     H5Sselect_elements(space_id, H5S_SELECT_SET,             # <<<<<<<<<<<<<<
22913  *                        <size_t>size, <hsize_t *>coords.data)
22914  *
22915  */
22916   (void)(H5Sselect_elements(__pyx_v_space_id, H5S_SELECT_SET, ((size_t)__pyx_v_size), ((hsize_t *)__pyx_v_coords->data)));
22917 
22918   /* "tables/hdf5extension.pyx":1838
22919  *
22920  *     # Get the pointer to the buffer data area
22921  *     rbuf = nparr.data             # <<<<<<<<<<<<<<
22922  *
22923  *     # Convert some NumPy types to HDF5 before storing.
22924  */
22925   __pyx_t_5 = __pyx_v_nparr->data;
22926   __pyx_v_rbuf = __pyx_t_5;
22927 
22928   /* "tables/hdf5extension.pyx":1841
22929  *
22930  *     # Convert some NumPy types to HDF5 before storing.
22931  *     if self.atom.type == 'time64':             # <<<<<<<<<<<<<<
22932  *       self._convert_time64(nparr, 0)
22933  *
22934  */
22935   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_atom); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1841, __pyx_L1_error)
22936   __Pyx_GOTREF(__pyx_t_2);
22937   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_type); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1841, __pyx_L1_error)
22938   __Pyx_GOTREF(__pyx_t_1);
22939   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
22940   __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_time64, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1841, __pyx_L1_error)
22941   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
22942   if (__pyx_t_3) {
22943 
22944     /* "tables/hdf5extension.pyx":1842
22945  *     # Convert some NumPy types to HDF5 before storing.
22946  *     if self.atom.type == 'time64':
22947  *       self._convert_time64(nparr, 0)             # <<<<<<<<<<<<<<
22948  *
22949  *     # Do the actual write
22950  */
22951     __pyx_t_1 = ((struct __pyx_vtabstruct_6tables_13hdf5extension_Array *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._convert_time64(((struct __pyx_obj_6tables_13hdf5extension_Leaf *)__pyx_v_self), __pyx_v_nparr, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1842, __pyx_L1_error)
22952     __Pyx_GOTREF(__pyx_t_1);
22953     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
22954 
22955     /* "tables/hdf5extension.pyx":1841
22956  *
22957  *     # Convert some NumPy types to HDF5 before storing.
22958  *     if self.atom.type == 'time64':             # <<<<<<<<<<<<<<
22959  *       self._convert_time64(nparr, 0)
22960  *
22961  */
22962   }
22963 
22964   /* "tables/hdf5extension.pyx":1845
22965  *
22966  *     # Do the actual write
22967  *     with nogil:             # <<<<<<<<<<<<<<
22968  *         ret = H5Dwrite(self.dataset_id, self.type_id, mem_space_id, space_id,
22969  *                        H5P_DEFAULT, rbuf)
22970  */
22971   {
22972       #ifdef WITH_THREAD
22973       PyThreadState *_save;
22974       Py_UNBLOCK_THREADS
22975       __Pyx_FastGIL_Remember();
22976       #endif
22977       /*try:*/ {
22978 
22979         /* "tables/hdf5extension.pyx":1846
22980  *     # Do the actual write
22981  *     with nogil:
22982  *         ret = H5Dwrite(self.dataset_id, self.type_id, mem_space_id, space_id,             # <<<<<<<<<<<<<<
22983  *                        H5P_DEFAULT, rbuf)
22984  *
22985  */
22986         __pyx_v_ret = H5Dwrite(__pyx_v_self->__pyx_base.dataset_id, __pyx_v_self->__pyx_base.type_id, __pyx_v_mem_space_id, __pyx_v_space_id, H5P_DEFAULT, __pyx_v_rbuf);
22987       }
22988 
22989       /* "tables/hdf5extension.pyx":1845
22990  *
22991  *     # Do the actual write
22992  *     with nogil:             # <<<<<<<<<<<<<<
22993  *         ret = H5Dwrite(self.dataset_id, self.type_id, mem_space_id, space_id,
22994  *                        H5P_DEFAULT, rbuf)
22995  */
22996       /*finally:*/ {
22997         /*normal exit:*/{
22998           #ifdef WITH_THREAD
22999           __Pyx_FastGIL_Forget();
23000           Py_BLOCK_THREADS
23001           #endif
23002           goto __pyx_L7;
23003         }
23004         __pyx_L7:;
23005       }
23006   }
23007 
23008   /* "tables/hdf5extension.pyx":1849
23009  *                        H5P_DEFAULT, rbuf)
23010  *
23011  *     if ret < 0:             # <<<<<<<<<<<<<<
23012  *       raise HDF5ExtError("Problems writing the array data.")
23013  *
23014  */
23015   __pyx_t_3 = ((__pyx_v_ret < 0) != 0);
23016   if (unlikely(__pyx_t_3)) {
23017 
23018     /* "tables/hdf5extension.pyx":1850
23019  *
23020  *     if ret < 0:
23021  *       raise HDF5ExtError("Problems writing the array data.")             # <<<<<<<<<<<<<<
23022  *
23023  *     # Terminate access to the memory dataspace
23024  */
23025     __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_HDF5ExtError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1850, __pyx_L1_error)
23026     __Pyx_GOTREF(__pyx_t_2);
23027     __pyx_t_6 = NULL;
23028     if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
23029       __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
23030       if (likely(__pyx_t_6)) {
23031         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
23032         __Pyx_INCREF(__pyx_t_6);
23033         __Pyx_INCREF(function);
23034         __Pyx_DECREF_SET(__pyx_t_2, function);
23035       }
23036     }
23037     __pyx_t_1 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_6, __pyx_kp_s_Problems_writing_the_array_data) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_kp_s_Problems_writing_the_array_data);
23038     __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
23039     if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1850, __pyx_L1_error)
23040     __Pyx_GOTREF(__pyx_t_1);
23041     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
23042     __Pyx_Raise(__pyx_t_1, 0, 0, 0);
23043     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
23044     __PYX_ERR(0, 1850, __pyx_L1_error)
23045 
23046     /* "tables/hdf5extension.pyx":1849
23047  *                        H5P_DEFAULT, rbuf)
23048  *
23049  *     if ret < 0:             # <<<<<<<<<<<<<<
23050  *       raise HDF5ExtError("Problems writing the array data.")
23051  *
23052  */
23053   }
23054 
23055   /* "tables/hdf5extension.pyx":1853
23056  *
23057  *     # Terminate access to the memory dataspace
23058  *     H5Sclose(mem_space_id)             # <<<<<<<<<<<<<<
23059  *     # Terminate access to the dataspace
23060  *     H5Sclose(space_id)
23061  */
23062   (void)(H5Sclose(__pyx_v_mem_space_id));
23063 
23064   /* "tables/hdf5extension.pyx":1855
23065  *     H5Sclose(mem_space_id)
23066  *     # Terminate access to the dataspace
23067  *     H5Sclose(space_id)             # <<<<<<<<<<<<<<
23068  *
23069  *     return
23070  */
23071   (void)(H5Sclose(__pyx_v_space_id));
23072 
23073   /* "tables/hdf5extension.pyx":1857
23074  *     H5Sclose(space_id)
23075  *
23076  *     return             # <<<<<<<<<<<<<<
23077  *
23078  *
23079  */
23080   __Pyx_XDECREF(__pyx_r);
23081   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
23082   goto __pyx_L0;
23083 
23084   /* "tables/hdf5extension.pyx":1815
23085  *
23086  *
23087  *   def _g_write_coords(self, ndarray coords, ndarray nparr):             # <<<<<<<<<<<<<<
23088  *     """Write a selection in an already created NumPy array."""
23089  *
23090  */
23091 
23092   /* function exit code */
23093   __pyx_L1_error:;
23094   __Pyx_XDECREF(__pyx_t_1);
23095   __Pyx_XDECREF(__pyx_t_2);
23096   __Pyx_XDECREF(__pyx_t_6);
23097   __Pyx_AddTraceback("tables.hdf5extension.Array._g_write_coords", __pyx_clineno, __pyx_lineno, __pyx_filename);
23098   __pyx_r = NULL;
23099   __pyx_L0:;
23100   __Pyx_XGIVEREF(__pyx_r);
23101   __Pyx_RefNannyFinishContext();
23102   return __pyx_r;
23103 }
23104 
23105 /* "tables/hdf5extension.pyx":1860
23106  *
23107  *
23108  *   def _g_write_selection(self, object selection, ndarray nparr):             # <<<<<<<<<<<<<<
23109  *     """Write a selection in an already created NumPy array."""
23110  *
23111  */
23112 
23113 /* Python wrapper */
23114 static PyObject *__pyx_pw_6tables_13hdf5extension_5Array_23_g_write_selection(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
23115 static char __pyx_doc_6tables_13hdf5extension_5Array_22_g_write_selection[] = "Write a selection in an already created NumPy array.";
__pyx_pw_6tables_13hdf5extension_5Array_23_g_write_selection(PyObject * __pyx_v_self,PyObject * __pyx_args,PyObject * __pyx_kwds)23116 static PyObject *__pyx_pw_6tables_13hdf5extension_5Array_23_g_write_selection(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
23117   PyObject *__pyx_v_selection = 0;
23118   PyArrayObject *__pyx_v_nparr = 0;
23119   PyObject *__pyx_r = 0;
23120   __Pyx_RefNannyDeclarations
23121   __Pyx_RefNannySetupContext("_g_write_selection (wrapper)", 0);
23122   {
23123     static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_selection,&__pyx_n_s_nparr,0};
23124     PyObject* values[2] = {0,0};
23125     if (unlikely(__pyx_kwds)) {
23126       Py_ssize_t kw_args;
23127       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
23128       switch (pos_args) {
23129         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
23130         CYTHON_FALLTHROUGH;
23131         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
23132         CYTHON_FALLTHROUGH;
23133         case  0: break;
23134         default: goto __pyx_L5_argtuple_error;
23135       }
23136       kw_args = PyDict_Size(__pyx_kwds);
23137       switch (pos_args) {
23138         case  0:
23139         if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_selection)) != 0)) kw_args--;
23140         else goto __pyx_L5_argtuple_error;
23141         CYTHON_FALLTHROUGH;
23142         case  1:
23143         if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nparr)) != 0)) kw_args--;
23144         else {
23145           __Pyx_RaiseArgtupleInvalid("_g_write_selection", 1, 2, 2, 1); __PYX_ERR(0, 1860, __pyx_L3_error)
23146         }
23147       }
23148       if (unlikely(kw_args > 0)) {
23149         if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_g_write_selection") < 0)) __PYX_ERR(0, 1860, __pyx_L3_error)
23150       }
23151     } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
23152       goto __pyx_L5_argtuple_error;
23153     } else {
23154       values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
23155       values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
23156     }
23157     __pyx_v_selection = values[0];
23158     __pyx_v_nparr = ((PyArrayObject *)values[1]);
23159   }
23160   goto __pyx_L4_argument_unpacking_done;
23161   __pyx_L5_argtuple_error:;
23162   __Pyx_RaiseArgtupleInvalid("_g_write_selection", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1860, __pyx_L3_error)
23163   __pyx_L3_error:;
23164   __Pyx_AddTraceback("tables.hdf5extension.Array._g_write_selection", __pyx_clineno, __pyx_lineno, __pyx_filename);
23165   __Pyx_RefNannyFinishContext();
23166   return NULL;
23167   __pyx_L4_argument_unpacking_done:;
23168   if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_nparr), __pyx_ptype_5numpy_ndarray, 1, "nparr", 0))) __PYX_ERR(0, 1860, __pyx_L1_error)
23169   __pyx_r = __pyx_pf_6tables_13hdf5extension_5Array_22_g_write_selection(((struct __pyx_obj_6tables_13hdf5extension_Array *)__pyx_v_self), __pyx_v_selection, __pyx_v_nparr);
23170 
23171   /* function exit code */
23172   goto __pyx_L0;
23173   __pyx_L1_error:;
23174   __pyx_r = NULL;
23175   __pyx_L0:;
23176   __Pyx_RefNannyFinishContext();
23177   return __pyx_r;
23178 }
23179 
__pyx_pf_6tables_13hdf5extension_5Array_22_g_write_selection(struct __pyx_obj_6tables_13hdf5extension_Array * __pyx_v_self,PyObject * __pyx_v_selection,PyArrayObject * __pyx_v_nparr)23180 static PyObject *__pyx_pf_6tables_13hdf5extension_5Array_22_g_write_selection(struct __pyx_obj_6tables_13hdf5extension_Array *__pyx_v_self, PyObject *__pyx_v_selection, PyArrayObject *__pyx_v_nparr) {
23181   herr_t __pyx_v_ret;
23182   hid_t __pyx_v_space_id;
23183   hid_t __pyx_v_mem_space_id;
23184   hsize_t __pyx_v_size;
23185   void *__pyx_v_rbuf;
23186   PyObject *__pyx_v_args = NULL;
23187   PyObject *__pyx_r = NULL;
23188   __Pyx_RefNannyDeclarations
23189   PyObject *__pyx_t_1 = NULL;
23190   PyObject *__pyx_t_2 = NULL;
23191   int __pyx_t_3;
23192   hsize_t __pyx_t_4;
23193   Py_ssize_t __pyx_t_5;
23194   PyObject *(*__pyx_t_6)(PyObject *);
23195   PyObject *__pyx_t_7 = NULL;
23196   PyObject *__pyx_t_8 = NULL;
23197   PyObject *__pyx_t_9 = NULL;
23198   char *__pyx_t_10;
23199   __Pyx_RefNannySetupContext("_g_write_selection", 0);
23200 
23201   /* "tables/hdf5extension.pyx":1870
23202  *     cdef object mode
23203  *
23204  *     if self.atom.kind == "reference":             # <<<<<<<<<<<<<<
23205  *       raise ValueError("Cannot write reference types yet")
23206  *     # Get the dataspace handle
23207  */
23208   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_atom); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1870, __pyx_L1_error)
23209   __Pyx_GOTREF(__pyx_t_1);
23210   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_kind); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1870, __pyx_L1_error)
23211   __Pyx_GOTREF(__pyx_t_2);
23212   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
23213   __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_2, __pyx_n_s_reference, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1870, __pyx_L1_error)
23214   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
23215   if (unlikely(__pyx_t_3)) {
23216 
23217     /* "tables/hdf5extension.pyx":1871
23218  *
23219  *     if self.atom.kind == "reference":
23220  *       raise ValueError("Cannot write reference types yet")             # <<<<<<<<<<<<<<
23221  *     # Get the dataspace handle
23222  *     space_id = H5Dget_space(self.dataset_id)
23223  */
23224     __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__14, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1871, __pyx_L1_error)
23225     __Pyx_GOTREF(__pyx_t_2);
23226     __Pyx_Raise(__pyx_t_2, 0, 0, 0);
23227     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
23228     __PYX_ERR(0, 1871, __pyx_L1_error)
23229 
23230     /* "tables/hdf5extension.pyx":1870
23231  *     cdef object mode
23232  *
23233  *     if self.atom.kind == "reference":             # <<<<<<<<<<<<<<
23234  *       raise ValueError("Cannot write reference types yet")
23235  *     # Get the dataspace handle
23236  */
23237   }
23238 
23239   /* "tables/hdf5extension.pyx":1873
23240  *       raise ValueError("Cannot write reference types yet")
23241  *     # Get the dataspace handle
23242  *     space_id = H5Dget_space(self.dataset_id)             # <<<<<<<<<<<<<<
23243  *     # Create a memory dataspace handle
23244  *     size = nparr.size
23245  */
23246   __pyx_v_space_id = H5Dget_space(__pyx_v_self->__pyx_base.dataset_id);
23247 
23248   /* "tables/hdf5extension.pyx":1875
23249  *     space_id = H5Dget_space(self.dataset_id)
23250  *     # Create a memory dataspace handle
23251  *     size = nparr.size             # <<<<<<<<<<<<<<
23252  *     mem_space_id = H5Screate_simple(1, &size, NULL)
23253  *
23254  */
23255   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_nparr), __pyx_n_s_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1875, __pyx_L1_error)
23256   __Pyx_GOTREF(__pyx_t_2);
23257   __pyx_t_4 = __Pyx_PyInt_As_hsize_t(__pyx_t_2); if (unlikely((__pyx_t_4 == ((hsize_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1875, __pyx_L1_error)
23258   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
23259   __pyx_v_size = __pyx_t_4;
23260 
23261   /* "tables/hdf5extension.pyx":1876
23262  *     # Create a memory dataspace handle
23263  *     size = nparr.size
23264  *     mem_space_id = H5Screate_simple(1, &size, NULL)             # <<<<<<<<<<<<<<
23265  *
23266  *     # Select the dataspace to be written
23267  */
23268   __pyx_v_mem_space_id = H5Screate_simple(1, (&__pyx_v_size), NULL);
23269 
23270   /* "tables/hdf5extension.pyx":1880
23271  *     # Select the dataspace to be written
23272  *     # Start by selecting everything
23273  *     H5Sselect_all(space_id)             # <<<<<<<<<<<<<<
23274  *     # Now refine with outstanding selections
23275  *     for args in selection:
23276  */
23277   (void)(H5Sselect_all(__pyx_v_space_id));
23278 
23279   /* "tables/hdf5extension.pyx":1882
23280  *     H5Sselect_all(space_id)
23281  *     # Now refine with outstanding selections
23282  *     for args in selection:             # <<<<<<<<<<<<<<
23283  *       self.perform_selection(space_id, *args)
23284  *
23285  */
23286   if (likely(PyList_CheckExact(__pyx_v_selection)) || PyTuple_CheckExact(__pyx_v_selection)) {
23287     __pyx_t_2 = __pyx_v_selection; __Pyx_INCREF(__pyx_t_2); __pyx_t_5 = 0;
23288     __pyx_t_6 = NULL;
23289   } else {
23290     __pyx_t_5 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_selection); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1882, __pyx_L1_error)
23291     __Pyx_GOTREF(__pyx_t_2);
23292     __pyx_t_6 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1882, __pyx_L1_error)
23293   }
23294   for (;;) {
23295     if (likely(!__pyx_t_6)) {
23296       if (likely(PyList_CheckExact(__pyx_t_2))) {
23297         if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_2)) break;
23298         #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
23299         __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 1882, __pyx_L1_error)
23300         #else
23301         __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1882, __pyx_L1_error)
23302         __Pyx_GOTREF(__pyx_t_1);
23303         #endif
23304       } else {
23305         if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
23306         #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
23307         __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 1882, __pyx_L1_error)
23308         #else
23309         __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1882, __pyx_L1_error)
23310         __Pyx_GOTREF(__pyx_t_1);
23311         #endif
23312       }
23313     } else {
23314       __pyx_t_1 = __pyx_t_6(__pyx_t_2);
23315       if (unlikely(!__pyx_t_1)) {
23316         PyObject* exc_type = PyErr_Occurred();
23317         if (exc_type) {
23318           if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
23319           else __PYX_ERR(0, 1882, __pyx_L1_error)
23320         }
23321         break;
23322       }
23323       __Pyx_GOTREF(__pyx_t_1);
23324     }
23325     __Pyx_XDECREF_SET(__pyx_v_args, __pyx_t_1);
23326     __pyx_t_1 = 0;
23327 
23328     /* "tables/hdf5extension.pyx":1883
23329  *     # Now refine with outstanding selections
23330  *     for args in selection:
23331  *       self.perform_selection(space_id, *args)             # <<<<<<<<<<<<<<
23332  *
23333  *     # Get the pointer to the buffer data area
23334  */
23335     __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_perform_selection); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1883, __pyx_L1_error)
23336     __Pyx_GOTREF(__pyx_t_1);
23337     __pyx_t_7 = __Pyx_PyInt_From_hid_t(__pyx_v_space_id); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1883, __pyx_L1_error)
23338     __Pyx_GOTREF(__pyx_t_7);
23339     __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1883, __pyx_L1_error)
23340     __Pyx_GOTREF(__pyx_t_8);
23341     __Pyx_GIVEREF(__pyx_t_7);
23342     PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7);
23343     __pyx_t_7 = 0;
23344     __pyx_t_7 = __Pyx_PySequence_Tuple(__pyx_v_args); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1883, __pyx_L1_error)
23345     __Pyx_GOTREF(__pyx_t_7);
23346     __pyx_t_9 = PyNumber_Add(__pyx_t_8, __pyx_t_7); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1883, __pyx_L1_error)
23347     __Pyx_GOTREF(__pyx_t_9);
23348     __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
23349     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
23350     __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_9, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1883, __pyx_L1_error)
23351     __Pyx_GOTREF(__pyx_t_7);
23352     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
23353     __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
23354     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
23355 
23356     /* "tables/hdf5extension.pyx":1882
23357  *     H5Sselect_all(space_id)
23358  *     # Now refine with outstanding selections
23359  *     for args in selection:             # <<<<<<<<<<<<<<
23360  *       self.perform_selection(space_id, *args)
23361  *
23362  */
23363   }
23364   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
23365 
23366   /* "tables/hdf5extension.pyx":1886
23367  *
23368  *     # Get the pointer to the buffer data area
23369  *     rbuf = nparr.data             # <<<<<<<<<<<<<<
23370  *
23371  *     # Convert some NumPy types to HDF5 before storing.
23372  */
23373   __pyx_t_10 = __pyx_v_nparr->data;
23374   __pyx_v_rbuf = __pyx_t_10;
23375 
23376   /* "tables/hdf5extension.pyx":1889
23377  *
23378  *     # Convert some NumPy types to HDF5 before storing.
23379  *     if self.atom.type == 'time64':             # <<<<<<<<<<<<<<
23380  *       self._convert_time64(nparr, 0)
23381  *
23382  */
23383   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_atom); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1889, __pyx_L1_error)
23384   __Pyx_GOTREF(__pyx_t_2);
23385   __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_type); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1889, __pyx_L1_error)
23386   __Pyx_GOTREF(__pyx_t_7);
23387   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
23388   __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_7, __pyx_n_s_time64, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1889, __pyx_L1_error)
23389   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
23390   if (__pyx_t_3) {
23391 
23392     /* "tables/hdf5extension.pyx":1890
23393  *     # Convert some NumPy types to HDF5 before storing.
23394  *     if self.atom.type == 'time64':
23395  *       self._convert_time64(nparr, 0)             # <<<<<<<<<<<<<<
23396  *
23397  *     # Do the actual write
23398  */
23399     __pyx_t_7 = ((struct __pyx_vtabstruct_6tables_13hdf5extension_Array *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._convert_time64(((struct __pyx_obj_6tables_13hdf5extension_Leaf *)__pyx_v_self), __pyx_v_nparr, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1890, __pyx_L1_error)
23400     __Pyx_GOTREF(__pyx_t_7);
23401     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
23402 
23403     /* "tables/hdf5extension.pyx":1889
23404  *
23405  *     # Convert some NumPy types to HDF5 before storing.
23406  *     if self.atom.type == 'time64':             # <<<<<<<<<<<<<<
23407  *       self._convert_time64(nparr, 0)
23408  *
23409  */
23410   }
23411 
23412   /* "tables/hdf5extension.pyx":1893
23413  *
23414  *     # Do the actual write
23415  *     with nogil:             # <<<<<<<<<<<<<<
23416  *         ret = H5Dwrite(self.dataset_id, self.type_id, mem_space_id, space_id,
23417  *                        H5P_DEFAULT, rbuf)
23418  */
23419   {
23420       #ifdef WITH_THREAD
23421       PyThreadState *_save;
23422       Py_UNBLOCK_THREADS
23423       __Pyx_FastGIL_Remember();
23424       #endif
23425       /*try:*/ {
23426 
23427         /* "tables/hdf5extension.pyx":1894
23428  *     # Do the actual write
23429  *     with nogil:
23430  *         ret = H5Dwrite(self.dataset_id, self.type_id, mem_space_id, space_id,             # <<<<<<<<<<<<<<
23431  *                        H5P_DEFAULT, rbuf)
23432  *
23433  */
23434         __pyx_v_ret = H5Dwrite(__pyx_v_self->__pyx_base.dataset_id, __pyx_v_self->__pyx_base.type_id, __pyx_v_mem_space_id, __pyx_v_space_id, H5P_DEFAULT, __pyx_v_rbuf);
23435       }
23436 
23437       /* "tables/hdf5extension.pyx":1893
23438  *
23439  *     # Do the actual write
23440  *     with nogil:             # <<<<<<<<<<<<<<
23441  *         ret = H5Dwrite(self.dataset_id, self.type_id, mem_space_id, space_id,
23442  *                        H5P_DEFAULT, rbuf)
23443  */
23444       /*finally:*/ {
23445         /*normal exit:*/{
23446           #ifdef WITH_THREAD
23447           __Pyx_FastGIL_Forget();
23448           Py_BLOCK_THREADS
23449           #endif
23450           goto __pyx_L9;
23451         }
23452         __pyx_L9:;
23453       }
23454   }
23455 
23456   /* "tables/hdf5extension.pyx":1897
23457  *                        H5P_DEFAULT, rbuf)
23458  *
23459  *     if ret < 0:             # <<<<<<<<<<<<<<
23460  *       raise HDF5ExtError("Problems writing the array data.")
23461  *
23462  */
23463   __pyx_t_3 = ((__pyx_v_ret < 0) != 0);
23464   if (unlikely(__pyx_t_3)) {
23465 
23466     /* "tables/hdf5extension.pyx":1898
23467  *
23468  *     if ret < 0:
23469  *       raise HDF5ExtError("Problems writing the array data.")             # <<<<<<<<<<<<<<
23470  *
23471  *     # Terminate access to the memory dataspace
23472  */
23473     __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_HDF5ExtError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1898, __pyx_L1_error)
23474     __Pyx_GOTREF(__pyx_t_2);
23475     __pyx_t_9 = NULL;
23476     if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
23477       __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_2);
23478       if (likely(__pyx_t_9)) {
23479         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
23480         __Pyx_INCREF(__pyx_t_9);
23481         __Pyx_INCREF(function);
23482         __Pyx_DECREF_SET(__pyx_t_2, function);
23483       }
23484     }
23485     __pyx_t_7 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_9, __pyx_kp_s_Problems_writing_the_array_data) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_kp_s_Problems_writing_the_array_data);
23486     __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
23487     if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1898, __pyx_L1_error)
23488     __Pyx_GOTREF(__pyx_t_7);
23489     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
23490     __Pyx_Raise(__pyx_t_7, 0, 0, 0);
23491     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
23492     __PYX_ERR(0, 1898, __pyx_L1_error)
23493 
23494     /* "tables/hdf5extension.pyx":1897
23495  *                        H5P_DEFAULT, rbuf)
23496  *
23497  *     if ret < 0:             # <<<<<<<<<<<<<<
23498  *       raise HDF5ExtError("Problems writing the array data.")
23499  *
23500  */
23501   }
23502 
23503   /* "tables/hdf5extension.pyx":1901
23504  *
23505  *     # Terminate access to the memory dataspace
23506  *     H5Sclose(mem_space_id)             # <<<<<<<<<<<<<<
23507  *     # Terminate access to the dataspace
23508  *     H5Sclose(space_id)
23509  */
23510   (void)(H5Sclose(__pyx_v_mem_space_id));
23511 
23512   /* "tables/hdf5extension.pyx":1903
23513  *     H5Sclose(mem_space_id)
23514  *     # Terminate access to the dataspace
23515  *     H5Sclose(space_id)             # <<<<<<<<<<<<<<
23516  *
23517  *     return
23518  */
23519   (void)(H5Sclose(__pyx_v_space_id));
23520 
23521   /* "tables/hdf5extension.pyx":1905
23522  *     H5Sclose(space_id)
23523  *
23524  *     return             # <<<<<<<<<<<<<<
23525  *
23526  *
23527  */
23528   __Pyx_XDECREF(__pyx_r);
23529   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
23530   goto __pyx_L0;
23531 
23532   /* "tables/hdf5extension.pyx":1860
23533  *
23534  *
23535  *   def _g_write_selection(self, object selection, ndarray nparr):             # <<<<<<<<<<<<<<
23536  *     """Write a selection in an already created NumPy array."""
23537  *
23538  */
23539 
23540   /* function exit code */
23541   __pyx_L1_error:;
23542   __Pyx_XDECREF(__pyx_t_1);
23543   __Pyx_XDECREF(__pyx_t_2);
23544   __Pyx_XDECREF(__pyx_t_7);
23545   __Pyx_XDECREF(__pyx_t_8);
23546   __Pyx_XDECREF(__pyx_t_9);
23547   __Pyx_AddTraceback("tables.hdf5extension.Array._g_write_selection", __pyx_clineno, __pyx_lineno, __pyx_filename);
23548   __pyx_r = NULL;
23549   __pyx_L0:;
23550   __Pyx_XDECREF(__pyx_v_args);
23551   __Pyx_XGIVEREF(__pyx_r);
23552   __Pyx_RefNannyFinishContext();
23553   return __pyx_r;
23554 }
23555 
23556 /* "tables/hdf5extension.pyx":1908
23557  *
23558  *
23559  *   def __dealloc__(self):             # <<<<<<<<<<<<<<
23560  *     if self.dims:
23561  *       free(<void *>self.dims)
23562  */
23563 
23564 /* Python wrapper */
23565 static void __pyx_pw_6tables_13hdf5extension_5Array_25__dealloc__(PyObject *__pyx_v_self); /*proto*/
__pyx_pw_6tables_13hdf5extension_5Array_25__dealloc__(PyObject * __pyx_v_self)23566 static void __pyx_pw_6tables_13hdf5extension_5Array_25__dealloc__(PyObject *__pyx_v_self) {
23567   __Pyx_RefNannyDeclarations
23568   __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
23569   __pyx_pf_6tables_13hdf5extension_5Array_24__dealloc__(((struct __pyx_obj_6tables_13hdf5extension_Array *)__pyx_v_self));
23570 
23571   /* function exit code */
23572   __Pyx_RefNannyFinishContext();
23573 }
23574 
__pyx_pf_6tables_13hdf5extension_5Array_24__dealloc__(struct __pyx_obj_6tables_13hdf5extension_Array * __pyx_v_self)23575 static void __pyx_pf_6tables_13hdf5extension_5Array_24__dealloc__(struct __pyx_obj_6tables_13hdf5extension_Array *__pyx_v_self) {
23576   __Pyx_RefNannyDeclarations
23577   int __pyx_t_1;
23578   __Pyx_RefNannySetupContext("__dealloc__", 0);
23579 
23580   /* "tables/hdf5extension.pyx":1909
23581  *
23582  *   def __dealloc__(self):
23583  *     if self.dims:             # <<<<<<<<<<<<<<
23584  *       free(<void *>self.dims)
23585  *     if self.maxdims:
23586  */
23587   __pyx_t_1 = (__pyx_v_self->__pyx_base.dims != 0);
23588   if (__pyx_t_1) {
23589 
23590     /* "tables/hdf5extension.pyx":1910
23591  *   def __dealloc__(self):
23592  *     if self.dims:
23593  *       free(<void *>self.dims)             # <<<<<<<<<<<<<<
23594  *     if self.maxdims:
23595  *       free(<void *>self.maxdims)
23596  */
23597     free(((void *)__pyx_v_self->__pyx_base.dims));
23598 
23599     /* "tables/hdf5extension.pyx":1909
23600  *
23601  *   def __dealloc__(self):
23602  *     if self.dims:             # <<<<<<<<<<<<<<
23603  *       free(<void *>self.dims)
23604  *     if self.maxdims:
23605  */
23606   }
23607 
23608   /* "tables/hdf5extension.pyx":1911
23609  *     if self.dims:
23610  *       free(<void *>self.dims)
23611  *     if self.maxdims:             # <<<<<<<<<<<<<<
23612  *       free(<void *>self.maxdims)
23613  *     if self.dims_chunk:
23614  */
23615   __pyx_t_1 = (__pyx_v_self->maxdims != 0);
23616   if (__pyx_t_1) {
23617 
23618     /* "tables/hdf5extension.pyx":1912
23619  *       free(<void *>self.dims)
23620  *     if self.maxdims:
23621  *       free(<void *>self.maxdims)             # <<<<<<<<<<<<<<
23622  *     if self.dims_chunk:
23623  *       free(self.dims_chunk)
23624  */
23625     free(((void *)__pyx_v_self->maxdims));
23626 
23627     /* "tables/hdf5extension.pyx":1911
23628  *     if self.dims:
23629  *       free(<void *>self.dims)
23630  *     if self.maxdims:             # <<<<<<<<<<<<<<
23631  *       free(<void *>self.maxdims)
23632  *     if self.dims_chunk:
23633  */
23634   }
23635 
23636   /* "tables/hdf5extension.pyx":1913
23637  *     if self.maxdims:
23638  *       free(<void *>self.maxdims)
23639  *     if self.dims_chunk:             # <<<<<<<<<<<<<<
23640  *       free(self.dims_chunk)
23641  *
23642  */
23643   __pyx_t_1 = (__pyx_v_self->dims_chunk != 0);
23644   if (__pyx_t_1) {
23645 
23646     /* "tables/hdf5extension.pyx":1914
23647  *       free(<void *>self.maxdims)
23648  *     if self.dims_chunk:
23649  *       free(self.dims_chunk)             # <<<<<<<<<<<<<<
23650  *
23651  *
23652  */
23653     free(__pyx_v_self->dims_chunk);
23654 
23655     /* "tables/hdf5extension.pyx":1913
23656  *     if self.maxdims:
23657  *       free(<void *>self.maxdims)
23658  *     if self.dims_chunk:             # <<<<<<<<<<<<<<
23659  *       free(self.dims_chunk)
23660  *
23661  */
23662   }
23663 
23664   /* "tables/hdf5extension.pyx":1908
23665  *
23666  *
23667  *   def __dealloc__(self):             # <<<<<<<<<<<<<<
23668  *     if self.dims:
23669  *       free(<void *>self.dims)
23670  */
23671 
23672   /* function exit code */
23673   __Pyx_RefNannyFinishContext();
23674 }
23675 
23676 /* "(tree fragment)":1
23677  * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
23678  *     raise TypeError("self.dims,self.dims_chunk,self.maxdims cannot be converted to a Python object for pickling")
23679  * def __setstate_cython__(self, __pyx_state):
23680  */
23681 
23682 /* Python wrapper */
23683 static PyObject *__pyx_pw_6tables_13hdf5extension_5Array_27__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
__pyx_pw_6tables_13hdf5extension_5Array_27__reduce_cython__(PyObject * __pyx_v_self,CYTHON_UNUSED PyObject * unused)23684 static PyObject *__pyx_pw_6tables_13hdf5extension_5Array_27__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
23685   PyObject *__pyx_r = 0;
23686   __Pyx_RefNannyDeclarations
23687   __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
23688   __pyx_r = __pyx_pf_6tables_13hdf5extension_5Array_26__reduce_cython__(((struct __pyx_obj_6tables_13hdf5extension_Array *)__pyx_v_self));
23689 
23690   /* function exit code */
23691   __Pyx_RefNannyFinishContext();
23692   return __pyx_r;
23693 }
23694 
__pyx_pf_6tables_13hdf5extension_5Array_26__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_6tables_13hdf5extension_Array * __pyx_v_self)23695 static PyObject *__pyx_pf_6tables_13hdf5extension_5Array_26__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_6tables_13hdf5extension_Array *__pyx_v_self) {
23696   PyObject *__pyx_r = NULL;
23697   __Pyx_RefNannyDeclarations
23698   PyObject *__pyx_t_1 = NULL;
23699   __Pyx_RefNannySetupContext("__reduce_cython__", 0);
23700 
23701   /* "(tree fragment)":2
23702  * def __reduce_cython__(self):
23703  *     raise TypeError("self.dims,self.dims_chunk,self.maxdims cannot be converted to a Python object for pickling")             # <<<<<<<<<<<<<<
23704  * def __setstate_cython__(self, __pyx_state):
23705  *     raise TypeError("self.dims,self.dims_chunk,self.maxdims cannot be converted to a Python object for pickling")
23706  */
23707   __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__15, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
23708   __Pyx_GOTREF(__pyx_t_1);
23709   __Pyx_Raise(__pyx_t_1, 0, 0, 0);
23710   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
23711   __PYX_ERR(1, 2, __pyx_L1_error)
23712 
23713   /* "(tree fragment)":1
23714  * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
23715  *     raise TypeError("self.dims,self.dims_chunk,self.maxdims cannot be converted to a Python object for pickling")
23716  * def __setstate_cython__(self, __pyx_state):
23717  */
23718 
23719   /* function exit code */
23720   __pyx_L1_error:;
23721   __Pyx_XDECREF(__pyx_t_1);
23722   __Pyx_AddTraceback("tables.hdf5extension.Array.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
23723   __pyx_r = NULL;
23724   __Pyx_XGIVEREF(__pyx_r);
23725   __Pyx_RefNannyFinishContext();
23726   return __pyx_r;
23727 }
23728 
23729 /* "(tree fragment)":3
23730  * def __reduce_cython__(self):
23731  *     raise TypeError("self.dims,self.dims_chunk,self.maxdims cannot be converted to a Python object for pickling")
23732  * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
23733  *     raise TypeError("self.dims,self.dims_chunk,self.maxdims cannot be converted to a Python object for pickling")
23734  */
23735 
23736 /* Python wrapper */
23737 static PyObject *__pyx_pw_6tables_13hdf5extension_5Array_29__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
__pyx_pw_6tables_13hdf5extension_5Array_29__setstate_cython__(PyObject * __pyx_v_self,PyObject * __pyx_v___pyx_state)23738 static PyObject *__pyx_pw_6tables_13hdf5extension_5Array_29__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
23739   PyObject *__pyx_r = 0;
23740   __Pyx_RefNannyDeclarations
23741   __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
23742   __pyx_r = __pyx_pf_6tables_13hdf5extension_5Array_28__setstate_cython__(((struct __pyx_obj_6tables_13hdf5extension_Array *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));
23743 
23744   /* function exit code */
23745   __Pyx_RefNannyFinishContext();
23746   return __pyx_r;
23747 }
23748 
__pyx_pf_6tables_13hdf5extension_5Array_28__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_6tables_13hdf5extension_Array * __pyx_v_self,CYTHON_UNUSED PyObject * __pyx_v___pyx_state)23749 static PyObject *__pyx_pf_6tables_13hdf5extension_5Array_28__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_6tables_13hdf5extension_Array *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
23750   PyObject *__pyx_r = NULL;
23751   __Pyx_RefNannyDeclarations
23752   PyObject *__pyx_t_1 = NULL;
23753   __Pyx_RefNannySetupContext("__setstate_cython__", 0);
23754 
23755   /* "(tree fragment)":4
23756  *     raise TypeError("self.dims,self.dims_chunk,self.maxdims cannot be converted to a Python object for pickling")
23757  * def __setstate_cython__(self, __pyx_state):
23758  *     raise TypeError("self.dims,self.dims_chunk,self.maxdims cannot be converted to a Python object for pickling")             # <<<<<<<<<<<<<<
23759  */
23760   __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__16, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
23761   __Pyx_GOTREF(__pyx_t_1);
23762   __Pyx_Raise(__pyx_t_1, 0, 0, 0);
23763   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
23764   __PYX_ERR(1, 4, __pyx_L1_error)
23765 
23766   /* "(tree fragment)":3
23767  * def __reduce_cython__(self):
23768  *     raise TypeError("self.dims,self.dims_chunk,self.maxdims cannot be converted to a Python object for pickling")
23769  * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
23770  *     raise TypeError("self.dims,self.dims_chunk,self.maxdims cannot be converted to a Python object for pickling")
23771  */
23772 
23773   /* function exit code */
23774   __pyx_L1_error:;
23775   __Pyx_XDECREF(__pyx_t_1);
23776   __Pyx_AddTraceback("tables.hdf5extension.Array.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
23777   __pyx_r = NULL;
23778   __Pyx_XGIVEREF(__pyx_r);
23779   __Pyx_RefNannyFinishContext();
23780   return __pyx_r;
23781 }
23782 
23783 /* "tables/hdf5extension.pyx":1921
23784  *   cdef hsize_t nrecords
23785  *
23786  *   def _create_array(self, object title):             # <<<<<<<<<<<<<<
23787  *     cdef int rank
23788  *     cdef hsize_t *dims
23789  */
23790 
23791 /* Python wrapper */
23792 static PyObject *__pyx_pw_6tables_13hdf5extension_7VLArray_1_create_array(PyObject *__pyx_v_self, PyObject *__pyx_v_title); /*proto*/
__pyx_pw_6tables_13hdf5extension_7VLArray_1_create_array(PyObject * __pyx_v_self,PyObject * __pyx_v_title)23793 static PyObject *__pyx_pw_6tables_13hdf5extension_7VLArray_1_create_array(PyObject *__pyx_v_self, PyObject *__pyx_v_title) {
23794   PyObject *__pyx_r = 0;
23795   __Pyx_RefNannyDeclarations
23796   __Pyx_RefNannySetupContext("_create_array (wrapper)", 0);
23797   __pyx_r = __pyx_pf_6tables_13hdf5extension_7VLArray__create_array(((struct __pyx_obj_6tables_13hdf5extension_VLArray *)__pyx_v_self), ((PyObject *)__pyx_v_title));
23798 
23799   /* function exit code */
23800   __Pyx_RefNannyFinishContext();
23801   return __pyx_r;
23802 }
23803 
__pyx_pf_6tables_13hdf5extension_7VLArray__create_array(struct __pyx_obj_6tables_13hdf5extension_VLArray * __pyx_v_self,PyObject * __pyx_v_title)23804 static PyObject *__pyx_pf_6tables_13hdf5extension_7VLArray__create_array(struct __pyx_obj_6tables_13hdf5extension_VLArray *__pyx_v_self, PyObject *__pyx_v_title) {
23805   int __pyx_v_rank;
23806   hsize_t *__pyx_v_dims;
23807   void *__pyx_v_rbuf;
23808   PyObject *__pyx_v_complib = 0;
23809   PyObject *__pyx_v_version = 0;
23810   PyObject *__pyx_v_class_ = 0;
23811   PyObject *__pyx_v_atom = 0;
23812   PyObject *__pyx_v_scatom = 0;
23813   PyObject *__pyx_v_encoded_title = 0;
23814   PyObject *__pyx_v_encoded_name = 0;
23815   enum H5T_cset_t __pyx_v_cset;
23816   PyObject *__pyx_r = NULL;
23817   __Pyx_RefNannyDeclarations
23818   PyObject *__pyx_t_1 = NULL;
23819   PyObject *__pyx_t_2 = NULL;
23820   PyObject *__pyx_t_3 = NULL;
23821   int __pyx_t_4;
23822   int __pyx_t_5;
23823   PyObject *__pyx_t_6 = NULL;
23824   int __pyx_t_7;
23825   PyObject *__pyx_t_8 = NULL;
23826   hid_t __pyx_t_9;
23827   Py_ssize_t __pyx_t_10;
23828   char *__pyx_t_11;
23829   char *__pyx_t_12;
23830   hsize_t __pyx_t_13;
23831   char *__pyx_t_14;
23832   int __pyx_t_15;
23833   int __pyx_t_16;
23834   hbool_t __pyx_t_17;
23835   PyObject *(*__pyx_t_18)(PyObject *);
23836   hid_t __pyx_t_19;
23837   __Pyx_RefNannySetupContext("_create_array", 0);
23838 
23839   /* "tables/hdf5extension.pyx":1929
23840  *     cdef object type_, itemsize, atom, scatom
23841  *     cdef bytes encoded_title, encoded_name
23842  *     cdef H5T_cset_t cset = H5T_CSET_ASCII             # <<<<<<<<<<<<<<
23843  *
23844  *     encoded_title = title.encode('utf-8')
23845  */
23846   __pyx_v_cset = H5T_CSET_ASCII;
23847 
23848   /* "tables/hdf5extension.pyx":1931
23849  *     cdef H5T_cset_t cset = H5T_CSET_ASCII
23850  *
23851  *     encoded_title = title.encode('utf-8')             # <<<<<<<<<<<<<<
23852  *     encoded_name = self.name.encode('utf-8')
23853  *
23854  */
23855   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_title, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1931, __pyx_L1_error)
23856   __Pyx_GOTREF(__pyx_t_2);
23857   __pyx_t_3 = NULL;
23858   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
23859     __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
23860     if (likely(__pyx_t_3)) {
23861       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
23862       __Pyx_INCREF(__pyx_t_3);
23863       __Pyx_INCREF(function);
23864       __Pyx_DECREF_SET(__pyx_t_2, function);
23865     }
23866   }
23867   __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_kp_s_utf_8) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_kp_s_utf_8);
23868   __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
23869   if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1931, __pyx_L1_error)
23870   __Pyx_GOTREF(__pyx_t_1);
23871   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
23872   if (!(likely(PyBytes_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 1931, __pyx_L1_error)
23873   __pyx_v_encoded_title = ((PyObject*)__pyx_t_1);
23874   __pyx_t_1 = 0;
23875 
23876   /* "tables/hdf5extension.pyx":1932
23877  *
23878  *     encoded_title = title.encode('utf-8')
23879  *     encoded_name = self.name.encode('utf-8')             # <<<<<<<<<<<<<<
23880  *
23881  *     atom = self.atom
23882  */
23883   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->__pyx_base.__pyx_base.name, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1932, __pyx_L1_error)
23884   __Pyx_GOTREF(__pyx_t_2);
23885   __pyx_t_3 = NULL;
23886   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
23887     __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
23888     if (likely(__pyx_t_3)) {
23889       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
23890       __Pyx_INCREF(__pyx_t_3);
23891       __Pyx_INCREF(function);
23892       __Pyx_DECREF_SET(__pyx_t_2, function);
23893     }
23894   }
23895   __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_kp_s_utf_8) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_kp_s_utf_8);
23896   __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
23897   if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1932, __pyx_L1_error)
23898   __Pyx_GOTREF(__pyx_t_1);
23899   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
23900   if (!(likely(PyBytes_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 1932, __pyx_L1_error)
23901   __pyx_v_encoded_name = ((PyObject*)__pyx_t_1);
23902   __pyx_t_1 = 0;
23903 
23904   /* "tables/hdf5extension.pyx":1934
23905  *     encoded_name = self.name.encode('utf-8')
23906  *
23907  *     atom = self.atom             # <<<<<<<<<<<<<<
23908  *     if not hasattr(atom, 'size'):  # it is a pseudo-atom
23909  *       atom = atom.base
23910  */
23911   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_atom); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1934, __pyx_L1_error)
23912   __Pyx_GOTREF(__pyx_t_1);
23913   __pyx_v_atom = __pyx_t_1;
23914   __pyx_t_1 = 0;
23915 
23916   /* "tables/hdf5extension.pyx":1935
23917  *
23918  *     atom = self.atom
23919  *     if not hasattr(atom, 'size'):  # it is a pseudo-atom             # <<<<<<<<<<<<<<
23920  *       atom = atom.base
23921  *
23922  */
23923   __pyx_t_4 = __Pyx_HasAttr(__pyx_v_atom, __pyx_n_s_size); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 1935, __pyx_L1_error)
23924   __pyx_t_5 = ((!(__pyx_t_4 != 0)) != 0);
23925   if (__pyx_t_5) {
23926 
23927     /* "tables/hdf5extension.pyx":1936
23928  *     atom = self.atom
23929  *     if not hasattr(atom, 'size'):  # it is a pseudo-atom
23930  *       atom = atom.base             # <<<<<<<<<<<<<<
23931  *
23932  *     # Get the HDF5 type of the *scalar* atom
23933  */
23934     __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_atom, __pyx_n_s_base); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1936, __pyx_L1_error)
23935     __Pyx_GOTREF(__pyx_t_1);
23936     __Pyx_DECREF_SET(__pyx_v_atom, __pyx_t_1);
23937     __pyx_t_1 = 0;
23938 
23939     /* "tables/hdf5extension.pyx":1935
23940  *
23941  *     atom = self.atom
23942  *     if not hasattr(atom, 'size'):  # it is a pseudo-atom             # <<<<<<<<<<<<<<
23943  *       atom = atom.base
23944  *
23945  */
23946   }
23947 
23948   /* "tables/hdf5extension.pyx":1939
23949  *
23950  *     # Get the HDF5 type of the *scalar* atom
23951  *     scatom = atom.copy(shape=())             # <<<<<<<<<<<<<<
23952  *     self.base_type_id = atom_to_hdf5_type(scatom, self.byteorder)
23953  *     if self.base_type_id < 0:
23954  */
23955   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_atom, __pyx_n_s_copy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1939, __pyx_L1_error)
23956   __Pyx_GOTREF(__pyx_t_1);
23957   __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1939, __pyx_L1_error)
23958   __Pyx_GOTREF(__pyx_t_2);
23959   if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_shape, __pyx_empty_tuple) < 0) __PYX_ERR(0, 1939, __pyx_L1_error)
23960   __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1939, __pyx_L1_error)
23961   __Pyx_GOTREF(__pyx_t_3);
23962   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
23963   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
23964   __pyx_v_scatom = __pyx_t_3;
23965   __pyx_t_3 = 0;
23966 
23967   /* "tables/hdf5extension.pyx":1940
23968  *     # Get the HDF5 type of the *scalar* atom
23969  *     scatom = atom.copy(shape=())
23970  *     self.base_type_id = atom_to_hdf5_type(scatom, self.byteorder)             # <<<<<<<<<<<<<<
23971  *     if self.base_type_id < 0:
23972  *       raise HDF5ExtError(
23973  */
23974   __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_atom_to_hdf5_type); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1940, __pyx_L1_error)
23975   __Pyx_GOTREF(__pyx_t_2);
23976   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_byteorder); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1940, __pyx_L1_error)
23977   __Pyx_GOTREF(__pyx_t_1);
23978   __pyx_t_6 = NULL;
23979   __pyx_t_7 = 0;
23980   if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
23981     __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
23982     if (likely(__pyx_t_6)) {
23983       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
23984       __Pyx_INCREF(__pyx_t_6);
23985       __Pyx_INCREF(function);
23986       __Pyx_DECREF_SET(__pyx_t_2, function);
23987       __pyx_t_7 = 1;
23988     }
23989   }
23990   #if CYTHON_FAST_PYCALL
23991   if (PyFunction_Check(__pyx_t_2)) {
23992     PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_scatom, __pyx_t_1};
23993     __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1940, __pyx_L1_error)
23994     __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
23995     __Pyx_GOTREF(__pyx_t_3);
23996     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
23997   } else
23998   #endif
23999   #if CYTHON_FAST_PYCCALL
24000   if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
24001     PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_scatom, __pyx_t_1};
24002     __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1940, __pyx_L1_error)
24003     __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
24004     __Pyx_GOTREF(__pyx_t_3);
24005     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
24006   } else
24007   #endif
24008   {
24009     __pyx_t_8 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1940, __pyx_L1_error)
24010     __Pyx_GOTREF(__pyx_t_8);
24011     if (__pyx_t_6) {
24012       __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL;
24013     }
24014     __Pyx_INCREF(__pyx_v_scatom);
24015     __Pyx_GIVEREF(__pyx_v_scatom);
24016     PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_v_scatom);
24017     __Pyx_GIVEREF(__pyx_t_1);
24018     PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_t_1);
24019     __pyx_t_1 = 0;
24020     __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1940, __pyx_L1_error)
24021     __Pyx_GOTREF(__pyx_t_3);
24022     __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
24023   }
24024   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
24025   __pyx_t_9 = __Pyx_PyInt_As_hid_t(__pyx_t_3); if (unlikely((__pyx_t_9 == ((hid_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1940, __pyx_L1_error)
24026   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
24027   __pyx_v_self->__pyx_base.base_type_id = __pyx_t_9;
24028 
24029   /* "tables/hdf5extension.pyx":1941
24030  *     scatom = atom.copy(shape=())
24031  *     self.base_type_id = atom_to_hdf5_type(scatom, self.byteorder)
24032  *     if self.base_type_id < 0:             # <<<<<<<<<<<<<<
24033  *       raise HDF5ExtError(
24034  *         "Problems creating the %s: invalid base type ID for atom %s" % (
24035  */
24036   __pyx_t_5 = ((__pyx_v_self->__pyx_base.base_type_id < 0) != 0);
24037   if (unlikely(__pyx_t_5)) {
24038 
24039     /* "tables/hdf5extension.pyx":1942
24040  *     self.base_type_id = atom_to_hdf5_type(scatom, self.byteorder)
24041  *     if self.base_type_id < 0:
24042  *       raise HDF5ExtError(             # <<<<<<<<<<<<<<
24043  *         "Problems creating the %s: invalid base type ID for atom %s" % (
24044  *             self.__class__.__name__, scatom))
24045  */
24046     __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_HDF5ExtError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1942, __pyx_L1_error)
24047     __Pyx_GOTREF(__pyx_t_2);
24048 
24049     /* "tables/hdf5extension.pyx":1944
24050  *       raise HDF5ExtError(
24051  *         "Problems creating the %s: invalid base type ID for atom %s" % (
24052  *             self.__class__.__name__, scatom))             # <<<<<<<<<<<<<<
24053  *
24054  *     # Allocate space for the dimension axis info
24055  */
24056     __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1944, __pyx_L1_error)
24057     __Pyx_GOTREF(__pyx_t_8);
24058     __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_name_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1944, __pyx_L1_error)
24059     __Pyx_GOTREF(__pyx_t_1);
24060     __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
24061     __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1944, __pyx_L1_error)
24062     __Pyx_GOTREF(__pyx_t_8);
24063     __Pyx_GIVEREF(__pyx_t_1);
24064     PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_1);
24065     __Pyx_INCREF(__pyx_v_scatom);
24066     __Pyx_GIVEREF(__pyx_v_scatom);
24067     PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_v_scatom);
24068     __pyx_t_1 = 0;
24069 
24070     /* "tables/hdf5extension.pyx":1943
24071  *     if self.base_type_id < 0:
24072  *       raise HDF5ExtError(
24073  *         "Problems creating the %s: invalid base type ID for atom %s" % (             # <<<<<<<<<<<<<<
24074  *             self.__class__.__name__, scatom))
24075  *
24076  */
24077     __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_Problems_creating_the_s_invalid_2, __pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1943, __pyx_L1_error)
24078     __Pyx_GOTREF(__pyx_t_1);
24079     __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
24080     __pyx_t_8 = NULL;
24081     if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
24082       __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_2);
24083       if (likely(__pyx_t_8)) {
24084         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
24085         __Pyx_INCREF(__pyx_t_8);
24086         __Pyx_INCREF(function);
24087         __Pyx_DECREF_SET(__pyx_t_2, function);
24088       }
24089     }
24090     __pyx_t_3 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_8, __pyx_t_1) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_1);
24091     __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
24092     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
24093     if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1942, __pyx_L1_error)
24094     __Pyx_GOTREF(__pyx_t_3);
24095     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
24096     __Pyx_Raise(__pyx_t_3, 0, 0, 0);
24097     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
24098     __PYX_ERR(0, 1942, __pyx_L1_error)
24099 
24100     /* "tables/hdf5extension.pyx":1941
24101  *     scatom = atom.copy(shape=())
24102  *     self.base_type_id = atom_to_hdf5_type(scatom, self.byteorder)
24103  *     if self.base_type_id < 0:             # <<<<<<<<<<<<<<
24104  *       raise HDF5ExtError(
24105  *         "Problems creating the %s: invalid base type ID for atom %s" % (
24106  */
24107   }
24108 
24109   /* "tables/hdf5extension.pyx":1947
24110  *
24111  *     # Allocate space for the dimension axis info
24112  *     rank = len(atom.shape)             # <<<<<<<<<<<<<<
24113  *     dims = malloc_dims(atom.shape)
24114  *
24115  */
24116   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_atom, __pyx_n_s_shape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1947, __pyx_L1_error)
24117   __Pyx_GOTREF(__pyx_t_3);
24118   __pyx_t_10 = PyObject_Length(__pyx_t_3); if (unlikely(__pyx_t_10 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1947, __pyx_L1_error)
24119   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
24120   __pyx_v_rank = __pyx_t_10;
24121 
24122   /* "tables/hdf5extension.pyx":1948
24123  *     # Allocate space for the dimension axis info
24124  *     rank = len(atom.shape)
24125  *     dims = malloc_dims(atom.shape)             # <<<<<<<<<<<<<<
24126  *
24127  *     rbuf = NULL   # We don't have data to save initially
24128  */
24129   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_atom, __pyx_n_s_shape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1948, __pyx_L1_error)
24130   __Pyx_GOTREF(__pyx_t_3);
24131   __pyx_v_dims = __pyx_f_6tables_14utilsextension_malloc_dims(__pyx_t_3);
24132   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
24133 
24134   /* "tables/hdf5extension.pyx":1950
24135  *     dims = malloc_dims(atom.shape)
24136  *
24137  *     rbuf = NULL   # We don't have data to save initially             # <<<<<<<<<<<<<<
24138  *
24139  *     # Encode strings
24140  */
24141   __pyx_v_rbuf = NULL;
24142 
24143   /* "tables/hdf5extension.pyx":1953
24144  *
24145  *     # Encode strings
24146  *     complib = (self.filters.complib or '').encode('utf-8')             # <<<<<<<<<<<<<<
24147  *     version = self._v_version.encode('utf-8')
24148  *     class_ = self._c_classid.encode('utf-8')
24149  */
24150   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_filters); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1953, __pyx_L1_error)
24151   __Pyx_GOTREF(__pyx_t_1);
24152   __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_complib); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1953, __pyx_L1_error)
24153   __Pyx_GOTREF(__pyx_t_8);
24154   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
24155   __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 1953, __pyx_L1_error)
24156   if (!__pyx_t_5) {
24157     __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
24158   } else {
24159     __Pyx_INCREF(__pyx_t_8);
24160     __pyx_t_2 = __pyx_t_8;
24161     __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
24162     goto __pyx_L5_bool_binop_done;
24163   }
24164   __Pyx_INCREF(__pyx_kp_s_);
24165   __pyx_t_2 = __pyx_kp_s_;
24166   __pyx_L5_bool_binop_done:;
24167   __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_encode); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1953, __pyx_L1_error)
24168   __Pyx_GOTREF(__pyx_t_8);
24169   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
24170   __pyx_t_2 = NULL;
24171   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
24172     __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_8);
24173     if (likely(__pyx_t_2)) {
24174       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
24175       __Pyx_INCREF(__pyx_t_2);
24176       __Pyx_INCREF(function);
24177       __Pyx_DECREF_SET(__pyx_t_8, function);
24178     }
24179   }
24180   __pyx_t_3 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_2, __pyx_kp_s_utf_8) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_kp_s_utf_8);
24181   __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
24182   if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1953, __pyx_L1_error)
24183   __Pyx_GOTREF(__pyx_t_3);
24184   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
24185   if (!(likely(PyBytes_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_3)->tp_name), 0))) __PYX_ERR(0, 1953, __pyx_L1_error)
24186   __pyx_v_complib = ((PyObject*)__pyx_t_3);
24187   __pyx_t_3 = 0;
24188 
24189   /* "tables/hdf5extension.pyx":1954
24190  *     # Encode strings
24191  *     complib = (self.filters.complib or '').encode('utf-8')
24192  *     version = self._v_version.encode('utf-8')             # <<<<<<<<<<<<<<
24193  *     class_ = self._c_classid.encode('utf-8')
24194  *
24195  */
24196   __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_v_version); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1954, __pyx_L1_error)
24197   __Pyx_GOTREF(__pyx_t_8);
24198   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1954, __pyx_L1_error)
24199   __Pyx_GOTREF(__pyx_t_2);
24200   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
24201   __pyx_t_8 = NULL;
24202   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
24203     __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_2);
24204     if (likely(__pyx_t_8)) {
24205       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
24206       __Pyx_INCREF(__pyx_t_8);
24207       __Pyx_INCREF(function);
24208       __Pyx_DECREF_SET(__pyx_t_2, function);
24209     }
24210   }
24211   __pyx_t_3 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_8, __pyx_kp_s_utf_8) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_kp_s_utf_8);
24212   __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
24213   if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1954, __pyx_L1_error)
24214   __Pyx_GOTREF(__pyx_t_3);
24215   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
24216   if (!(likely(PyBytes_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_3)->tp_name), 0))) __PYX_ERR(0, 1954, __pyx_L1_error)
24217   __pyx_v_version = ((PyObject*)__pyx_t_3);
24218   __pyx_t_3 = 0;
24219 
24220   /* "tables/hdf5extension.pyx":1955
24221  *     complib = (self.filters.complib or '').encode('utf-8')
24222  *     version = self._v_version.encode('utf-8')
24223  *     class_ = self._c_classid.encode('utf-8')             # <<<<<<<<<<<<<<
24224  *
24225  *     # Create the vlarray
24226  */
24227   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_c_classid); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1955, __pyx_L1_error)
24228   __Pyx_GOTREF(__pyx_t_2);
24229   __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_encode); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1955, __pyx_L1_error)
24230   __Pyx_GOTREF(__pyx_t_8);
24231   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
24232   __pyx_t_2 = NULL;
24233   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
24234     __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_8);
24235     if (likely(__pyx_t_2)) {
24236       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
24237       __Pyx_INCREF(__pyx_t_2);
24238       __Pyx_INCREF(function);
24239       __Pyx_DECREF_SET(__pyx_t_8, function);
24240     }
24241   }
24242   __pyx_t_3 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_2, __pyx_kp_s_utf_8) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_kp_s_utf_8);
24243   __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
24244   if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1955, __pyx_L1_error)
24245   __Pyx_GOTREF(__pyx_t_3);
24246   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
24247   if (!(likely(PyBytes_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_3)->tp_name), 0))) __PYX_ERR(0, 1955, __pyx_L1_error)
24248   __pyx_v_class_ = ((PyObject*)__pyx_t_3);
24249   __pyx_t_3 = 0;
24250 
24251   /* "tables/hdf5extension.pyx":1958
24252  *
24253  *     # Create the vlarray
24254  *     self.dataset_id = H5VLARRAYmake(self.parent_id, encoded_name, version,             # <<<<<<<<<<<<<<
24255  *                                     rank, dims, self.base_type_id,
24256  *                                     self.chunkshape[0], rbuf,
24257  */
24258   if (unlikely(__pyx_v_encoded_name == Py_None)) {
24259     PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
24260     __PYX_ERR(0, 1958, __pyx_L1_error)
24261   }
24262   __pyx_t_11 = __Pyx_PyBytes_AsWritableString(__pyx_v_encoded_name); if (unlikely((!__pyx_t_11) && PyErr_Occurred())) __PYX_ERR(0, 1958, __pyx_L1_error)
24263   if (unlikely(__pyx_v_version == Py_None)) {
24264     PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
24265     __PYX_ERR(0, 1958, __pyx_L1_error)
24266   }
24267   __pyx_t_12 = __Pyx_PyBytes_AsWritableString(__pyx_v_version); if (unlikely((!__pyx_t_12) && PyErr_Occurred())) __PYX_ERR(0, 1958, __pyx_L1_error)
24268 
24269   /* "tables/hdf5extension.pyx":1960
24270  *     self.dataset_id = H5VLARRAYmake(self.parent_id, encoded_name, version,
24271  *                                     rank, dims, self.base_type_id,
24272  *                                     self.chunkshape[0], rbuf,             # <<<<<<<<<<<<<<
24273  *                                     self.filters.complevel, complib,
24274  *                                     self.filters.shuffle_bitshuffle,
24275  */
24276   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_chunkshape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1960, __pyx_L1_error)
24277   __Pyx_GOTREF(__pyx_t_3);
24278   __pyx_t_8 = __Pyx_GetItemInt(__pyx_t_3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1960, __pyx_L1_error)
24279   __Pyx_GOTREF(__pyx_t_8);
24280   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
24281   __pyx_t_13 = __Pyx_PyInt_As_hsize_t(__pyx_t_8); if (unlikely((__pyx_t_13 == ((hsize_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1960, __pyx_L1_error)
24282   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
24283 
24284   /* "tables/hdf5extension.pyx":1961
24285  *                                     rank, dims, self.base_type_id,
24286  *                                     self.chunkshape[0], rbuf,
24287  *                                     self.filters.complevel, complib,             # <<<<<<<<<<<<<<
24288  *                                     self.filters.shuffle_bitshuffle,
24289  *                                     self.filters.fletcher32,
24290  */
24291   __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_filters); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1961, __pyx_L1_error)
24292   __Pyx_GOTREF(__pyx_t_8);
24293   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_complevel); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1961, __pyx_L1_error)
24294   __Pyx_GOTREF(__pyx_t_3);
24295   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
24296   __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1961, __pyx_L1_error)
24297   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
24298   if (unlikely(__pyx_v_complib == Py_None)) {
24299     PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
24300     __PYX_ERR(0, 1961, __pyx_L1_error)
24301   }
24302   __pyx_t_14 = __Pyx_PyBytes_AsWritableString(__pyx_v_complib); if (unlikely((!__pyx_t_14) && PyErr_Occurred())) __PYX_ERR(0, 1961, __pyx_L1_error)
24303 
24304   /* "tables/hdf5extension.pyx":1962
24305  *                                     self.chunkshape[0], rbuf,
24306  *                                     self.filters.complevel, complib,
24307  *                                     self.filters.shuffle_bitshuffle,             # <<<<<<<<<<<<<<
24308  *                                     self.filters.fletcher32,
24309  *                                     self._want_track_times, rbuf)
24310  */
24311   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_filters); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1962, __pyx_L1_error)
24312   __Pyx_GOTREF(__pyx_t_3);
24313   __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_shuffle_bitshuffle); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1962, __pyx_L1_error)
24314   __Pyx_GOTREF(__pyx_t_8);
24315   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
24316   __pyx_t_15 = __Pyx_PyInt_As_int(__pyx_t_8); if (unlikely((__pyx_t_15 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1962, __pyx_L1_error)
24317   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
24318 
24319   /* "tables/hdf5extension.pyx":1963
24320  *                                     self.filters.complevel, complib,
24321  *                                     self.filters.shuffle_bitshuffle,
24322  *                                     self.filters.fletcher32,             # <<<<<<<<<<<<<<
24323  *                                     self._want_track_times, rbuf)
24324  *     if dims:
24325  */
24326   __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_filters); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1963, __pyx_L1_error)
24327   __Pyx_GOTREF(__pyx_t_8);
24328   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_fletcher32); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1963, __pyx_L1_error)
24329   __Pyx_GOTREF(__pyx_t_3);
24330   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
24331   __pyx_t_16 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_16 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1963, __pyx_L1_error)
24332   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
24333 
24334   /* "tables/hdf5extension.pyx":1964
24335  *                                     self.filters.shuffle_bitshuffle,
24336  *                                     self.filters.fletcher32,
24337  *                                     self._want_track_times, rbuf)             # <<<<<<<<<<<<<<
24338  *     if dims:
24339  *       free(<void *>dims)
24340  */
24341   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_want_track_times); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1964, __pyx_L1_error)
24342   __Pyx_GOTREF(__pyx_t_3);
24343   __pyx_t_17 = __Pyx_PyInt_As_hbool_t(__pyx_t_3); if (unlikely((__pyx_t_17 == ((hbool_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1964, __pyx_L1_error)
24344   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
24345 
24346   /* "tables/hdf5extension.pyx":1958
24347  *
24348  *     # Create the vlarray
24349  *     self.dataset_id = H5VLARRAYmake(self.parent_id, encoded_name, version,             # <<<<<<<<<<<<<<
24350  *                                     rank, dims, self.base_type_id,
24351  *                                     self.chunkshape[0], rbuf,
24352  */
24353   __pyx_v_self->__pyx_base.dataset_id = H5VLARRAYmake(__pyx_v_self->__pyx_base.__pyx_base.parent_id, __pyx_t_11, __pyx_t_12, __pyx_v_rank, __pyx_v_dims, __pyx_v_self->__pyx_base.base_type_id, __pyx_t_13, __pyx_v_rbuf, __pyx_t_7, __pyx_t_14, __pyx_t_15, __pyx_t_16, __pyx_t_17, __pyx_v_rbuf);
24354 
24355   /* "tables/hdf5extension.pyx":1965
24356  *                                     self.filters.fletcher32,
24357  *                                     self._want_track_times, rbuf)
24358  *     if dims:             # <<<<<<<<<<<<<<
24359  *       free(<void *>dims)
24360  *     if self.dataset_id < 0:
24361  */
24362   __pyx_t_5 = (__pyx_v_dims != 0);
24363   if (__pyx_t_5) {
24364 
24365     /* "tables/hdf5extension.pyx":1966
24366  *                                     self._want_track_times, rbuf)
24367  *     if dims:
24368  *       free(<void *>dims)             # <<<<<<<<<<<<<<
24369  *     if self.dataset_id < 0:
24370  *       raise HDF5ExtError("Problems creating the VLArray.")
24371  */
24372     free(((void *)__pyx_v_dims));
24373 
24374     /* "tables/hdf5extension.pyx":1965
24375  *                                     self.filters.fletcher32,
24376  *                                     self._want_track_times, rbuf)
24377  *     if dims:             # <<<<<<<<<<<<<<
24378  *       free(<void *>dims)
24379  *     if self.dataset_id < 0:
24380  */
24381   }
24382 
24383   /* "tables/hdf5extension.pyx":1967
24384  *     if dims:
24385  *       free(<void *>dims)
24386  *     if self.dataset_id < 0:             # <<<<<<<<<<<<<<
24387  *       raise HDF5ExtError("Problems creating the VLArray.")
24388  *     self.nrecords = 0  # Initialize the number of records saved
24389  */
24390   __pyx_t_5 = ((__pyx_v_self->__pyx_base.dataset_id < 0) != 0);
24391   if (unlikely(__pyx_t_5)) {
24392 
24393     /* "tables/hdf5extension.pyx":1968
24394  *       free(<void *>dims)
24395  *     if self.dataset_id < 0:
24396  *       raise HDF5ExtError("Problems creating the VLArray.")             # <<<<<<<<<<<<<<
24397  *     self.nrecords = 0  # Initialize the number of records saved
24398  *
24399  */
24400     __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_HDF5ExtError); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1968, __pyx_L1_error)
24401     __Pyx_GOTREF(__pyx_t_8);
24402     __pyx_t_2 = NULL;
24403     if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) {
24404       __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_8);
24405       if (likely(__pyx_t_2)) {
24406         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
24407         __Pyx_INCREF(__pyx_t_2);
24408         __Pyx_INCREF(function);
24409         __Pyx_DECREF_SET(__pyx_t_8, function);
24410       }
24411     }
24412     __pyx_t_3 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_2, __pyx_kp_s_Problems_creating_the_VLArray) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_kp_s_Problems_creating_the_VLArray);
24413     __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
24414     if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1968, __pyx_L1_error)
24415     __Pyx_GOTREF(__pyx_t_3);
24416     __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
24417     __Pyx_Raise(__pyx_t_3, 0, 0, 0);
24418     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
24419     __PYX_ERR(0, 1968, __pyx_L1_error)
24420 
24421     /* "tables/hdf5extension.pyx":1967
24422  *     if dims:
24423  *       free(<void *>dims)
24424  *     if self.dataset_id < 0:             # <<<<<<<<<<<<<<
24425  *       raise HDF5ExtError("Problems creating the VLArray.")
24426  *     self.nrecords = 0  # Initialize the number of records saved
24427  */
24428   }
24429 
24430   /* "tables/hdf5extension.pyx":1969
24431  *     if self.dataset_id < 0:
24432  *       raise HDF5ExtError("Problems creating the VLArray.")
24433  *     self.nrecords = 0  # Initialize the number of records saved             # <<<<<<<<<<<<<<
24434  *
24435  *     if self._v_file.params['PYTABLES_SYS_ATTRS']:
24436  */
24437   __pyx_v_self->nrecords = 0;
24438 
24439   /* "tables/hdf5extension.pyx":1971
24440  *     self.nrecords = 0  # Initialize the number of records saved
24441  *
24442  *     if self._v_file.params['PYTABLES_SYS_ATTRS']:             # <<<<<<<<<<<<<<
24443  *       if PY_MAJOR_VERSION > 2:
24444  *         cset = H5T_CSET_UTF8
24445  */
24446   __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_v_file); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1971, __pyx_L1_error)
24447   __Pyx_GOTREF(__pyx_t_3);
24448   __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_params); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1971, __pyx_L1_error)
24449   __Pyx_GOTREF(__pyx_t_8);
24450   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
24451   __pyx_t_3 = __Pyx_PyObject_Dict_GetItem(__pyx_t_8, __pyx_n_s_PYTABLES_SYS_ATTRS); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1971, __pyx_L1_error)
24452   __Pyx_GOTREF(__pyx_t_3);
24453   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
24454   __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 1971, __pyx_L1_error)
24455   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
24456   if (__pyx_t_5) {
24457 
24458     /* "tables/hdf5extension.pyx":1972
24459  *
24460  *     if self._v_file.params['PYTABLES_SYS_ATTRS']:
24461  *       if PY_MAJOR_VERSION > 2:             # <<<<<<<<<<<<<<
24462  *         cset = H5T_CSET_UTF8
24463  *       # Set the conforming array attributes
24464  */
24465     __pyx_t_5 = ((PY_MAJOR_VERSION > 2) != 0);
24466     if (__pyx_t_5) {
24467 
24468       /* "tables/hdf5extension.pyx":1973
24469  *     if self._v_file.params['PYTABLES_SYS_ATTRS']:
24470  *       if PY_MAJOR_VERSION > 2:
24471  *         cset = H5T_CSET_UTF8             # <<<<<<<<<<<<<<
24472  *       # Set the conforming array attributes
24473  *       H5ATTRset_attribute_string(self.dataset_id, "CLASS", class_,
24474  */
24475       __pyx_v_cset = H5T_CSET_UTF8;
24476 
24477       /* "tables/hdf5extension.pyx":1972
24478  *
24479  *     if self._v_file.params['PYTABLES_SYS_ATTRS']:
24480  *       if PY_MAJOR_VERSION > 2:             # <<<<<<<<<<<<<<
24481  *         cset = H5T_CSET_UTF8
24482  *       # Set the conforming array attributes
24483  */
24484     }
24485 
24486     /* "tables/hdf5extension.pyx":1975
24487  *         cset = H5T_CSET_UTF8
24488  *       # Set the conforming array attributes
24489  *       H5ATTRset_attribute_string(self.dataset_id, "CLASS", class_,             # <<<<<<<<<<<<<<
24490  *                                  len(class_), cset)
24491  *       H5ATTRset_attribute_string(self.dataset_id, "VERSION", version,
24492  */
24493     if (unlikely(__pyx_v_class_ == Py_None)) {
24494       PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
24495       __PYX_ERR(0, 1975, __pyx_L1_error)
24496     }
24497     __pyx_t_14 = __Pyx_PyBytes_AsWritableString(__pyx_v_class_); if (unlikely((!__pyx_t_14) && PyErr_Occurred())) __PYX_ERR(0, 1975, __pyx_L1_error)
24498 
24499     /* "tables/hdf5extension.pyx":1976
24500  *       # Set the conforming array attributes
24501  *       H5ATTRset_attribute_string(self.dataset_id, "CLASS", class_,
24502  *                                  len(class_), cset)             # <<<<<<<<<<<<<<
24503  *       H5ATTRset_attribute_string(self.dataset_id, "VERSION", version,
24504  *                                  len(version), cset)
24505  */
24506     if (unlikely(__pyx_v_class_ == Py_None)) {
24507       PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
24508       __PYX_ERR(0, 1976, __pyx_L1_error)
24509     }
24510     __pyx_t_10 = PyBytes_GET_SIZE(__pyx_v_class_); if (unlikely(__pyx_t_10 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1976, __pyx_L1_error)
24511 
24512     /* "tables/hdf5extension.pyx":1975
24513  *         cset = H5T_CSET_UTF8
24514  *       # Set the conforming array attributes
24515  *       H5ATTRset_attribute_string(self.dataset_id, "CLASS", class_,             # <<<<<<<<<<<<<<
24516  *                                  len(class_), cset)
24517  *       H5ATTRset_attribute_string(self.dataset_id, "VERSION", version,
24518  */
24519     (void)(H5ATTRset_attribute_string(__pyx_v_self->__pyx_base.dataset_id, ((char *)"CLASS"), __pyx_t_14, __pyx_t_10, __pyx_v_cset));
24520 
24521     /* "tables/hdf5extension.pyx":1977
24522  *       H5ATTRset_attribute_string(self.dataset_id, "CLASS", class_,
24523  *                                  len(class_), cset)
24524  *       H5ATTRset_attribute_string(self.dataset_id, "VERSION", version,             # <<<<<<<<<<<<<<
24525  *                                  len(version), cset)
24526  *       H5ATTRset_attribute_string(self.dataset_id, "TITLE", encoded_title,
24527  */
24528     if (unlikely(__pyx_v_version == Py_None)) {
24529       PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
24530       __PYX_ERR(0, 1977, __pyx_L1_error)
24531     }
24532     __pyx_t_14 = __Pyx_PyBytes_AsWritableString(__pyx_v_version); if (unlikely((!__pyx_t_14) && PyErr_Occurred())) __PYX_ERR(0, 1977, __pyx_L1_error)
24533 
24534     /* "tables/hdf5extension.pyx":1978
24535  *                                  len(class_), cset)
24536  *       H5ATTRset_attribute_string(self.dataset_id, "VERSION", version,
24537  *                                  len(version), cset)             # <<<<<<<<<<<<<<
24538  *       H5ATTRset_attribute_string(self.dataset_id, "TITLE", encoded_title,
24539  *                                  len(encoded_title), cset)
24540  */
24541     if (unlikely(__pyx_v_version == Py_None)) {
24542       PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
24543       __PYX_ERR(0, 1978, __pyx_L1_error)
24544     }
24545     __pyx_t_10 = PyBytes_GET_SIZE(__pyx_v_version); if (unlikely(__pyx_t_10 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1978, __pyx_L1_error)
24546 
24547     /* "tables/hdf5extension.pyx":1977
24548  *       H5ATTRset_attribute_string(self.dataset_id, "CLASS", class_,
24549  *                                  len(class_), cset)
24550  *       H5ATTRset_attribute_string(self.dataset_id, "VERSION", version,             # <<<<<<<<<<<<<<
24551  *                                  len(version), cset)
24552  *       H5ATTRset_attribute_string(self.dataset_id, "TITLE", encoded_title,
24553  */
24554     (void)(H5ATTRset_attribute_string(__pyx_v_self->__pyx_base.dataset_id, ((char *)"VERSION"), __pyx_t_14, __pyx_t_10, __pyx_v_cset));
24555 
24556     /* "tables/hdf5extension.pyx":1979
24557  *       H5ATTRset_attribute_string(self.dataset_id, "VERSION", version,
24558  *                                  len(version), cset)
24559  *       H5ATTRset_attribute_string(self.dataset_id, "TITLE", encoded_title,             # <<<<<<<<<<<<<<
24560  *                                  len(encoded_title), cset)
24561  *
24562  */
24563     if (unlikely(__pyx_v_encoded_title == Py_None)) {
24564       PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
24565       __PYX_ERR(0, 1979, __pyx_L1_error)
24566     }
24567     __pyx_t_14 = __Pyx_PyBytes_AsWritableString(__pyx_v_encoded_title); if (unlikely((!__pyx_t_14) && PyErr_Occurred())) __PYX_ERR(0, 1979, __pyx_L1_error)
24568 
24569     /* "tables/hdf5extension.pyx":1980
24570  *                                  len(version), cset)
24571  *       H5ATTRset_attribute_string(self.dataset_id, "TITLE", encoded_title,
24572  *                                  len(encoded_title), cset)             # <<<<<<<<<<<<<<
24573  *
24574  *     # Get the datatype handles
24575  */
24576     if (unlikely(__pyx_v_encoded_title == Py_None)) {
24577       PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
24578       __PYX_ERR(0, 1980, __pyx_L1_error)
24579     }
24580     __pyx_t_10 = PyBytes_GET_SIZE(__pyx_v_encoded_title); if (unlikely(__pyx_t_10 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1980, __pyx_L1_error)
24581 
24582     /* "tables/hdf5extension.pyx":1979
24583  *       H5ATTRset_attribute_string(self.dataset_id, "VERSION", version,
24584  *                                  len(version), cset)
24585  *       H5ATTRset_attribute_string(self.dataset_id, "TITLE", encoded_title,             # <<<<<<<<<<<<<<
24586  *                                  len(encoded_title), cset)
24587  *
24588  */
24589     (void)(H5ATTRset_attribute_string(__pyx_v_self->__pyx_base.dataset_id, ((char *)"TITLE"), __pyx_t_14, __pyx_t_10, __pyx_v_cset));
24590 
24591     /* "tables/hdf5extension.pyx":1971
24592  *     self.nrecords = 0  # Initialize the number of records saved
24593  *
24594  *     if self._v_file.params['PYTABLES_SYS_ATTRS']:             # <<<<<<<<<<<<<<
24595  *       if PY_MAJOR_VERSION > 2:
24596  *         cset = H5T_CSET_UTF8
24597  */
24598   }
24599 
24600   /* "tables/hdf5extension.pyx":1983
24601  *
24602  *     # Get the datatype handles
24603  *     self.disk_type_id, self.type_id = self._get_type_ids()             # <<<<<<<<<<<<<<
24604  *
24605  *     return self.dataset_id
24606  */
24607   __pyx_t_3 = ((struct __pyx_vtabstruct_6tables_13hdf5extension_VLArray *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._get_type_ids(((struct __pyx_obj_6tables_13hdf5extension_Leaf *)__pyx_v_self)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1983, __pyx_L1_error)
24608   __Pyx_GOTREF(__pyx_t_3);
24609   if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) {
24610     PyObject* sequence = __pyx_t_3;
24611     Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
24612     if (unlikely(size != 2)) {
24613       if (size > 2) __Pyx_RaiseTooManyValuesError(2);
24614       else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
24615       __PYX_ERR(0, 1983, __pyx_L1_error)
24616     }
24617     #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
24618     if (likely(PyTuple_CheckExact(sequence))) {
24619       __pyx_t_8 = PyTuple_GET_ITEM(sequence, 0);
24620       __pyx_t_2 = PyTuple_GET_ITEM(sequence, 1);
24621     } else {
24622       __pyx_t_8 = PyList_GET_ITEM(sequence, 0);
24623       __pyx_t_2 = PyList_GET_ITEM(sequence, 1);
24624     }
24625     __Pyx_INCREF(__pyx_t_8);
24626     __Pyx_INCREF(__pyx_t_2);
24627     #else
24628     __pyx_t_8 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1983, __pyx_L1_error)
24629     __Pyx_GOTREF(__pyx_t_8);
24630     __pyx_t_2 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1983, __pyx_L1_error)
24631     __Pyx_GOTREF(__pyx_t_2);
24632     #endif
24633     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
24634   } else {
24635     Py_ssize_t index = -1;
24636     __pyx_t_1 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1983, __pyx_L1_error)
24637     __Pyx_GOTREF(__pyx_t_1);
24638     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
24639     __pyx_t_18 = Py_TYPE(__pyx_t_1)->tp_iternext;
24640     index = 0; __pyx_t_8 = __pyx_t_18(__pyx_t_1); if (unlikely(!__pyx_t_8)) goto __pyx_L11_unpacking_failed;
24641     __Pyx_GOTREF(__pyx_t_8);
24642     index = 1; __pyx_t_2 = __pyx_t_18(__pyx_t_1); if (unlikely(!__pyx_t_2)) goto __pyx_L11_unpacking_failed;
24643     __Pyx_GOTREF(__pyx_t_2);
24644     if (__Pyx_IternextUnpackEndCheck(__pyx_t_18(__pyx_t_1), 2) < 0) __PYX_ERR(0, 1983, __pyx_L1_error)
24645     __pyx_t_18 = NULL;
24646     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
24647     goto __pyx_L12_unpacking_done;
24648     __pyx_L11_unpacking_failed:;
24649     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
24650     __pyx_t_18 = NULL;
24651     if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
24652     __PYX_ERR(0, 1983, __pyx_L1_error)
24653     __pyx_L12_unpacking_done:;
24654   }
24655   __pyx_t_9 = __Pyx_PyInt_As_hid_t(__pyx_t_8); if (unlikely((__pyx_t_9 == ((hid_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1983, __pyx_L1_error)
24656   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
24657   __pyx_t_19 = __Pyx_PyInt_As_hid_t(__pyx_t_2); if (unlikely((__pyx_t_19 == ((hid_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1983, __pyx_L1_error)
24658   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
24659   __pyx_v_self->__pyx_base.disk_type_id = __pyx_t_9;
24660   __pyx_v_self->__pyx_base.type_id = __pyx_t_19;
24661 
24662   /* "tables/hdf5extension.pyx":1985
24663  *     self.disk_type_id, self.type_id = self._get_type_ids()
24664  *
24665  *     return self.dataset_id             # <<<<<<<<<<<<<<
24666  *
24667  *
24668  */
24669   __Pyx_XDECREF(__pyx_r);
24670   __pyx_t_3 = __Pyx_PyInt_From_hid_t(__pyx_v_self->__pyx_base.dataset_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1985, __pyx_L1_error)
24671   __Pyx_GOTREF(__pyx_t_3);
24672   __pyx_r = __pyx_t_3;
24673   __pyx_t_3 = 0;
24674   goto __pyx_L0;
24675 
24676   /* "tables/hdf5extension.pyx":1921
24677  *   cdef hsize_t nrecords
24678  *
24679  *   def _create_array(self, object title):             # <<<<<<<<<<<<<<
24680  *     cdef int rank
24681  *     cdef hsize_t *dims
24682  */
24683 
24684   /* function exit code */
24685   __pyx_L1_error:;
24686   __Pyx_XDECREF(__pyx_t_1);
24687   __Pyx_XDECREF(__pyx_t_2);
24688   __Pyx_XDECREF(__pyx_t_3);
24689   __Pyx_XDECREF(__pyx_t_6);
24690   __Pyx_XDECREF(__pyx_t_8);
24691   __Pyx_AddTraceback("tables.hdf5extension.VLArray._create_array", __pyx_clineno, __pyx_lineno, __pyx_filename);
24692   __pyx_r = NULL;
24693   __pyx_L0:;
24694   __Pyx_XDECREF(__pyx_v_complib);
24695   __Pyx_XDECREF(__pyx_v_version);
24696   __Pyx_XDECREF(__pyx_v_class_);
24697   __Pyx_XDECREF(__pyx_v_atom);
24698   __Pyx_XDECREF(__pyx_v_scatom);
24699   __Pyx_XDECREF(__pyx_v_encoded_title);
24700   __Pyx_XDECREF(__pyx_v_encoded_name);
24701   __Pyx_XGIVEREF(__pyx_r);
24702   __Pyx_RefNannyFinishContext();
24703   return __pyx_r;
24704 }
24705 
24706 /* "tables/hdf5extension.pyx":1988
24707  *
24708  *
24709  *   def _open_array(self):             # <<<<<<<<<<<<<<
24710  *     cdef char cbyteorder[11]  # "irrelevant" fits easily here
24711  *     cdef int i, enumtype
24712  */
24713 
24714 /* Python wrapper */
24715 static PyObject *__pyx_pw_6tables_13hdf5extension_7VLArray_3_open_array(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
__pyx_pw_6tables_13hdf5extension_7VLArray_3_open_array(PyObject * __pyx_v_self,CYTHON_UNUSED PyObject * unused)24716 static PyObject *__pyx_pw_6tables_13hdf5extension_7VLArray_3_open_array(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
24717   PyObject *__pyx_r = 0;
24718   __Pyx_RefNannyDeclarations
24719   __Pyx_RefNannySetupContext("_open_array (wrapper)", 0);
24720   __pyx_r = __pyx_pf_6tables_13hdf5extension_7VLArray_2_open_array(((struct __pyx_obj_6tables_13hdf5extension_VLArray *)__pyx_v_self));
24721 
24722   /* function exit code */
24723   __Pyx_RefNannyFinishContext();
24724   return __pyx_r;
24725 }
24726 
__pyx_pf_6tables_13hdf5extension_7VLArray_2_open_array(struct __pyx_obj_6tables_13hdf5extension_VLArray * __pyx_v_self)24727 static PyObject *__pyx_pf_6tables_13hdf5extension_7VLArray_2_open_array(struct __pyx_obj_6tables_13hdf5extension_VLArray *__pyx_v_self) {
24728   char __pyx_v_cbyteorder[11];
24729   hsize_t __pyx_v_nrecords;
24730   hsize_t __pyx_v_chunksize;
24731   PyObject *__pyx_v_encoded_name = 0;
24732   PyObject *__pyx_v_byteorder = 0;
24733   PyObject *__pyx_v_atom = NULL;
24734   PyObject *__pyx_r = NULL;
24735   __Pyx_RefNannyDeclarations
24736   PyObject *__pyx_t_1 = NULL;
24737   PyObject *__pyx_t_2 = NULL;
24738   PyObject *__pyx_t_3 = NULL;
24739   char *__pyx_t_4;
24740   int __pyx_t_5;
24741   PyObject *__pyx_t_6 = NULL;
24742   PyObject *(*__pyx_t_7)(PyObject *);
24743   hid_t __pyx_t_8;
24744   hid_t __pyx_t_9;
24745   int __pyx_t_10;
24746   PyObject *__pyx_t_11 = NULL;
24747   PyObject *__pyx_t_12 = NULL;
24748   __Pyx_RefNannySetupContext("_open_array", 0);
24749 
24750   /* "tables/hdf5extension.pyx":1998
24751  *     cdef str byteorder
24752  *
24753  *     encoded_name = self.name.encode('utf-8')             # <<<<<<<<<<<<<<
24754  *
24755  *     # Open the dataset
24756  */
24757   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->__pyx_base.__pyx_base.name, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1998, __pyx_L1_error)
24758   __Pyx_GOTREF(__pyx_t_2);
24759   __pyx_t_3 = NULL;
24760   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
24761     __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
24762     if (likely(__pyx_t_3)) {
24763       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
24764       __Pyx_INCREF(__pyx_t_3);
24765       __Pyx_INCREF(function);
24766       __Pyx_DECREF_SET(__pyx_t_2, function);
24767     }
24768   }
24769   __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_kp_s_utf_8) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_kp_s_utf_8);
24770   __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
24771   if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1998, __pyx_L1_error)
24772   __Pyx_GOTREF(__pyx_t_1);
24773   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
24774   if (!(likely(PyBytes_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 1998, __pyx_L1_error)
24775   __pyx_v_encoded_name = ((PyObject*)__pyx_t_1);
24776   __pyx_t_1 = 0;
24777 
24778   /* "tables/hdf5extension.pyx":2001
24779  *
24780  *     # Open the dataset
24781  *     self.dataset_id = H5Dopen(self.parent_id, encoded_name, H5P_DEFAULT)             # <<<<<<<<<<<<<<
24782  *     if self.dataset_id < 0:
24783  *       raise HDF5ExtError("Non-existing node ``%s`` under ``%s``" %
24784  */
24785   if (unlikely(__pyx_v_encoded_name == Py_None)) {
24786     PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
24787     __PYX_ERR(0, 2001, __pyx_L1_error)
24788   }
24789   __pyx_t_4 = __Pyx_PyBytes_AsWritableString(__pyx_v_encoded_name); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 2001, __pyx_L1_error)
24790   __pyx_v_self->__pyx_base.dataset_id = H5Dopen(__pyx_v_self->__pyx_base.__pyx_base.parent_id, __pyx_t_4, H5P_DEFAULT);
24791 
24792   /* "tables/hdf5extension.pyx":2002
24793  *     # Open the dataset
24794  *     self.dataset_id = H5Dopen(self.parent_id, encoded_name, H5P_DEFAULT)
24795  *     if self.dataset_id < 0:             # <<<<<<<<<<<<<<
24796  *       raise HDF5ExtError("Non-existing node ``%s`` under ``%s``" %
24797  *                          (self.name, self._v_parent._v_pathname))
24798  */
24799   __pyx_t_5 = ((__pyx_v_self->__pyx_base.dataset_id < 0) != 0);
24800   if (unlikely(__pyx_t_5)) {
24801 
24802     /* "tables/hdf5extension.pyx":2003
24803  *     self.dataset_id = H5Dopen(self.parent_id, encoded_name, H5P_DEFAULT)
24804  *     if self.dataset_id < 0:
24805  *       raise HDF5ExtError("Non-existing node ``%s`` under ``%s``" %             # <<<<<<<<<<<<<<
24806  *                          (self.name, self._v_parent._v_pathname))
24807  *     # Get the datatype handles
24808  */
24809     __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_HDF5ExtError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2003, __pyx_L1_error)
24810     __Pyx_GOTREF(__pyx_t_2);
24811 
24812     /* "tables/hdf5extension.pyx":2004
24813  *     if self.dataset_id < 0:
24814  *       raise HDF5ExtError("Non-existing node ``%s`` under ``%s``" %
24815  *                          (self.name, self._v_parent._v_pathname))             # <<<<<<<<<<<<<<
24816  *     # Get the datatype handles
24817  *     self.disk_type_id, self.type_id = self._get_type_ids()
24818  */
24819     __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_v_parent); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2004, __pyx_L1_error)
24820     __Pyx_GOTREF(__pyx_t_3);
24821     __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_v_pathname); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2004, __pyx_L1_error)
24822     __Pyx_GOTREF(__pyx_t_6);
24823     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
24824     __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2004, __pyx_L1_error)
24825     __Pyx_GOTREF(__pyx_t_3);
24826     __Pyx_INCREF(__pyx_v_self->__pyx_base.__pyx_base.name);
24827     __Pyx_GIVEREF(__pyx_v_self->__pyx_base.__pyx_base.name);
24828     PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_self->__pyx_base.__pyx_base.name);
24829     __Pyx_GIVEREF(__pyx_t_6);
24830     PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_6);
24831     __pyx_t_6 = 0;
24832 
24833     /* "tables/hdf5extension.pyx":2003
24834  *     self.dataset_id = H5Dopen(self.parent_id, encoded_name, H5P_DEFAULT)
24835  *     if self.dataset_id < 0:
24836  *       raise HDF5ExtError("Non-existing node ``%s`` under ``%s``" %             # <<<<<<<<<<<<<<
24837  *                          (self.name, self._v_parent._v_pathname))
24838  *     # Get the datatype handles
24839  */
24840     __pyx_t_6 = __Pyx_PyString_Format(__pyx_kp_s_Non_existing_node_s_under_s, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2003, __pyx_L1_error)
24841     __Pyx_GOTREF(__pyx_t_6);
24842     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
24843     __pyx_t_3 = NULL;
24844     if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
24845       __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
24846       if (likely(__pyx_t_3)) {
24847         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
24848         __Pyx_INCREF(__pyx_t_3);
24849         __Pyx_INCREF(function);
24850         __Pyx_DECREF_SET(__pyx_t_2, function);
24851       }
24852     }
24853     __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_6);
24854     __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
24855     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
24856     if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2003, __pyx_L1_error)
24857     __Pyx_GOTREF(__pyx_t_1);
24858     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
24859     __Pyx_Raise(__pyx_t_1, 0, 0, 0);
24860     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
24861     __PYX_ERR(0, 2003, __pyx_L1_error)
24862 
24863     /* "tables/hdf5extension.pyx":2002
24864  *     # Open the dataset
24865  *     self.dataset_id = H5Dopen(self.parent_id, encoded_name, H5P_DEFAULT)
24866  *     if self.dataset_id < 0:             # <<<<<<<<<<<<<<
24867  *       raise HDF5ExtError("Non-existing node ``%s`` under ``%s``" %
24868  *                          (self.name, self._v_parent._v_pathname))
24869  */
24870   }
24871 
24872   /* "tables/hdf5extension.pyx":2006
24873  *                          (self.name, self._v_parent._v_pathname))
24874  *     # Get the datatype handles
24875  *     self.disk_type_id, self.type_id = self._get_type_ids()             # <<<<<<<<<<<<<<
24876  *     # Get the atom for this type
24877  *     atom = atom_from_hdf5_type(self.type_id)
24878  */
24879   __pyx_t_1 = ((struct __pyx_vtabstruct_6tables_13hdf5extension_VLArray *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._get_type_ids(((struct __pyx_obj_6tables_13hdf5extension_Leaf *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2006, __pyx_L1_error)
24880   __Pyx_GOTREF(__pyx_t_1);
24881   if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
24882     PyObject* sequence = __pyx_t_1;
24883     Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
24884     if (unlikely(size != 2)) {
24885       if (size > 2) __Pyx_RaiseTooManyValuesError(2);
24886       else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
24887       __PYX_ERR(0, 2006, __pyx_L1_error)
24888     }
24889     #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
24890     if (likely(PyTuple_CheckExact(sequence))) {
24891       __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0);
24892       __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1);
24893     } else {
24894       __pyx_t_2 = PyList_GET_ITEM(sequence, 0);
24895       __pyx_t_6 = PyList_GET_ITEM(sequence, 1);
24896     }
24897     __Pyx_INCREF(__pyx_t_2);
24898     __Pyx_INCREF(__pyx_t_6);
24899     #else
24900     __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2006, __pyx_L1_error)
24901     __Pyx_GOTREF(__pyx_t_2);
24902     __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2006, __pyx_L1_error)
24903     __Pyx_GOTREF(__pyx_t_6);
24904     #endif
24905     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
24906   } else {
24907     Py_ssize_t index = -1;
24908     __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2006, __pyx_L1_error)
24909     __Pyx_GOTREF(__pyx_t_3);
24910     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
24911     __pyx_t_7 = Py_TYPE(__pyx_t_3)->tp_iternext;
24912     index = 0; __pyx_t_2 = __pyx_t_7(__pyx_t_3); if (unlikely(!__pyx_t_2)) goto __pyx_L4_unpacking_failed;
24913     __Pyx_GOTREF(__pyx_t_2);
24914     index = 1; __pyx_t_6 = __pyx_t_7(__pyx_t_3); if (unlikely(!__pyx_t_6)) goto __pyx_L4_unpacking_failed;
24915     __Pyx_GOTREF(__pyx_t_6);
24916     if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_3), 2) < 0) __PYX_ERR(0, 2006, __pyx_L1_error)
24917     __pyx_t_7 = NULL;
24918     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
24919     goto __pyx_L5_unpacking_done;
24920     __pyx_L4_unpacking_failed:;
24921     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
24922     __pyx_t_7 = NULL;
24923     if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
24924     __PYX_ERR(0, 2006, __pyx_L1_error)
24925     __pyx_L5_unpacking_done:;
24926   }
24927   __pyx_t_8 = __Pyx_PyInt_As_hid_t(__pyx_t_2); if (unlikely((__pyx_t_8 == ((hid_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2006, __pyx_L1_error)
24928   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
24929   __pyx_t_9 = __Pyx_PyInt_As_hid_t(__pyx_t_6); if (unlikely((__pyx_t_9 == ((hid_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2006, __pyx_L1_error)
24930   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
24931   __pyx_v_self->__pyx_base.disk_type_id = __pyx_t_8;
24932   __pyx_v_self->__pyx_base.type_id = __pyx_t_9;
24933 
24934   /* "tables/hdf5extension.pyx":2008
24935  *     self.disk_type_id, self.type_id = self._get_type_ids()
24936  *     # Get the atom for this type
24937  *     atom = atom_from_hdf5_type(self.type_id)             # <<<<<<<<<<<<<<
24938  *
24939  *     # Get info on dimensions & types (of base class)
24940  */
24941   __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_atom_from_hdf5_type); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2008, __pyx_L1_error)
24942   __Pyx_GOTREF(__pyx_t_6);
24943   __pyx_t_2 = __Pyx_PyInt_From_hid_t(__pyx_v_self->__pyx_base.type_id); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2008, __pyx_L1_error)
24944   __Pyx_GOTREF(__pyx_t_2);
24945   __pyx_t_3 = NULL;
24946   if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
24947     __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6);
24948     if (likely(__pyx_t_3)) {
24949       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
24950       __Pyx_INCREF(__pyx_t_3);
24951       __Pyx_INCREF(function);
24952       __Pyx_DECREF_SET(__pyx_t_6, function);
24953     }
24954   }
24955   __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_3, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_2);
24956   __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
24957   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
24958   if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2008, __pyx_L1_error)
24959   __Pyx_GOTREF(__pyx_t_1);
24960   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
24961   __pyx_v_atom = __pyx_t_1;
24962   __pyx_t_1 = 0;
24963 
24964   /* "tables/hdf5extension.pyx":2011
24965  *
24966  *     # Get info on dimensions & types (of base class)
24967  *     H5VLARRAYget_info(self.dataset_id, self.disk_type_id, &nrecords,             # <<<<<<<<<<<<<<
24968  *                       cbyteorder)
24969  *
24970  */
24971   (void)(H5VLARRAYget_info(__pyx_v_self->__pyx_base.dataset_id, __pyx_v_self->__pyx_base.disk_type_id, (&__pyx_v_nrecords), __pyx_v_cbyteorder));
24972 
24973   /* "tables/hdf5extension.pyx":2014
24974  *                       cbyteorder)
24975  *
24976  *     byteorder = cstr_to_pystr(cbyteorder)             # <<<<<<<<<<<<<<
24977  *
24978  *     # Get some properties of the atomic type
24979  */
24980   __pyx_t_1 = __pyx_f_6tables_14utilsextension_cstr_to_pystr(__pyx_v_cbyteorder); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2014, __pyx_L1_error)
24981   __Pyx_GOTREF(__pyx_t_1);
24982   __pyx_v_byteorder = ((PyObject*)__pyx_t_1);
24983   __pyx_t_1 = 0;
24984 
24985   /* "tables/hdf5extension.pyx":2017
24986  *
24987  *     # Get some properties of the atomic type
24988  *     self._atomicdtype = atom.dtype             # <<<<<<<<<<<<<<
24989  *     self._atomictype = atom.type
24990  *     self._atomicshape = atom.shape
24991  */
24992   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_atom, __pyx_n_s_dtype); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2017, __pyx_L1_error)
24993   __Pyx_GOTREF(__pyx_t_1);
24994   if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_atomicdtype, __pyx_t_1) < 0) __PYX_ERR(0, 2017, __pyx_L1_error)
24995   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
24996 
24997   /* "tables/hdf5extension.pyx":2018
24998  *     # Get some properties of the atomic type
24999  *     self._atomicdtype = atom.dtype
25000  *     self._atomictype = atom.type             # <<<<<<<<<<<<<<
25001  *     self._atomicshape = atom.shape
25002  *     self._atomicsize = atom.size
25003  */
25004   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_atom, __pyx_n_s_type); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2018, __pyx_L1_error)
25005   __Pyx_GOTREF(__pyx_t_1);
25006   if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_atomictype, __pyx_t_1) < 0) __PYX_ERR(0, 2018, __pyx_L1_error)
25007   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
25008 
25009   /* "tables/hdf5extension.pyx":2019
25010  *     self._atomicdtype = atom.dtype
25011  *     self._atomictype = atom.type
25012  *     self._atomicshape = atom.shape             # <<<<<<<<<<<<<<
25013  *     self._atomicsize = atom.size
25014  *
25015  */
25016   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_atom, __pyx_n_s_shape); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2019, __pyx_L1_error)
25017   __Pyx_GOTREF(__pyx_t_1);
25018   if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_atomicshape, __pyx_t_1) < 0) __PYX_ERR(0, 2019, __pyx_L1_error)
25019   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
25020 
25021   /* "tables/hdf5extension.pyx":2020
25022  *     self._atomictype = atom.type
25023  *     self._atomicshape = atom.shape
25024  *     self._atomicsize = atom.size             # <<<<<<<<<<<<<<
25025  *
25026  *     # Get the byteorder
25027  */
25028   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_atom, __pyx_n_s_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2020, __pyx_L1_error)
25029   __Pyx_GOTREF(__pyx_t_1);
25030   if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_atomicsize, __pyx_t_1) < 0) __PYX_ERR(0, 2020, __pyx_L1_error)
25031   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
25032 
25033   /* "tables/hdf5extension.pyx":2023
25034  *
25035  *     # Get the byteorder
25036  *     self.byteorder = correct_byteorder(atom.type, byteorder)             # <<<<<<<<<<<<<<
25037  *
25038  *     # Get the chunkshape (VLArrays are unidimensional entities)
25039  */
25040   __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_correct_byteorder); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2023, __pyx_L1_error)
25041   __Pyx_GOTREF(__pyx_t_6);
25042   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_atom, __pyx_n_s_type); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2023, __pyx_L1_error)
25043   __Pyx_GOTREF(__pyx_t_2);
25044   __pyx_t_3 = NULL;
25045   __pyx_t_10 = 0;
25046   if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
25047     __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6);
25048     if (likely(__pyx_t_3)) {
25049       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
25050       __Pyx_INCREF(__pyx_t_3);
25051       __Pyx_INCREF(function);
25052       __Pyx_DECREF_SET(__pyx_t_6, function);
25053       __pyx_t_10 = 1;
25054     }
25055   }
25056   #if CYTHON_FAST_PYCALL
25057   if (PyFunction_Check(__pyx_t_6)) {
25058     PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_t_2, __pyx_v_byteorder};
25059     __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2023, __pyx_L1_error)
25060     __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
25061     __Pyx_GOTREF(__pyx_t_1);
25062     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
25063   } else
25064   #endif
25065   #if CYTHON_FAST_PYCCALL
25066   if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
25067     PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_t_2, __pyx_v_byteorder};
25068     __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2023, __pyx_L1_error)
25069     __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
25070     __Pyx_GOTREF(__pyx_t_1);
25071     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
25072   } else
25073   #endif
25074   {
25075     __pyx_t_11 = PyTuple_New(2+__pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2023, __pyx_L1_error)
25076     __Pyx_GOTREF(__pyx_t_11);
25077     if (__pyx_t_3) {
25078       __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_3); __pyx_t_3 = NULL;
25079     }
25080     __Pyx_GIVEREF(__pyx_t_2);
25081     PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_10, __pyx_t_2);
25082     __Pyx_INCREF(__pyx_v_byteorder);
25083     __Pyx_GIVEREF(__pyx_v_byteorder);
25084     PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_10, __pyx_v_byteorder);
25085     __pyx_t_2 = 0;
25086     __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_11, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2023, __pyx_L1_error)
25087     __Pyx_GOTREF(__pyx_t_1);
25088     __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
25089   }
25090   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
25091   if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_byteorder, __pyx_t_1) < 0) __PYX_ERR(0, 2023, __pyx_L1_error)
25092   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
25093 
25094   /* "tables/hdf5extension.pyx":2026
25095  *
25096  *     # Get the chunkshape (VLArrays are unidimensional entities)
25097  *     H5ARRAYget_chunkshape(self.dataset_id, 1, &chunksize)             # <<<<<<<<<<<<<<
25098  *
25099  *     self.nrecords = nrecords  # Initialize the number of records saved
25100  */
25101   (void)(H5ARRAYget_chunkshape(__pyx_v_self->__pyx_base.dataset_id, 1, (&__pyx_v_chunksize)));
25102 
25103   /* "tables/hdf5extension.pyx":2028
25104  *     H5ARRAYget_chunkshape(self.dataset_id, 1, &chunksize)
25105  *
25106  *     self.nrecords = nrecords  # Initialize the number of records saved             # <<<<<<<<<<<<<<
25107  *     return self.dataset_id, SizeType(nrecords), (SizeType(chunksize),), atom
25108  *
25109  */
25110   __pyx_v_self->nrecords = __pyx_v_nrecords;
25111 
25112   /* "tables/hdf5extension.pyx":2029
25113  *
25114  *     self.nrecords = nrecords  # Initialize the number of records saved
25115  *     return self.dataset_id, SizeType(nrecords), (SizeType(chunksize),), atom             # <<<<<<<<<<<<<<
25116  *
25117  *
25118  */
25119   __Pyx_XDECREF(__pyx_r);
25120   __pyx_t_1 = __Pyx_PyInt_From_hid_t(__pyx_v_self->__pyx_base.dataset_id); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2029, __pyx_L1_error)
25121   __Pyx_GOTREF(__pyx_t_1);
25122   __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_SizeType); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2029, __pyx_L1_error)
25123   __Pyx_GOTREF(__pyx_t_11);
25124   __pyx_t_2 = __Pyx_PyInt_From_hsize_t(__pyx_v_nrecords); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2029, __pyx_L1_error)
25125   __Pyx_GOTREF(__pyx_t_2);
25126   __pyx_t_3 = NULL;
25127   if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_11))) {
25128     __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_11);
25129     if (likely(__pyx_t_3)) {
25130       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
25131       __Pyx_INCREF(__pyx_t_3);
25132       __Pyx_INCREF(function);
25133       __Pyx_DECREF_SET(__pyx_t_11, function);
25134     }
25135   }
25136   __pyx_t_6 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_11, __pyx_t_3, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_2);
25137   __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
25138   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
25139   if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2029, __pyx_L1_error)
25140   __Pyx_GOTREF(__pyx_t_6);
25141   __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
25142   __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_SizeType); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2029, __pyx_L1_error)
25143   __Pyx_GOTREF(__pyx_t_2);
25144   __pyx_t_3 = __Pyx_PyInt_From_hsize_t(__pyx_v_chunksize); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2029, __pyx_L1_error)
25145   __Pyx_GOTREF(__pyx_t_3);
25146   __pyx_t_12 = NULL;
25147   if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
25148     __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_2);
25149     if (likely(__pyx_t_12)) {
25150       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
25151       __Pyx_INCREF(__pyx_t_12);
25152       __Pyx_INCREF(function);
25153       __Pyx_DECREF_SET(__pyx_t_2, function);
25154     }
25155   }
25156   __pyx_t_11 = (__pyx_t_12) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_12, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3);
25157   __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
25158   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
25159   if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2029, __pyx_L1_error)
25160   __Pyx_GOTREF(__pyx_t_11);
25161   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
25162   __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2029, __pyx_L1_error)
25163   __Pyx_GOTREF(__pyx_t_2);
25164   __Pyx_GIVEREF(__pyx_t_11);
25165   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_11);
25166   __pyx_t_11 = 0;
25167   __pyx_t_11 = PyTuple_New(4); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2029, __pyx_L1_error)
25168   __Pyx_GOTREF(__pyx_t_11);
25169   __Pyx_GIVEREF(__pyx_t_1);
25170   PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
25171   __Pyx_GIVEREF(__pyx_t_6);
25172   PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_6);
25173   __Pyx_GIVEREF(__pyx_t_2);
25174   PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_2);
25175   __Pyx_INCREF(__pyx_v_atom);
25176   __Pyx_GIVEREF(__pyx_v_atom);
25177   PyTuple_SET_ITEM(__pyx_t_11, 3, __pyx_v_atom);
25178   __pyx_t_1 = 0;
25179   __pyx_t_6 = 0;
25180   __pyx_t_2 = 0;
25181   __pyx_r = __pyx_t_11;
25182   __pyx_t_11 = 0;
25183   goto __pyx_L0;
25184 
25185   /* "tables/hdf5extension.pyx":1988
25186  *
25187  *
25188  *   def _open_array(self):             # <<<<<<<<<<<<<<
25189  *     cdef char cbyteorder[11]  # "irrelevant" fits easily here
25190  *     cdef int i, enumtype
25191  */
25192 
25193   /* function exit code */
25194   __pyx_L1_error:;
25195   __Pyx_XDECREF(__pyx_t_1);
25196   __Pyx_XDECREF(__pyx_t_2);
25197   __Pyx_XDECREF(__pyx_t_3);
25198   __Pyx_XDECREF(__pyx_t_6);
25199   __Pyx_XDECREF(__pyx_t_11);
25200   __Pyx_XDECREF(__pyx_t_12);
25201   __Pyx_AddTraceback("tables.hdf5extension.VLArray._open_array", __pyx_clineno, __pyx_lineno, __pyx_filename);
25202   __pyx_r = NULL;
25203   __pyx_L0:;
25204   __Pyx_XDECREF(__pyx_v_encoded_name);
25205   __Pyx_XDECREF(__pyx_v_byteorder);
25206   __Pyx_XDECREF(__pyx_v_atom);
25207   __Pyx_XGIVEREF(__pyx_r);
25208   __Pyx_RefNannyFinishContext();
25209   return __pyx_r;
25210 }
25211 
25212 /* "tables/hdf5extension.pyx":2032
25213  *
25214  *
25215  *   def _append(self, ndarray nparr, int nobjects):             # <<<<<<<<<<<<<<
25216  *     cdef int ret
25217  *     cdef void *rbuf
25218  */
25219 
25220 /* Python wrapper */
25221 static PyObject *__pyx_pw_6tables_13hdf5extension_7VLArray_5_append(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
__pyx_pw_6tables_13hdf5extension_7VLArray_5_append(PyObject * __pyx_v_self,PyObject * __pyx_args,PyObject * __pyx_kwds)25222 static PyObject *__pyx_pw_6tables_13hdf5extension_7VLArray_5_append(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
25223   PyArrayObject *__pyx_v_nparr = 0;
25224   int __pyx_v_nobjects;
25225   PyObject *__pyx_r = 0;
25226   __Pyx_RefNannyDeclarations
25227   __Pyx_RefNannySetupContext("_append (wrapper)", 0);
25228   {
25229     static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_nparr,&__pyx_n_s_nobjects,0};
25230     PyObject* values[2] = {0,0};
25231     if (unlikely(__pyx_kwds)) {
25232       Py_ssize_t kw_args;
25233       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
25234       switch (pos_args) {
25235         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
25236         CYTHON_FALLTHROUGH;
25237         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
25238         CYTHON_FALLTHROUGH;
25239         case  0: break;
25240         default: goto __pyx_L5_argtuple_error;
25241       }
25242       kw_args = PyDict_Size(__pyx_kwds);
25243       switch (pos_args) {
25244         case  0:
25245         if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nparr)) != 0)) kw_args--;
25246         else goto __pyx_L5_argtuple_error;
25247         CYTHON_FALLTHROUGH;
25248         case  1:
25249         if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nobjects)) != 0)) kw_args--;
25250         else {
25251           __Pyx_RaiseArgtupleInvalid("_append", 1, 2, 2, 1); __PYX_ERR(0, 2032, __pyx_L3_error)
25252         }
25253       }
25254       if (unlikely(kw_args > 0)) {
25255         if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_append") < 0)) __PYX_ERR(0, 2032, __pyx_L3_error)
25256       }
25257     } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
25258       goto __pyx_L5_argtuple_error;
25259     } else {
25260       values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
25261       values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
25262     }
25263     __pyx_v_nparr = ((PyArrayObject *)values[0]);
25264     __pyx_v_nobjects = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_nobjects == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2032, __pyx_L3_error)
25265   }
25266   goto __pyx_L4_argument_unpacking_done;
25267   __pyx_L5_argtuple_error:;
25268   __Pyx_RaiseArgtupleInvalid("_append", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2032, __pyx_L3_error)
25269   __pyx_L3_error:;
25270   __Pyx_AddTraceback("tables.hdf5extension.VLArray._append", __pyx_clineno, __pyx_lineno, __pyx_filename);
25271   __Pyx_RefNannyFinishContext();
25272   return NULL;
25273   __pyx_L4_argument_unpacking_done:;
25274   if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_nparr), __pyx_ptype_5numpy_ndarray, 1, "nparr", 0))) __PYX_ERR(0, 2032, __pyx_L1_error)
25275   __pyx_r = __pyx_pf_6tables_13hdf5extension_7VLArray_4_append(((struct __pyx_obj_6tables_13hdf5extension_VLArray *)__pyx_v_self), __pyx_v_nparr, __pyx_v_nobjects);
25276 
25277   /* function exit code */
25278   goto __pyx_L0;
25279   __pyx_L1_error:;
25280   __pyx_r = NULL;
25281   __pyx_L0:;
25282   __Pyx_RefNannyFinishContext();
25283   return __pyx_r;
25284 }
25285 
__pyx_pf_6tables_13hdf5extension_7VLArray_4_append(struct __pyx_obj_6tables_13hdf5extension_VLArray * __pyx_v_self,PyArrayObject * __pyx_v_nparr,int __pyx_v_nobjects)25286 static PyObject *__pyx_pf_6tables_13hdf5extension_7VLArray_4_append(struct __pyx_obj_6tables_13hdf5extension_VLArray *__pyx_v_self, PyArrayObject *__pyx_v_nparr, int __pyx_v_nobjects) {
25287   int __pyx_v_ret;
25288   void *__pyx_v_rbuf;
25289   PyObject *__pyx_r = NULL;
25290   __Pyx_RefNannyDeclarations
25291   int __pyx_t_1;
25292   char *__pyx_t_2;
25293   PyObject *__pyx_t_3 = NULL;
25294   PyObject *__pyx_t_4 = NULL;
25295   PyObject *__pyx_t_5 = NULL;
25296   __Pyx_RefNannySetupContext("_append", 0);
25297 
25298   /* "tables/hdf5extension.pyx":2037
25299  *
25300  *     # Get the pointer to the buffer data area
25301  *     if nobjects:             # <<<<<<<<<<<<<<
25302  *       rbuf = nparr.data
25303  *       # Convert some NumPy types to HDF5 before storing.
25304  */
25305   __pyx_t_1 = (__pyx_v_nobjects != 0);
25306   if (__pyx_t_1) {
25307 
25308     /* "tables/hdf5extension.pyx":2038
25309  *     # Get the pointer to the buffer data area
25310  *     if nobjects:
25311  *       rbuf = nparr.data             # <<<<<<<<<<<<<<
25312  *       # Convert some NumPy types to HDF5 before storing.
25313  *       if self.atom.type == 'time64':
25314  */
25315     __pyx_t_2 = __pyx_v_nparr->data;
25316     __pyx_v_rbuf = __pyx_t_2;
25317 
25318     /* "tables/hdf5extension.pyx":2040
25319  *       rbuf = nparr.data
25320  *       # Convert some NumPy types to HDF5 before storing.
25321  *       if self.atom.type == 'time64':             # <<<<<<<<<<<<<<
25322  *         self._convert_time64(nparr, 0)
25323  *     else:
25324  */
25325     __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_atom); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2040, __pyx_L1_error)
25326     __Pyx_GOTREF(__pyx_t_3);
25327     __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_type); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2040, __pyx_L1_error)
25328     __Pyx_GOTREF(__pyx_t_4);
25329     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
25330     __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_n_s_time64, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 2040, __pyx_L1_error)
25331     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
25332     if (__pyx_t_1) {
25333 
25334       /* "tables/hdf5extension.pyx":2041
25335  *       # Convert some NumPy types to HDF5 before storing.
25336  *       if self.atom.type == 'time64':
25337  *         self._convert_time64(nparr, 0)             # <<<<<<<<<<<<<<
25338  *     else:
25339  *       rbuf = NULL
25340  */
25341       __pyx_t_4 = ((struct __pyx_vtabstruct_6tables_13hdf5extension_VLArray *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._convert_time64(((struct __pyx_obj_6tables_13hdf5extension_Leaf *)__pyx_v_self), __pyx_v_nparr, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2041, __pyx_L1_error)
25342       __Pyx_GOTREF(__pyx_t_4);
25343       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
25344 
25345       /* "tables/hdf5extension.pyx":2040
25346  *       rbuf = nparr.data
25347  *       # Convert some NumPy types to HDF5 before storing.
25348  *       if self.atom.type == 'time64':             # <<<<<<<<<<<<<<
25349  *         self._convert_time64(nparr, 0)
25350  *     else:
25351  */
25352     }
25353 
25354     /* "tables/hdf5extension.pyx":2037
25355  *
25356  *     # Get the pointer to the buffer data area
25357  *     if nobjects:             # <<<<<<<<<<<<<<
25358  *       rbuf = nparr.data
25359  *       # Convert some NumPy types to HDF5 before storing.
25360  */
25361     goto __pyx_L3;
25362   }
25363 
25364   /* "tables/hdf5extension.pyx":2043
25365  *         self._convert_time64(nparr, 0)
25366  *     else:
25367  *       rbuf = NULL             # <<<<<<<<<<<<<<
25368  *
25369  *     # Append the records:
25370  */
25371   /*else*/ {
25372     __pyx_v_rbuf = NULL;
25373   }
25374   __pyx_L3:;
25375 
25376   /* "tables/hdf5extension.pyx":2046
25377  *
25378  *     # Append the records:
25379  *     with nogil:             # <<<<<<<<<<<<<<
25380  *         ret = H5VLARRAYappend_records(self.dataset_id, self.type_id,
25381  *                                       nobjects, self.nrecords, rbuf)
25382  */
25383   {
25384       #ifdef WITH_THREAD
25385       PyThreadState *_save;
25386       Py_UNBLOCK_THREADS
25387       __Pyx_FastGIL_Remember();
25388       #endif
25389       /*try:*/ {
25390 
25391         /* "tables/hdf5extension.pyx":2047
25392  *     # Append the records:
25393  *     with nogil:
25394  *         ret = H5VLARRAYappend_records(self.dataset_id, self.type_id,             # <<<<<<<<<<<<<<
25395  *                                       nobjects, self.nrecords, rbuf)
25396  *
25397  */
25398         __pyx_v_ret = H5VLARRAYappend_records(__pyx_v_self->__pyx_base.dataset_id, __pyx_v_self->__pyx_base.type_id, __pyx_v_nobjects, __pyx_v_self->nrecords, __pyx_v_rbuf);
25399       }
25400 
25401       /* "tables/hdf5extension.pyx":2046
25402  *
25403  *     # Append the records:
25404  *     with nogil:             # <<<<<<<<<<<<<<
25405  *         ret = H5VLARRAYappend_records(self.dataset_id, self.type_id,
25406  *                                       nobjects, self.nrecords, rbuf)
25407  */
25408       /*finally:*/ {
25409         /*normal exit:*/{
25410           #ifdef WITH_THREAD
25411           __Pyx_FastGIL_Forget();
25412           Py_BLOCK_THREADS
25413           #endif
25414           goto __pyx_L7;
25415         }
25416         __pyx_L7:;
25417       }
25418   }
25419 
25420   /* "tables/hdf5extension.pyx":2050
25421  *                                       nobjects, self.nrecords, rbuf)
25422  *
25423  *     if ret < 0:             # <<<<<<<<<<<<<<
25424  *       raise HDF5ExtError("Problems appending the records.")
25425  *
25426  */
25427   __pyx_t_1 = ((__pyx_v_ret < 0) != 0);
25428   if (unlikely(__pyx_t_1)) {
25429 
25430     /* "tables/hdf5extension.pyx":2051
25431  *
25432  *     if ret < 0:
25433  *       raise HDF5ExtError("Problems appending the records.")             # <<<<<<<<<<<<<<
25434  *
25435  *     self.nrecords = self.nrecords + 1
25436  */
25437     __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_HDF5ExtError); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2051, __pyx_L1_error)
25438     __Pyx_GOTREF(__pyx_t_3);
25439     __pyx_t_5 = NULL;
25440     if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
25441       __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
25442       if (likely(__pyx_t_5)) {
25443         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
25444         __Pyx_INCREF(__pyx_t_5);
25445         __Pyx_INCREF(function);
25446         __Pyx_DECREF_SET(__pyx_t_3, function);
25447       }
25448     }
25449     __pyx_t_4 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_5, __pyx_kp_s_Problems_appending_the_records) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_kp_s_Problems_appending_the_records);
25450     __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
25451     if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2051, __pyx_L1_error)
25452     __Pyx_GOTREF(__pyx_t_4);
25453     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
25454     __Pyx_Raise(__pyx_t_4, 0, 0, 0);
25455     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
25456     __PYX_ERR(0, 2051, __pyx_L1_error)
25457 
25458     /* "tables/hdf5extension.pyx":2050
25459  *                                       nobjects, self.nrecords, rbuf)
25460  *
25461  *     if ret < 0:             # <<<<<<<<<<<<<<
25462  *       raise HDF5ExtError("Problems appending the records.")
25463  *
25464  */
25465   }
25466 
25467   /* "tables/hdf5extension.pyx":2053
25468  *       raise HDF5ExtError("Problems appending the records.")
25469  *
25470  *     self.nrecords = self.nrecords + 1             # <<<<<<<<<<<<<<
25471  *
25472  *   def _modify(self, hsize_t nrow, ndarray nparr, int nobjects):
25473  */
25474   __pyx_v_self->nrecords = (__pyx_v_self->nrecords + 1);
25475 
25476   /* "tables/hdf5extension.pyx":2032
25477  *
25478  *
25479  *   def _append(self, ndarray nparr, int nobjects):             # <<<<<<<<<<<<<<
25480  *     cdef int ret
25481  *     cdef void *rbuf
25482  */
25483 
25484   /* function exit code */
25485   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
25486   goto __pyx_L0;
25487   __pyx_L1_error:;
25488   __Pyx_XDECREF(__pyx_t_3);
25489   __Pyx_XDECREF(__pyx_t_4);
25490   __Pyx_XDECREF(__pyx_t_5);
25491   __Pyx_AddTraceback("tables.hdf5extension.VLArray._append", __pyx_clineno, __pyx_lineno, __pyx_filename);
25492   __pyx_r = NULL;
25493   __pyx_L0:;
25494   __Pyx_XGIVEREF(__pyx_r);
25495   __Pyx_RefNannyFinishContext();
25496   return __pyx_r;
25497 }
25498 
25499 /* "tables/hdf5extension.pyx":2055
25500  *     self.nrecords = self.nrecords + 1
25501  *
25502  *   def _modify(self, hsize_t nrow, ndarray nparr, int nobjects):             # <<<<<<<<<<<<<<
25503  *     cdef int ret
25504  *     cdef void *rbuf
25505  */
25506 
25507 /* Python wrapper */
25508 static PyObject *__pyx_pw_6tables_13hdf5extension_7VLArray_7_modify(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
__pyx_pw_6tables_13hdf5extension_7VLArray_7_modify(PyObject * __pyx_v_self,PyObject * __pyx_args,PyObject * __pyx_kwds)25509 static PyObject *__pyx_pw_6tables_13hdf5extension_7VLArray_7_modify(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
25510   hsize_t __pyx_v_nrow;
25511   PyArrayObject *__pyx_v_nparr = 0;
25512   int __pyx_v_nobjects;
25513   PyObject *__pyx_r = 0;
25514   __Pyx_RefNannyDeclarations
25515   __Pyx_RefNannySetupContext("_modify (wrapper)", 0);
25516   {
25517     static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_nrow,&__pyx_n_s_nparr,&__pyx_n_s_nobjects,0};
25518     PyObject* values[3] = {0,0,0};
25519     if (unlikely(__pyx_kwds)) {
25520       Py_ssize_t kw_args;
25521       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
25522       switch (pos_args) {
25523         case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
25524         CYTHON_FALLTHROUGH;
25525         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
25526         CYTHON_FALLTHROUGH;
25527         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
25528         CYTHON_FALLTHROUGH;
25529         case  0: break;
25530         default: goto __pyx_L5_argtuple_error;
25531       }
25532       kw_args = PyDict_Size(__pyx_kwds);
25533       switch (pos_args) {
25534         case  0:
25535         if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nrow)) != 0)) kw_args--;
25536         else goto __pyx_L5_argtuple_error;
25537         CYTHON_FALLTHROUGH;
25538         case  1:
25539         if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nparr)) != 0)) kw_args--;
25540         else {
25541           __Pyx_RaiseArgtupleInvalid("_modify", 1, 3, 3, 1); __PYX_ERR(0, 2055, __pyx_L3_error)
25542         }
25543         CYTHON_FALLTHROUGH;
25544         case  2:
25545         if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nobjects)) != 0)) kw_args--;
25546         else {
25547           __Pyx_RaiseArgtupleInvalid("_modify", 1, 3, 3, 2); __PYX_ERR(0, 2055, __pyx_L3_error)
25548         }
25549       }
25550       if (unlikely(kw_args > 0)) {
25551         if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_modify") < 0)) __PYX_ERR(0, 2055, __pyx_L3_error)
25552       }
25553     } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
25554       goto __pyx_L5_argtuple_error;
25555     } else {
25556       values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
25557       values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
25558       values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
25559     }
25560     __pyx_v_nrow = __Pyx_PyInt_As_hsize_t(values[0]); if (unlikely((__pyx_v_nrow == ((hsize_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2055, __pyx_L3_error)
25561     __pyx_v_nparr = ((PyArrayObject *)values[1]);
25562     __pyx_v_nobjects = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_nobjects == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2055, __pyx_L3_error)
25563   }
25564   goto __pyx_L4_argument_unpacking_done;
25565   __pyx_L5_argtuple_error:;
25566   __Pyx_RaiseArgtupleInvalid("_modify", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2055, __pyx_L3_error)
25567   __pyx_L3_error:;
25568   __Pyx_AddTraceback("tables.hdf5extension.VLArray._modify", __pyx_clineno, __pyx_lineno, __pyx_filename);
25569   __Pyx_RefNannyFinishContext();
25570   return NULL;
25571   __pyx_L4_argument_unpacking_done:;
25572   if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_nparr), __pyx_ptype_5numpy_ndarray, 1, "nparr", 0))) __PYX_ERR(0, 2055, __pyx_L1_error)
25573   __pyx_r = __pyx_pf_6tables_13hdf5extension_7VLArray_6_modify(((struct __pyx_obj_6tables_13hdf5extension_VLArray *)__pyx_v_self), __pyx_v_nrow, __pyx_v_nparr, __pyx_v_nobjects);
25574 
25575   /* function exit code */
25576   goto __pyx_L0;
25577   __pyx_L1_error:;
25578   __pyx_r = NULL;
25579   __pyx_L0:;
25580   __Pyx_RefNannyFinishContext();
25581   return __pyx_r;
25582 }
25583 
__pyx_pf_6tables_13hdf5extension_7VLArray_6_modify(struct __pyx_obj_6tables_13hdf5extension_VLArray * __pyx_v_self,hsize_t __pyx_v_nrow,PyArrayObject * __pyx_v_nparr,int __pyx_v_nobjects)25584 static PyObject *__pyx_pf_6tables_13hdf5extension_7VLArray_6_modify(struct __pyx_obj_6tables_13hdf5extension_VLArray *__pyx_v_self, hsize_t __pyx_v_nrow, PyArrayObject *__pyx_v_nparr, int __pyx_v_nobjects) {
25585   int __pyx_v_ret;
25586   void *__pyx_v_rbuf;
25587   PyObject *__pyx_r = NULL;
25588   __Pyx_RefNannyDeclarations
25589   char *__pyx_t_1;
25590   int __pyx_t_2;
25591   PyObject *__pyx_t_3 = NULL;
25592   PyObject *__pyx_t_4 = NULL;
25593   PyObject *__pyx_t_5 = NULL;
25594   __Pyx_RefNannySetupContext("_modify", 0);
25595 
25596   /* "tables/hdf5extension.pyx":2060
25597  *
25598  *     # Get the pointer to the buffer data area
25599  *     rbuf = nparr.data             # <<<<<<<<<<<<<<
25600  *     if nobjects:
25601  *       # Convert some NumPy types to HDF5 before storing.
25602  */
25603   __pyx_t_1 = __pyx_v_nparr->data;
25604   __pyx_v_rbuf = __pyx_t_1;
25605 
25606   /* "tables/hdf5extension.pyx":2061
25607  *     # Get the pointer to the buffer data area
25608  *     rbuf = nparr.data
25609  *     if nobjects:             # <<<<<<<<<<<<<<
25610  *       # Convert some NumPy types to HDF5 before storing.
25611  *       if self.atom.type == 'time64':
25612  */
25613   __pyx_t_2 = (__pyx_v_nobjects != 0);
25614   if (__pyx_t_2) {
25615 
25616     /* "tables/hdf5extension.pyx":2063
25617  *     if nobjects:
25618  *       # Convert some NumPy types to HDF5 before storing.
25619  *       if self.atom.type == 'time64':             # <<<<<<<<<<<<<<
25620  *         self._convert_time64(nparr, 0)
25621  *
25622  */
25623     __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_atom); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2063, __pyx_L1_error)
25624     __Pyx_GOTREF(__pyx_t_3);
25625     __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_type); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2063, __pyx_L1_error)
25626     __Pyx_GOTREF(__pyx_t_4);
25627     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
25628     __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_n_s_time64, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 2063, __pyx_L1_error)
25629     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
25630     if (__pyx_t_2) {
25631 
25632       /* "tables/hdf5extension.pyx":2064
25633  *       # Convert some NumPy types to HDF5 before storing.
25634  *       if self.atom.type == 'time64':
25635  *         self._convert_time64(nparr, 0)             # <<<<<<<<<<<<<<
25636  *
25637  *     # Append the records:
25638  */
25639       __pyx_t_4 = ((struct __pyx_vtabstruct_6tables_13hdf5extension_VLArray *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._convert_time64(((struct __pyx_obj_6tables_13hdf5extension_Leaf *)__pyx_v_self), __pyx_v_nparr, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2064, __pyx_L1_error)
25640       __Pyx_GOTREF(__pyx_t_4);
25641       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
25642 
25643       /* "tables/hdf5extension.pyx":2063
25644  *     if nobjects:
25645  *       # Convert some NumPy types to HDF5 before storing.
25646  *       if self.atom.type == 'time64':             # <<<<<<<<<<<<<<
25647  *         self._convert_time64(nparr, 0)
25648  *
25649  */
25650     }
25651 
25652     /* "tables/hdf5extension.pyx":2061
25653  *     # Get the pointer to the buffer data area
25654  *     rbuf = nparr.data
25655  *     if nobjects:             # <<<<<<<<<<<<<<
25656  *       # Convert some NumPy types to HDF5 before storing.
25657  *       if self.atom.type == 'time64':
25658  */
25659   }
25660 
25661   /* "tables/hdf5extension.pyx":2067
25662  *
25663  *     # Append the records:
25664  *     with nogil:             # <<<<<<<<<<<<<<
25665  *         ret = H5VLARRAYmodify_records(self.dataset_id, self.type_id,
25666  *                                       nrow, nobjects, rbuf)
25667  */
25668   {
25669       #ifdef WITH_THREAD
25670       PyThreadState *_save;
25671       Py_UNBLOCK_THREADS
25672       __Pyx_FastGIL_Remember();
25673       #endif
25674       /*try:*/ {
25675 
25676         /* "tables/hdf5extension.pyx":2068
25677  *     # Append the records:
25678  *     with nogil:
25679  *         ret = H5VLARRAYmodify_records(self.dataset_id, self.type_id,             # <<<<<<<<<<<<<<
25680  *                                       nrow, nobjects, rbuf)
25681  *
25682  */
25683         __pyx_v_ret = H5VLARRAYmodify_records(__pyx_v_self->__pyx_base.dataset_id, __pyx_v_self->__pyx_base.type_id, __pyx_v_nrow, __pyx_v_nobjects, __pyx_v_rbuf);
25684       }
25685 
25686       /* "tables/hdf5extension.pyx":2067
25687  *
25688  *     # Append the records:
25689  *     with nogil:             # <<<<<<<<<<<<<<
25690  *         ret = H5VLARRAYmodify_records(self.dataset_id, self.type_id,
25691  *                                       nrow, nobjects, rbuf)
25692  */
25693       /*finally:*/ {
25694         /*normal exit:*/{
25695           #ifdef WITH_THREAD
25696           __Pyx_FastGIL_Forget();
25697           Py_BLOCK_THREADS
25698           #endif
25699           goto __pyx_L7;
25700         }
25701         __pyx_L7:;
25702       }
25703   }
25704 
25705   /* "tables/hdf5extension.pyx":2071
25706  *                                       nrow, nobjects, rbuf)
25707  *
25708  *     if ret < 0:             # <<<<<<<<<<<<<<
25709  *       raise HDF5ExtError("Problems modifying the record.")
25710  *
25711  */
25712   __pyx_t_2 = ((__pyx_v_ret < 0) != 0);
25713   if (unlikely(__pyx_t_2)) {
25714 
25715     /* "tables/hdf5extension.pyx":2072
25716  *
25717  *     if ret < 0:
25718  *       raise HDF5ExtError("Problems modifying the record.")             # <<<<<<<<<<<<<<
25719  *
25720  *     return nobjects
25721  */
25722     __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_HDF5ExtError); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2072, __pyx_L1_error)
25723     __Pyx_GOTREF(__pyx_t_3);
25724     __pyx_t_5 = NULL;
25725     if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
25726       __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
25727       if (likely(__pyx_t_5)) {
25728         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
25729         __Pyx_INCREF(__pyx_t_5);
25730         __Pyx_INCREF(function);
25731         __Pyx_DECREF_SET(__pyx_t_3, function);
25732       }
25733     }
25734     __pyx_t_4 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_5, __pyx_kp_s_Problems_modifying_the_record) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_kp_s_Problems_modifying_the_record);
25735     __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
25736     if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2072, __pyx_L1_error)
25737     __Pyx_GOTREF(__pyx_t_4);
25738     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
25739     __Pyx_Raise(__pyx_t_4, 0, 0, 0);
25740     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
25741     __PYX_ERR(0, 2072, __pyx_L1_error)
25742 
25743     /* "tables/hdf5extension.pyx":2071
25744  *                                       nrow, nobjects, rbuf)
25745  *
25746  *     if ret < 0:             # <<<<<<<<<<<<<<
25747  *       raise HDF5ExtError("Problems modifying the record.")
25748  *
25749  */
25750   }
25751 
25752   /* "tables/hdf5extension.pyx":2074
25753  *       raise HDF5ExtError("Problems modifying the record.")
25754  *
25755  *     return nobjects             # <<<<<<<<<<<<<<
25756  *
25757  *   # Because the size of each "row" is unknown, there is no easy way to
25758  */
25759   __Pyx_XDECREF(__pyx_r);
25760   __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_nobjects); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2074, __pyx_L1_error)
25761   __Pyx_GOTREF(__pyx_t_4);
25762   __pyx_r = __pyx_t_4;
25763   __pyx_t_4 = 0;
25764   goto __pyx_L0;
25765 
25766   /* "tables/hdf5extension.pyx":2055
25767  *     self.nrecords = self.nrecords + 1
25768  *
25769  *   def _modify(self, hsize_t nrow, ndarray nparr, int nobjects):             # <<<<<<<<<<<<<<
25770  *     cdef int ret
25771  *     cdef void *rbuf
25772  */
25773 
25774   /* function exit code */
25775   __pyx_L1_error:;
25776   __Pyx_XDECREF(__pyx_t_3);
25777   __Pyx_XDECREF(__pyx_t_4);
25778   __Pyx_XDECREF(__pyx_t_5);
25779   __Pyx_AddTraceback("tables.hdf5extension.VLArray._modify", __pyx_clineno, __pyx_lineno, __pyx_filename);
25780   __pyx_r = NULL;
25781   __pyx_L0:;
25782   __Pyx_XGIVEREF(__pyx_r);
25783   __Pyx_RefNannyFinishContext();
25784   return __pyx_r;
25785 }
25786 
25787 /* "tables/hdf5extension.pyx":2078
25788  *   # Because the size of each "row" is unknown, there is no easy way to
25789  *   # calculate this value
25790  *   def _get_memory_size(self):             # <<<<<<<<<<<<<<
25791  *     cdef hid_t space_id
25792  *     cdef hsize_t size
25793  */
25794 
25795 /* Python wrapper */
25796 static PyObject *__pyx_pw_6tables_13hdf5extension_7VLArray_9_get_memory_size(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
__pyx_pw_6tables_13hdf5extension_7VLArray_9_get_memory_size(PyObject * __pyx_v_self,CYTHON_UNUSED PyObject * unused)25797 static PyObject *__pyx_pw_6tables_13hdf5extension_7VLArray_9_get_memory_size(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
25798   PyObject *__pyx_r = 0;
25799   __Pyx_RefNannyDeclarations
25800   __Pyx_RefNannySetupContext("_get_memory_size (wrapper)", 0);
25801   __pyx_r = __pyx_pf_6tables_13hdf5extension_7VLArray_8_get_memory_size(((struct __pyx_obj_6tables_13hdf5extension_VLArray *)__pyx_v_self));
25802 
25803   /* function exit code */
25804   __Pyx_RefNannyFinishContext();
25805   return __pyx_r;
25806 }
25807 
__pyx_pf_6tables_13hdf5extension_7VLArray_8_get_memory_size(struct __pyx_obj_6tables_13hdf5extension_VLArray * __pyx_v_self)25808 static PyObject *__pyx_pf_6tables_13hdf5extension_7VLArray_8_get_memory_size(struct __pyx_obj_6tables_13hdf5extension_VLArray *__pyx_v_self) {
25809   hid_t __pyx_v_space_id;
25810   hsize_t __pyx_v_size;
25811   herr_t __pyx_v_ret;
25812   PyObject *__pyx_r = NULL;
25813   __Pyx_RefNannyDeclarations
25814   PyObject *__pyx_t_1 = NULL;
25815   PyObject *__pyx_t_2 = NULL;
25816   int __pyx_t_3;
25817   __Pyx_RefNannySetupContext("_get_memory_size", 0);
25818 
25819   /* "tables/hdf5extension.pyx":2083
25820  *     cdef herr_t ret
25821  *
25822  *     if self.nrows == 0:             # <<<<<<<<<<<<<<
25823  *       size = 0
25824  *     else:
25825  */
25826   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_nrows); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2083, __pyx_L1_error)
25827   __Pyx_GOTREF(__pyx_t_1);
25828   __pyx_t_2 = __Pyx_PyInt_EqObjC(__pyx_t_1, __pyx_int_0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2083, __pyx_L1_error)
25829   __Pyx_GOTREF(__pyx_t_2);
25830   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
25831   __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 2083, __pyx_L1_error)
25832   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
25833   if (__pyx_t_3) {
25834 
25835     /* "tables/hdf5extension.pyx":2084
25836  *
25837  *     if self.nrows == 0:
25838  *       size = 0             # <<<<<<<<<<<<<<
25839  *     else:
25840  *       # Get the dataspace handle
25841  */
25842     __pyx_v_size = 0;
25843 
25844     /* "tables/hdf5extension.pyx":2083
25845  *     cdef herr_t ret
25846  *
25847  *     if self.nrows == 0:             # <<<<<<<<<<<<<<
25848  *       size = 0
25849  *     else:
25850  */
25851     goto __pyx_L3;
25852   }
25853 
25854   /* "tables/hdf5extension.pyx":2087
25855  *     else:
25856  *       # Get the dataspace handle
25857  *       space_id = H5Dget_space(self.dataset_id)             # <<<<<<<<<<<<<<
25858  *       # Return the size of the entire dataset
25859  *       ret = H5Dvlen_get_buf_size(self.dataset_id, self.type_id, space_id,
25860  */
25861   /*else*/ {
25862     __pyx_v_space_id = H5Dget_space(__pyx_v_self->__pyx_base.dataset_id);
25863 
25864     /* "tables/hdf5extension.pyx":2089
25865  *       space_id = H5Dget_space(self.dataset_id)
25866  *       # Return the size of the entire dataset
25867  *       ret = H5Dvlen_get_buf_size(self.dataset_id, self.type_id, space_id,             # <<<<<<<<<<<<<<
25868  *                                  &size)
25869  *       if ret < 0:
25870  */
25871     __pyx_v_ret = H5Dvlen_get_buf_size(__pyx_v_self->__pyx_base.dataset_id, __pyx_v_self->__pyx_base.type_id, __pyx_v_space_id, (&__pyx_v_size));
25872 
25873     /* "tables/hdf5extension.pyx":2091
25874  *       ret = H5Dvlen_get_buf_size(self.dataset_id, self.type_id, space_id,
25875  *                                  &size)
25876  *       if ret < 0:             # <<<<<<<<<<<<<<
25877  *         size = -1
25878  *
25879  */
25880     __pyx_t_3 = ((__pyx_v_ret < 0) != 0);
25881     if (__pyx_t_3) {
25882 
25883       /* "tables/hdf5extension.pyx":2092
25884  *                                  &size)
25885  *       if ret < 0:
25886  *         size = -1             # <<<<<<<<<<<<<<
25887  *
25888  *       # Terminate access to the dataspace
25889  */
25890       __pyx_v_size = -1LL;
25891 
25892       /* "tables/hdf5extension.pyx":2091
25893  *       ret = H5Dvlen_get_buf_size(self.dataset_id, self.type_id, space_id,
25894  *                                  &size)
25895  *       if ret < 0:             # <<<<<<<<<<<<<<
25896  *         size = -1
25897  *
25898  */
25899     }
25900 
25901     /* "tables/hdf5extension.pyx":2095
25902  *
25903  *       # Terminate access to the dataspace
25904  *       H5Sclose(space_id)             # <<<<<<<<<<<<<<
25905  *
25906  *     return size
25907  */
25908     (void)(H5Sclose(__pyx_v_space_id));
25909   }
25910   __pyx_L3:;
25911 
25912   /* "tables/hdf5extension.pyx":2097
25913  *       H5Sclose(space_id)
25914  *
25915  *     return size             # <<<<<<<<<<<<<<
25916  *
25917  *   def _read_array(self, hsize_t start, hsize_t stop, hsize_t step):
25918  */
25919   __Pyx_XDECREF(__pyx_r);
25920   __pyx_t_2 = __Pyx_PyInt_From_hsize_t(__pyx_v_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2097, __pyx_L1_error)
25921   __Pyx_GOTREF(__pyx_t_2);
25922   __pyx_r = __pyx_t_2;
25923   __pyx_t_2 = 0;
25924   goto __pyx_L0;
25925 
25926   /* "tables/hdf5extension.pyx":2078
25927  *   # Because the size of each "row" is unknown, there is no easy way to
25928  *   # calculate this value
25929  *   def _get_memory_size(self):             # <<<<<<<<<<<<<<
25930  *     cdef hid_t space_id
25931  *     cdef hsize_t size
25932  */
25933 
25934   /* function exit code */
25935   __pyx_L1_error:;
25936   __Pyx_XDECREF(__pyx_t_1);
25937   __Pyx_XDECREF(__pyx_t_2);
25938   __Pyx_AddTraceback("tables.hdf5extension.VLArray._get_memory_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
25939   __pyx_r = NULL;
25940   __pyx_L0:;
25941   __Pyx_XGIVEREF(__pyx_r);
25942   __Pyx_RefNannyFinishContext();
25943   return __pyx_r;
25944 }
25945 
25946 /* "tables/hdf5extension.pyx":2099
25947  *     return size
25948  *
25949  *   def _read_array(self, hsize_t start, hsize_t stop, hsize_t step):             # <<<<<<<<<<<<<<
25950  *     cdef int i
25951  *     cdef size_t vllen
25952  */
25953 
25954 /* Python wrapper */
25955 static PyObject *__pyx_pw_6tables_13hdf5extension_7VLArray_11_read_array(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
__pyx_pw_6tables_13hdf5extension_7VLArray_11_read_array(PyObject * __pyx_v_self,PyObject * __pyx_args,PyObject * __pyx_kwds)25956 static PyObject *__pyx_pw_6tables_13hdf5extension_7VLArray_11_read_array(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
25957   hsize_t __pyx_v_start;
25958   hsize_t __pyx_v_stop;
25959   hsize_t __pyx_v_step;
25960   PyObject *__pyx_r = 0;
25961   __Pyx_RefNannyDeclarations
25962   __Pyx_RefNannySetupContext("_read_array (wrapper)", 0);
25963   {
25964     static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_start,&__pyx_n_s_stop,&__pyx_n_s_step,0};
25965     PyObject* values[3] = {0,0,0};
25966     if (unlikely(__pyx_kwds)) {
25967       Py_ssize_t kw_args;
25968       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
25969       switch (pos_args) {
25970         case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
25971         CYTHON_FALLTHROUGH;
25972         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
25973         CYTHON_FALLTHROUGH;
25974         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
25975         CYTHON_FALLTHROUGH;
25976         case  0: break;
25977         default: goto __pyx_L5_argtuple_error;
25978       }
25979       kw_args = PyDict_Size(__pyx_kwds);
25980       switch (pos_args) {
25981         case  0:
25982         if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start)) != 0)) kw_args--;
25983         else goto __pyx_L5_argtuple_error;
25984         CYTHON_FALLTHROUGH;
25985         case  1:
25986         if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_stop)) != 0)) kw_args--;
25987         else {
25988           __Pyx_RaiseArgtupleInvalid("_read_array", 1, 3, 3, 1); __PYX_ERR(0, 2099, __pyx_L3_error)
25989         }
25990         CYTHON_FALLTHROUGH;
25991         case  2:
25992         if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_step)) != 0)) kw_args--;
25993         else {
25994           __Pyx_RaiseArgtupleInvalid("_read_array", 1, 3, 3, 2); __PYX_ERR(0, 2099, __pyx_L3_error)
25995         }
25996       }
25997       if (unlikely(kw_args > 0)) {
25998         if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_read_array") < 0)) __PYX_ERR(0, 2099, __pyx_L3_error)
25999       }
26000     } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
26001       goto __pyx_L5_argtuple_error;
26002     } else {
26003       values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
26004       values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
26005       values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
26006     }
26007     __pyx_v_start = __Pyx_PyInt_As_hsize_t(values[0]); if (unlikely((__pyx_v_start == ((hsize_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2099, __pyx_L3_error)
26008     __pyx_v_stop = __Pyx_PyInt_As_hsize_t(values[1]); if (unlikely((__pyx_v_stop == ((hsize_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2099, __pyx_L3_error)
26009     __pyx_v_step = __Pyx_PyInt_As_hsize_t(values[2]); if (unlikely((__pyx_v_step == ((hsize_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2099, __pyx_L3_error)
26010   }
26011   goto __pyx_L4_argument_unpacking_done;
26012   __pyx_L5_argtuple_error:;
26013   __Pyx_RaiseArgtupleInvalid("_read_array", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2099, __pyx_L3_error)
26014   __pyx_L3_error:;
26015   __Pyx_AddTraceback("tables.hdf5extension.VLArray._read_array", __pyx_clineno, __pyx_lineno, __pyx_filename);
26016   __Pyx_RefNannyFinishContext();
26017   return NULL;
26018   __pyx_L4_argument_unpacking_done:;
26019   __pyx_r = __pyx_pf_6tables_13hdf5extension_7VLArray_10_read_array(((struct __pyx_obj_6tables_13hdf5extension_VLArray *)__pyx_v_self), __pyx_v_start, __pyx_v_stop, __pyx_v_step);
26020 
26021   /* function exit code */
26022   __Pyx_RefNannyFinishContext();
26023   return __pyx_r;
26024 }
26025 
__pyx_pf_6tables_13hdf5extension_7VLArray_10_read_array(struct __pyx_obj_6tables_13hdf5extension_VLArray * __pyx_v_self,hsize_t __pyx_v_start,hsize_t __pyx_v_stop,hsize_t __pyx_v_step)26026 static PyObject *__pyx_pf_6tables_13hdf5extension_7VLArray_10_read_array(struct __pyx_obj_6tables_13hdf5extension_VLArray *__pyx_v_self, hsize_t __pyx_v_start, hsize_t __pyx_v_stop, hsize_t __pyx_v_step) {
26027   int __pyx_v_i;
26028   size_t __pyx_v_vllen;
26029   herr_t __pyx_v_ret;
26030   hvl_t *__pyx_v_rdata;
26031   hsize_t __pyx_v_nrows;
26032   hid_t __pyx_v_space_id;
26033   hid_t __pyx_v_mem_space_id;
26034   PyObject *__pyx_v_buf = 0;
26035   PyObject *__pyx_v_nparr = 0;
26036   PyObject *__pyx_v_shape = 0;
26037   PyObject *__pyx_v_datalist = 0;
26038   PyObject *__pyx_r = NULL;
26039   __Pyx_RefNannyDeclarations
26040   PyObject *__pyx_t_1 = NULL;
26041   PyObject *__pyx_t_2 = NULL;
26042   PyObject *__pyx_t_3 = NULL;
26043   int __pyx_t_4;
26044   hsize_t __pyx_t_5;
26045   size_t __pyx_t_6;
26046   Py_ssize_t __pyx_t_7;
26047   PyObject *__pyx_t_8 = NULL;
26048   int __pyx_t_9;
26049   PyObject *__pyx_t_10 = NULL;
26050   int __pyx_t_11;
26051   __Pyx_RefNannySetupContext("_read_array", 0);
26052 
26053   /* "tables/hdf5extension.pyx":2110
26054  *
26055  *     # Compute the number of rows to read
26056  *     nrows = get_len_of_range(start, stop, step)             # <<<<<<<<<<<<<<
26057  *     if start + nrows > self.nrows:
26058  *       raise HDF5ExtError(
26059  */
26060   __pyx_v_nrows = get_len_of_range(__pyx_v_start, __pyx_v_stop, __pyx_v_step);
26061 
26062   /* "tables/hdf5extension.pyx":2111
26063  *     # Compute the number of rows to read
26064  *     nrows = get_len_of_range(start, stop, step)
26065  *     if start + nrows > self.nrows:             # <<<<<<<<<<<<<<
26066  *       raise HDF5ExtError(
26067  *         "Asking for a range of rows exceeding the available ones!.",
26068  */
26069   __pyx_t_1 = __Pyx_PyInt_From_hsize_t((__pyx_v_start + __pyx_v_nrows)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2111, __pyx_L1_error)
26070   __Pyx_GOTREF(__pyx_t_1);
26071   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_nrows); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2111, __pyx_L1_error)
26072   __Pyx_GOTREF(__pyx_t_2);
26073   __pyx_t_3 = PyObject_RichCompare(__pyx_t_1, __pyx_t_2, Py_GT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2111, __pyx_L1_error)
26074   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
26075   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
26076   __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 2111, __pyx_L1_error)
26077   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
26078   if (unlikely(__pyx_t_4)) {
26079 
26080     /* "tables/hdf5extension.pyx":2112
26081  *     nrows = get_len_of_range(start, stop, step)
26082  *     if start + nrows > self.nrows:
26083  *       raise HDF5ExtError(             # <<<<<<<<<<<<<<
26084  *         "Asking for a range of rows exceeding the available ones!.",
26085  *         h5bt=False)
26086  */
26087     __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_HDF5ExtError); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2112, __pyx_L1_error)
26088     __Pyx_GOTREF(__pyx_t_3);
26089 
26090     /* "tables/hdf5extension.pyx":2114
26091  *       raise HDF5ExtError(
26092  *         "Asking for a range of rows exceeding the available ones!.",
26093  *         h5bt=False)             # <<<<<<<<<<<<<<
26094  *
26095  *     # Now, read the chunk of rows
26096  */
26097     __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2114, __pyx_L1_error)
26098     __Pyx_GOTREF(__pyx_t_2);
26099     if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_h5bt, Py_False) < 0) __PYX_ERR(0, 2114, __pyx_L1_error)
26100 
26101     /* "tables/hdf5extension.pyx":2112
26102  *     nrows = get_len_of_range(start, stop, step)
26103  *     if start + nrows > self.nrows:
26104  *       raise HDF5ExtError(             # <<<<<<<<<<<<<<
26105  *         "Asking for a range of rows exceeding the available ones!.",
26106  *         h5bt=False)
26107  */
26108     __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__17, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2112, __pyx_L1_error)
26109     __Pyx_GOTREF(__pyx_t_1);
26110     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
26111     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
26112     __Pyx_Raise(__pyx_t_1, 0, 0, 0);
26113     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
26114     __PYX_ERR(0, 2112, __pyx_L1_error)
26115 
26116     /* "tables/hdf5extension.pyx":2111
26117  *     # Compute the number of rows to read
26118  *     nrows = get_len_of_range(start, stop, step)
26119  *     if start + nrows > self.nrows:             # <<<<<<<<<<<<<<
26120  *       raise HDF5ExtError(
26121  *         "Asking for a range of rows exceeding the available ones!.",
26122  */
26123   }
26124 
26125   /* "tables/hdf5extension.pyx":2117
26126  *
26127  *     # Now, read the chunk of rows
26128  *     with nogil:             # <<<<<<<<<<<<<<
26129  *         # Allocate the necessary memory for keeping the row handlers
26130  *         rdata = <hvl_t *>malloc(<size_t>nrows*sizeof(hvl_t))
26131  */
26132   {
26133       #ifdef WITH_THREAD
26134       PyThreadState *_save;
26135       Py_UNBLOCK_THREADS
26136       __Pyx_FastGIL_Remember();
26137       #endif
26138       /*try:*/ {
26139 
26140         /* "tables/hdf5extension.pyx":2119
26141  *     with nogil:
26142  *         # Allocate the necessary memory for keeping the row handlers
26143  *         rdata = <hvl_t *>malloc(<size_t>nrows*sizeof(hvl_t))             # <<<<<<<<<<<<<<
26144  *         # Get the dataspace handle
26145  *         space_id = H5Dget_space(self.dataset_id)
26146  */
26147         __pyx_v_rdata = ((hvl_t *)malloc((((size_t)__pyx_v_nrows) * (sizeof(hvl_t)))));
26148 
26149         /* "tables/hdf5extension.pyx":2121
26150  *         rdata = <hvl_t *>malloc(<size_t>nrows*sizeof(hvl_t))
26151  *         # Get the dataspace handle
26152  *         space_id = H5Dget_space(self.dataset_id)             # <<<<<<<<<<<<<<
26153  *         # Create a memory dataspace handle
26154  *         mem_space_id = H5Screate_simple(1, &nrows, NULL)
26155  */
26156         __pyx_v_space_id = H5Dget_space(__pyx_v_self->__pyx_base.dataset_id);
26157 
26158         /* "tables/hdf5extension.pyx":2123
26159  *         space_id = H5Dget_space(self.dataset_id)
26160  *         # Create a memory dataspace handle
26161  *         mem_space_id = H5Screate_simple(1, &nrows, NULL)             # <<<<<<<<<<<<<<
26162  *         # Select the data to be read
26163  *         H5Sselect_hyperslab(space_id, H5S_SELECT_SET, &start, &step, &nrows,
26164  */
26165         __pyx_v_mem_space_id = H5Screate_simple(1, (&__pyx_v_nrows), NULL);
26166 
26167         /* "tables/hdf5extension.pyx":2125
26168  *         mem_space_id = H5Screate_simple(1, &nrows, NULL)
26169  *         # Select the data to be read
26170  *         H5Sselect_hyperslab(space_id, H5S_SELECT_SET, &start, &step, &nrows,             # <<<<<<<<<<<<<<
26171  *                             NULL)
26172  *         # Do the actual read
26173  */
26174         (void)(H5Sselect_hyperslab(__pyx_v_space_id, H5S_SELECT_SET, (&__pyx_v_start), (&__pyx_v_step), (&__pyx_v_nrows), NULL));
26175 
26176         /* "tables/hdf5extension.pyx":2128
26177  *                             NULL)
26178  *         # Do the actual read
26179  *         ret = H5Dread(self.dataset_id, self.type_id, mem_space_id, space_id,             # <<<<<<<<<<<<<<
26180  *                       H5P_DEFAULT, rdata)
26181  *
26182  */
26183         __pyx_v_ret = H5Dread(__pyx_v_self->__pyx_base.dataset_id, __pyx_v_self->__pyx_base.type_id, __pyx_v_mem_space_id, __pyx_v_space_id, H5P_DEFAULT, __pyx_v_rdata);
26184       }
26185 
26186       /* "tables/hdf5extension.pyx":2117
26187  *
26188  *     # Now, read the chunk of rows
26189  *     with nogil:             # <<<<<<<<<<<<<<
26190  *         # Allocate the necessary memory for keeping the row handlers
26191  *         rdata = <hvl_t *>malloc(<size_t>nrows*sizeof(hvl_t))
26192  */
26193       /*finally:*/ {
26194         /*normal exit:*/{
26195           #ifdef WITH_THREAD
26196           __Pyx_FastGIL_Forget();
26197           Py_BLOCK_THREADS
26198           #endif
26199           goto __pyx_L6;
26200         }
26201         __pyx_L6:;
26202       }
26203   }
26204 
26205   /* "tables/hdf5extension.pyx":2131
26206  *                       H5P_DEFAULT, rdata)
26207  *
26208  *     if ret < 0:             # <<<<<<<<<<<<<<
26209  *       raise HDF5ExtError(
26210  *         "VLArray._read_array: Problems reading the array data.")
26211  */
26212   __pyx_t_4 = ((__pyx_v_ret < 0) != 0);
26213   if (unlikely(__pyx_t_4)) {
26214 
26215     /* "tables/hdf5extension.pyx":2132
26216  *
26217  *     if ret < 0:
26218  *       raise HDF5ExtError(             # <<<<<<<<<<<<<<
26219  *         "VLArray._read_array: Problems reading the array data.")
26220  *
26221  */
26222     __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_HDF5ExtError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2132, __pyx_L1_error)
26223     __Pyx_GOTREF(__pyx_t_2);
26224     __pyx_t_3 = NULL;
26225     if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
26226       __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
26227       if (likely(__pyx_t_3)) {
26228         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
26229         __Pyx_INCREF(__pyx_t_3);
26230         __Pyx_INCREF(function);
26231         __Pyx_DECREF_SET(__pyx_t_2, function);
26232       }
26233     }
26234     __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_kp_s_VLArray__read_array_Problems_rea) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_kp_s_VLArray__read_array_Problems_rea);
26235     __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
26236     if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2132, __pyx_L1_error)
26237     __Pyx_GOTREF(__pyx_t_1);
26238     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
26239     __Pyx_Raise(__pyx_t_1, 0, 0, 0);
26240     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
26241     __PYX_ERR(0, 2132, __pyx_L1_error)
26242 
26243     /* "tables/hdf5extension.pyx":2131
26244  *                       H5P_DEFAULT, rdata)
26245  *
26246  *     if ret < 0:             # <<<<<<<<<<<<<<
26247  *       raise HDF5ExtError(
26248  *         "VLArray._read_array: Problems reading the array data.")
26249  */
26250   }
26251 
26252   /* "tables/hdf5extension.pyx":2135
26253  *         "VLArray._read_array: Problems reading the array data.")
26254  *
26255  *     datalist = []             # <<<<<<<<<<<<<<
26256  *     for i from 0 <= i < nrows:
26257  *       # Number of atoms in row
26258  */
26259   __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2135, __pyx_L1_error)
26260   __Pyx_GOTREF(__pyx_t_1);
26261   __pyx_v_datalist = __pyx_t_1;
26262   __pyx_t_1 = 0;
26263 
26264   /* "tables/hdf5extension.pyx":2136
26265  *
26266  *     datalist = []
26267  *     for i from 0 <= i < nrows:             # <<<<<<<<<<<<<<
26268  *       # Number of atoms in row
26269  *       vllen = rdata[i].len
26270  */
26271   __pyx_t_5 = __pyx_v_nrows;
26272   for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_5; __pyx_v_i++) {
26273 
26274     /* "tables/hdf5extension.pyx":2138
26275  *     for i from 0 <= i < nrows:
26276  *       # Number of atoms in row
26277  *       vllen = rdata[i].len             # <<<<<<<<<<<<<<
26278  *       # Get the pointer to the buffer data area
26279  *       if vllen > 0:
26280  */
26281     __pyx_t_6 = (__pyx_v_rdata[__pyx_v_i]).len;
26282     __pyx_v_vllen = __pyx_t_6;
26283 
26284     /* "tables/hdf5extension.pyx":2140
26285  *       vllen = rdata[i].len
26286  *       # Get the pointer to the buffer data area
26287  *       if vllen > 0:             # <<<<<<<<<<<<<<
26288  *         # Create a buffer to keep this info. It is important to do a
26289  *         # copy, because we will dispose the buffer memory later on by
26290  */
26291     __pyx_t_4 = ((__pyx_v_vllen > 0) != 0);
26292     if (__pyx_t_4) {
26293 
26294       /* "tables/hdf5extension.pyx":2145
26295  *         # calling the H5Dvlen_reclaim. PyByteArray_FromStringAndSize does this.
26296  *         buf = PyByteArray_FromStringAndSize(<char *>rdata[i].p,
26297  *                                             vllen*self._atomicsize)             # <<<<<<<<<<<<<<
26298  *       else:
26299  *         # Case where there is info with zero lentgh
26300  */
26301       __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_vllen); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2145, __pyx_L1_error)
26302       __Pyx_GOTREF(__pyx_t_1);
26303       __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_atomicsize); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2145, __pyx_L1_error)
26304       __Pyx_GOTREF(__pyx_t_2);
26305       __pyx_t_3 = PyNumber_Multiply(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2145, __pyx_L1_error)
26306       __Pyx_GOTREF(__pyx_t_3);
26307       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
26308       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
26309       __pyx_t_7 = __Pyx_PyIndex_AsSsize_t(__pyx_t_3); if (unlikely((__pyx_t_7 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2145, __pyx_L1_error)
26310       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
26311 
26312       /* "tables/hdf5extension.pyx":2144
26313  *         # copy, because we will dispose the buffer memory later on by
26314  *         # calling the H5Dvlen_reclaim. PyByteArray_FromStringAndSize does this.
26315  *         buf = PyByteArray_FromStringAndSize(<char *>rdata[i].p,             # <<<<<<<<<<<<<<
26316  *                                             vllen*self._atomicsize)
26317  *       else:
26318  */
26319       __pyx_t_3 = PyByteArray_FromStringAndSize(((char *)(__pyx_v_rdata[__pyx_v_i]).p), __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2144, __pyx_L1_error)
26320       __Pyx_GOTREF(__pyx_t_3);
26321       __Pyx_XDECREF_SET(__pyx_v_buf, __pyx_t_3);
26322       __pyx_t_3 = 0;
26323 
26324       /* "tables/hdf5extension.pyx":2140
26325  *       vllen = rdata[i].len
26326  *       # Get the pointer to the buffer data area
26327  *       if vllen > 0:             # <<<<<<<<<<<<<<
26328  *         # Create a buffer to keep this info. It is important to do a
26329  *         # copy, because we will dispose the buffer memory later on by
26330  */
26331       goto __pyx_L10;
26332     }
26333 
26334     /* "tables/hdf5extension.pyx":2148
26335  *       else:
26336  *         # Case where there is info with zero lentgh
26337  *         buf = None             # <<<<<<<<<<<<<<
26338  *       # Compute the shape for the read array
26339  *       shape = list(self._atomicshape)
26340  */
26341     /*else*/ {
26342       __Pyx_INCREF(Py_None);
26343       __Pyx_XDECREF_SET(__pyx_v_buf, Py_None);
26344     }
26345     __pyx_L10:;
26346 
26347     /* "tables/hdf5extension.pyx":2150
26348  *         buf = None
26349  *       # Compute the shape for the read array
26350  *       shape = list(self._atomicshape)             # <<<<<<<<<<<<<<
26351  *       shape.insert(0, vllen)  # put the length at the beginning of the shape
26352  *       nparr = numpy.ndarray(
26353  */
26354     __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_atomicshape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2150, __pyx_L1_error)
26355     __Pyx_GOTREF(__pyx_t_3);
26356     __pyx_t_2 = PySequence_List(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2150, __pyx_L1_error)
26357     __Pyx_GOTREF(__pyx_t_2);
26358     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
26359     __Pyx_XDECREF_SET(__pyx_v_shape, __pyx_t_2);
26360     __pyx_t_2 = 0;
26361 
26362     /* "tables/hdf5extension.pyx":2151
26363  *       # Compute the shape for the read array
26364  *       shape = list(self._atomicshape)
26365  *       shape.insert(0, vllen)  # put the length at the beginning of the shape             # <<<<<<<<<<<<<<
26366  *       nparr = numpy.ndarray(
26367  *         buffer=buf, dtype=self._atomicdtype.base, shape=shape)
26368  */
26369     __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_shape, __pyx_n_s_insert); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2151, __pyx_L1_error)
26370     __Pyx_GOTREF(__pyx_t_3);
26371     __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_vllen); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2151, __pyx_L1_error)
26372     __Pyx_GOTREF(__pyx_t_1);
26373     __pyx_t_8 = NULL;
26374     __pyx_t_9 = 0;
26375     if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
26376       __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_3);
26377       if (likely(__pyx_t_8)) {
26378         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
26379         __Pyx_INCREF(__pyx_t_8);
26380         __Pyx_INCREF(function);
26381         __Pyx_DECREF_SET(__pyx_t_3, function);
26382         __pyx_t_9 = 1;
26383       }
26384     }
26385     #if CYTHON_FAST_PYCALL
26386     if (PyFunction_Check(__pyx_t_3)) {
26387       PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_int_0, __pyx_t_1};
26388       __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2151, __pyx_L1_error)
26389       __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
26390       __Pyx_GOTREF(__pyx_t_2);
26391       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
26392     } else
26393     #endif
26394     #if CYTHON_FAST_PYCCALL
26395     if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
26396       PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_int_0, __pyx_t_1};
26397       __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2151, __pyx_L1_error)
26398       __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
26399       __Pyx_GOTREF(__pyx_t_2);
26400       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
26401     } else
26402     #endif
26403     {
26404       __pyx_t_10 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2151, __pyx_L1_error)
26405       __Pyx_GOTREF(__pyx_t_10);
26406       if (__pyx_t_8) {
26407         __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_8); __pyx_t_8 = NULL;
26408       }
26409       __Pyx_INCREF(__pyx_int_0);
26410       __Pyx_GIVEREF(__pyx_int_0);
26411       PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_9, __pyx_int_0);
26412       __Pyx_GIVEREF(__pyx_t_1);
26413       PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_9, __pyx_t_1);
26414       __pyx_t_1 = 0;
26415       __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_10, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2151, __pyx_L1_error)
26416       __Pyx_GOTREF(__pyx_t_2);
26417       __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
26418     }
26419     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
26420     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
26421 
26422     /* "tables/hdf5extension.pyx":2152
26423  *       shape = list(self._atomicshape)
26424  *       shape.insert(0, vllen)  # put the length at the beginning of the shape
26425  *       nparr = numpy.ndarray(             # <<<<<<<<<<<<<<
26426  *         buffer=buf, dtype=self._atomicdtype.base, shape=shape)
26427  *       # Set the writeable flag for this ndarray object
26428  */
26429     __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2152, __pyx_L1_error)
26430     __Pyx_GOTREF(__pyx_t_2);
26431     __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_ndarray); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2152, __pyx_L1_error)
26432     __Pyx_GOTREF(__pyx_t_3);
26433     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
26434 
26435     /* "tables/hdf5extension.pyx":2153
26436  *       shape.insert(0, vllen)  # put the length at the beginning of the shape
26437  *       nparr = numpy.ndarray(
26438  *         buffer=buf, dtype=self._atomicdtype.base, shape=shape)             # <<<<<<<<<<<<<<
26439  *       # Set the writeable flag for this ndarray object
26440  *       nparr.flags.writeable = True
26441  */
26442     __pyx_t_2 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2153, __pyx_L1_error)
26443     __Pyx_GOTREF(__pyx_t_2);
26444     if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_buffer, __pyx_v_buf) < 0) __PYX_ERR(0, 2153, __pyx_L1_error)
26445     __pyx_t_10 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_atomicdtype); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2153, __pyx_L1_error)
26446     __Pyx_GOTREF(__pyx_t_10);
26447     __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_base); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2153, __pyx_L1_error)
26448     __Pyx_GOTREF(__pyx_t_1);
26449     __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
26450     if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 2153, __pyx_L1_error)
26451     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
26452     if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_shape, __pyx_v_shape) < 0) __PYX_ERR(0, 2153, __pyx_L1_error)
26453 
26454     /* "tables/hdf5extension.pyx":2152
26455  *       shape = list(self._atomicshape)
26456  *       shape.insert(0, vllen)  # put the length at the beginning of the shape
26457  *       nparr = numpy.ndarray(             # <<<<<<<<<<<<<<
26458  *         buffer=buf, dtype=self._atomicdtype.base, shape=shape)
26459  *       # Set the writeable flag for this ndarray object
26460  */
26461     __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2152, __pyx_L1_error)
26462     __Pyx_GOTREF(__pyx_t_1);
26463     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
26464     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
26465     __Pyx_XDECREF_SET(__pyx_v_nparr, __pyx_t_1);
26466     __pyx_t_1 = 0;
26467 
26468     /* "tables/hdf5extension.pyx":2155
26469  *         buffer=buf, dtype=self._atomicdtype.base, shape=shape)
26470  *       # Set the writeable flag for this ndarray object
26471  *       nparr.flags.writeable = True             # <<<<<<<<<<<<<<
26472  *       if self.atom.kind == 'time':
26473  *         # Swap the byteorder by hand (this is not currently supported by HDF5)
26474  */
26475     __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_nparr, __pyx_n_s_flags); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2155, __pyx_L1_error)
26476     __Pyx_GOTREF(__pyx_t_1);
26477     if (__Pyx_PyObject_SetAttrStr(__pyx_t_1, __pyx_n_s_writeable, Py_True) < 0) __PYX_ERR(0, 2155, __pyx_L1_error)
26478     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
26479 
26480     /* "tables/hdf5extension.pyx":2156
26481  *       # Set the writeable flag for this ndarray object
26482  *       nparr.flags.writeable = True
26483  *       if self.atom.kind == 'time':             # <<<<<<<<<<<<<<
26484  *         # Swap the byteorder by hand (this is not currently supported by HDF5)
26485  *         if H5Tget_order(self.type_id) != platform_byteorder:
26486  */
26487     __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_atom); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2156, __pyx_L1_error)
26488     __Pyx_GOTREF(__pyx_t_1);
26489     __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_kind); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2156, __pyx_L1_error)
26490     __Pyx_GOTREF(__pyx_t_2);
26491     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
26492     __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_t_2, __pyx_n_s_time, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 2156, __pyx_L1_error)
26493     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
26494     if (__pyx_t_4) {
26495 
26496       /* "tables/hdf5extension.pyx":2158
26497  *       if self.atom.kind == 'time':
26498  *         # Swap the byteorder by hand (this is not currently supported by HDF5)
26499  *         if H5Tget_order(self.type_id) != platform_byteorder:             # <<<<<<<<<<<<<<
26500  *           nparr.byteswap(True)
26501  *       # Convert some HDF5 types to NumPy after reading.
26502  */
26503       __pyx_t_2 = __Pyx_PyInt_From_enum__H5T_order_t(H5Tget_order(__pyx_v_self->__pyx_base.type_id)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2158, __pyx_L1_error)
26504       __Pyx_GOTREF(__pyx_t_2);
26505       __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_platform_byteorder); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2158, __pyx_L1_error)
26506       __Pyx_GOTREF(__pyx_t_1);
26507       __pyx_t_3 = PyObject_RichCompare(__pyx_t_2, __pyx_t_1, Py_NE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2158, __pyx_L1_error)
26508       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
26509       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
26510       __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 2158, __pyx_L1_error)
26511       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
26512       if (__pyx_t_4) {
26513 
26514         /* "tables/hdf5extension.pyx":2159
26515  *         # Swap the byteorder by hand (this is not currently supported by HDF5)
26516  *         if H5Tget_order(self.type_id) != platform_byteorder:
26517  *           nparr.byteswap(True)             # <<<<<<<<<<<<<<
26518  *       # Convert some HDF5 types to NumPy after reading.
26519  *       if self.atom.type == 'time64':
26520  */
26521         __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_nparr, __pyx_n_s_byteswap); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2159, __pyx_L1_error)
26522         __Pyx_GOTREF(__pyx_t_1);
26523         __pyx_t_2 = NULL;
26524         if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
26525           __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1);
26526           if (likely(__pyx_t_2)) {
26527             PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
26528             __Pyx_INCREF(__pyx_t_2);
26529             __Pyx_INCREF(function);
26530             __Pyx_DECREF_SET(__pyx_t_1, function);
26531           }
26532         }
26533         __pyx_t_3 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_2, Py_True) : __Pyx_PyObject_CallOneArg(__pyx_t_1, Py_True);
26534         __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
26535         if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2159, __pyx_L1_error)
26536         __Pyx_GOTREF(__pyx_t_3);
26537         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
26538         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
26539 
26540         /* "tables/hdf5extension.pyx":2158
26541  *       if self.atom.kind == 'time':
26542  *         # Swap the byteorder by hand (this is not currently supported by HDF5)
26543  *         if H5Tget_order(self.type_id) != platform_byteorder:             # <<<<<<<<<<<<<<
26544  *           nparr.byteswap(True)
26545  *       # Convert some HDF5 types to NumPy after reading.
26546  */
26547       }
26548 
26549       /* "tables/hdf5extension.pyx":2156
26550  *       # Set the writeable flag for this ndarray object
26551  *       nparr.flags.writeable = True
26552  *       if self.atom.kind == 'time':             # <<<<<<<<<<<<<<
26553  *         # Swap the byteorder by hand (this is not currently supported by HDF5)
26554  *         if H5Tget_order(self.type_id) != platform_byteorder:
26555  */
26556     }
26557 
26558     /* "tables/hdf5extension.pyx":2161
26559  *           nparr.byteswap(True)
26560  *       # Convert some HDF5 types to NumPy after reading.
26561  *       if self.atom.type == 'time64':             # <<<<<<<<<<<<<<
26562  *         self._convert_time64(nparr, 1)
26563  *       # Append this array to the output list
26564  */
26565     __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_atom); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2161, __pyx_L1_error)
26566     __Pyx_GOTREF(__pyx_t_3);
26567     __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_type); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2161, __pyx_L1_error)
26568     __Pyx_GOTREF(__pyx_t_1);
26569     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
26570     __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_time64, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 2161, __pyx_L1_error)
26571     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
26572     if (__pyx_t_4) {
26573 
26574       /* "tables/hdf5extension.pyx":2162
26575  *       # Convert some HDF5 types to NumPy after reading.
26576  *       if self.atom.type == 'time64':
26577  *         self._convert_time64(nparr, 1)             # <<<<<<<<<<<<<<
26578  *       # Append this array to the output list
26579  *       datalist.append(nparr)
26580  */
26581       if (!(likely(((__pyx_v_nparr) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_nparr, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2162, __pyx_L1_error)
26582       __pyx_t_1 = ((struct __pyx_vtabstruct_6tables_13hdf5extension_VLArray *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._convert_time64(((struct __pyx_obj_6tables_13hdf5extension_Leaf *)__pyx_v_self), ((PyArrayObject *)__pyx_v_nparr), 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2162, __pyx_L1_error)
26583       __Pyx_GOTREF(__pyx_t_1);
26584       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
26585 
26586       /* "tables/hdf5extension.pyx":2161
26587  *           nparr.byteswap(True)
26588  *       # Convert some HDF5 types to NumPy after reading.
26589  *       if self.atom.type == 'time64':             # <<<<<<<<<<<<<<
26590  *         self._convert_time64(nparr, 1)
26591  *       # Append this array to the output list
26592  */
26593     }
26594 
26595     /* "tables/hdf5extension.pyx":2164
26596  *         self._convert_time64(nparr, 1)
26597  *       # Append this array to the output list
26598  *       datalist.append(nparr)             # <<<<<<<<<<<<<<
26599  *
26600  *     # Release resources
26601  */
26602     __pyx_t_11 = __Pyx_PyObject_Append(__pyx_v_datalist, __pyx_v_nparr); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(0, 2164, __pyx_L1_error)
26603   }
26604 
26605   /* "tables/hdf5extension.pyx":2168
26606  *     # Release resources
26607  *     # Reclaim all the (nested) VL data
26608  *     ret = H5Dvlen_reclaim(self.type_id, mem_space_id, H5P_DEFAULT, rdata)             # <<<<<<<<<<<<<<
26609  *     if ret < 0:
26610  *       raise HDF5ExtError("VLArray._read_array: error freeing the data buffer.")
26611  */
26612   __pyx_v_ret = H5Dvlen_reclaim(__pyx_v_self->__pyx_base.type_id, __pyx_v_mem_space_id, H5P_DEFAULT, __pyx_v_rdata);
26613 
26614   /* "tables/hdf5extension.pyx":2169
26615  *     # Reclaim all the (nested) VL data
26616  *     ret = H5Dvlen_reclaim(self.type_id, mem_space_id, H5P_DEFAULT, rdata)
26617  *     if ret < 0:             # <<<<<<<<<<<<<<
26618  *       raise HDF5ExtError("VLArray._read_array: error freeing the data buffer.")
26619  *     # Terminate access to the memory dataspace
26620  */
26621   __pyx_t_4 = ((__pyx_v_ret < 0) != 0);
26622   if (unlikely(__pyx_t_4)) {
26623 
26624     /* "tables/hdf5extension.pyx":2170
26625  *     ret = H5Dvlen_reclaim(self.type_id, mem_space_id, H5P_DEFAULT, rdata)
26626  *     if ret < 0:
26627  *       raise HDF5ExtError("VLArray._read_array: error freeing the data buffer.")             # <<<<<<<<<<<<<<
26628  *     # Terminate access to the memory dataspace
26629  *     H5Sclose(mem_space_id)
26630  */
26631     __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_HDF5ExtError); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2170, __pyx_L1_error)
26632     __Pyx_GOTREF(__pyx_t_3);
26633     __pyx_t_2 = NULL;
26634     if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
26635       __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
26636       if (likely(__pyx_t_2)) {
26637         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
26638         __Pyx_INCREF(__pyx_t_2);
26639         __Pyx_INCREF(function);
26640         __Pyx_DECREF_SET(__pyx_t_3, function);
26641       }
26642     }
26643     __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_kp_s_VLArray__read_array_error_freein) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_kp_s_VLArray__read_array_error_freein);
26644     __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
26645     if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2170, __pyx_L1_error)
26646     __Pyx_GOTREF(__pyx_t_1);
26647     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
26648     __Pyx_Raise(__pyx_t_1, 0, 0, 0);
26649     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
26650     __PYX_ERR(0, 2170, __pyx_L1_error)
26651 
26652     /* "tables/hdf5extension.pyx":2169
26653  *     # Reclaim all the (nested) VL data
26654  *     ret = H5Dvlen_reclaim(self.type_id, mem_space_id, H5P_DEFAULT, rdata)
26655  *     if ret < 0:             # <<<<<<<<<<<<<<
26656  *       raise HDF5ExtError("VLArray._read_array: error freeing the data buffer.")
26657  *     # Terminate access to the memory dataspace
26658  */
26659   }
26660 
26661   /* "tables/hdf5extension.pyx":2172
26662  *       raise HDF5ExtError("VLArray._read_array: error freeing the data buffer.")
26663  *     # Terminate access to the memory dataspace
26664  *     H5Sclose(mem_space_id)             # <<<<<<<<<<<<<<
26665  *     # Terminate access to the dataspace
26666  *     H5Sclose(space_id)
26667  */
26668   (void)(H5Sclose(__pyx_v_mem_space_id));
26669 
26670   /* "tables/hdf5extension.pyx":2174
26671  *     H5Sclose(mem_space_id)
26672  *     # Terminate access to the dataspace
26673  *     H5Sclose(space_id)             # <<<<<<<<<<<<<<
26674  *     # Free the amount of row pointers to VL row data
26675  *     free(rdata)
26676  */
26677   (void)(H5Sclose(__pyx_v_space_id));
26678 
26679   /* "tables/hdf5extension.pyx":2176
26680  *     H5Sclose(space_id)
26681  *     # Free the amount of row pointers to VL row data
26682  *     free(rdata)             # <<<<<<<<<<<<<<
26683  *
26684  *     return datalist
26685  */
26686   free(__pyx_v_rdata);
26687 
26688   /* "tables/hdf5extension.pyx":2178
26689  *     free(rdata)
26690  *
26691  *     return datalist             # <<<<<<<<<<<<<<
26692  *
26693  *
26694  */
26695   __Pyx_XDECREF(__pyx_r);
26696   __Pyx_INCREF(__pyx_v_datalist);
26697   __pyx_r = __pyx_v_datalist;
26698   goto __pyx_L0;
26699 
26700   /* "tables/hdf5extension.pyx":2099
26701  *     return size
26702  *
26703  *   def _read_array(self, hsize_t start, hsize_t stop, hsize_t step):             # <<<<<<<<<<<<<<
26704  *     cdef int i
26705  *     cdef size_t vllen
26706  */
26707 
26708   /* function exit code */
26709   __pyx_L1_error:;
26710   __Pyx_XDECREF(__pyx_t_1);
26711   __Pyx_XDECREF(__pyx_t_2);
26712   __Pyx_XDECREF(__pyx_t_3);
26713   __Pyx_XDECREF(__pyx_t_8);
26714   __Pyx_XDECREF(__pyx_t_10);
26715   __Pyx_AddTraceback("tables.hdf5extension.VLArray._read_array", __pyx_clineno, __pyx_lineno, __pyx_filename);
26716   __pyx_r = NULL;
26717   __pyx_L0:;
26718   __Pyx_XDECREF(__pyx_v_buf);
26719   __Pyx_XDECREF(__pyx_v_nparr);
26720   __Pyx_XDECREF(__pyx_v_shape);
26721   __Pyx_XDECREF(__pyx_v_datalist);
26722   __Pyx_XGIVEREF(__pyx_r);
26723   __Pyx_RefNannyFinishContext();
26724   return __pyx_r;
26725 }
26726 
26727 /* "tables/hdf5extension.pyx":2181
26728  *
26729  *
26730  *   def get_row_size(self, row):             # <<<<<<<<<<<<<<
26731  *     """Return the total size in bytes of all the elements contained in a given row."""
26732  *
26733  */
26734 
26735 /* Python wrapper */
26736 static PyObject *__pyx_pw_6tables_13hdf5extension_7VLArray_13get_row_size(PyObject *__pyx_v_self, PyObject *__pyx_v_row); /*proto*/
26737 static char __pyx_doc_6tables_13hdf5extension_7VLArray_12get_row_size[] = "Return the total size in bytes of all the elements contained in a given row.";
__pyx_pw_6tables_13hdf5extension_7VLArray_13get_row_size(PyObject * __pyx_v_self,PyObject * __pyx_v_row)26738 static PyObject *__pyx_pw_6tables_13hdf5extension_7VLArray_13get_row_size(PyObject *__pyx_v_self, PyObject *__pyx_v_row) {
26739   PyObject *__pyx_r = 0;
26740   __Pyx_RefNannyDeclarations
26741   __Pyx_RefNannySetupContext("get_row_size (wrapper)", 0);
26742   __pyx_r = __pyx_pf_6tables_13hdf5extension_7VLArray_12get_row_size(((struct __pyx_obj_6tables_13hdf5extension_VLArray *)__pyx_v_self), ((PyObject *)__pyx_v_row));
26743 
26744   /* function exit code */
26745   __Pyx_RefNannyFinishContext();
26746   return __pyx_r;
26747 }
26748 
__pyx_pf_6tables_13hdf5extension_7VLArray_12get_row_size(struct __pyx_obj_6tables_13hdf5extension_VLArray * __pyx_v_self,PyObject * __pyx_v_row)26749 static PyObject *__pyx_pf_6tables_13hdf5extension_7VLArray_12get_row_size(struct __pyx_obj_6tables_13hdf5extension_VLArray *__pyx_v_self, PyObject *__pyx_v_row) {
26750   hid_t __pyx_v_space_id;
26751   hsize_t __pyx_v_size;
26752   herr_t __pyx_v_ret;
26753   hsize_t __pyx_v_offset[1];
26754   hsize_t __pyx_v_count[1];
26755   PyObject *__pyx_r = NULL;
26756   __Pyx_RefNannyDeclarations
26757   PyObject *__pyx_t_1 = NULL;
26758   PyObject *__pyx_t_2 = NULL;
26759   int __pyx_t_3;
26760   PyObject *__pyx_t_4 = NULL;
26761   hsize_t __pyx_t_5;
26762   __Pyx_RefNannySetupContext("get_row_size", 0);
26763 
26764   /* "tables/hdf5extension.pyx":2191
26765  *     cdef hsize_t count[1]
26766  *
26767  *     if row >= self.nrows:             # <<<<<<<<<<<<<<
26768  *       raise HDF5ExtError(
26769  *         "Asking for a range of rows exceeding the available ones!.",
26770  */
26771   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_nrows); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2191, __pyx_L1_error)
26772   __Pyx_GOTREF(__pyx_t_1);
26773   __pyx_t_2 = PyObject_RichCompare(__pyx_v_row, __pyx_t_1, Py_GE); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2191, __pyx_L1_error)
26774   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
26775   __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 2191, __pyx_L1_error)
26776   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
26777   if (unlikely(__pyx_t_3)) {
26778 
26779     /* "tables/hdf5extension.pyx":2192
26780  *
26781  *     if row >= self.nrows:
26782  *       raise HDF5ExtError(             # <<<<<<<<<<<<<<
26783  *         "Asking for a range of rows exceeding the available ones!.",
26784  *         h5bt=False)
26785  */
26786     __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_HDF5ExtError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2192, __pyx_L1_error)
26787     __Pyx_GOTREF(__pyx_t_2);
26788 
26789     /* "tables/hdf5extension.pyx":2194
26790  *       raise HDF5ExtError(
26791  *         "Asking for a range of rows exceeding the available ones!.",
26792  *         h5bt=False)             # <<<<<<<<<<<<<<
26793  *
26794  *     # Get the dataspace handle
26795  */
26796     __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2194, __pyx_L1_error)
26797     __Pyx_GOTREF(__pyx_t_1);
26798     if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_h5bt, Py_False) < 0) __PYX_ERR(0, 2194, __pyx_L1_error)
26799 
26800     /* "tables/hdf5extension.pyx":2192
26801  *
26802  *     if row >= self.nrows:
26803  *       raise HDF5ExtError(             # <<<<<<<<<<<<<<
26804  *         "Asking for a range of rows exceeding the available ones!.",
26805  *         h5bt=False)
26806  */
26807     __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__17, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2192, __pyx_L1_error)
26808     __Pyx_GOTREF(__pyx_t_4);
26809     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
26810     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
26811     __Pyx_Raise(__pyx_t_4, 0, 0, 0);
26812     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
26813     __PYX_ERR(0, 2192, __pyx_L1_error)
26814 
26815     /* "tables/hdf5extension.pyx":2191
26816  *     cdef hsize_t count[1]
26817  *
26818  *     if row >= self.nrows:             # <<<<<<<<<<<<<<
26819  *       raise HDF5ExtError(
26820  *         "Asking for a range of rows exceeding the available ones!.",
26821  */
26822   }
26823 
26824   /* "tables/hdf5extension.pyx":2197
26825  *
26826  *     # Get the dataspace handle
26827  *     space_id = H5Dget_space(self.dataset_id)             # <<<<<<<<<<<<<<
26828  *
26829  *     offset[0] = row
26830  */
26831   __pyx_v_space_id = H5Dget_space(__pyx_v_self->__pyx_base.dataset_id);
26832 
26833   /* "tables/hdf5extension.pyx":2199
26834  *     space_id = H5Dget_space(self.dataset_id)
26835  *
26836  *     offset[0] = row             # <<<<<<<<<<<<<<
26837  *     count[0] = 1
26838  *
26839  */
26840   __pyx_t_5 = __Pyx_PyInt_As_hsize_t(__pyx_v_row); if (unlikely((__pyx_t_5 == ((hsize_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2199, __pyx_L1_error)
26841   (__pyx_v_offset[0]) = __pyx_t_5;
26842 
26843   /* "tables/hdf5extension.pyx":2200
26844  *
26845  *     offset[0] = row
26846  *     count[0] = 1             # <<<<<<<<<<<<<<
26847  *
26848  *     ret = H5Sselect_hyperslab(space_id, H5S_SELECT_SET, offset, NULL, count, NULL);
26849  */
26850   (__pyx_v_count[0]) = 1;
26851 
26852   /* "tables/hdf5extension.pyx":2202
26853  *     count[0] = 1
26854  *
26855  *     ret = H5Sselect_hyperslab(space_id, H5S_SELECT_SET, offset, NULL, count, NULL);             # <<<<<<<<<<<<<<
26856  *     if ret < 0:
26857  *       size = -1
26858  */
26859   __pyx_v_ret = H5Sselect_hyperslab(__pyx_v_space_id, H5S_SELECT_SET, __pyx_v_offset, NULL, __pyx_v_count, NULL);
26860 
26861   /* "tables/hdf5extension.pyx":2203
26862  *
26863  *     ret = H5Sselect_hyperslab(space_id, H5S_SELECT_SET, offset, NULL, count, NULL);
26864  *     if ret < 0:             # <<<<<<<<<<<<<<
26865  *       size = -1
26866  *
26867  */
26868   __pyx_t_3 = ((__pyx_v_ret < 0) != 0);
26869   if (__pyx_t_3) {
26870 
26871     /* "tables/hdf5extension.pyx":2204
26872  *     ret = H5Sselect_hyperslab(space_id, H5S_SELECT_SET, offset, NULL, count, NULL);
26873  *     if ret < 0:
26874  *       size = -1             # <<<<<<<<<<<<<<
26875  *
26876  *     ret = H5Dvlen_get_buf_size(self.dataset_id, self.type_id, space_id, &size)
26877  */
26878     __pyx_v_size = -1LL;
26879 
26880     /* "tables/hdf5extension.pyx":2203
26881  *
26882  *     ret = H5Sselect_hyperslab(space_id, H5S_SELECT_SET, offset, NULL, count, NULL);
26883  *     if ret < 0:             # <<<<<<<<<<<<<<
26884  *       size = -1
26885  *
26886  */
26887   }
26888 
26889   /* "tables/hdf5extension.pyx":2206
26890  *       size = -1
26891  *
26892  *     ret = H5Dvlen_get_buf_size(self.dataset_id, self.type_id, space_id, &size)             # <<<<<<<<<<<<<<
26893  *     if ret < 0:
26894  *       size = -1
26895  */
26896   __pyx_v_ret = H5Dvlen_get_buf_size(__pyx_v_self->__pyx_base.dataset_id, __pyx_v_self->__pyx_base.type_id, __pyx_v_space_id, (&__pyx_v_size));
26897 
26898   /* "tables/hdf5extension.pyx":2207
26899  *
26900  *     ret = H5Dvlen_get_buf_size(self.dataset_id, self.type_id, space_id, &size)
26901  *     if ret < 0:             # <<<<<<<<<<<<<<
26902  *       size = -1
26903  *
26904  */
26905   __pyx_t_3 = ((__pyx_v_ret < 0) != 0);
26906   if (__pyx_t_3) {
26907 
26908     /* "tables/hdf5extension.pyx":2208
26909  *     ret = H5Dvlen_get_buf_size(self.dataset_id, self.type_id, space_id, &size)
26910  *     if ret < 0:
26911  *       size = -1             # <<<<<<<<<<<<<<
26912  *
26913  *     # Terminate access to the dataspace
26914  */
26915     __pyx_v_size = -1LL;
26916 
26917     /* "tables/hdf5extension.pyx":2207
26918  *
26919  *     ret = H5Dvlen_get_buf_size(self.dataset_id, self.type_id, space_id, &size)
26920  *     if ret < 0:             # <<<<<<<<<<<<<<
26921  *       size = -1
26922  *
26923  */
26924   }
26925 
26926   /* "tables/hdf5extension.pyx":2211
26927  *
26928  *     # Terminate access to the dataspace
26929  *     H5Sclose(space_id)             # <<<<<<<<<<<<<<
26930  *
26931  *     return size
26932  */
26933   (void)(H5Sclose(__pyx_v_space_id));
26934 
26935   /* "tables/hdf5extension.pyx":2213
26936  *     H5Sclose(space_id)
26937  *
26938  *     return size             # <<<<<<<<<<<<<<
26939  *
26940  *
26941  */
26942   __Pyx_XDECREF(__pyx_r);
26943   __pyx_t_4 = __Pyx_PyInt_From_hsize_t(__pyx_v_size); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2213, __pyx_L1_error)
26944   __Pyx_GOTREF(__pyx_t_4);
26945   __pyx_r = __pyx_t_4;
26946   __pyx_t_4 = 0;
26947   goto __pyx_L0;
26948 
26949   /* "tables/hdf5extension.pyx":2181
26950  *
26951  *
26952  *   def get_row_size(self, row):             # <<<<<<<<<<<<<<
26953  *     """Return the total size in bytes of all the elements contained in a given row."""
26954  *
26955  */
26956 
26957   /* function exit code */
26958   __pyx_L1_error:;
26959   __Pyx_XDECREF(__pyx_t_1);
26960   __Pyx_XDECREF(__pyx_t_2);
26961   __Pyx_XDECREF(__pyx_t_4);
26962   __Pyx_AddTraceback("tables.hdf5extension.VLArray.get_row_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
26963   __pyx_r = NULL;
26964   __pyx_L0:;
26965   __Pyx_XGIVEREF(__pyx_r);
26966   __Pyx_RefNannyFinishContext();
26967   return __pyx_r;
26968 }
26969 
26970 /* "(tree fragment)":1
26971  * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
26972  *     raise TypeError("self.dims cannot be converted to a Python object for pickling")
26973  * def __setstate_cython__(self, __pyx_state):
26974  */
26975 
26976 /* Python wrapper */
26977 static PyObject *__pyx_pw_6tables_13hdf5extension_7VLArray_15__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
__pyx_pw_6tables_13hdf5extension_7VLArray_15__reduce_cython__(PyObject * __pyx_v_self,CYTHON_UNUSED PyObject * unused)26978 static PyObject *__pyx_pw_6tables_13hdf5extension_7VLArray_15__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
26979   PyObject *__pyx_r = 0;
26980   __Pyx_RefNannyDeclarations
26981   __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
26982   __pyx_r = __pyx_pf_6tables_13hdf5extension_7VLArray_14__reduce_cython__(((struct __pyx_obj_6tables_13hdf5extension_VLArray *)__pyx_v_self));
26983 
26984   /* function exit code */
26985   __Pyx_RefNannyFinishContext();
26986   return __pyx_r;
26987 }
26988 
__pyx_pf_6tables_13hdf5extension_7VLArray_14__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_6tables_13hdf5extension_VLArray * __pyx_v_self)26989 static PyObject *__pyx_pf_6tables_13hdf5extension_7VLArray_14__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_6tables_13hdf5extension_VLArray *__pyx_v_self) {
26990   PyObject *__pyx_r = NULL;
26991   __Pyx_RefNannyDeclarations
26992   PyObject *__pyx_t_1 = NULL;
26993   __Pyx_RefNannySetupContext("__reduce_cython__", 0);
26994 
26995   /* "(tree fragment)":2
26996  * def __reduce_cython__(self):
26997  *     raise TypeError("self.dims cannot be converted to a Python object for pickling")             # <<<<<<<<<<<<<<
26998  * def __setstate_cython__(self, __pyx_state):
26999  *     raise TypeError("self.dims cannot be converted to a Python object for pickling")
27000  */
27001   __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
27002   __Pyx_GOTREF(__pyx_t_1);
27003   __Pyx_Raise(__pyx_t_1, 0, 0, 0);
27004   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
27005   __PYX_ERR(1, 2, __pyx_L1_error)
27006 
27007   /* "(tree fragment)":1
27008  * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
27009  *     raise TypeError("self.dims cannot be converted to a Python object for pickling")
27010  * def __setstate_cython__(self, __pyx_state):
27011  */
27012 
27013   /* function exit code */
27014   __pyx_L1_error:;
27015   __Pyx_XDECREF(__pyx_t_1);
27016   __Pyx_AddTraceback("tables.hdf5extension.VLArray.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
27017   __pyx_r = NULL;
27018   __Pyx_XGIVEREF(__pyx_r);
27019   __Pyx_RefNannyFinishContext();
27020   return __pyx_r;
27021 }
27022 
27023 /* "(tree fragment)":3
27024  * def __reduce_cython__(self):
27025  *     raise TypeError("self.dims cannot be converted to a Python object for pickling")
27026  * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
27027  *     raise TypeError("self.dims cannot be converted to a Python object for pickling")
27028  */
27029 
27030 /* Python wrapper */
27031 static PyObject *__pyx_pw_6tables_13hdf5extension_7VLArray_17__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
__pyx_pw_6tables_13hdf5extension_7VLArray_17__setstate_cython__(PyObject * __pyx_v_self,PyObject * __pyx_v___pyx_state)27032 static PyObject *__pyx_pw_6tables_13hdf5extension_7VLArray_17__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
27033   PyObject *__pyx_r = 0;
27034   __Pyx_RefNannyDeclarations
27035   __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
27036   __pyx_r = __pyx_pf_6tables_13hdf5extension_7VLArray_16__setstate_cython__(((struct __pyx_obj_6tables_13hdf5extension_VLArray *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));
27037 
27038   /* function exit code */
27039   __Pyx_RefNannyFinishContext();
27040   return __pyx_r;
27041 }
27042 
__pyx_pf_6tables_13hdf5extension_7VLArray_16__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_6tables_13hdf5extension_VLArray * __pyx_v_self,CYTHON_UNUSED PyObject * __pyx_v___pyx_state)27043 static PyObject *__pyx_pf_6tables_13hdf5extension_7VLArray_16__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_6tables_13hdf5extension_VLArray *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
27044   PyObject *__pyx_r = NULL;
27045   __Pyx_RefNannyDeclarations
27046   PyObject *__pyx_t_1 = NULL;
27047   __Pyx_RefNannySetupContext("__setstate_cython__", 0);
27048 
27049   /* "(tree fragment)":4
27050  *     raise TypeError("self.dims cannot be converted to a Python object for pickling")
27051  * def __setstate_cython__(self, __pyx_state):
27052  *     raise TypeError("self.dims cannot be converted to a Python object for pickling")             # <<<<<<<<<<<<<<
27053  */
27054   __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__19, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
27055   __Pyx_GOTREF(__pyx_t_1);
27056   __Pyx_Raise(__pyx_t_1, 0, 0, 0);
27057   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
27058   __PYX_ERR(1, 4, __pyx_L1_error)
27059 
27060   /* "(tree fragment)":3
27061  * def __reduce_cython__(self):
27062  *     raise TypeError("self.dims cannot be converted to a Python object for pickling")
27063  * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
27064  *     raise TypeError("self.dims cannot be converted to a Python object for pickling")
27065  */
27066 
27067   /* function exit code */
27068   __pyx_L1_error:;
27069   __Pyx_XDECREF(__pyx_t_1);
27070   __Pyx_AddTraceback("tables.hdf5extension.VLArray.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
27071   __pyx_r = NULL;
27072   __Pyx_XGIVEREF(__pyx_r);
27073   __Pyx_RefNannyFinishContext();
27074   return __pyx_r;
27075 }
27076 
27077 /* "tables/hdf5extension.pyx":2218
27078  * cdef class UnImplemented(Leaf):
27079  *
27080  *   def _open_unimplemented(self):             # <<<<<<<<<<<<<<
27081  *     cdef object shape
27082  *     cdef char cbyteorder[11]  # "irrelevant" fits easily here
27083  */
27084 
27085 /* Python wrapper */
27086 static PyObject *__pyx_pw_6tables_13hdf5extension_13UnImplemented_1_open_unimplemented(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
__pyx_pw_6tables_13hdf5extension_13UnImplemented_1_open_unimplemented(PyObject * __pyx_v_self,CYTHON_UNUSED PyObject * unused)27087 static PyObject *__pyx_pw_6tables_13hdf5extension_13UnImplemented_1_open_unimplemented(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
27088   PyObject *__pyx_r = 0;
27089   __Pyx_RefNannyDeclarations
27090   __Pyx_RefNannySetupContext("_open_unimplemented (wrapper)", 0);
27091   __pyx_r = __pyx_pf_6tables_13hdf5extension_13UnImplemented__open_unimplemented(((struct __pyx_obj_6tables_13hdf5extension_UnImplemented *)__pyx_v_self));
27092 
27093   /* function exit code */
27094   __Pyx_RefNannyFinishContext();
27095   return __pyx_r;
27096 }
27097 
__pyx_pf_6tables_13hdf5extension_13UnImplemented__open_unimplemented(struct __pyx_obj_6tables_13hdf5extension_UnImplemented * __pyx_v_self)27098 static PyObject *__pyx_pf_6tables_13hdf5extension_13UnImplemented__open_unimplemented(struct __pyx_obj_6tables_13hdf5extension_UnImplemented *__pyx_v_self) {
27099   PyObject *__pyx_v_shape = 0;
27100   char __pyx_v_cbyteorder[11];
27101   PyObject *__pyx_v_encoded_name = 0;
27102   PyObject *__pyx_v_byteorder = 0;
27103   PyObject *__pyx_r = NULL;
27104   __Pyx_RefNannyDeclarations
27105   PyObject *__pyx_t_1 = NULL;
27106   PyObject *__pyx_t_2 = NULL;
27107   PyObject *__pyx_t_3 = NULL;
27108   char *__pyx_t_4;
27109   __Pyx_RefNannySetupContext("_open_unimplemented", 0);
27110 
27111   /* "tables/hdf5extension.pyx":2224
27112  *     cdef str byteorder
27113  *
27114  *     encoded_name = self.name.encode('utf-8')             # <<<<<<<<<<<<<<
27115  *
27116  *     # Get info on dimensions
27117  */
27118   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->__pyx_base.__pyx_base.name, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2224, __pyx_L1_error)
27119   __Pyx_GOTREF(__pyx_t_2);
27120   __pyx_t_3 = NULL;
27121   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
27122     __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
27123     if (likely(__pyx_t_3)) {
27124       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
27125       __Pyx_INCREF(__pyx_t_3);
27126       __Pyx_INCREF(function);
27127       __Pyx_DECREF_SET(__pyx_t_2, function);
27128     }
27129   }
27130   __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_kp_s_utf_8) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_kp_s_utf_8);
27131   __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
27132   if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2224, __pyx_L1_error)
27133   __Pyx_GOTREF(__pyx_t_1);
27134   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
27135   if (!(likely(PyBytes_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 2224, __pyx_L1_error)
27136   __pyx_v_encoded_name = ((PyObject*)__pyx_t_1);
27137   __pyx_t_1 = 0;
27138 
27139   /* "tables/hdf5extension.pyx":2227
27140  *
27141  *     # Get info on dimensions
27142  *     shape = H5UIget_info(self.parent_id, encoded_name, cbyteorder)             # <<<<<<<<<<<<<<
27143  *     shape = tuple(map(SizeType, shape))
27144  *     self.dataset_id = H5Dopen(self.parent_id, encoded_name, H5P_DEFAULT)
27145  */
27146   if (unlikely(__pyx_v_encoded_name == Py_None)) {
27147     PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
27148     __PYX_ERR(0, 2227, __pyx_L1_error)
27149   }
27150   __pyx_t_4 = __Pyx_PyBytes_AsWritableString(__pyx_v_encoded_name); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 2227, __pyx_L1_error)
27151   __pyx_t_1 = H5UIget_info(__pyx_v_self->__pyx_base.__pyx_base.parent_id, __pyx_t_4, __pyx_v_cbyteorder); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2227, __pyx_L1_error)
27152   __Pyx_GOTREF(__pyx_t_1);
27153   __pyx_v_shape = __pyx_t_1;
27154   __pyx_t_1 = 0;
27155 
27156   /* "tables/hdf5extension.pyx":2228
27157  *     # Get info on dimensions
27158  *     shape = H5UIget_info(self.parent_id, encoded_name, cbyteorder)
27159  *     shape = tuple(map(SizeType, shape))             # <<<<<<<<<<<<<<
27160  *     self.dataset_id = H5Dopen(self.parent_id, encoded_name, H5P_DEFAULT)
27161  *     byteorder = cstr_to_pystr(cbyteorder)
27162  */
27163   __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_SizeType); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2228, __pyx_L1_error)
27164   __Pyx_GOTREF(__pyx_t_1);
27165   __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2228, __pyx_L1_error)
27166   __Pyx_GOTREF(__pyx_t_2);
27167   __Pyx_GIVEREF(__pyx_t_1);
27168   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
27169   __Pyx_INCREF(__pyx_v_shape);
27170   __Pyx_GIVEREF(__pyx_v_shape);
27171   PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_shape);
27172   __pyx_t_1 = 0;
27173   __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_map, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2228, __pyx_L1_error)
27174   __Pyx_GOTREF(__pyx_t_1);
27175   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
27176   __pyx_t_2 = __Pyx_PySequence_Tuple(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2228, __pyx_L1_error)
27177   __Pyx_GOTREF(__pyx_t_2);
27178   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
27179   __Pyx_DECREF_SET(__pyx_v_shape, __pyx_t_2);
27180   __pyx_t_2 = 0;
27181 
27182   /* "tables/hdf5extension.pyx":2229
27183  *     shape = H5UIget_info(self.parent_id, encoded_name, cbyteorder)
27184  *     shape = tuple(map(SizeType, shape))
27185  *     self.dataset_id = H5Dopen(self.parent_id, encoded_name, H5P_DEFAULT)             # <<<<<<<<<<<<<<
27186  *     byteorder = cstr_to_pystr(cbyteorder)
27187  *
27188  */
27189   if (unlikely(__pyx_v_encoded_name == Py_None)) {
27190     PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
27191     __PYX_ERR(0, 2229, __pyx_L1_error)
27192   }
27193   __pyx_t_4 = __Pyx_PyBytes_AsWritableString(__pyx_v_encoded_name); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 2229, __pyx_L1_error)
27194   __pyx_v_self->__pyx_base.dataset_id = H5Dopen(__pyx_v_self->__pyx_base.__pyx_base.parent_id, __pyx_t_4, H5P_DEFAULT);
27195 
27196   /* "tables/hdf5extension.pyx":2230
27197  *     shape = tuple(map(SizeType, shape))
27198  *     self.dataset_id = H5Dopen(self.parent_id, encoded_name, H5P_DEFAULT)
27199  *     byteorder = cstr_to_pystr(cbyteorder)             # <<<<<<<<<<<<<<
27200  *
27201  *     return (shape, byteorder, self.dataset_id)
27202  */
27203   __pyx_t_2 = __pyx_f_6tables_14utilsextension_cstr_to_pystr(__pyx_v_cbyteorder); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2230, __pyx_L1_error)
27204   __Pyx_GOTREF(__pyx_t_2);
27205   __pyx_v_byteorder = ((PyObject*)__pyx_t_2);
27206   __pyx_t_2 = 0;
27207 
27208   /* "tables/hdf5extension.pyx":2232
27209  *     byteorder = cstr_to_pystr(cbyteorder)
27210  *
27211  *     return (shape, byteorder, self.dataset_id)             # <<<<<<<<<<<<<<
27212  *
27213  *   def _g_close(self):
27214  */
27215   __Pyx_XDECREF(__pyx_r);
27216   __pyx_t_2 = __Pyx_PyInt_From_hid_t(__pyx_v_self->__pyx_base.dataset_id); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2232, __pyx_L1_error)
27217   __Pyx_GOTREF(__pyx_t_2);
27218   __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2232, __pyx_L1_error)
27219   __Pyx_GOTREF(__pyx_t_1);
27220   __Pyx_INCREF(__pyx_v_shape);
27221   __Pyx_GIVEREF(__pyx_v_shape);
27222   PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_shape);
27223   __Pyx_INCREF(__pyx_v_byteorder);
27224   __Pyx_GIVEREF(__pyx_v_byteorder);
27225   PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_byteorder);
27226   __Pyx_GIVEREF(__pyx_t_2);
27227   PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_2);
27228   __pyx_t_2 = 0;
27229   __pyx_r = __pyx_t_1;
27230   __pyx_t_1 = 0;
27231   goto __pyx_L0;
27232 
27233   /* "tables/hdf5extension.pyx":2218
27234  * cdef class UnImplemented(Leaf):
27235  *
27236  *   def _open_unimplemented(self):             # <<<<<<<<<<<<<<
27237  *     cdef object shape
27238  *     cdef char cbyteorder[11]  # "irrelevant" fits easily here
27239  */
27240 
27241   /* function exit code */
27242   __pyx_L1_error:;
27243   __Pyx_XDECREF(__pyx_t_1);
27244   __Pyx_XDECREF(__pyx_t_2);
27245   __Pyx_XDECREF(__pyx_t_3);
27246   __Pyx_AddTraceback("tables.hdf5extension.UnImplemented._open_unimplemented", __pyx_clineno, __pyx_lineno, __pyx_filename);
27247   __pyx_r = NULL;
27248   __pyx_L0:;
27249   __Pyx_XDECREF(__pyx_v_shape);
27250   __Pyx_XDECREF(__pyx_v_encoded_name);
27251   __Pyx_XDECREF(__pyx_v_byteorder);
27252   __Pyx_XGIVEREF(__pyx_r);
27253   __Pyx_RefNannyFinishContext();
27254   return __pyx_r;
27255 }
27256 
27257 /* "tables/hdf5extension.pyx":2234
27258  *     return (shape, byteorder, self.dataset_id)
27259  *
27260  *   def _g_close(self):             # <<<<<<<<<<<<<<
27261  *     H5Dclose(self.dataset_id)
27262  *
27263  */
27264 
27265 /* Python wrapper */
27266 static PyObject *__pyx_pw_6tables_13hdf5extension_13UnImplemented_3_g_close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
__pyx_pw_6tables_13hdf5extension_13UnImplemented_3_g_close(PyObject * __pyx_v_self,CYTHON_UNUSED PyObject * unused)27267 static PyObject *__pyx_pw_6tables_13hdf5extension_13UnImplemented_3_g_close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
27268   PyObject *__pyx_r = 0;
27269   __Pyx_RefNannyDeclarations
27270   __Pyx_RefNannySetupContext("_g_close (wrapper)", 0);
27271   __pyx_r = __pyx_pf_6tables_13hdf5extension_13UnImplemented_2_g_close(((struct __pyx_obj_6tables_13hdf5extension_UnImplemented *)__pyx_v_self));
27272 
27273   /* function exit code */
27274   __Pyx_RefNannyFinishContext();
27275   return __pyx_r;
27276 }
27277 
__pyx_pf_6tables_13hdf5extension_13UnImplemented_2_g_close(struct __pyx_obj_6tables_13hdf5extension_UnImplemented * __pyx_v_self)27278 static PyObject *__pyx_pf_6tables_13hdf5extension_13UnImplemented_2_g_close(struct __pyx_obj_6tables_13hdf5extension_UnImplemented *__pyx_v_self) {
27279   PyObject *__pyx_r = NULL;
27280   __Pyx_RefNannyDeclarations
27281   __Pyx_RefNannySetupContext("_g_close", 0);
27282 
27283   /* "tables/hdf5extension.pyx":2235
27284  *
27285  *   def _g_close(self):
27286  *     H5Dclose(self.dataset_id)             # <<<<<<<<<<<<<<
27287  *
27288  *
27289  */
27290   (void)(H5Dclose(__pyx_v_self->__pyx_base.dataset_id));
27291 
27292   /* "tables/hdf5extension.pyx":2234
27293  *     return (shape, byteorder, self.dataset_id)
27294  *
27295  *   def _g_close(self):             # <<<<<<<<<<<<<<
27296  *     H5Dclose(self.dataset_id)
27297  *
27298  */
27299 
27300   /* function exit code */
27301   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
27302   __Pyx_XGIVEREF(__pyx_r);
27303   __Pyx_RefNannyFinishContext();
27304   return __pyx_r;
27305 }
27306 
27307 /* "(tree fragment)":1
27308  * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
27309  *     raise TypeError("self.dims cannot be converted to a Python object for pickling")
27310  * def __setstate_cython__(self, __pyx_state):
27311  */
27312 
27313 /* Python wrapper */
27314 static PyObject *__pyx_pw_6tables_13hdf5extension_13UnImplemented_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
__pyx_pw_6tables_13hdf5extension_13UnImplemented_5__reduce_cython__(PyObject * __pyx_v_self,CYTHON_UNUSED PyObject * unused)27315 static PyObject *__pyx_pw_6tables_13hdf5extension_13UnImplemented_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
27316   PyObject *__pyx_r = 0;
27317   __Pyx_RefNannyDeclarations
27318   __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
27319   __pyx_r = __pyx_pf_6tables_13hdf5extension_13UnImplemented_4__reduce_cython__(((struct __pyx_obj_6tables_13hdf5extension_UnImplemented *)__pyx_v_self));
27320 
27321   /* function exit code */
27322   __Pyx_RefNannyFinishContext();
27323   return __pyx_r;
27324 }
27325 
__pyx_pf_6tables_13hdf5extension_13UnImplemented_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_6tables_13hdf5extension_UnImplemented * __pyx_v_self)27326 static PyObject *__pyx_pf_6tables_13hdf5extension_13UnImplemented_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_6tables_13hdf5extension_UnImplemented *__pyx_v_self) {
27327   PyObject *__pyx_r = NULL;
27328   __Pyx_RefNannyDeclarations
27329   PyObject *__pyx_t_1 = NULL;
27330   __Pyx_RefNannySetupContext("__reduce_cython__", 0);
27331 
27332   /* "(tree fragment)":2
27333  * def __reduce_cython__(self):
27334  *     raise TypeError("self.dims cannot be converted to a Python object for pickling")             # <<<<<<<<<<<<<<
27335  * def __setstate_cython__(self, __pyx_state):
27336  *     raise TypeError("self.dims cannot be converted to a Python object for pickling")
27337  */
27338   __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__20, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2, __pyx_L1_error)
27339   __Pyx_GOTREF(__pyx_t_1);
27340   __Pyx_Raise(__pyx_t_1, 0, 0, 0);
27341   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
27342   __PYX_ERR(1, 2, __pyx_L1_error)
27343 
27344   /* "(tree fragment)":1
27345  * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
27346  *     raise TypeError("self.dims cannot be converted to a Python object for pickling")
27347  * def __setstate_cython__(self, __pyx_state):
27348  */
27349 
27350   /* function exit code */
27351   __pyx_L1_error:;
27352   __Pyx_XDECREF(__pyx_t_1);
27353   __Pyx_AddTraceback("tables.hdf5extension.UnImplemented.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
27354   __pyx_r = NULL;
27355   __Pyx_XGIVEREF(__pyx_r);
27356   __Pyx_RefNannyFinishContext();
27357   return __pyx_r;
27358 }
27359 
27360 /* "(tree fragment)":3
27361  * def __reduce_cython__(self):
27362  *     raise TypeError("self.dims cannot be converted to a Python object for pickling")
27363  * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
27364  *     raise TypeError("self.dims cannot be converted to a Python object for pickling")
27365  */
27366 
27367 /* Python wrapper */
27368 static PyObject *__pyx_pw_6tables_13hdf5extension_13UnImplemented_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
__pyx_pw_6tables_13hdf5extension_13UnImplemented_7__setstate_cython__(PyObject * __pyx_v_self,PyObject * __pyx_v___pyx_state)27369 static PyObject *__pyx_pw_6tables_13hdf5extension_13UnImplemented_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
27370   PyObject *__pyx_r = 0;
27371   __Pyx_RefNannyDeclarations
27372   __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
27373   __pyx_r = __pyx_pf_6tables_13hdf5extension_13UnImplemented_6__setstate_cython__(((struct __pyx_obj_6tables_13hdf5extension_UnImplemented *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));
27374 
27375   /* function exit code */
27376   __Pyx_RefNannyFinishContext();
27377   return __pyx_r;
27378 }
27379 
__pyx_pf_6tables_13hdf5extension_13UnImplemented_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_6tables_13hdf5extension_UnImplemented * __pyx_v_self,CYTHON_UNUSED PyObject * __pyx_v___pyx_state)27380 static PyObject *__pyx_pf_6tables_13hdf5extension_13UnImplemented_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_6tables_13hdf5extension_UnImplemented *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
27381   PyObject *__pyx_r = NULL;
27382   __Pyx_RefNannyDeclarations
27383   PyObject *__pyx_t_1 = NULL;
27384   __Pyx_RefNannySetupContext("__setstate_cython__", 0);
27385 
27386   /* "(tree fragment)":4
27387  *     raise TypeError("self.dims cannot be converted to a Python object for pickling")
27388  * def __setstate_cython__(self, __pyx_state):
27389  *     raise TypeError("self.dims cannot be converted to a Python object for pickling")             # <<<<<<<<<<<<<<
27390  */
27391   __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__21, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error)
27392   __Pyx_GOTREF(__pyx_t_1);
27393   __Pyx_Raise(__pyx_t_1, 0, 0, 0);
27394   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
27395   __PYX_ERR(1, 4, __pyx_L1_error)
27396 
27397   /* "(tree fragment)":3
27398  * def __reduce_cython__(self):
27399  *     raise TypeError("self.dims cannot be converted to a Python object for pickling")
27400  * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
27401  *     raise TypeError("self.dims cannot be converted to a Python object for pickling")
27402  */
27403 
27404   /* function exit code */
27405   __pyx_L1_error:;
27406   __Pyx_XDECREF(__pyx_t_1);
27407   __Pyx_AddTraceback("tables.hdf5extension.UnImplemented.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
27408   __pyx_r = NULL;
27409   __Pyx_XGIVEREF(__pyx_r);
27410   __Pyx_RefNannyFinishContext();
27411   return __pyx_r;
27412 }
27413 
27414 /* "(tree fragment)":1
27415  * def __pyx_unpickle_File(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
27416  *     cdef object __pyx_PickleError
27417  *     cdef object __pyx_result
27418  */
27419 
27420 /* Python wrapper */
27421 static PyObject *__pyx_pw_6tables_13hdf5extension_1__pyx_unpickle_File(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
27422 static PyMethodDef __pyx_mdef_6tables_13hdf5extension_1__pyx_unpickle_File = {"__pyx_unpickle_File", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_6tables_13hdf5extension_1__pyx_unpickle_File, METH_VARARGS|METH_KEYWORDS, 0};
__pyx_pw_6tables_13hdf5extension_1__pyx_unpickle_File(PyObject * __pyx_self,PyObject * __pyx_args,PyObject * __pyx_kwds)27423 static PyObject *__pyx_pw_6tables_13hdf5extension_1__pyx_unpickle_File(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
27424   PyObject *__pyx_v___pyx_type = 0;
27425   long __pyx_v___pyx_checksum;
27426   PyObject *__pyx_v___pyx_state = 0;
27427   PyObject *__pyx_r = 0;
27428   __Pyx_RefNannyDeclarations
27429   __Pyx_RefNannySetupContext("__pyx_unpickle_File (wrapper)", 0);
27430   {
27431     static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
27432     PyObject* values[3] = {0,0,0};
27433     if (unlikely(__pyx_kwds)) {
27434       Py_ssize_t kw_args;
27435       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
27436       switch (pos_args) {
27437         case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
27438         CYTHON_FALLTHROUGH;
27439         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
27440         CYTHON_FALLTHROUGH;
27441         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
27442         CYTHON_FALLTHROUGH;
27443         case  0: break;
27444         default: goto __pyx_L5_argtuple_error;
27445       }
27446       kw_args = PyDict_Size(__pyx_kwds);
27447       switch (pos_args) {
27448         case  0:
27449         if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--;
27450         else goto __pyx_L5_argtuple_error;
27451         CYTHON_FALLTHROUGH;
27452         case  1:
27453         if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--;
27454         else {
27455           __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_File", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error)
27456         }
27457         CYTHON_FALLTHROUGH;
27458         case  2:
27459         if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--;
27460         else {
27461           __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_File", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error)
27462         }
27463       }
27464       if (unlikely(kw_args > 0)) {
27465         if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_File") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
27466       }
27467     } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
27468       goto __pyx_L5_argtuple_error;
27469     } else {
27470       values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
27471       values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
27472       values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
27473     }
27474     __pyx_v___pyx_type = values[0];
27475     __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
27476     __pyx_v___pyx_state = values[2];
27477   }
27478   goto __pyx_L4_argument_unpacking_done;
27479   __pyx_L5_argtuple_error:;
27480   __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_File", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error)
27481   __pyx_L3_error:;
27482   __Pyx_AddTraceback("tables.hdf5extension.__pyx_unpickle_File", __pyx_clineno, __pyx_lineno, __pyx_filename);
27483   __Pyx_RefNannyFinishContext();
27484   return NULL;
27485   __pyx_L4_argument_unpacking_done:;
27486   __pyx_r = __pyx_pf_6tables_13hdf5extension___pyx_unpickle_File(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);
27487 
27488   /* function exit code */
27489   __Pyx_RefNannyFinishContext();
27490   return __pyx_r;
27491 }
27492 
__pyx_pf_6tables_13hdf5extension___pyx_unpickle_File(CYTHON_UNUSED PyObject * __pyx_self,PyObject * __pyx_v___pyx_type,long __pyx_v___pyx_checksum,PyObject * __pyx_v___pyx_state)27493 static PyObject *__pyx_pf_6tables_13hdf5extension___pyx_unpickle_File(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) {
27494   PyObject *__pyx_v___pyx_PickleError = 0;
27495   PyObject *__pyx_v___pyx_result = 0;
27496   PyObject *__pyx_r = NULL;
27497   __Pyx_RefNannyDeclarations
27498   int __pyx_t_1;
27499   PyObject *__pyx_t_2 = NULL;
27500   PyObject *__pyx_t_3 = NULL;
27501   PyObject *__pyx_t_4 = NULL;
27502   PyObject *__pyx_t_5 = NULL;
27503   int __pyx_t_6;
27504   __Pyx_RefNannySetupContext("__pyx_unpickle_File", 0);
27505 
27506   /* "(tree fragment)":4
27507  *     cdef object __pyx_PickleError
27508  *     cdef object __pyx_result
27509  *     if __pyx_checksum != 0xfba3a2d:             # <<<<<<<<<<<<<<
27510  *         from pickle import PickleError as __pyx_PickleError
27511  *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xfba3a2d = (access_plist, file_id, name))" % __pyx_checksum)
27512  */
27513   __pyx_t_1 = ((__pyx_v___pyx_checksum != 0xfba3a2d) != 0);
27514   if (__pyx_t_1) {
27515 
27516     /* "(tree fragment)":5
27517  *     cdef object __pyx_result
27518  *     if __pyx_checksum != 0xfba3a2d:
27519  *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
27520  *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xfba3a2d = (access_plist, file_id, name))" % __pyx_checksum)
27521  *     __pyx_result = File.__new__(__pyx_type)
27522  */
27523     __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
27524     __Pyx_GOTREF(__pyx_t_2);
27525     __Pyx_INCREF(__pyx_n_s_PickleError);
27526     __Pyx_GIVEREF(__pyx_n_s_PickleError);
27527     PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError);
27528     __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, -1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
27529     __Pyx_GOTREF(__pyx_t_3);
27530     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
27531     __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
27532     __Pyx_GOTREF(__pyx_t_2);
27533     __Pyx_INCREF(__pyx_t_2);
27534     __pyx_v___pyx_PickleError = __pyx_t_2;
27535     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
27536     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
27537 
27538     /* "(tree fragment)":6
27539  *     if __pyx_checksum != 0xfba3a2d:
27540  *         from pickle import PickleError as __pyx_PickleError
27541  *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xfba3a2d = (access_plist, file_id, name))" % __pyx_checksum)             # <<<<<<<<<<<<<<
27542  *     __pyx_result = File.__new__(__pyx_type)
27543  *     if __pyx_state is not None:
27544  */
27545     __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
27546     __Pyx_GOTREF(__pyx_t_2);
27547     __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0xfb, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error)
27548     __Pyx_GOTREF(__pyx_t_4);
27549     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
27550     __Pyx_INCREF(__pyx_v___pyx_PickleError);
27551     __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL;
27552     if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
27553       __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
27554       if (likely(__pyx_t_5)) {
27555         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
27556         __Pyx_INCREF(__pyx_t_5);
27557         __Pyx_INCREF(function);
27558         __Pyx_DECREF_SET(__pyx_t_2, function);
27559       }
27560     }
27561     __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
27562     __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
27563     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
27564     if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
27565     __Pyx_GOTREF(__pyx_t_3);
27566     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
27567     __Pyx_Raise(__pyx_t_3, 0, 0, 0);
27568     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
27569     __PYX_ERR(1, 6, __pyx_L1_error)
27570 
27571     /* "(tree fragment)":4
27572  *     cdef object __pyx_PickleError
27573  *     cdef object __pyx_result
27574  *     if __pyx_checksum != 0xfba3a2d:             # <<<<<<<<<<<<<<
27575  *         from pickle import PickleError as __pyx_PickleError
27576  *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xfba3a2d = (access_plist, file_id, name))" % __pyx_checksum)
27577  */
27578   }
27579 
27580   /* "(tree fragment)":7
27581  *         from pickle import PickleError as __pyx_PickleError
27582  *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xfba3a2d = (access_plist, file_id, name))" % __pyx_checksum)
27583  *     __pyx_result = File.__new__(__pyx_type)             # <<<<<<<<<<<<<<
27584  *     if __pyx_state is not None:
27585  *         __pyx_unpickle_File__set_state(<File> __pyx_result, __pyx_state)
27586  */
27587   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_6tables_13hdf5extension_File), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error)
27588   __Pyx_GOTREF(__pyx_t_2);
27589   __pyx_t_4 = NULL;
27590   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
27591     __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
27592     if (likely(__pyx_t_4)) {
27593       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
27594       __Pyx_INCREF(__pyx_t_4);
27595       __Pyx_INCREF(function);
27596       __Pyx_DECREF_SET(__pyx_t_2, function);
27597     }
27598   }
27599   __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
27600   __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
27601   if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error)
27602   __Pyx_GOTREF(__pyx_t_3);
27603   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
27604   __pyx_v___pyx_result = __pyx_t_3;
27605   __pyx_t_3 = 0;
27606 
27607   /* "(tree fragment)":8
27608  *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xfba3a2d = (access_plist, file_id, name))" % __pyx_checksum)
27609  *     __pyx_result = File.__new__(__pyx_type)
27610  *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
27611  *         __pyx_unpickle_File__set_state(<File> __pyx_result, __pyx_state)
27612  *     return __pyx_result
27613  */
27614   __pyx_t_1 = (__pyx_v___pyx_state != Py_None);
27615   __pyx_t_6 = (__pyx_t_1 != 0);
27616   if (__pyx_t_6) {
27617 
27618     /* "(tree fragment)":9
27619  *     __pyx_result = File.__new__(__pyx_type)
27620  *     if __pyx_state is not None:
27621  *         __pyx_unpickle_File__set_state(<File> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
27622  *     return __pyx_result
27623  * cdef __pyx_unpickle_File__set_state(File __pyx_result, tuple __pyx_state):
27624  */
27625     if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error)
27626     __pyx_t_3 = __pyx_f_6tables_13hdf5extension___pyx_unpickle_File__set_state(((struct __pyx_obj_6tables_13hdf5extension_File *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error)
27627     __Pyx_GOTREF(__pyx_t_3);
27628     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
27629 
27630     /* "(tree fragment)":8
27631  *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xfba3a2d = (access_plist, file_id, name))" % __pyx_checksum)
27632  *     __pyx_result = File.__new__(__pyx_type)
27633  *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
27634  *         __pyx_unpickle_File__set_state(<File> __pyx_result, __pyx_state)
27635  *     return __pyx_result
27636  */
27637   }
27638 
27639   /* "(tree fragment)":10
27640  *     if __pyx_state is not None:
27641  *         __pyx_unpickle_File__set_state(<File> __pyx_result, __pyx_state)
27642  *     return __pyx_result             # <<<<<<<<<<<<<<
27643  * cdef __pyx_unpickle_File__set_state(File __pyx_result, tuple __pyx_state):
27644  *     __pyx_result.access_plist = __pyx_state[0]; __pyx_result.file_id = __pyx_state[1]; __pyx_result.name = __pyx_state[2]
27645  */
27646   __Pyx_XDECREF(__pyx_r);
27647   __Pyx_INCREF(__pyx_v___pyx_result);
27648   __pyx_r = __pyx_v___pyx_result;
27649   goto __pyx_L0;
27650 
27651   /* "(tree fragment)":1
27652  * def __pyx_unpickle_File(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
27653  *     cdef object __pyx_PickleError
27654  *     cdef object __pyx_result
27655  */
27656 
27657   /* function exit code */
27658   __pyx_L1_error:;
27659   __Pyx_XDECREF(__pyx_t_2);
27660   __Pyx_XDECREF(__pyx_t_3);
27661   __Pyx_XDECREF(__pyx_t_4);
27662   __Pyx_XDECREF(__pyx_t_5);
27663   __Pyx_AddTraceback("tables.hdf5extension.__pyx_unpickle_File", __pyx_clineno, __pyx_lineno, __pyx_filename);
27664   __pyx_r = NULL;
27665   __pyx_L0:;
27666   __Pyx_XDECREF(__pyx_v___pyx_PickleError);
27667   __Pyx_XDECREF(__pyx_v___pyx_result);
27668   __Pyx_XGIVEREF(__pyx_r);
27669   __Pyx_RefNannyFinishContext();
27670   return __pyx_r;
27671 }
27672 
27673 /* "(tree fragment)":11
27674  *         __pyx_unpickle_File__set_state(<File> __pyx_result, __pyx_state)
27675  *     return __pyx_result
27676  * cdef __pyx_unpickle_File__set_state(File __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
27677  *     __pyx_result.access_plist = __pyx_state[0]; __pyx_result.file_id = __pyx_state[1]; __pyx_result.name = __pyx_state[2]
27678  *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
27679  */
27680 
__pyx_f_6tables_13hdf5extension___pyx_unpickle_File__set_state(struct __pyx_obj_6tables_13hdf5extension_File * __pyx_v___pyx_result,PyObject * __pyx_v___pyx_state)27681 static PyObject *__pyx_f_6tables_13hdf5extension___pyx_unpickle_File__set_state(struct __pyx_obj_6tables_13hdf5extension_File *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
27682   PyObject *__pyx_r = NULL;
27683   __Pyx_RefNannyDeclarations
27684   PyObject *__pyx_t_1 = NULL;
27685   hid_t __pyx_t_2;
27686   int __pyx_t_3;
27687   Py_ssize_t __pyx_t_4;
27688   int __pyx_t_5;
27689   int __pyx_t_6;
27690   PyObject *__pyx_t_7 = NULL;
27691   PyObject *__pyx_t_8 = NULL;
27692   PyObject *__pyx_t_9 = NULL;
27693   __Pyx_RefNannySetupContext("__pyx_unpickle_File__set_state", 0);
27694 
27695   /* "(tree fragment)":12
27696  *     return __pyx_result
27697  * cdef __pyx_unpickle_File__set_state(File __pyx_result, tuple __pyx_state):
27698  *     __pyx_result.access_plist = __pyx_state[0]; __pyx_result.file_id = __pyx_state[1]; __pyx_result.name = __pyx_state[2]             # <<<<<<<<<<<<<<
27699  *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
27700  *         __pyx_result.__dict__.update(__pyx_state[3])
27701  */
27702   if (unlikely(__pyx_v___pyx_state == Py_None)) {
27703     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
27704     __PYX_ERR(1, 12, __pyx_L1_error)
27705   }
27706   __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
27707   __Pyx_GOTREF(__pyx_t_1);
27708   __pyx_t_2 = __Pyx_PyInt_As_hid_t(__pyx_t_1); if (unlikely((__pyx_t_2 == ((hid_t)-1)) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
27709   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
27710   __pyx_v___pyx_result->access_plist = __pyx_t_2;
27711   if (unlikely(__pyx_v___pyx_state == Py_None)) {
27712     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
27713     __PYX_ERR(1, 12, __pyx_L1_error)
27714   }
27715   __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
27716   __Pyx_GOTREF(__pyx_t_1);
27717   __pyx_t_2 = __Pyx_PyInt_As_hid_t(__pyx_t_1); if (unlikely((__pyx_t_2 == ((hid_t)-1)) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
27718   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
27719   __pyx_v___pyx_result->file_id = __pyx_t_2;
27720   if (unlikely(__pyx_v___pyx_state == Py_None)) {
27721     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
27722     __PYX_ERR(1, 12, __pyx_L1_error)
27723   }
27724   __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
27725   __Pyx_GOTREF(__pyx_t_1);
27726   __Pyx_GIVEREF(__pyx_t_1);
27727   __Pyx_GOTREF(__pyx_v___pyx_result->name);
27728   __Pyx_DECREF(__pyx_v___pyx_result->name);
27729   __pyx_v___pyx_result->name = __pyx_t_1;
27730   __pyx_t_1 = 0;
27731 
27732   /* "(tree fragment)":13
27733  * cdef __pyx_unpickle_File__set_state(File __pyx_result, tuple __pyx_state):
27734  *     __pyx_result.access_plist = __pyx_state[0]; __pyx_result.file_id = __pyx_state[1]; __pyx_result.name = __pyx_state[2]
27735  *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
27736  *         __pyx_result.__dict__.update(__pyx_state[3])
27737  */
27738   if (unlikely(__pyx_v___pyx_state == Py_None)) {
27739     PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
27740     __PYX_ERR(1, 13, __pyx_L1_error)
27741   }
27742   __pyx_t_4 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
27743   __pyx_t_5 = ((__pyx_t_4 > 3) != 0);
27744   if (__pyx_t_5) {
27745   } else {
27746     __pyx_t_3 = __pyx_t_5;
27747     goto __pyx_L4_bool_binop_done;
27748   }
27749   __pyx_t_5 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
27750   __pyx_t_6 = (__pyx_t_5 != 0);
27751   __pyx_t_3 = __pyx_t_6;
27752   __pyx_L4_bool_binop_done:;
27753   if (__pyx_t_3) {
27754 
27755     /* "(tree fragment)":14
27756  *     __pyx_result.access_plist = __pyx_state[0]; __pyx_result.file_id = __pyx_state[1]; __pyx_result.name = __pyx_state[2]
27757  *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
27758  *         __pyx_result.__dict__.update(__pyx_state[3])             # <<<<<<<<<<<<<<
27759  */
27760     __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
27761     __Pyx_GOTREF(__pyx_t_7);
27762     __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_update); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 14, __pyx_L1_error)
27763     __Pyx_GOTREF(__pyx_t_8);
27764     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
27765     if (unlikely(__pyx_v___pyx_state == Py_None)) {
27766       PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
27767       __PYX_ERR(1, 14, __pyx_L1_error)
27768     }
27769     __pyx_t_7 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
27770     __Pyx_GOTREF(__pyx_t_7);
27771     __pyx_t_9 = NULL;
27772     if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
27773       __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8);
27774       if (likely(__pyx_t_9)) {
27775         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
27776         __Pyx_INCREF(__pyx_t_9);
27777         __Pyx_INCREF(function);
27778         __Pyx_DECREF_SET(__pyx_t_8, function);
27779       }
27780     }
27781     __pyx_t_1 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_9, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_7);
27782     __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
27783     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
27784     if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error)
27785     __Pyx_GOTREF(__pyx_t_1);
27786     __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
27787     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
27788 
27789     /* "(tree fragment)":13
27790  * cdef __pyx_unpickle_File__set_state(File __pyx_result, tuple __pyx_state):
27791  *     __pyx_result.access_plist = __pyx_state[0]; __pyx_result.file_id = __pyx_state[1]; __pyx_result.name = __pyx_state[2]
27792  *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
27793  *         __pyx_result.__dict__.update(__pyx_state[3])
27794  */
27795   }
27796 
27797   /* "(tree fragment)":11
27798  *         __pyx_unpickle_File__set_state(<File> __pyx_result, __pyx_state)
27799  *     return __pyx_result
27800  * cdef __pyx_unpickle_File__set_state(File __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
27801  *     __pyx_result.access_plist = __pyx_state[0]; __pyx_result.file_id = __pyx_state[1]; __pyx_result.name = __pyx_state[2]
27802  *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
27803  */
27804 
27805   /* function exit code */
27806   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
27807   goto __pyx_L0;
27808   __pyx_L1_error:;
27809   __Pyx_XDECREF(__pyx_t_1);
27810   __Pyx_XDECREF(__pyx_t_7);
27811   __Pyx_XDECREF(__pyx_t_8);
27812   __Pyx_XDECREF(__pyx_t_9);
27813   __Pyx_AddTraceback("tables.hdf5extension.__pyx_unpickle_File__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
27814   __pyx_r = 0;
27815   __pyx_L0:;
27816   __Pyx_XGIVEREF(__pyx_r);
27817   __Pyx_RefNannyFinishContext();
27818   return __pyx_r;
27819 }
27820 
27821 /* "(tree fragment)":1
27822  * def __pyx_unpickle_AttributeSet(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
27823  *     cdef object __pyx_PickleError
27824  *     cdef object __pyx_result
27825  */
27826 
27827 /* Python wrapper */
27828 static PyObject *__pyx_pw_6tables_13hdf5extension_3__pyx_unpickle_AttributeSet(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
27829 static PyMethodDef __pyx_mdef_6tables_13hdf5extension_3__pyx_unpickle_AttributeSet = {"__pyx_unpickle_AttributeSet", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_6tables_13hdf5extension_3__pyx_unpickle_AttributeSet, METH_VARARGS|METH_KEYWORDS, 0};
__pyx_pw_6tables_13hdf5extension_3__pyx_unpickle_AttributeSet(PyObject * __pyx_self,PyObject * __pyx_args,PyObject * __pyx_kwds)27830 static PyObject *__pyx_pw_6tables_13hdf5extension_3__pyx_unpickle_AttributeSet(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
27831   PyObject *__pyx_v___pyx_type = 0;
27832   long __pyx_v___pyx_checksum;
27833   PyObject *__pyx_v___pyx_state = 0;
27834   PyObject *__pyx_r = 0;
27835   __Pyx_RefNannyDeclarations
27836   __Pyx_RefNannySetupContext("__pyx_unpickle_AttributeSet (wrapper)", 0);
27837   {
27838     static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
27839     PyObject* values[3] = {0,0,0};
27840     if (unlikely(__pyx_kwds)) {
27841       Py_ssize_t kw_args;
27842       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
27843       switch (pos_args) {
27844         case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
27845         CYTHON_FALLTHROUGH;
27846         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
27847         CYTHON_FALLTHROUGH;
27848         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
27849         CYTHON_FALLTHROUGH;
27850         case  0: break;
27851         default: goto __pyx_L5_argtuple_error;
27852       }
27853       kw_args = PyDict_Size(__pyx_kwds);
27854       switch (pos_args) {
27855         case  0:
27856         if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--;
27857         else goto __pyx_L5_argtuple_error;
27858         CYTHON_FALLTHROUGH;
27859         case  1:
27860         if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--;
27861         else {
27862           __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_AttributeSet", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error)
27863         }
27864         CYTHON_FALLTHROUGH;
27865         case  2:
27866         if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--;
27867         else {
27868           __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_AttributeSet", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error)
27869         }
27870       }
27871       if (unlikely(kw_args > 0)) {
27872         if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_AttributeSet") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
27873       }
27874     } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
27875       goto __pyx_L5_argtuple_error;
27876     } else {
27877       values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
27878       values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
27879       values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
27880     }
27881     __pyx_v___pyx_type = values[0];
27882     __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
27883     __pyx_v___pyx_state = values[2];
27884   }
27885   goto __pyx_L4_argument_unpacking_done;
27886   __pyx_L5_argtuple_error:;
27887   __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_AttributeSet", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error)
27888   __pyx_L3_error:;
27889   __Pyx_AddTraceback("tables.hdf5extension.__pyx_unpickle_AttributeSet", __pyx_clineno, __pyx_lineno, __pyx_filename);
27890   __Pyx_RefNannyFinishContext();
27891   return NULL;
27892   __pyx_L4_argument_unpacking_done:;
27893   __pyx_r = __pyx_pf_6tables_13hdf5extension_2__pyx_unpickle_AttributeSet(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);
27894 
27895   /* function exit code */
27896   __Pyx_RefNannyFinishContext();
27897   return __pyx_r;
27898 }
27899 
__pyx_pf_6tables_13hdf5extension_2__pyx_unpickle_AttributeSet(CYTHON_UNUSED PyObject * __pyx_self,PyObject * __pyx_v___pyx_type,long __pyx_v___pyx_checksum,PyObject * __pyx_v___pyx_state)27900 static PyObject *__pyx_pf_6tables_13hdf5extension_2__pyx_unpickle_AttributeSet(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) {
27901   PyObject *__pyx_v___pyx_PickleError = 0;
27902   PyObject *__pyx_v___pyx_result = 0;
27903   PyObject *__pyx_r = NULL;
27904   __Pyx_RefNannyDeclarations
27905   int __pyx_t_1;
27906   PyObject *__pyx_t_2 = NULL;
27907   PyObject *__pyx_t_3 = NULL;
27908   PyObject *__pyx_t_4 = NULL;
27909   PyObject *__pyx_t_5 = NULL;
27910   int __pyx_t_6;
27911   __Pyx_RefNannySetupContext("__pyx_unpickle_AttributeSet", 0);
27912 
27913   /* "(tree fragment)":4
27914  *     cdef object __pyx_PickleError
27915  *     cdef object __pyx_result
27916  *     if __pyx_checksum != 0xb068931:             # <<<<<<<<<<<<<<
27917  *         from pickle import PickleError as __pyx_PickleError
27918  *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xb068931 = (name))" % __pyx_checksum)
27919  */
27920   __pyx_t_1 = ((__pyx_v___pyx_checksum != 0xb068931) != 0);
27921   if (__pyx_t_1) {
27922 
27923     /* "(tree fragment)":5
27924  *     cdef object __pyx_result
27925  *     if __pyx_checksum != 0xb068931:
27926  *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
27927  *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xb068931 = (name))" % __pyx_checksum)
27928  *     __pyx_result = AttributeSet.__new__(__pyx_type)
27929  */
27930     __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
27931     __Pyx_GOTREF(__pyx_t_2);
27932     __Pyx_INCREF(__pyx_n_s_PickleError);
27933     __Pyx_GIVEREF(__pyx_n_s_PickleError);
27934     PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError);
27935     __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, -1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
27936     __Pyx_GOTREF(__pyx_t_3);
27937     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
27938     __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
27939     __Pyx_GOTREF(__pyx_t_2);
27940     __Pyx_INCREF(__pyx_t_2);
27941     __pyx_v___pyx_PickleError = __pyx_t_2;
27942     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
27943     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
27944 
27945     /* "(tree fragment)":6
27946  *     if __pyx_checksum != 0xb068931:
27947  *         from pickle import PickleError as __pyx_PickleError
27948  *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xb068931 = (name))" % __pyx_checksum)             # <<<<<<<<<<<<<<
27949  *     __pyx_result = AttributeSet.__new__(__pyx_type)
27950  *     if __pyx_state is not None:
27951  */
27952     __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
27953     __Pyx_GOTREF(__pyx_t_2);
27954     __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0xb0, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error)
27955     __Pyx_GOTREF(__pyx_t_4);
27956     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
27957     __Pyx_INCREF(__pyx_v___pyx_PickleError);
27958     __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL;
27959     if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
27960       __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
27961       if (likely(__pyx_t_5)) {
27962         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
27963         __Pyx_INCREF(__pyx_t_5);
27964         __Pyx_INCREF(function);
27965         __Pyx_DECREF_SET(__pyx_t_2, function);
27966       }
27967     }
27968     __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
27969     __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
27970     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
27971     if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
27972     __Pyx_GOTREF(__pyx_t_3);
27973     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
27974     __Pyx_Raise(__pyx_t_3, 0, 0, 0);
27975     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
27976     __PYX_ERR(1, 6, __pyx_L1_error)
27977 
27978     /* "(tree fragment)":4
27979  *     cdef object __pyx_PickleError
27980  *     cdef object __pyx_result
27981  *     if __pyx_checksum != 0xb068931:             # <<<<<<<<<<<<<<
27982  *         from pickle import PickleError as __pyx_PickleError
27983  *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xb068931 = (name))" % __pyx_checksum)
27984  */
27985   }
27986 
27987   /* "(tree fragment)":7
27988  *         from pickle import PickleError as __pyx_PickleError
27989  *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xb068931 = (name))" % __pyx_checksum)
27990  *     __pyx_result = AttributeSet.__new__(__pyx_type)             # <<<<<<<<<<<<<<
27991  *     if __pyx_state is not None:
27992  *         __pyx_unpickle_AttributeSet__set_state(<AttributeSet> __pyx_result, __pyx_state)
27993  */
27994   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_6tables_13hdf5extension_AttributeSet), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error)
27995   __Pyx_GOTREF(__pyx_t_2);
27996   __pyx_t_4 = NULL;
27997   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
27998     __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
27999     if (likely(__pyx_t_4)) {
28000       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
28001       __Pyx_INCREF(__pyx_t_4);
28002       __Pyx_INCREF(function);
28003       __Pyx_DECREF_SET(__pyx_t_2, function);
28004     }
28005   }
28006   __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
28007   __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
28008   if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error)
28009   __Pyx_GOTREF(__pyx_t_3);
28010   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
28011   __pyx_v___pyx_result = __pyx_t_3;
28012   __pyx_t_3 = 0;
28013 
28014   /* "(tree fragment)":8
28015  *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xb068931 = (name))" % __pyx_checksum)
28016  *     __pyx_result = AttributeSet.__new__(__pyx_type)
28017  *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
28018  *         __pyx_unpickle_AttributeSet__set_state(<AttributeSet> __pyx_result, __pyx_state)
28019  *     return __pyx_result
28020  */
28021   __pyx_t_1 = (__pyx_v___pyx_state != Py_None);
28022   __pyx_t_6 = (__pyx_t_1 != 0);
28023   if (__pyx_t_6) {
28024 
28025     /* "(tree fragment)":9
28026  *     __pyx_result = AttributeSet.__new__(__pyx_type)
28027  *     if __pyx_state is not None:
28028  *         __pyx_unpickle_AttributeSet__set_state(<AttributeSet> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
28029  *     return __pyx_result
28030  * cdef __pyx_unpickle_AttributeSet__set_state(AttributeSet __pyx_result, tuple __pyx_state):
28031  */
28032     if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error)
28033     __pyx_t_3 = __pyx_f_6tables_13hdf5extension___pyx_unpickle_AttributeSet__set_state(((struct __pyx_obj_6tables_13hdf5extension_AttributeSet *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error)
28034     __Pyx_GOTREF(__pyx_t_3);
28035     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
28036 
28037     /* "(tree fragment)":8
28038  *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xb068931 = (name))" % __pyx_checksum)
28039  *     __pyx_result = AttributeSet.__new__(__pyx_type)
28040  *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
28041  *         __pyx_unpickle_AttributeSet__set_state(<AttributeSet> __pyx_result, __pyx_state)
28042  *     return __pyx_result
28043  */
28044   }
28045 
28046   /* "(tree fragment)":10
28047  *     if __pyx_state is not None:
28048  *         __pyx_unpickle_AttributeSet__set_state(<AttributeSet> __pyx_result, __pyx_state)
28049  *     return __pyx_result             # <<<<<<<<<<<<<<
28050  * cdef __pyx_unpickle_AttributeSet__set_state(AttributeSet __pyx_result, tuple __pyx_state):
28051  *     __pyx_result.name = __pyx_state[0]
28052  */
28053   __Pyx_XDECREF(__pyx_r);
28054   __Pyx_INCREF(__pyx_v___pyx_result);
28055   __pyx_r = __pyx_v___pyx_result;
28056   goto __pyx_L0;
28057 
28058   /* "(tree fragment)":1
28059  * def __pyx_unpickle_AttributeSet(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
28060  *     cdef object __pyx_PickleError
28061  *     cdef object __pyx_result
28062  */
28063 
28064   /* function exit code */
28065   __pyx_L1_error:;
28066   __Pyx_XDECREF(__pyx_t_2);
28067   __Pyx_XDECREF(__pyx_t_3);
28068   __Pyx_XDECREF(__pyx_t_4);
28069   __Pyx_XDECREF(__pyx_t_5);
28070   __Pyx_AddTraceback("tables.hdf5extension.__pyx_unpickle_AttributeSet", __pyx_clineno, __pyx_lineno, __pyx_filename);
28071   __pyx_r = NULL;
28072   __pyx_L0:;
28073   __Pyx_XDECREF(__pyx_v___pyx_PickleError);
28074   __Pyx_XDECREF(__pyx_v___pyx_result);
28075   __Pyx_XGIVEREF(__pyx_r);
28076   __Pyx_RefNannyFinishContext();
28077   return __pyx_r;
28078 }
28079 
28080 /* "(tree fragment)":11
28081  *         __pyx_unpickle_AttributeSet__set_state(<AttributeSet> __pyx_result, __pyx_state)
28082  *     return __pyx_result
28083  * cdef __pyx_unpickle_AttributeSet__set_state(AttributeSet __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
28084  *     __pyx_result.name = __pyx_state[0]
28085  *     if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'):
28086  */
28087 
__pyx_f_6tables_13hdf5extension___pyx_unpickle_AttributeSet__set_state(struct __pyx_obj_6tables_13hdf5extension_AttributeSet * __pyx_v___pyx_result,PyObject * __pyx_v___pyx_state)28088 static PyObject *__pyx_f_6tables_13hdf5extension___pyx_unpickle_AttributeSet__set_state(struct __pyx_obj_6tables_13hdf5extension_AttributeSet *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
28089   PyObject *__pyx_r = NULL;
28090   __Pyx_RefNannyDeclarations
28091   PyObject *__pyx_t_1 = NULL;
28092   int __pyx_t_2;
28093   Py_ssize_t __pyx_t_3;
28094   int __pyx_t_4;
28095   int __pyx_t_5;
28096   PyObject *__pyx_t_6 = NULL;
28097   PyObject *__pyx_t_7 = NULL;
28098   PyObject *__pyx_t_8 = NULL;
28099   __Pyx_RefNannySetupContext("__pyx_unpickle_AttributeSet__set_state", 0);
28100 
28101   /* "(tree fragment)":12
28102  *     return __pyx_result
28103  * cdef __pyx_unpickle_AttributeSet__set_state(AttributeSet __pyx_result, tuple __pyx_state):
28104  *     __pyx_result.name = __pyx_state[0]             # <<<<<<<<<<<<<<
28105  *     if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'):
28106  *         __pyx_result.__dict__.update(__pyx_state[1])
28107  */
28108   if (unlikely(__pyx_v___pyx_state == Py_None)) {
28109     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
28110     __PYX_ERR(1, 12, __pyx_L1_error)
28111   }
28112   __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
28113   __Pyx_GOTREF(__pyx_t_1);
28114   __Pyx_GIVEREF(__pyx_t_1);
28115   __Pyx_GOTREF(__pyx_v___pyx_result->name);
28116   __Pyx_DECREF(__pyx_v___pyx_result->name);
28117   __pyx_v___pyx_result->name = __pyx_t_1;
28118   __pyx_t_1 = 0;
28119 
28120   /* "(tree fragment)":13
28121  * cdef __pyx_unpickle_AttributeSet__set_state(AttributeSet __pyx_result, tuple __pyx_state):
28122  *     __pyx_result.name = __pyx_state[0]
28123  *     if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
28124  *         __pyx_result.__dict__.update(__pyx_state[1])
28125  */
28126   if (unlikely(__pyx_v___pyx_state == Py_None)) {
28127     PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
28128     __PYX_ERR(1, 13, __pyx_L1_error)
28129   }
28130   __pyx_t_3 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
28131   __pyx_t_4 = ((__pyx_t_3 > 1) != 0);
28132   if (__pyx_t_4) {
28133   } else {
28134     __pyx_t_2 = __pyx_t_4;
28135     goto __pyx_L4_bool_binop_done;
28136   }
28137   __pyx_t_4 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
28138   __pyx_t_5 = (__pyx_t_4 != 0);
28139   __pyx_t_2 = __pyx_t_5;
28140   __pyx_L4_bool_binop_done:;
28141   if (__pyx_t_2) {
28142 
28143     /* "(tree fragment)":14
28144  *     __pyx_result.name = __pyx_state[0]
28145  *     if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'):
28146  *         __pyx_result.__dict__.update(__pyx_state[1])             # <<<<<<<<<<<<<<
28147  */
28148     __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error)
28149     __Pyx_GOTREF(__pyx_t_6);
28150     __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_update); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
28151     __Pyx_GOTREF(__pyx_t_7);
28152     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
28153     if (unlikely(__pyx_v___pyx_state == Py_None)) {
28154       PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
28155       __PYX_ERR(1, 14, __pyx_L1_error)
28156     }
28157     __pyx_t_6 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error)
28158     __Pyx_GOTREF(__pyx_t_6);
28159     __pyx_t_8 = NULL;
28160     if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
28161       __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
28162       if (likely(__pyx_t_8)) {
28163         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
28164         __Pyx_INCREF(__pyx_t_8);
28165         __Pyx_INCREF(function);
28166         __Pyx_DECREF_SET(__pyx_t_7, function);
28167       }
28168     }
28169     __pyx_t_1 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_8, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6);
28170     __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
28171     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
28172     if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error)
28173     __Pyx_GOTREF(__pyx_t_1);
28174     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
28175     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
28176 
28177     /* "(tree fragment)":13
28178  * cdef __pyx_unpickle_AttributeSet__set_state(AttributeSet __pyx_result, tuple __pyx_state):
28179  *     __pyx_result.name = __pyx_state[0]
28180  *     if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
28181  *         __pyx_result.__dict__.update(__pyx_state[1])
28182  */
28183   }
28184 
28185   /* "(tree fragment)":11
28186  *         __pyx_unpickle_AttributeSet__set_state(<AttributeSet> __pyx_result, __pyx_state)
28187  *     return __pyx_result
28188  * cdef __pyx_unpickle_AttributeSet__set_state(AttributeSet __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
28189  *     __pyx_result.name = __pyx_state[0]
28190  *     if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'):
28191  */
28192 
28193   /* function exit code */
28194   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
28195   goto __pyx_L0;
28196   __pyx_L1_error:;
28197   __Pyx_XDECREF(__pyx_t_1);
28198   __Pyx_XDECREF(__pyx_t_6);
28199   __Pyx_XDECREF(__pyx_t_7);
28200   __Pyx_XDECREF(__pyx_t_8);
28201   __Pyx_AddTraceback("tables.hdf5extension.__pyx_unpickle_AttributeSet__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
28202   __pyx_r = 0;
28203   __pyx_L0:;
28204   __Pyx_XGIVEREF(__pyx_r);
28205   __Pyx_RefNannyFinishContext();
28206   return __pyx_r;
28207 }
28208 
28209 /* "(tree fragment)":1
28210  * def __pyx_unpickle_Node(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
28211  *     cdef object __pyx_PickleError
28212  *     cdef object __pyx_result
28213  */
28214 
28215 /* Python wrapper */
28216 static PyObject *__pyx_pw_6tables_13hdf5extension_5__pyx_unpickle_Node(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
28217 static PyMethodDef __pyx_mdef_6tables_13hdf5extension_5__pyx_unpickle_Node = {"__pyx_unpickle_Node", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_6tables_13hdf5extension_5__pyx_unpickle_Node, METH_VARARGS|METH_KEYWORDS, 0};
__pyx_pw_6tables_13hdf5extension_5__pyx_unpickle_Node(PyObject * __pyx_self,PyObject * __pyx_args,PyObject * __pyx_kwds)28218 static PyObject *__pyx_pw_6tables_13hdf5extension_5__pyx_unpickle_Node(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
28219   PyObject *__pyx_v___pyx_type = 0;
28220   long __pyx_v___pyx_checksum;
28221   PyObject *__pyx_v___pyx_state = 0;
28222   PyObject *__pyx_r = 0;
28223   __Pyx_RefNannyDeclarations
28224   __Pyx_RefNannySetupContext("__pyx_unpickle_Node (wrapper)", 0);
28225   {
28226     static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
28227     PyObject* values[3] = {0,0,0};
28228     if (unlikely(__pyx_kwds)) {
28229       Py_ssize_t kw_args;
28230       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
28231       switch (pos_args) {
28232         case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
28233         CYTHON_FALLTHROUGH;
28234         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
28235         CYTHON_FALLTHROUGH;
28236         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
28237         CYTHON_FALLTHROUGH;
28238         case  0: break;
28239         default: goto __pyx_L5_argtuple_error;
28240       }
28241       kw_args = PyDict_Size(__pyx_kwds);
28242       switch (pos_args) {
28243         case  0:
28244         if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--;
28245         else goto __pyx_L5_argtuple_error;
28246         CYTHON_FALLTHROUGH;
28247         case  1:
28248         if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--;
28249         else {
28250           __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Node", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error)
28251         }
28252         CYTHON_FALLTHROUGH;
28253         case  2:
28254         if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--;
28255         else {
28256           __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Node", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error)
28257         }
28258       }
28259       if (unlikely(kw_args > 0)) {
28260         if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_Node") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
28261       }
28262     } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
28263       goto __pyx_L5_argtuple_error;
28264     } else {
28265       values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
28266       values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
28267       values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
28268     }
28269     __pyx_v___pyx_type = values[0];
28270     __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
28271     __pyx_v___pyx_state = values[2];
28272   }
28273   goto __pyx_L4_argument_unpacking_done;
28274   __pyx_L5_argtuple_error:;
28275   __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Node", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error)
28276   __pyx_L3_error:;
28277   __Pyx_AddTraceback("tables.hdf5extension.__pyx_unpickle_Node", __pyx_clineno, __pyx_lineno, __pyx_filename);
28278   __Pyx_RefNannyFinishContext();
28279   return NULL;
28280   __pyx_L4_argument_unpacking_done:;
28281   __pyx_r = __pyx_pf_6tables_13hdf5extension_4__pyx_unpickle_Node(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);
28282 
28283   /* function exit code */
28284   __Pyx_RefNannyFinishContext();
28285   return __pyx_r;
28286 }
28287 
__pyx_pf_6tables_13hdf5extension_4__pyx_unpickle_Node(CYTHON_UNUSED PyObject * __pyx_self,PyObject * __pyx_v___pyx_type,long __pyx_v___pyx_checksum,PyObject * __pyx_v___pyx_state)28288 static PyObject *__pyx_pf_6tables_13hdf5extension_4__pyx_unpickle_Node(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) {
28289   PyObject *__pyx_v___pyx_PickleError = 0;
28290   PyObject *__pyx_v___pyx_result = 0;
28291   PyObject *__pyx_r = NULL;
28292   __Pyx_RefNannyDeclarations
28293   int __pyx_t_1;
28294   PyObject *__pyx_t_2 = NULL;
28295   PyObject *__pyx_t_3 = NULL;
28296   PyObject *__pyx_t_4 = NULL;
28297   PyObject *__pyx_t_5 = NULL;
28298   int __pyx_t_6;
28299   __Pyx_RefNannySetupContext("__pyx_unpickle_Node", 0);
28300 
28301   /* "(tree fragment)":4
28302  *     cdef object __pyx_PickleError
28303  *     cdef object __pyx_result
28304  *     if __pyx_checksum != 0x381b6b9:             # <<<<<<<<<<<<<<
28305  *         from pickle import PickleError as __pyx_PickleError
28306  *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x381b6b9 = (name, parent_id))" % __pyx_checksum)
28307  */
28308   __pyx_t_1 = ((__pyx_v___pyx_checksum != 0x381b6b9) != 0);
28309   if (__pyx_t_1) {
28310 
28311     /* "(tree fragment)":5
28312  *     cdef object __pyx_result
28313  *     if __pyx_checksum != 0x381b6b9:
28314  *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
28315  *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x381b6b9 = (name, parent_id))" % __pyx_checksum)
28316  *     __pyx_result = Node.__new__(__pyx_type)
28317  */
28318     __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
28319     __Pyx_GOTREF(__pyx_t_2);
28320     __Pyx_INCREF(__pyx_n_s_PickleError);
28321     __Pyx_GIVEREF(__pyx_n_s_PickleError);
28322     PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError);
28323     __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, -1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
28324     __Pyx_GOTREF(__pyx_t_3);
28325     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
28326     __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
28327     __Pyx_GOTREF(__pyx_t_2);
28328     __Pyx_INCREF(__pyx_t_2);
28329     __pyx_v___pyx_PickleError = __pyx_t_2;
28330     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
28331     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
28332 
28333     /* "(tree fragment)":6
28334  *     if __pyx_checksum != 0x381b6b9:
28335  *         from pickle import PickleError as __pyx_PickleError
28336  *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x381b6b9 = (name, parent_id))" % __pyx_checksum)             # <<<<<<<<<<<<<<
28337  *     __pyx_result = Node.__new__(__pyx_type)
28338  *     if __pyx_state is not None:
28339  */
28340     __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
28341     __Pyx_GOTREF(__pyx_t_2);
28342     __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0x38, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error)
28343     __Pyx_GOTREF(__pyx_t_4);
28344     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
28345     __Pyx_INCREF(__pyx_v___pyx_PickleError);
28346     __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL;
28347     if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
28348       __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
28349       if (likely(__pyx_t_5)) {
28350         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
28351         __Pyx_INCREF(__pyx_t_5);
28352         __Pyx_INCREF(function);
28353         __Pyx_DECREF_SET(__pyx_t_2, function);
28354       }
28355     }
28356     __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
28357     __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
28358     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
28359     if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
28360     __Pyx_GOTREF(__pyx_t_3);
28361     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
28362     __Pyx_Raise(__pyx_t_3, 0, 0, 0);
28363     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
28364     __PYX_ERR(1, 6, __pyx_L1_error)
28365 
28366     /* "(tree fragment)":4
28367  *     cdef object __pyx_PickleError
28368  *     cdef object __pyx_result
28369  *     if __pyx_checksum != 0x381b6b9:             # <<<<<<<<<<<<<<
28370  *         from pickle import PickleError as __pyx_PickleError
28371  *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x381b6b9 = (name, parent_id))" % __pyx_checksum)
28372  */
28373   }
28374 
28375   /* "(tree fragment)":7
28376  *         from pickle import PickleError as __pyx_PickleError
28377  *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x381b6b9 = (name, parent_id))" % __pyx_checksum)
28378  *     __pyx_result = Node.__new__(__pyx_type)             # <<<<<<<<<<<<<<
28379  *     if __pyx_state is not None:
28380  *         __pyx_unpickle_Node__set_state(<Node> __pyx_result, __pyx_state)
28381  */
28382   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_6tables_13hdf5extension_Node), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error)
28383   __Pyx_GOTREF(__pyx_t_2);
28384   __pyx_t_4 = NULL;
28385   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
28386     __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
28387     if (likely(__pyx_t_4)) {
28388       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
28389       __Pyx_INCREF(__pyx_t_4);
28390       __Pyx_INCREF(function);
28391       __Pyx_DECREF_SET(__pyx_t_2, function);
28392     }
28393   }
28394   __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
28395   __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
28396   if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error)
28397   __Pyx_GOTREF(__pyx_t_3);
28398   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
28399   __pyx_v___pyx_result = __pyx_t_3;
28400   __pyx_t_3 = 0;
28401 
28402   /* "(tree fragment)":8
28403  *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x381b6b9 = (name, parent_id))" % __pyx_checksum)
28404  *     __pyx_result = Node.__new__(__pyx_type)
28405  *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
28406  *         __pyx_unpickle_Node__set_state(<Node> __pyx_result, __pyx_state)
28407  *     return __pyx_result
28408  */
28409   __pyx_t_1 = (__pyx_v___pyx_state != Py_None);
28410   __pyx_t_6 = (__pyx_t_1 != 0);
28411   if (__pyx_t_6) {
28412 
28413     /* "(tree fragment)":9
28414  *     __pyx_result = Node.__new__(__pyx_type)
28415  *     if __pyx_state is not None:
28416  *         __pyx_unpickle_Node__set_state(<Node> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
28417  *     return __pyx_result
28418  * cdef __pyx_unpickle_Node__set_state(Node __pyx_result, tuple __pyx_state):
28419  */
28420     if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error)
28421     __pyx_t_3 = __pyx_f_6tables_13hdf5extension___pyx_unpickle_Node__set_state(((struct __pyx_obj_6tables_13hdf5extension_Node *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error)
28422     __Pyx_GOTREF(__pyx_t_3);
28423     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
28424 
28425     /* "(tree fragment)":8
28426  *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x381b6b9 = (name, parent_id))" % __pyx_checksum)
28427  *     __pyx_result = Node.__new__(__pyx_type)
28428  *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
28429  *         __pyx_unpickle_Node__set_state(<Node> __pyx_result, __pyx_state)
28430  *     return __pyx_result
28431  */
28432   }
28433 
28434   /* "(tree fragment)":10
28435  *     if __pyx_state is not None:
28436  *         __pyx_unpickle_Node__set_state(<Node> __pyx_result, __pyx_state)
28437  *     return __pyx_result             # <<<<<<<<<<<<<<
28438  * cdef __pyx_unpickle_Node__set_state(Node __pyx_result, tuple __pyx_state):
28439  *     __pyx_result.name = __pyx_state[0]; __pyx_result.parent_id = __pyx_state[1]
28440  */
28441   __Pyx_XDECREF(__pyx_r);
28442   __Pyx_INCREF(__pyx_v___pyx_result);
28443   __pyx_r = __pyx_v___pyx_result;
28444   goto __pyx_L0;
28445 
28446   /* "(tree fragment)":1
28447  * def __pyx_unpickle_Node(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
28448  *     cdef object __pyx_PickleError
28449  *     cdef object __pyx_result
28450  */
28451 
28452   /* function exit code */
28453   __pyx_L1_error:;
28454   __Pyx_XDECREF(__pyx_t_2);
28455   __Pyx_XDECREF(__pyx_t_3);
28456   __Pyx_XDECREF(__pyx_t_4);
28457   __Pyx_XDECREF(__pyx_t_5);
28458   __Pyx_AddTraceback("tables.hdf5extension.__pyx_unpickle_Node", __pyx_clineno, __pyx_lineno, __pyx_filename);
28459   __pyx_r = NULL;
28460   __pyx_L0:;
28461   __Pyx_XDECREF(__pyx_v___pyx_PickleError);
28462   __Pyx_XDECREF(__pyx_v___pyx_result);
28463   __Pyx_XGIVEREF(__pyx_r);
28464   __Pyx_RefNannyFinishContext();
28465   return __pyx_r;
28466 }
28467 
28468 /* "(tree fragment)":11
28469  *         __pyx_unpickle_Node__set_state(<Node> __pyx_result, __pyx_state)
28470  *     return __pyx_result
28471  * cdef __pyx_unpickle_Node__set_state(Node __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
28472  *     __pyx_result.name = __pyx_state[0]; __pyx_result.parent_id = __pyx_state[1]
28473  *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
28474  */
28475 
__pyx_f_6tables_13hdf5extension___pyx_unpickle_Node__set_state(struct __pyx_obj_6tables_13hdf5extension_Node * __pyx_v___pyx_result,PyObject * __pyx_v___pyx_state)28476 static PyObject *__pyx_f_6tables_13hdf5extension___pyx_unpickle_Node__set_state(struct __pyx_obj_6tables_13hdf5extension_Node *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
28477   PyObject *__pyx_r = NULL;
28478   __Pyx_RefNannyDeclarations
28479   PyObject *__pyx_t_1 = NULL;
28480   hid_t __pyx_t_2;
28481   int __pyx_t_3;
28482   Py_ssize_t __pyx_t_4;
28483   int __pyx_t_5;
28484   int __pyx_t_6;
28485   PyObject *__pyx_t_7 = NULL;
28486   PyObject *__pyx_t_8 = NULL;
28487   PyObject *__pyx_t_9 = NULL;
28488   __Pyx_RefNannySetupContext("__pyx_unpickle_Node__set_state", 0);
28489 
28490   /* "(tree fragment)":12
28491  *     return __pyx_result
28492  * cdef __pyx_unpickle_Node__set_state(Node __pyx_result, tuple __pyx_state):
28493  *     __pyx_result.name = __pyx_state[0]; __pyx_result.parent_id = __pyx_state[1]             # <<<<<<<<<<<<<<
28494  *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
28495  *         __pyx_result.__dict__.update(__pyx_state[2])
28496  */
28497   if (unlikely(__pyx_v___pyx_state == Py_None)) {
28498     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
28499     __PYX_ERR(1, 12, __pyx_L1_error)
28500   }
28501   __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
28502   __Pyx_GOTREF(__pyx_t_1);
28503   __Pyx_GIVEREF(__pyx_t_1);
28504   __Pyx_GOTREF(__pyx_v___pyx_result->name);
28505   __Pyx_DECREF(__pyx_v___pyx_result->name);
28506   __pyx_v___pyx_result->name = __pyx_t_1;
28507   __pyx_t_1 = 0;
28508   if (unlikely(__pyx_v___pyx_state == Py_None)) {
28509     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
28510     __PYX_ERR(1, 12, __pyx_L1_error)
28511   }
28512   __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
28513   __Pyx_GOTREF(__pyx_t_1);
28514   __pyx_t_2 = __Pyx_PyInt_As_hid_t(__pyx_t_1); if (unlikely((__pyx_t_2 == ((hid_t)-1)) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
28515   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
28516   __pyx_v___pyx_result->parent_id = __pyx_t_2;
28517 
28518   /* "(tree fragment)":13
28519  * cdef __pyx_unpickle_Node__set_state(Node __pyx_result, tuple __pyx_state):
28520  *     __pyx_result.name = __pyx_state[0]; __pyx_result.parent_id = __pyx_state[1]
28521  *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
28522  *         __pyx_result.__dict__.update(__pyx_state[2])
28523  */
28524   if (unlikely(__pyx_v___pyx_state == Py_None)) {
28525     PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
28526     __PYX_ERR(1, 13, __pyx_L1_error)
28527   }
28528   __pyx_t_4 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
28529   __pyx_t_5 = ((__pyx_t_4 > 2) != 0);
28530   if (__pyx_t_5) {
28531   } else {
28532     __pyx_t_3 = __pyx_t_5;
28533     goto __pyx_L4_bool_binop_done;
28534   }
28535   __pyx_t_5 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
28536   __pyx_t_6 = (__pyx_t_5 != 0);
28537   __pyx_t_3 = __pyx_t_6;
28538   __pyx_L4_bool_binop_done:;
28539   if (__pyx_t_3) {
28540 
28541     /* "(tree fragment)":14
28542  *     __pyx_result.name = __pyx_state[0]; __pyx_result.parent_id = __pyx_state[1]
28543  *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
28544  *         __pyx_result.__dict__.update(__pyx_state[2])             # <<<<<<<<<<<<<<
28545  */
28546     __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
28547     __Pyx_GOTREF(__pyx_t_7);
28548     __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_update); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 14, __pyx_L1_error)
28549     __Pyx_GOTREF(__pyx_t_8);
28550     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
28551     if (unlikely(__pyx_v___pyx_state == Py_None)) {
28552       PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
28553       __PYX_ERR(1, 14, __pyx_L1_error)
28554     }
28555     __pyx_t_7 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
28556     __Pyx_GOTREF(__pyx_t_7);
28557     __pyx_t_9 = NULL;
28558     if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
28559       __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8);
28560       if (likely(__pyx_t_9)) {
28561         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
28562         __Pyx_INCREF(__pyx_t_9);
28563         __Pyx_INCREF(function);
28564         __Pyx_DECREF_SET(__pyx_t_8, function);
28565       }
28566     }
28567     __pyx_t_1 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_9, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_7);
28568     __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
28569     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
28570     if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error)
28571     __Pyx_GOTREF(__pyx_t_1);
28572     __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
28573     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
28574 
28575     /* "(tree fragment)":13
28576  * cdef __pyx_unpickle_Node__set_state(Node __pyx_result, tuple __pyx_state):
28577  *     __pyx_result.name = __pyx_state[0]; __pyx_result.parent_id = __pyx_state[1]
28578  *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
28579  *         __pyx_result.__dict__.update(__pyx_state[2])
28580  */
28581   }
28582 
28583   /* "(tree fragment)":11
28584  *         __pyx_unpickle_Node__set_state(<Node> __pyx_result, __pyx_state)
28585  *     return __pyx_result
28586  * cdef __pyx_unpickle_Node__set_state(Node __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
28587  *     __pyx_result.name = __pyx_state[0]; __pyx_result.parent_id = __pyx_state[1]
28588  *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
28589  */
28590 
28591   /* function exit code */
28592   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
28593   goto __pyx_L0;
28594   __pyx_L1_error:;
28595   __Pyx_XDECREF(__pyx_t_1);
28596   __Pyx_XDECREF(__pyx_t_7);
28597   __Pyx_XDECREF(__pyx_t_8);
28598   __Pyx_XDECREF(__pyx_t_9);
28599   __Pyx_AddTraceback("tables.hdf5extension.__pyx_unpickle_Node__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
28600   __pyx_r = 0;
28601   __pyx_L0:;
28602   __Pyx_XGIVEREF(__pyx_r);
28603   __Pyx_RefNannyFinishContext();
28604   return __pyx_r;
28605 }
28606 
28607 /* "(tree fragment)":1
28608  * def __pyx_unpickle_Group(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
28609  *     cdef object __pyx_PickleError
28610  *     cdef object __pyx_result
28611  */
28612 
28613 /* Python wrapper */
28614 static PyObject *__pyx_pw_6tables_13hdf5extension_7__pyx_unpickle_Group(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
28615 static PyMethodDef __pyx_mdef_6tables_13hdf5extension_7__pyx_unpickle_Group = {"__pyx_unpickle_Group", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_6tables_13hdf5extension_7__pyx_unpickle_Group, METH_VARARGS|METH_KEYWORDS, 0};
__pyx_pw_6tables_13hdf5extension_7__pyx_unpickle_Group(PyObject * __pyx_self,PyObject * __pyx_args,PyObject * __pyx_kwds)28616 static PyObject *__pyx_pw_6tables_13hdf5extension_7__pyx_unpickle_Group(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
28617   PyObject *__pyx_v___pyx_type = 0;
28618   long __pyx_v___pyx_checksum;
28619   PyObject *__pyx_v___pyx_state = 0;
28620   PyObject *__pyx_r = 0;
28621   __Pyx_RefNannyDeclarations
28622   __Pyx_RefNannySetupContext("__pyx_unpickle_Group (wrapper)", 0);
28623   {
28624     static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
28625     PyObject* values[3] = {0,0,0};
28626     if (unlikely(__pyx_kwds)) {
28627       Py_ssize_t kw_args;
28628       const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
28629       switch (pos_args) {
28630         case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
28631         CYTHON_FALLTHROUGH;
28632         case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
28633         CYTHON_FALLTHROUGH;
28634         case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
28635         CYTHON_FALLTHROUGH;
28636         case  0: break;
28637         default: goto __pyx_L5_argtuple_error;
28638       }
28639       kw_args = PyDict_Size(__pyx_kwds);
28640       switch (pos_args) {
28641         case  0:
28642         if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--;
28643         else goto __pyx_L5_argtuple_error;
28644         CYTHON_FALLTHROUGH;
28645         case  1:
28646         if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--;
28647         else {
28648           __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Group", 1, 3, 3, 1); __PYX_ERR(1, 1, __pyx_L3_error)
28649         }
28650         CYTHON_FALLTHROUGH;
28651         case  2:
28652         if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--;
28653         else {
28654           __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Group", 1, 3, 3, 2); __PYX_ERR(1, 1, __pyx_L3_error)
28655         }
28656       }
28657       if (unlikely(kw_args > 0)) {
28658         if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_Group") < 0)) __PYX_ERR(1, 1, __pyx_L3_error)
28659       }
28660     } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
28661       goto __pyx_L5_argtuple_error;
28662     } else {
28663       values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
28664       values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
28665       values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
28666     }
28667     __pyx_v___pyx_type = values[0];
28668     __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error)
28669     __pyx_v___pyx_state = values[2];
28670   }
28671   goto __pyx_L4_argument_unpacking_done;
28672   __pyx_L5_argtuple_error:;
28673   __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Group", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1, __pyx_L3_error)
28674   __pyx_L3_error:;
28675   __Pyx_AddTraceback("tables.hdf5extension.__pyx_unpickle_Group", __pyx_clineno, __pyx_lineno, __pyx_filename);
28676   __Pyx_RefNannyFinishContext();
28677   return NULL;
28678   __pyx_L4_argument_unpacking_done:;
28679   __pyx_r = __pyx_pf_6tables_13hdf5extension_6__pyx_unpickle_Group(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);
28680 
28681   /* function exit code */
28682   __Pyx_RefNannyFinishContext();
28683   return __pyx_r;
28684 }
28685 
__pyx_pf_6tables_13hdf5extension_6__pyx_unpickle_Group(CYTHON_UNUSED PyObject * __pyx_self,PyObject * __pyx_v___pyx_type,long __pyx_v___pyx_checksum,PyObject * __pyx_v___pyx_state)28686 static PyObject *__pyx_pf_6tables_13hdf5extension_6__pyx_unpickle_Group(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) {
28687   PyObject *__pyx_v___pyx_PickleError = 0;
28688   PyObject *__pyx_v___pyx_result = 0;
28689   PyObject *__pyx_r = NULL;
28690   __Pyx_RefNannyDeclarations
28691   int __pyx_t_1;
28692   PyObject *__pyx_t_2 = NULL;
28693   PyObject *__pyx_t_3 = NULL;
28694   PyObject *__pyx_t_4 = NULL;
28695   PyObject *__pyx_t_5 = NULL;
28696   int __pyx_t_6;
28697   __Pyx_RefNannySetupContext("__pyx_unpickle_Group", 0);
28698 
28699   /* "(tree fragment)":4
28700  *     cdef object __pyx_PickleError
28701  *     cdef object __pyx_result
28702  *     if __pyx_checksum != 0x1360bff:             # <<<<<<<<<<<<<<
28703  *         from pickle import PickleError as __pyx_PickleError
28704  *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x1360bff = (group_id, name, parent_id))" % __pyx_checksum)
28705  */
28706   __pyx_t_1 = ((__pyx_v___pyx_checksum != 0x1360bff) != 0);
28707   if (__pyx_t_1) {
28708 
28709     /* "(tree fragment)":5
28710  *     cdef object __pyx_result
28711  *     if __pyx_checksum != 0x1360bff:
28712  *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
28713  *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x1360bff = (group_id, name, parent_id))" % __pyx_checksum)
28714  *     __pyx_result = Group.__new__(__pyx_type)
28715  */
28716     __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
28717     __Pyx_GOTREF(__pyx_t_2);
28718     __Pyx_INCREF(__pyx_n_s_PickleError);
28719     __Pyx_GIVEREF(__pyx_n_s_PickleError);
28720     PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError);
28721     __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, -1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error)
28722     __Pyx_GOTREF(__pyx_t_3);
28723     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
28724     __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
28725     __Pyx_GOTREF(__pyx_t_2);
28726     __Pyx_INCREF(__pyx_t_2);
28727     __pyx_v___pyx_PickleError = __pyx_t_2;
28728     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
28729     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
28730 
28731     /* "(tree fragment)":6
28732  *     if __pyx_checksum != 0x1360bff:
28733  *         from pickle import PickleError as __pyx_PickleError
28734  *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x1360bff = (group_id, name, parent_id))" % __pyx_checksum)             # <<<<<<<<<<<<<<
28735  *     __pyx_result = Group.__new__(__pyx_type)
28736  *     if __pyx_state is not None:
28737  */
28738     __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 6, __pyx_L1_error)
28739     __Pyx_GOTREF(__pyx_t_2);
28740     __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0x13, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 6, __pyx_L1_error)
28741     __Pyx_GOTREF(__pyx_t_4);
28742     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
28743     __Pyx_INCREF(__pyx_v___pyx_PickleError);
28744     __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL;
28745     if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
28746       __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
28747       if (likely(__pyx_t_5)) {
28748         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
28749         __Pyx_INCREF(__pyx_t_5);
28750         __Pyx_INCREF(function);
28751         __Pyx_DECREF_SET(__pyx_t_2, function);
28752       }
28753     }
28754     __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
28755     __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
28756     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
28757     if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error)
28758     __Pyx_GOTREF(__pyx_t_3);
28759     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
28760     __Pyx_Raise(__pyx_t_3, 0, 0, 0);
28761     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
28762     __PYX_ERR(1, 6, __pyx_L1_error)
28763 
28764     /* "(tree fragment)":4
28765  *     cdef object __pyx_PickleError
28766  *     cdef object __pyx_result
28767  *     if __pyx_checksum != 0x1360bff:             # <<<<<<<<<<<<<<
28768  *         from pickle import PickleError as __pyx_PickleError
28769  *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x1360bff = (group_id, name, parent_id))" % __pyx_checksum)
28770  */
28771   }
28772 
28773   /* "(tree fragment)":7
28774  *         from pickle import PickleError as __pyx_PickleError
28775  *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x1360bff = (group_id, name, parent_id))" % __pyx_checksum)
28776  *     __pyx_result = Group.__new__(__pyx_type)             # <<<<<<<<<<<<<<
28777  *     if __pyx_state is not None:
28778  *         __pyx_unpickle_Group__set_state(<Group> __pyx_result, __pyx_state)
28779  */
28780   __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_6tables_13hdf5extension_Group), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error)
28781   __Pyx_GOTREF(__pyx_t_2);
28782   __pyx_t_4 = NULL;
28783   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
28784     __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
28785     if (likely(__pyx_t_4)) {
28786       PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
28787       __Pyx_INCREF(__pyx_t_4);
28788       __Pyx_INCREF(function);
28789       __Pyx_DECREF_SET(__pyx_t_2, function);
28790     }
28791   }
28792   __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
28793   __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
28794   if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error)
28795   __Pyx_GOTREF(__pyx_t_3);
28796   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
28797   __pyx_v___pyx_result = __pyx_t_3;
28798   __pyx_t_3 = 0;
28799 
28800   /* "(tree fragment)":8
28801  *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x1360bff = (group_id, name, parent_id))" % __pyx_checksum)
28802  *     __pyx_result = Group.__new__(__pyx_type)
28803  *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
28804  *         __pyx_unpickle_Group__set_state(<Group> __pyx_result, __pyx_state)
28805  *     return __pyx_result
28806  */
28807   __pyx_t_1 = (__pyx_v___pyx_state != Py_None);
28808   __pyx_t_6 = (__pyx_t_1 != 0);
28809   if (__pyx_t_6) {
28810 
28811     /* "(tree fragment)":9
28812  *     __pyx_result = Group.__new__(__pyx_type)
28813  *     if __pyx_state is not None:
28814  *         __pyx_unpickle_Group__set_state(<Group> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
28815  *     return __pyx_result
28816  * cdef __pyx_unpickle_Group__set_state(Group __pyx_result, tuple __pyx_state):
28817  */
28818     if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(1, 9, __pyx_L1_error)
28819     __pyx_t_3 = __pyx_f_6tables_13hdf5extension___pyx_unpickle_Group__set_state(((struct __pyx_obj_6tables_13hdf5extension_Group *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 9, __pyx_L1_error)
28820     __Pyx_GOTREF(__pyx_t_3);
28821     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
28822 
28823     /* "(tree fragment)":8
28824  *         raise __pyx_PickleError("Incompatible checksums (%s vs 0x1360bff = (group_id, name, parent_id))" % __pyx_checksum)
28825  *     __pyx_result = Group.__new__(__pyx_type)
28826  *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
28827  *         __pyx_unpickle_Group__set_state(<Group> __pyx_result, __pyx_state)
28828  *     return __pyx_result
28829  */
28830   }
28831 
28832   /* "(tree fragment)":10
28833  *     if __pyx_state is not None:
28834  *         __pyx_unpickle_Group__set_state(<Group> __pyx_result, __pyx_state)
28835  *     return __pyx_result             # <<<<<<<<<<<<<<
28836  * cdef __pyx_unpickle_Group__set_state(Group __pyx_result, tuple __pyx_state):
28837  *     __pyx_result.group_id = __pyx_state[0]; __pyx_result.name = __pyx_state[1]; __pyx_result.parent_id = __pyx_state[2]
28838  */
28839   __Pyx_XDECREF(__pyx_r);
28840   __Pyx_INCREF(__pyx_v___pyx_result);
28841   __pyx_r = __pyx_v___pyx_result;
28842   goto __pyx_L0;
28843 
28844   /* "(tree fragment)":1
28845  * def __pyx_unpickle_Group(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
28846  *     cdef object __pyx_PickleError
28847  *     cdef object __pyx_result
28848  */
28849 
28850   /* function exit code */
28851   __pyx_L1_error:;
28852   __Pyx_XDECREF(__pyx_t_2);
28853   __Pyx_XDECREF(__pyx_t_3);
28854   __Pyx_XDECREF(__pyx_t_4);
28855   __Pyx_XDECREF(__pyx_t_5);
28856   __Pyx_AddTraceback("tables.hdf5extension.__pyx_unpickle_Group", __pyx_clineno, __pyx_lineno, __pyx_filename);
28857   __pyx_r = NULL;
28858   __pyx_L0:;
28859   __Pyx_XDECREF(__pyx_v___pyx_PickleError);
28860   __Pyx_XDECREF(__pyx_v___pyx_result);
28861   __Pyx_XGIVEREF(__pyx_r);
28862   __Pyx_RefNannyFinishContext();
28863   return __pyx_r;
28864 }
28865 
28866 /* "(tree fragment)":11
28867  *         __pyx_unpickle_Group__set_state(<Group> __pyx_result, __pyx_state)
28868  *     return __pyx_result
28869  * cdef __pyx_unpickle_Group__set_state(Group __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
28870  *     __pyx_result.group_id = __pyx_state[0]; __pyx_result.name = __pyx_state[1]; __pyx_result.parent_id = __pyx_state[2]
28871  *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
28872  */
28873 
__pyx_f_6tables_13hdf5extension___pyx_unpickle_Group__set_state(struct __pyx_obj_6tables_13hdf5extension_Group * __pyx_v___pyx_result,PyObject * __pyx_v___pyx_state)28874 static PyObject *__pyx_f_6tables_13hdf5extension___pyx_unpickle_Group__set_state(struct __pyx_obj_6tables_13hdf5extension_Group *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
28875   PyObject *__pyx_r = NULL;
28876   __Pyx_RefNannyDeclarations
28877   PyObject *__pyx_t_1 = NULL;
28878   hid_t __pyx_t_2;
28879   int __pyx_t_3;
28880   Py_ssize_t __pyx_t_4;
28881   int __pyx_t_5;
28882   int __pyx_t_6;
28883   PyObject *__pyx_t_7 = NULL;
28884   PyObject *__pyx_t_8 = NULL;
28885   PyObject *__pyx_t_9 = NULL;
28886   __Pyx_RefNannySetupContext("__pyx_unpickle_Group__set_state", 0);
28887 
28888   /* "(tree fragment)":12
28889  *     return __pyx_result
28890  * cdef __pyx_unpickle_Group__set_state(Group __pyx_result, tuple __pyx_state):
28891  *     __pyx_result.group_id = __pyx_state[0]; __pyx_result.name = __pyx_state[1]; __pyx_result.parent_id = __pyx_state[2]             # <<<<<<<<<<<<<<
28892  *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
28893  *         __pyx_result.__dict__.update(__pyx_state[3])
28894  */
28895   if (unlikely(__pyx_v___pyx_state == Py_None)) {
28896     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
28897     __PYX_ERR(1, 12, __pyx_L1_error)
28898   }
28899   __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
28900   __Pyx_GOTREF(__pyx_t_1);
28901   __pyx_t_2 = __Pyx_PyInt_As_hid_t(__pyx_t_1); if (unlikely((__pyx_t_2 == ((hid_t)-1)) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
28902   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
28903   __pyx_v___pyx_result->group_id = __pyx_t_2;
28904   if (unlikely(__pyx_v___pyx_state == Py_None)) {
28905     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
28906     __PYX_ERR(1, 12, __pyx_L1_error)
28907   }
28908   __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
28909   __Pyx_GOTREF(__pyx_t_1);
28910   __Pyx_GIVEREF(__pyx_t_1);
28911   __Pyx_GOTREF(__pyx_v___pyx_result->__pyx_base.name);
28912   __Pyx_DECREF(__pyx_v___pyx_result->__pyx_base.name);
28913   __pyx_v___pyx_result->__pyx_base.name = __pyx_t_1;
28914   __pyx_t_1 = 0;
28915   if (unlikely(__pyx_v___pyx_state == Py_None)) {
28916     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
28917     __PYX_ERR(1, 12, __pyx_L1_error)
28918   }
28919   __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error)
28920   __Pyx_GOTREF(__pyx_t_1);
28921   __pyx_t_2 = __Pyx_PyInt_As_hid_t(__pyx_t_1); if (unlikely((__pyx_t_2 == ((hid_t)-1)) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
28922   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
28923   __pyx_v___pyx_result->__pyx_base.parent_id = __pyx_t_2;
28924 
28925   /* "(tree fragment)":13
28926  * cdef __pyx_unpickle_Group__set_state(Group __pyx_result, tuple __pyx_state):
28927  *     __pyx_result.group_id = __pyx_state[0]; __pyx_result.name = __pyx_state[1]; __pyx_result.parent_id = __pyx_state[2]
28928  *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
28929  *         __pyx_result.__dict__.update(__pyx_state[3])
28930  */
28931   if (unlikely(__pyx_v___pyx_state == Py_None)) {
28932     PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
28933     __PYX_ERR(1, 13, __pyx_L1_error)
28934   }
28935   __pyx_t_4 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
28936   __pyx_t_5 = ((__pyx_t_4 > 3) != 0);
28937   if (__pyx_t_5) {
28938   } else {
28939     __pyx_t_3 = __pyx_t_5;
28940     goto __pyx_L4_bool_binop_done;
28941   }
28942   __pyx_t_5 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error)
28943   __pyx_t_6 = (__pyx_t_5 != 0);
28944   __pyx_t_3 = __pyx_t_6;
28945   __pyx_L4_bool_binop_done:;
28946   if (__pyx_t_3) {
28947 
28948     /* "(tree fragment)":14
28949  *     __pyx_result.group_id = __pyx_state[0]; __pyx_result.name = __pyx_state[1]; __pyx_result.parent_id = __pyx_state[2]
28950  *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
28951  *         __pyx_result.__dict__.update(__pyx_state[3])             # <<<<<<<<<<<<<<
28952  */
28953     __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
28954     __Pyx_GOTREF(__pyx_t_7);
28955     __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_update); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 14, __pyx_L1_error)
28956     __Pyx_GOTREF(__pyx_t_8);
28957     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
28958     if (unlikely(__pyx_v___pyx_state == Py_None)) {
28959       PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
28960       __PYX_ERR(1, 14, __pyx_L1_error)
28961     }
28962     __pyx_t_7 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error)
28963     __Pyx_GOTREF(__pyx_t_7);
28964     __pyx_t_9 = NULL;
28965     if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
28966       __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8);
28967       if (likely(__pyx_t_9)) {
28968         PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
28969         __Pyx_INCREF(__pyx_t_9);
28970         __Pyx_INCREF(function);
28971         __Pyx_DECREF_SET(__pyx_t_8, function);
28972       }
28973     }
28974     __pyx_t_1 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_9, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_7);
28975     __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
28976     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
28977     if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error)
28978     __Pyx_GOTREF(__pyx_t_1);
28979     __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
28980     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
28981 
28982     /* "(tree fragment)":13
28983  * cdef __pyx_unpickle_Group__set_state(Group __pyx_result, tuple __pyx_state):
28984  *     __pyx_result.group_id = __pyx_state[0]; __pyx_result.name = __pyx_state[1]; __pyx_result.parent_id = __pyx_state[2]
28985  *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
28986  *         __pyx_result.__dict__.update(__pyx_state[3])
28987  */
28988   }
28989 
28990   /* "(tree fragment)":11
28991  *         __pyx_unpickle_Group__set_state(<Group> __pyx_result, __pyx_state)
28992  *     return __pyx_result
28993  * cdef __pyx_unpickle_Group__set_state(Group __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
28994  *     __pyx_result.group_id = __pyx_state[0]; __pyx_result.name = __pyx_state[1]; __pyx_result.parent_id = __pyx_state[2]
28995  *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
28996  */
28997 
28998   /* function exit code */
28999   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
29000   goto __pyx_L0;
29001   __pyx_L1_error:;
29002   __Pyx_XDECREF(__pyx_t_1);
29003   __Pyx_XDECREF(__pyx_t_7);
29004   __Pyx_XDECREF(__pyx_t_8);
29005   __Pyx_XDECREF(__pyx_t_9);
29006   __Pyx_AddTraceback("tables.hdf5extension.__pyx_unpickle_Group__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
29007   __pyx_r = 0;
29008   __pyx_L0:;
29009   __Pyx_XGIVEREF(__pyx_r);
29010   __Pyx_RefNannyFinishContext();
29011   return __pyx_r;
29012 }
29013 
29014 /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":258
29015  *         # experimental exception made for __getbuffer__ and __releasebuffer__
29016  *         # -- the details of this may change.
29017  *         def __getbuffer__(ndarray self, Py_buffer* info, int flags):             # <<<<<<<<<<<<<<
29018  *             # This implementation of getbuffer is geared towards Cython
29019  *             # requirements, and does not yet fulfill the PEP.
29020  */
29021 
29022 /* Python wrapper */
29023 static CYTHON_UNUSED int __pyx_pw_5numpy_7ndarray_1__getbuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags); /*proto*/
__pyx_pw_5numpy_7ndarray_1__getbuffer__(PyObject * __pyx_v_self,Py_buffer * __pyx_v_info,int __pyx_v_flags)29024 static CYTHON_UNUSED int __pyx_pw_5numpy_7ndarray_1__getbuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags) {
29025   int __pyx_r;
29026   __Pyx_RefNannyDeclarations
29027   __Pyx_RefNannySetupContext("__getbuffer__ (wrapper)", 0);
29028   __pyx_r = __pyx_pf_5numpy_7ndarray___getbuffer__(((PyArrayObject *)__pyx_v_self), ((Py_buffer *)__pyx_v_info), ((int)__pyx_v_flags));
29029 
29030   /* function exit code */
29031   __Pyx_RefNannyFinishContext();
29032   return __pyx_r;
29033 }
29034 
__pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject * __pyx_v_self,Py_buffer * __pyx_v_info,int __pyx_v_flags)29035 static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags) {
29036   int __pyx_v_i;
29037   int __pyx_v_ndim;
29038   int __pyx_v_endian_detector;
29039   int __pyx_v_little_endian;
29040   int __pyx_v_t;
29041   char *__pyx_v_f;
29042   PyArray_Descr *__pyx_v_descr = 0;
29043   int __pyx_v_offset;
29044   int __pyx_r;
29045   __Pyx_RefNannyDeclarations
29046   int __pyx_t_1;
29047   int __pyx_t_2;
29048   PyObject *__pyx_t_3 = NULL;
29049   int __pyx_t_4;
29050   int __pyx_t_5;
29051   int __pyx_t_6;
29052   PyArray_Descr *__pyx_t_7;
29053   PyObject *__pyx_t_8 = NULL;
29054   char *__pyx_t_9;
29055   if (__pyx_v_info == NULL) {
29056     PyErr_SetString(PyExc_BufferError, "PyObject_GetBuffer: view==NULL argument is obsolete");
29057     return -1;
29058   }
29059   __Pyx_RefNannySetupContext("__getbuffer__", 0);
29060   __pyx_v_info->obj = Py_None; __Pyx_INCREF(Py_None);
29061   __Pyx_GIVEREF(__pyx_v_info->obj);
29062 
29063   /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":265
29064  *
29065  *             cdef int i, ndim
29066  *             cdef int endian_detector = 1             # <<<<<<<<<<<<<<
29067  *             cdef bint little_endian = ((<char*>&endian_detector)[0] != 0)
29068  *
29069  */
29070   __pyx_v_endian_detector = 1;
29071 
29072   /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":266
29073  *             cdef int i, ndim
29074  *             cdef int endian_detector = 1
29075  *             cdef bint little_endian = ((<char*>&endian_detector)[0] != 0)             # <<<<<<<<<<<<<<
29076  *
29077  *             ndim = PyArray_NDIM(self)
29078  */
29079   __pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0);
29080 
29081   /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":268
29082  *             cdef bint little_endian = ((<char*>&endian_detector)[0] != 0)
29083  *
29084  *             ndim = PyArray_NDIM(self)             # <<<<<<<<<<<<<<
29085  *
29086  *             if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS)
29087  */
29088   __pyx_v_ndim = PyArray_NDIM(__pyx_v_self);
29089 
29090   /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":270
29091  *             ndim = PyArray_NDIM(self)
29092  *
29093  *             if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS)             # <<<<<<<<<<<<<<
29094  *                 and not PyArray_CHKFLAGS(self, NPY_ARRAY_C_CONTIGUOUS)):
29095  *                 raise ValueError(u"ndarray is not C contiguous")
29096  */
29097   __pyx_t_2 = (((__pyx_v_flags & PyBUF_C_CONTIGUOUS) == PyBUF_C_CONTIGUOUS) != 0);
29098   if (__pyx_t_2) {
29099   } else {
29100     __pyx_t_1 = __pyx_t_2;
29101     goto __pyx_L4_bool_binop_done;
29102   }
29103 
29104   /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":271
29105  *
29106  *             if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS)
29107  *                 and not PyArray_CHKFLAGS(self, NPY_ARRAY_C_CONTIGUOUS)):             # <<<<<<<<<<<<<<
29108  *                 raise ValueError(u"ndarray is not C contiguous")
29109  *
29110  */
29111   __pyx_t_2 = ((!(PyArray_CHKFLAGS(__pyx_v_self, NPY_ARRAY_C_CONTIGUOUS) != 0)) != 0);
29112   __pyx_t_1 = __pyx_t_2;
29113   __pyx_L4_bool_binop_done:;
29114 
29115   /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":270
29116  *             ndim = PyArray_NDIM(self)
29117  *
29118  *             if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS)             # <<<<<<<<<<<<<<
29119  *                 and not PyArray_CHKFLAGS(self, NPY_ARRAY_C_CONTIGUOUS)):
29120  *                 raise ValueError(u"ndarray is not C contiguous")
29121  */
29122   if (unlikely(__pyx_t_1)) {
29123 
29124     /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":272
29125  *             if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS)
29126  *                 and not PyArray_CHKFLAGS(self, NPY_ARRAY_C_CONTIGUOUS)):
29127  *                 raise ValueError(u"ndarray is not C contiguous")             # <<<<<<<<<<<<<<
29128  *
29129  *             if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)
29130  */
29131     __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__22, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 272, __pyx_L1_error)
29132     __Pyx_GOTREF(__pyx_t_3);
29133     __Pyx_Raise(__pyx_t_3, 0, 0, 0);
29134     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
29135     __PYX_ERR(2, 272, __pyx_L1_error)
29136 
29137     /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":270
29138  *             ndim = PyArray_NDIM(self)
29139  *
29140  *             if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS)             # <<<<<<<<<<<<<<
29141  *                 and not PyArray_CHKFLAGS(self, NPY_ARRAY_C_CONTIGUOUS)):
29142  *                 raise ValueError(u"ndarray is not C contiguous")
29143  */
29144   }
29145 
29146   /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":274
29147  *                 raise ValueError(u"ndarray is not C contiguous")
29148  *
29149  *             if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)             # <<<<<<<<<<<<<<
29150  *                 and not PyArray_CHKFLAGS(self, NPY_ARRAY_F_CONTIGUOUS)):
29151  *                 raise ValueError(u"ndarray is not Fortran contiguous")
29152  */
29153   __pyx_t_2 = (((__pyx_v_flags & PyBUF_F_CONTIGUOUS) == PyBUF_F_CONTIGUOUS) != 0);
29154   if (__pyx_t_2) {
29155   } else {
29156     __pyx_t_1 = __pyx_t_2;
29157     goto __pyx_L7_bool_binop_done;
29158   }
29159 
29160   /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":275
29161  *
29162  *             if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)
29163  *                 and not PyArray_CHKFLAGS(self, NPY_ARRAY_F_CONTIGUOUS)):             # <<<<<<<<<<<<<<
29164  *                 raise ValueError(u"ndarray is not Fortran contiguous")
29165  *
29166  */
29167   __pyx_t_2 = ((!(PyArray_CHKFLAGS(__pyx_v_self, NPY_ARRAY_F_CONTIGUOUS) != 0)) != 0);
29168   __pyx_t_1 = __pyx_t_2;
29169   __pyx_L7_bool_binop_done:;
29170 
29171   /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":274
29172  *                 raise ValueError(u"ndarray is not C contiguous")
29173  *
29174  *             if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)             # <<<<<<<<<<<<<<
29175  *                 and not PyArray_CHKFLAGS(self, NPY_ARRAY_F_CONTIGUOUS)):
29176  *                 raise ValueError(u"ndarray is not Fortran contiguous")
29177  */
29178   if (unlikely(__pyx_t_1)) {
29179 
29180     /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":276
29181  *             if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)
29182  *                 and not PyArray_CHKFLAGS(self, NPY_ARRAY_F_CONTIGUOUS)):
29183  *                 raise ValueError(u"ndarray is not Fortran contiguous")             # <<<<<<<<<<<<<<
29184  *
29185  *             info.buf = PyArray_DATA(self)
29186  */
29187     __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__23, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 276, __pyx_L1_error)
29188     __Pyx_GOTREF(__pyx_t_3);
29189     __Pyx_Raise(__pyx_t_3, 0, 0, 0);
29190     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
29191     __PYX_ERR(2, 276, __pyx_L1_error)
29192 
29193     /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":274
29194  *                 raise ValueError(u"ndarray is not C contiguous")
29195  *
29196  *             if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)             # <<<<<<<<<<<<<<
29197  *                 and not PyArray_CHKFLAGS(self, NPY_ARRAY_F_CONTIGUOUS)):
29198  *                 raise ValueError(u"ndarray is not Fortran contiguous")
29199  */
29200   }
29201 
29202   /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":278
29203  *                 raise ValueError(u"ndarray is not Fortran contiguous")
29204  *
29205  *             info.buf = PyArray_DATA(self)             # <<<<<<<<<<<<<<
29206  *             info.ndim = ndim
29207  *             if sizeof(npy_intp) != sizeof(Py_ssize_t):
29208  */
29209   __pyx_v_info->buf = PyArray_DATA(__pyx_v_self);
29210 
29211   /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":279
29212  *
29213  *             info.buf = PyArray_DATA(self)
29214  *             info.ndim = ndim             # <<<<<<<<<<<<<<
29215  *             if sizeof(npy_intp) != sizeof(Py_ssize_t):
29216  *                 # Allocate new buffer for strides and shape info.
29217  */
29218   __pyx_v_info->ndim = __pyx_v_ndim;
29219 
29220   /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":280
29221  *             info.buf = PyArray_DATA(self)
29222  *             info.ndim = ndim
29223  *             if sizeof(npy_intp) != sizeof(Py_ssize_t):             # <<<<<<<<<<<<<<
29224  *                 # Allocate new buffer for strides and shape info.
29225  *                 # This is allocated as one block, strides first.
29226  */
29227   __pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0);
29228   if (__pyx_t_1) {
29229 
29230     /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":283
29231  *                 # Allocate new buffer for strides and shape info.
29232  *                 # This is allocated as one block, strides first.
29233  *                 info.strides = <Py_ssize_t*>PyObject_Malloc(sizeof(Py_ssize_t) * 2 * <size_t>ndim)             # <<<<<<<<<<<<<<
29234  *                 info.shape = info.strides + ndim
29235  *                 for i in range(ndim):
29236  */
29237     __pyx_v_info->strides = ((Py_ssize_t *)PyObject_Malloc((((sizeof(Py_ssize_t)) * 2) * ((size_t)__pyx_v_ndim))));
29238 
29239     /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":284
29240  *                 # This is allocated as one block, strides first.
29241  *                 info.strides = <Py_ssize_t*>PyObject_Malloc(sizeof(Py_ssize_t) * 2 * <size_t>ndim)
29242  *                 info.shape = info.strides + ndim             # <<<<<<<<<<<<<<
29243  *                 for i in range(ndim):
29244  *                     info.strides[i] = PyArray_STRIDES(self)[i]
29245  */
29246     __pyx_v_info->shape = (__pyx_v_info->strides + __pyx_v_ndim);
29247 
29248     /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":285
29249  *                 info.strides = <Py_ssize_t*>PyObject_Malloc(sizeof(Py_ssize_t) * 2 * <size_t>ndim)
29250  *                 info.shape = info.strides + ndim
29251  *                 for i in range(ndim):             # <<<<<<<<<<<<<<
29252  *                     info.strides[i] = PyArray_STRIDES(self)[i]
29253  *                     info.shape[i] = PyArray_DIMS(self)[i]
29254  */
29255     __pyx_t_4 = __pyx_v_ndim;
29256     __pyx_t_5 = __pyx_t_4;
29257     for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) {
29258       __pyx_v_i = __pyx_t_6;
29259 
29260       /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":286
29261  *                 info.shape = info.strides + ndim
29262  *                 for i in range(ndim):
29263  *                     info.strides[i] = PyArray_STRIDES(self)[i]             # <<<<<<<<<<<<<<
29264  *                     info.shape[i] = PyArray_DIMS(self)[i]
29265  *             else:
29266  */
29267       (__pyx_v_info->strides[__pyx_v_i]) = (PyArray_STRIDES(__pyx_v_self)[__pyx_v_i]);
29268 
29269       /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":287
29270  *                 for i in range(ndim):
29271  *                     info.strides[i] = PyArray_STRIDES(self)[i]
29272  *                     info.shape[i] = PyArray_DIMS(self)[i]             # <<<<<<<<<<<<<<
29273  *             else:
29274  *                 info.strides = <Py_ssize_t*>PyArray_STRIDES(self)
29275  */
29276       (__pyx_v_info->shape[__pyx_v_i]) = (PyArray_DIMS(__pyx_v_self)[__pyx_v_i]);
29277     }
29278 
29279     /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":280
29280  *             info.buf = PyArray_DATA(self)
29281  *             info.ndim = ndim
29282  *             if sizeof(npy_intp) != sizeof(Py_ssize_t):             # <<<<<<<<<<<<<<
29283  *                 # Allocate new buffer for strides and shape info.
29284  *                 # This is allocated as one block, strides first.
29285  */
29286     goto __pyx_L9;
29287   }
29288 
29289   /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":289
29290  *                     info.shape[i] = PyArray_DIMS(self)[i]
29291  *             else:
29292  *                 info.strides = <Py_ssize_t*>PyArray_STRIDES(self)             # <<<<<<<<<<<<<<
29293  *                 info.shape = <Py_ssize_t*>PyArray_DIMS(self)
29294  *             info.suboffsets = NULL
29295  */
29296   /*else*/ {
29297     __pyx_v_info->strides = ((Py_ssize_t *)PyArray_STRIDES(__pyx_v_self));
29298 
29299     /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":290
29300  *             else:
29301  *                 info.strides = <Py_ssize_t*>PyArray_STRIDES(self)
29302  *                 info.shape = <Py_ssize_t*>PyArray_DIMS(self)             # <<<<<<<<<<<<<<
29303  *             info.suboffsets = NULL
29304  *             info.itemsize = PyArray_ITEMSIZE(self)
29305  */
29306     __pyx_v_info->shape = ((Py_ssize_t *)PyArray_DIMS(__pyx_v_self));
29307   }
29308   __pyx_L9:;
29309 
29310   /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":291
29311  *                 info.strides = <Py_ssize_t*>PyArray_STRIDES(self)
29312  *                 info.shape = <Py_ssize_t*>PyArray_DIMS(self)
29313  *             info.suboffsets = NULL             # <<<<<<<<<<<<<<
29314  *             info.itemsize = PyArray_ITEMSIZE(self)
29315  *             info.readonly = not PyArray_ISWRITEABLE(self)
29316  */
29317   __pyx_v_info->suboffsets = NULL;
29318 
29319   /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":292
29320  *                 info.shape = <Py_ssize_t*>PyArray_DIMS(self)
29321  *             info.suboffsets = NULL
29322  *             info.itemsize = PyArray_ITEMSIZE(self)             # <<<<<<<<<<<<<<
29323  *             info.readonly = not PyArray_ISWRITEABLE(self)
29324  *
29325  */
29326   __pyx_v_info->itemsize = PyArray_ITEMSIZE(__pyx_v_self);
29327 
29328   /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":293
29329  *             info.suboffsets = NULL
29330  *             info.itemsize = PyArray_ITEMSIZE(self)
29331  *             info.readonly = not PyArray_ISWRITEABLE(self)             # <<<<<<<<<<<<<<
29332  *
29333  *             cdef int t
29334  */
29335   __pyx_v_info->readonly = (!(PyArray_ISWRITEABLE(__pyx_v_self) != 0));
29336 
29337   /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":296
29338  *
29339  *             cdef int t
29340  *             cdef char* f = NULL             # <<<<<<<<<<<<<<
29341  *             cdef dtype descr = <dtype>PyArray_DESCR(self)
29342  *             cdef int offset
29343  */
29344   __pyx_v_f = NULL;
29345 
29346   /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":297
29347  *             cdef int t
29348  *             cdef char* f = NULL
29349  *             cdef dtype descr = <dtype>PyArray_DESCR(self)             # <<<<<<<<<<<<<<
29350  *             cdef int offset
29351  *
29352  */
29353   __pyx_t_7 = PyArray_DESCR(__pyx_v_self);
29354   __pyx_t_3 = ((PyObject *)__pyx_t_7);
29355   __Pyx_INCREF(__pyx_t_3);
29356   __pyx_v_descr = ((PyArray_Descr *)__pyx_t_3);
29357   __pyx_t_3 = 0;
29358 
29359   /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":300
29360  *             cdef int offset
29361  *
29362  *             info.obj = self             # <<<<<<<<<<<<<<
29363  *
29364  *             if not PyDataType_HASFIELDS(descr):
29365  */
29366   __Pyx_INCREF(((PyObject *)__pyx_v_self));
29367   __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
29368   __Pyx_GOTREF(__pyx_v_info->obj);
29369   __Pyx_DECREF(__pyx_v_info->obj);
29370   __pyx_v_info->obj = ((PyObject *)__pyx_v_self);
29371 
29372   /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":302
29373  *             info.obj = self
29374  *
29375  *             if not PyDataType_HASFIELDS(descr):             # <<<<<<<<<<<<<<
29376  *                 t = descr.type_num
29377  *                 if ((descr.byteorder == c'>' and little_endian) or
29378  */
29379   __pyx_t_1 = ((!(PyDataType_HASFIELDS(__pyx_v_descr) != 0)) != 0);
29380   if (__pyx_t_1) {
29381 
29382     /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":303
29383  *
29384  *             if not PyDataType_HASFIELDS(descr):
29385  *                 t = descr.type_num             # <<<<<<<<<<<<<<
29386  *                 if ((descr.byteorder == c'>' and little_endian) or
29387  *                     (descr.byteorder == c'<' and not little_endian)):
29388  */
29389     __pyx_t_4 = __pyx_v_descr->type_num;
29390     __pyx_v_t = __pyx_t_4;
29391 
29392     /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":304
29393  *             if not PyDataType_HASFIELDS(descr):
29394  *                 t = descr.type_num
29395  *                 if ((descr.byteorder == c'>' and little_endian) or             # <<<<<<<<<<<<<<
29396  *                     (descr.byteorder == c'<' and not little_endian)):
29397  *                     raise ValueError(u"Non-native byte order not supported")
29398  */
29399     __pyx_t_2 = ((__pyx_v_descr->byteorder == '>') != 0);
29400     if (!__pyx_t_2) {
29401       goto __pyx_L15_next_or;
29402     } else {
29403     }
29404     __pyx_t_2 = (__pyx_v_little_endian != 0);
29405     if (!__pyx_t_2) {
29406     } else {
29407       __pyx_t_1 = __pyx_t_2;
29408       goto __pyx_L14_bool_binop_done;
29409     }
29410     __pyx_L15_next_or:;
29411 
29412     /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":305
29413  *                 t = descr.type_num
29414  *                 if ((descr.byteorder == c'>' and little_endian) or
29415  *                     (descr.byteorder == c'<' and not little_endian)):             # <<<<<<<<<<<<<<
29416  *                     raise ValueError(u"Non-native byte order not supported")
29417  *                 if   t == NPY_BYTE:        f = "b"
29418  */
29419     __pyx_t_2 = ((__pyx_v_descr->byteorder == '<') != 0);
29420     if (__pyx_t_2) {
29421     } else {
29422       __pyx_t_1 = __pyx_t_2;
29423       goto __pyx_L14_bool_binop_done;
29424     }
29425     __pyx_t_2 = ((!(__pyx_v_little_endian != 0)) != 0);
29426     __pyx_t_1 = __pyx_t_2;
29427     __pyx_L14_bool_binop_done:;
29428 
29429     /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":304
29430  *             if not PyDataType_HASFIELDS(descr):
29431  *                 t = descr.type_num
29432  *                 if ((descr.byteorder == c'>' and little_endian) or             # <<<<<<<<<<<<<<
29433  *                     (descr.byteorder == c'<' and not little_endian)):
29434  *                     raise ValueError(u"Non-native byte order not supported")
29435  */
29436     if (unlikely(__pyx_t_1)) {
29437 
29438       /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":306
29439  *                 if ((descr.byteorder == c'>' and little_endian) or
29440  *                     (descr.byteorder == c'<' and not little_endian)):
29441  *                     raise ValueError(u"Non-native byte order not supported")             # <<<<<<<<<<<<<<
29442  *                 if   t == NPY_BYTE:        f = "b"
29443  *                 elif t == NPY_UBYTE:       f = "B"
29444  */
29445       __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__24, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 306, __pyx_L1_error)
29446       __Pyx_GOTREF(__pyx_t_3);
29447       __Pyx_Raise(__pyx_t_3, 0, 0, 0);
29448       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
29449       __PYX_ERR(2, 306, __pyx_L1_error)
29450 
29451       /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":304
29452  *             if not PyDataType_HASFIELDS(descr):
29453  *                 t = descr.type_num
29454  *                 if ((descr.byteorder == c'>' and little_endian) or             # <<<<<<<<<<<<<<
29455  *                     (descr.byteorder == c'<' and not little_endian)):
29456  *                     raise ValueError(u"Non-native byte order not supported")
29457  */
29458     }
29459 
29460     /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":307
29461  *                     (descr.byteorder == c'<' and not little_endian)):
29462  *                     raise ValueError(u"Non-native byte order not supported")
29463  *                 if   t == NPY_BYTE:        f = "b"             # <<<<<<<<<<<<<<
29464  *                 elif t == NPY_UBYTE:       f = "B"
29465  *                 elif t == NPY_SHORT:       f = "h"
29466  */
29467     switch (__pyx_v_t) {
29468       case NPY_BYTE:
29469       __pyx_v_f = ((char *)"b");
29470       break;
29471       case NPY_UBYTE:
29472 
29473       /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":308
29474  *                     raise ValueError(u"Non-native byte order not supported")
29475  *                 if   t == NPY_BYTE:        f = "b"
29476  *                 elif t == NPY_UBYTE:       f = "B"             # <<<<<<<<<<<<<<
29477  *                 elif t == NPY_SHORT:       f = "h"
29478  *                 elif t == NPY_USHORT:      f = "H"
29479  */
29480       __pyx_v_f = ((char *)"B");
29481       break;
29482       case NPY_SHORT:
29483 
29484       /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":309
29485  *                 if   t == NPY_BYTE:        f = "b"
29486  *                 elif t == NPY_UBYTE:       f = "B"
29487  *                 elif t == NPY_SHORT:       f = "h"             # <<<<<<<<<<<<<<
29488  *                 elif t == NPY_USHORT:      f = "H"
29489  *                 elif t == NPY_INT:         f = "i"
29490  */
29491       __pyx_v_f = ((char *)"h");
29492       break;
29493       case NPY_USHORT:
29494 
29495       /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":310
29496  *                 elif t == NPY_UBYTE:       f = "B"
29497  *                 elif t == NPY_SHORT:       f = "h"
29498  *                 elif t == NPY_USHORT:      f = "H"             # <<<<<<<<<<<<<<
29499  *                 elif t == NPY_INT:         f = "i"
29500  *                 elif t == NPY_UINT:        f = "I"
29501  */
29502       __pyx_v_f = ((char *)"H");
29503       break;
29504       case NPY_INT:
29505 
29506       /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":311
29507  *                 elif t == NPY_SHORT:       f = "h"
29508  *                 elif t == NPY_USHORT:      f = "H"
29509  *                 elif t == NPY_INT:         f = "i"             # <<<<<<<<<<<<<<
29510  *                 elif t == NPY_UINT:        f = "I"
29511  *                 elif t == NPY_LONG:        f = "l"
29512  */
29513       __pyx_v_f = ((char *)"i");
29514       break;
29515       case NPY_UINT:
29516 
29517       /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":312
29518  *                 elif t == NPY_USHORT:      f = "H"
29519  *                 elif t == NPY_INT:         f = "i"
29520  *                 elif t == NPY_UINT:        f = "I"             # <<<<<<<<<<<<<<
29521  *                 elif t == NPY_LONG:        f = "l"
29522  *                 elif t == NPY_ULONG:       f = "L"
29523  */
29524       __pyx_v_f = ((char *)"I");
29525       break;
29526       case NPY_LONG:
29527 
29528       /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":313
29529  *                 elif t == NPY_INT:         f = "i"
29530  *                 elif t == NPY_UINT:        f = "I"
29531  *                 elif t == NPY_LONG:        f = "l"             # <<<<<<<<<<<<<<
29532  *                 elif t == NPY_ULONG:       f = "L"
29533  *                 elif t == NPY_LONGLONG:    f = "q"
29534  */
29535       __pyx_v_f = ((char *)"l");
29536       break;
29537       case NPY_ULONG:
29538 
29539       /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":314
29540  *                 elif t == NPY_UINT:        f = "I"
29541  *                 elif t == NPY_LONG:        f = "l"
29542  *                 elif t == NPY_ULONG:       f = "L"             # <<<<<<<<<<<<<<
29543  *                 elif t == NPY_LONGLONG:    f = "q"
29544  *                 elif t == NPY_ULONGLONG:   f = "Q"
29545  */
29546       __pyx_v_f = ((char *)"L");
29547       break;
29548       case NPY_LONGLONG:
29549 
29550       /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":315
29551  *                 elif t == NPY_LONG:        f = "l"
29552  *                 elif t == NPY_ULONG:       f = "L"
29553  *                 elif t == NPY_LONGLONG:    f = "q"             # <<<<<<<<<<<<<<
29554  *                 elif t == NPY_ULONGLONG:   f = "Q"
29555  *                 elif t == NPY_FLOAT:       f = "f"
29556  */
29557       __pyx_v_f = ((char *)"q");
29558       break;
29559       case NPY_ULONGLONG:
29560 
29561       /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":316
29562  *                 elif t == NPY_ULONG:       f = "L"
29563  *                 elif t == NPY_LONGLONG:    f = "q"
29564  *                 elif t == NPY_ULONGLONG:   f = "Q"             # <<<<<<<<<<<<<<
29565  *                 elif t == NPY_FLOAT:       f = "f"
29566  *                 elif t == NPY_DOUBLE:      f = "d"
29567  */
29568       __pyx_v_f = ((char *)"Q");
29569       break;
29570       case NPY_FLOAT:
29571 
29572       /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":317
29573  *                 elif t == NPY_LONGLONG:    f = "q"
29574  *                 elif t == NPY_ULONGLONG:   f = "Q"
29575  *                 elif t == NPY_FLOAT:       f = "f"             # <<<<<<<<<<<<<<
29576  *                 elif t == NPY_DOUBLE:      f = "d"
29577  *                 elif t == NPY_LONGDOUBLE:  f = "g"
29578  */
29579       __pyx_v_f = ((char *)"f");
29580       break;
29581       case NPY_DOUBLE:
29582 
29583       /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":318
29584  *                 elif t == NPY_ULONGLONG:   f = "Q"
29585  *                 elif t == NPY_FLOAT:       f = "f"
29586  *                 elif t == NPY_DOUBLE:      f = "d"             # <<<<<<<<<<<<<<
29587  *                 elif t == NPY_LONGDOUBLE:  f = "g"
29588  *                 elif t == NPY_CFLOAT:      f = "Zf"
29589  */
29590       __pyx_v_f = ((char *)"d");
29591       break;
29592       case NPY_LONGDOUBLE:
29593 
29594       /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":319
29595  *                 elif t == NPY_FLOAT:       f = "f"
29596  *                 elif t == NPY_DOUBLE:      f = "d"
29597  *                 elif t == NPY_LONGDOUBLE:  f = "g"             # <<<<<<<<<<<<<<
29598  *                 elif t == NPY_CFLOAT:      f = "Zf"
29599  *                 elif t == NPY_CDOUBLE:     f = "Zd"
29600  */
29601       __pyx_v_f = ((char *)"g");
29602       break;
29603       case NPY_CFLOAT:
29604 
29605       /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":320
29606  *                 elif t == NPY_DOUBLE:      f = "d"
29607  *                 elif t == NPY_LONGDOUBLE:  f = "g"
29608  *                 elif t == NPY_CFLOAT:      f = "Zf"             # <<<<<<<<<<<<<<
29609  *                 elif t == NPY_CDOUBLE:     f = "Zd"
29610  *                 elif t == NPY_CLONGDOUBLE: f = "Zg"
29611  */
29612       __pyx_v_f = ((char *)"Zf");
29613       break;
29614       case NPY_CDOUBLE:
29615 
29616       /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":321
29617  *                 elif t == NPY_LONGDOUBLE:  f = "g"
29618  *                 elif t == NPY_CFLOAT:      f = "Zf"
29619  *                 elif t == NPY_CDOUBLE:     f = "Zd"             # <<<<<<<<<<<<<<
29620  *                 elif t == NPY_CLONGDOUBLE: f = "Zg"
29621  *                 elif t == NPY_OBJECT:      f = "O"
29622  */
29623       __pyx_v_f = ((char *)"Zd");
29624       break;
29625       case NPY_CLONGDOUBLE:
29626 
29627       /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":322
29628  *                 elif t == NPY_CFLOAT:      f = "Zf"
29629  *                 elif t == NPY_CDOUBLE:     f = "Zd"
29630  *                 elif t == NPY_CLONGDOUBLE: f = "Zg"             # <<<<<<<<<<<<<<
29631  *                 elif t == NPY_OBJECT:      f = "O"
29632  *                 else:
29633  */
29634       __pyx_v_f = ((char *)"Zg");
29635       break;
29636       case NPY_OBJECT:
29637 
29638       /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":323
29639  *                 elif t == NPY_CDOUBLE:     f = "Zd"
29640  *                 elif t == NPY_CLONGDOUBLE: f = "Zg"
29641  *                 elif t == NPY_OBJECT:      f = "O"             # <<<<<<<<<<<<<<
29642  *                 else:
29643  *                     raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)
29644  */
29645       __pyx_v_f = ((char *)"O");
29646       break;
29647       default:
29648 
29649       /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":325
29650  *                 elif t == NPY_OBJECT:      f = "O"
29651  *                 else:
29652  *                     raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)             # <<<<<<<<<<<<<<
29653  *                 info.format = f
29654  *                 return
29655  */
29656       __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_t); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 325, __pyx_L1_error)
29657       __Pyx_GOTREF(__pyx_t_3);
29658       __pyx_t_8 = PyUnicode_Format(__pyx_kp_u_unknown_dtype_code_in_numpy_pxd, __pyx_t_3); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 325, __pyx_L1_error)
29659       __Pyx_GOTREF(__pyx_t_8);
29660       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
29661       __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 325, __pyx_L1_error)
29662       __Pyx_GOTREF(__pyx_t_3);
29663       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
29664       __Pyx_Raise(__pyx_t_3, 0, 0, 0);
29665       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
29666       __PYX_ERR(2, 325, __pyx_L1_error)
29667       break;
29668     }
29669 
29670     /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":326
29671  *                 else:
29672  *                     raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)
29673  *                 info.format = f             # <<<<<<<<<<<<<<
29674  *                 return
29675  *             else:
29676  */
29677     __pyx_v_info->format = __pyx_v_f;
29678 
29679     /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":327
29680  *                     raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)
29681  *                 info.format = f
29682  *                 return             # <<<<<<<<<<<<<<
29683  *             else:
29684  *                 info.format = <char*>PyObject_Malloc(_buffer_format_string_len)
29685  */
29686     __pyx_r = 0;
29687     goto __pyx_L0;
29688 
29689     /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":302
29690  *             info.obj = self
29691  *
29692  *             if not PyDataType_HASFIELDS(descr):             # <<<<<<<<<<<<<<
29693  *                 t = descr.type_num
29694  *                 if ((descr.byteorder == c'>' and little_endian) or
29695  */
29696   }
29697 
29698   /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":329
29699  *                 return
29700  *             else:
29701  *                 info.format = <char*>PyObject_Malloc(_buffer_format_string_len)             # <<<<<<<<<<<<<<
29702  *                 info.format[0] = c'^' # Native data types, manual alignment
29703  *                 offset = 0
29704  */
29705   /*else*/ {
29706     __pyx_v_info->format = ((char *)PyObject_Malloc(0xFF));
29707 
29708     /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":330
29709  *             else:
29710  *                 info.format = <char*>PyObject_Malloc(_buffer_format_string_len)
29711  *                 info.format[0] = c'^' # Native data types, manual alignment             # <<<<<<<<<<<<<<
29712  *                 offset = 0
29713  *                 f = _util_dtypestring(descr, info.format + 1,
29714  */
29715     (__pyx_v_info->format[0]) = '^';
29716 
29717     /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":331
29718  *                 info.format = <char*>PyObject_Malloc(_buffer_format_string_len)
29719  *                 info.format[0] = c'^' # Native data types, manual alignment
29720  *                 offset = 0             # <<<<<<<<<<<<<<
29721  *                 f = _util_dtypestring(descr, info.format + 1,
29722  *                                       info.format + _buffer_format_string_len,
29723  */
29724     __pyx_v_offset = 0;
29725 
29726     /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":332
29727  *                 info.format[0] = c'^' # Native data types, manual alignment
29728  *                 offset = 0
29729  *                 f = _util_dtypestring(descr, info.format + 1,             # <<<<<<<<<<<<<<
29730  *                                       info.format + _buffer_format_string_len,
29731  *                                       &offset)
29732  */
29733     __pyx_t_9 = __pyx_f_5numpy__util_dtypestring(__pyx_v_descr, (__pyx_v_info->format + 1), (__pyx_v_info->format + 0xFF), (&__pyx_v_offset)); if (unlikely(__pyx_t_9 == ((char *)NULL))) __PYX_ERR(2, 332, __pyx_L1_error)
29734     __pyx_v_f = __pyx_t_9;
29735 
29736     /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":335
29737  *                                       info.format + _buffer_format_string_len,
29738  *                                       &offset)
29739  *                 f[0] = c'\0' # Terminate format string             # <<<<<<<<<<<<<<
29740  *
29741  *         def __releasebuffer__(ndarray self, Py_buffer* info):
29742  */
29743     (__pyx_v_f[0]) = '\x00';
29744   }
29745 
29746   /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":258
29747  *         # experimental exception made for __getbuffer__ and __releasebuffer__
29748  *         # -- the details of this may change.
29749  *         def __getbuffer__(ndarray self, Py_buffer* info, int flags):             # <<<<<<<<<<<<<<
29750  *             # This implementation of getbuffer is geared towards Cython
29751  *             # requirements, and does not yet fulfill the PEP.
29752  */
29753 
29754   /* function exit code */
29755   __pyx_r = 0;
29756   goto __pyx_L0;
29757   __pyx_L1_error:;
29758   __Pyx_XDECREF(__pyx_t_3);
29759   __Pyx_XDECREF(__pyx_t_8);
29760   __Pyx_AddTraceback("numpy.ndarray.__getbuffer__", __pyx_clineno, __pyx_lineno, __pyx_filename);
29761   __pyx_r = -1;
29762   if (__pyx_v_info->obj != NULL) {
29763     __Pyx_GOTREF(__pyx_v_info->obj);
29764     __Pyx_DECREF(__pyx_v_info->obj); __pyx_v_info->obj = 0;
29765   }
29766   goto __pyx_L2;
29767   __pyx_L0:;
29768   if (__pyx_v_info->obj == Py_None) {
29769     __Pyx_GOTREF(__pyx_v_info->obj);
29770     __Pyx_DECREF(__pyx_v_info->obj); __pyx_v_info->obj = 0;
29771   }
29772   __pyx_L2:;
29773   __Pyx_XDECREF((PyObject *)__pyx_v_descr);
29774   __Pyx_RefNannyFinishContext();
29775   return __pyx_r;
29776 }
29777 
29778 /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":337
29779  *                 f[0] = c'\0' # Terminate format string
29780  *
29781  *         def __releasebuffer__(ndarray self, Py_buffer* info):             # <<<<<<<<<<<<<<
29782  *             if PyArray_HASFIELDS(self):
29783  *                 PyObject_Free(info.format)
29784  */
29785 
29786 /* Python wrapper */
29787 static CYTHON_UNUSED void __pyx_pw_5numpy_7ndarray_3__releasebuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info); /*proto*/
__pyx_pw_5numpy_7ndarray_3__releasebuffer__(PyObject * __pyx_v_self,Py_buffer * __pyx_v_info)29788 static CYTHON_UNUSED void __pyx_pw_5numpy_7ndarray_3__releasebuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info) {
29789   __Pyx_RefNannyDeclarations
29790   __Pyx_RefNannySetupContext("__releasebuffer__ (wrapper)", 0);
29791   __pyx_pf_5numpy_7ndarray_2__releasebuffer__(((PyArrayObject *)__pyx_v_self), ((Py_buffer *)__pyx_v_info));
29792 
29793   /* function exit code */
29794   __Pyx_RefNannyFinishContext();
29795 }
29796 
__pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject * __pyx_v_self,Py_buffer * __pyx_v_info)29797 static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_self, Py_buffer *__pyx_v_info) {
29798   __Pyx_RefNannyDeclarations
29799   int __pyx_t_1;
29800   __Pyx_RefNannySetupContext("__releasebuffer__", 0);
29801 
29802   /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":338
29803  *
29804  *         def __releasebuffer__(ndarray self, Py_buffer* info):
29805  *             if PyArray_HASFIELDS(self):             # <<<<<<<<<<<<<<
29806  *                 PyObject_Free(info.format)
29807  *             if sizeof(npy_intp) != sizeof(Py_ssize_t):
29808  */
29809   __pyx_t_1 = (PyArray_HASFIELDS(__pyx_v_self) != 0);
29810   if (__pyx_t_1) {
29811 
29812     /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":339
29813  *         def __releasebuffer__(ndarray self, Py_buffer* info):
29814  *             if PyArray_HASFIELDS(self):
29815  *                 PyObject_Free(info.format)             # <<<<<<<<<<<<<<
29816  *             if sizeof(npy_intp) != sizeof(Py_ssize_t):
29817  *                 PyObject_Free(info.strides)
29818  */
29819     PyObject_Free(__pyx_v_info->format);
29820 
29821     /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":338
29822  *
29823  *         def __releasebuffer__(ndarray self, Py_buffer* info):
29824  *             if PyArray_HASFIELDS(self):             # <<<<<<<<<<<<<<
29825  *                 PyObject_Free(info.format)
29826  *             if sizeof(npy_intp) != sizeof(Py_ssize_t):
29827  */
29828   }
29829 
29830   /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":340
29831  *             if PyArray_HASFIELDS(self):
29832  *                 PyObject_Free(info.format)
29833  *             if sizeof(npy_intp) != sizeof(Py_ssize_t):             # <<<<<<<<<<<<<<
29834  *                 PyObject_Free(info.strides)
29835  *                 # info.shape was stored after info.strides in the same block
29836  */
29837   __pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0);
29838   if (__pyx_t_1) {
29839 
29840     /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":341
29841  *                 PyObject_Free(info.format)
29842  *             if sizeof(npy_intp) != sizeof(Py_ssize_t):
29843  *                 PyObject_Free(info.strides)             # <<<<<<<<<<<<<<
29844  *                 # info.shape was stored after info.strides in the same block
29845  *
29846  */
29847     PyObject_Free(__pyx_v_info->strides);
29848 
29849     /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":340
29850  *             if PyArray_HASFIELDS(self):
29851  *                 PyObject_Free(info.format)
29852  *             if sizeof(npy_intp) != sizeof(Py_ssize_t):             # <<<<<<<<<<<<<<
29853  *                 PyObject_Free(info.strides)
29854  *                 # info.shape was stored after info.strides in the same block
29855  */
29856   }
29857 
29858   /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":337
29859  *                 f[0] = c'\0' # Terminate format string
29860  *
29861  *         def __releasebuffer__(ndarray self, Py_buffer* info):             # <<<<<<<<<<<<<<
29862  *             if PyArray_HASFIELDS(self):
29863  *                 PyObject_Free(info.format)
29864  */
29865 
29866   /* function exit code */
29867   __Pyx_RefNannyFinishContext();
29868 }
29869 
29870 /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":821
29871  * ctypedef npy_cdouble     complex_t
29872  *
29873  * cdef inline object PyArray_MultiIterNew1(a):             # <<<<<<<<<<<<<<
29874  *     return PyArray_MultiIterNew(1, <void*>a)
29875  *
29876  */
29877 
__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject * __pyx_v_a)29878 static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__pyx_v_a) {
29879   PyObject *__pyx_r = NULL;
29880   __Pyx_RefNannyDeclarations
29881   PyObject *__pyx_t_1 = NULL;
29882   __Pyx_RefNannySetupContext("PyArray_MultiIterNew1", 0);
29883 
29884   /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":822
29885  *
29886  * cdef inline object PyArray_MultiIterNew1(a):
29887  *     return PyArray_MultiIterNew(1, <void*>a)             # <<<<<<<<<<<<<<
29888  *
29889  * cdef inline object PyArray_MultiIterNew2(a, b):
29890  */
29891   __Pyx_XDECREF(__pyx_r);
29892   __pyx_t_1 = PyArray_MultiIterNew(1, ((void *)__pyx_v_a)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 822, __pyx_L1_error)
29893   __Pyx_GOTREF(__pyx_t_1);
29894   __pyx_r = __pyx_t_1;
29895   __pyx_t_1 = 0;
29896   goto __pyx_L0;
29897 
29898   /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":821
29899  * ctypedef npy_cdouble     complex_t
29900  *
29901  * cdef inline object PyArray_MultiIterNew1(a):             # <<<<<<<<<<<<<<
29902  *     return PyArray_MultiIterNew(1, <void*>a)
29903  *
29904  */
29905 
29906   /* function exit code */
29907   __pyx_L1_error:;
29908   __Pyx_XDECREF(__pyx_t_1);
29909   __Pyx_AddTraceback("numpy.PyArray_MultiIterNew1", __pyx_clineno, __pyx_lineno, __pyx_filename);
29910   __pyx_r = 0;
29911   __pyx_L0:;
29912   __Pyx_XGIVEREF(__pyx_r);
29913   __Pyx_RefNannyFinishContext();
29914   return __pyx_r;
29915 }
29916 
29917 /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":824
29918  *     return PyArray_MultiIterNew(1, <void*>a)
29919  *
29920  * cdef inline object PyArray_MultiIterNew2(a, b):             # <<<<<<<<<<<<<<
29921  *     return PyArray_MultiIterNew(2, <void*>a, <void*>b)
29922  *
29923  */
29924 
__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject * __pyx_v_a,PyObject * __pyx_v_b)29925 static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__pyx_v_a, PyObject *__pyx_v_b) {
29926   PyObject *__pyx_r = NULL;
29927   __Pyx_RefNannyDeclarations
29928   PyObject *__pyx_t_1 = NULL;
29929   __Pyx_RefNannySetupContext("PyArray_MultiIterNew2", 0);
29930 
29931   /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":825
29932  *
29933  * cdef inline object PyArray_MultiIterNew2(a, b):
29934  *     return PyArray_MultiIterNew(2, <void*>a, <void*>b)             # <<<<<<<<<<<<<<
29935  *
29936  * cdef inline object PyArray_MultiIterNew3(a, b, c):
29937  */
29938   __Pyx_XDECREF(__pyx_r);
29939   __pyx_t_1 = PyArray_MultiIterNew(2, ((void *)__pyx_v_a), ((void *)__pyx_v_b)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 825, __pyx_L1_error)
29940   __Pyx_GOTREF(__pyx_t_1);
29941   __pyx_r = __pyx_t_1;
29942   __pyx_t_1 = 0;
29943   goto __pyx_L0;
29944 
29945   /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":824
29946  *     return PyArray_MultiIterNew(1, <void*>a)
29947  *
29948  * cdef inline object PyArray_MultiIterNew2(a, b):             # <<<<<<<<<<<<<<
29949  *     return PyArray_MultiIterNew(2, <void*>a, <void*>b)
29950  *
29951  */
29952 
29953   /* function exit code */
29954   __pyx_L1_error:;
29955   __Pyx_XDECREF(__pyx_t_1);
29956   __Pyx_AddTraceback("numpy.PyArray_MultiIterNew2", __pyx_clineno, __pyx_lineno, __pyx_filename);
29957   __pyx_r = 0;
29958   __pyx_L0:;
29959   __Pyx_XGIVEREF(__pyx_r);
29960   __Pyx_RefNannyFinishContext();
29961   return __pyx_r;
29962 }
29963 
29964 /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":827
29965  *     return PyArray_MultiIterNew(2, <void*>a, <void*>b)
29966  *
29967  * cdef inline object PyArray_MultiIterNew3(a, b, c):             # <<<<<<<<<<<<<<
29968  *     return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)
29969  *
29970  */
29971 
__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject * __pyx_v_a,PyObject * __pyx_v_b,PyObject * __pyx_v_c)29972 static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__pyx_v_a, PyObject *__pyx_v_b, PyObject *__pyx_v_c) {
29973   PyObject *__pyx_r = NULL;
29974   __Pyx_RefNannyDeclarations
29975   PyObject *__pyx_t_1 = NULL;
29976   __Pyx_RefNannySetupContext("PyArray_MultiIterNew3", 0);
29977 
29978   /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":828
29979  *
29980  * cdef inline object PyArray_MultiIterNew3(a, b, c):
29981  *     return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)             # <<<<<<<<<<<<<<
29982  *
29983  * cdef inline object PyArray_MultiIterNew4(a, b, c, d):
29984  */
29985   __Pyx_XDECREF(__pyx_r);
29986   __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(2, 828, __pyx_L1_error)
29987   __Pyx_GOTREF(__pyx_t_1);
29988   __pyx_r = __pyx_t_1;
29989   __pyx_t_1 = 0;
29990   goto __pyx_L0;
29991 
29992   /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":827
29993  *     return PyArray_MultiIterNew(2, <void*>a, <void*>b)
29994  *
29995  * cdef inline object PyArray_MultiIterNew3(a, b, c):             # <<<<<<<<<<<<<<
29996  *     return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)
29997  *
29998  */
29999 
30000   /* function exit code */
30001   __pyx_L1_error:;
30002   __Pyx_XDECREF(__pyx_t_1);
30003   __Pyx_AddTraceback("numpy.PyArray_MultiIterNew3", __pyx_clineno, __pyx_lineno, __pyx_filename);
30004   __pyx_r = 0;
30005   __pyx_L0:;
30006   __Pyx_XGIVEREF(__pyx_r);
30007   __Pyx_RefNannyFinishContext();
30008   return __pyx_r;
30009 }
30010 
30011 /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":830
30012  *     return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)
30013  *
30014  * cdef inline object PyArray_MultiIterNew4(a, b, c, d):             # <<<<<<<<<<<<<<
30015  *     return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)
30016  *
30017  */
30018 
__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject * __pyx_v_a,PyObject * __pyx_v_b,PyObject * __pyx_v_c,PyObject * __pyx_v_d)30019 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) {
30020   PyObject *__pyx_r = NULL;
30021   __Pyx_RefNannyDeclarations
30022   PyObject *__pyx_t_1 = NULL;
30023   __Pyx_RefNannySetupContext("PyArray_MultiIterNew4", 0);
30024 
30025   /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":831
30026  *
30027  * cdef inline object PyArray_MultiIterNew4(a, b, c, d):
30028  *     return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)             # <<<<<<<<<<<<<<
30029  *
30030  * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e):
30031  */
30032   __Pyx_XDECREF(__pyx_r);
30033   __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(2, 831, __pyx_L1_error)
30034   __Pyx_GOTREF(__pyx_t_1);
30035   __pyx_r = __pyx_t_1;
30036   __pyx_t_1 = 0;
30037   goto __pyx_L0;
30038 
30039   /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":830
30040  *     return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)
30041  *
30042  * cdef inline object PyArray_MultiIterNew4(a, b, c, d):             # <<<<<<<<<<<<<<
30043  *     return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)
30044  *
30045  */
30046 
30047   /* function exit code */
30048   __pyx_L1_error:;
30049   __Pyx_XDECREF(__pyx_t_1);
30050   __Pyx_AddTraceback("numpy.PyArray_MultiIterNew4", __pyx_clineno, __pyx_lineno, __pyx_filename);
30051   __pyx_r = 0;
30052   __pyx_L0:;
30053   __Pyx_XGIVEREF(__pyx_r);
30054   __Pyx_RefNannyFinishContext();
30055   return __pyx_r;
30056 }
30057 
30058 /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":833
30059  *     return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)
30060  *
30061  * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e):             # <<<<<<<<<<<<<<
30062  *     return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)
30063  *
30064  */
30065 
__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)30066 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) {
30067   PyObject *__pyx_r = NULL;
30068   __Pyx_RefNannyDeclarations
30069   PyObject *__pyx_t_1 = NULL;
30070   __Pyx_RefNannySetupContext("PyArray_MultiIterNew5", 0);
30071 
30072   /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":834
30073  *
30074  * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e):
30075  *     return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)             # <<<<<<<<<<<<<<
30076  *
30077  * cdef inline tuple PyDataType_SHAPE(dtype d):
30078  */
30079   __Pyx_XDECREF(__pyx_r);
30080   __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(2, 834, __pyx_L1_error)
30081   __Pyx_GOTREF(__pyx_t_1);
30082   __pyx_r = __pyx_t_1;
30083   __pyx_t_1 = 0;
30084   goto __pyx_L0;
30085 
30086   /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":833
30087  *     return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)
30088  *
30089  * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e):             # <<<<<<<<<<<<<<
30090  *     return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)
30091  *
30092  */
30093 
30094   /* function exit code */
30095   __pyx_L1_error:;
30096   __Pyx_XDECREF(__pyx_t_1);
30097   __Pyx_AddTraceback("numpy.PyArray_MultiIterNew5", __pyx_clineno, __pyx_lineno, __pyx_filename);
30098   __pyx_r = 0;
30099   __pyx_L0:;
30100   __Pyx_XGIVEREF(__pyx_r);
30101   __Pyx_RefNannyFinishContext();
30102   return __pyx_r;
30103 }
30104 
30105 /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":836
30106  *     return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)
30107  *
30108  * cdef inline tuple PyDataType_SHAPE(dtype d):             # <<<<<<<<<<<<<<
30109  *     if PyDataType_HASSUBARRAY(d):
30110  *         return <tuple>d.subarray.shape
30111  */
30112 
__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr * __pyx_v_d)30113 static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__pyx_v_d) {
30114   PyObject *__pyx_r = NULL;
30115   __Pyx_RefNannyDeclarations
30116   int __pyx_t_1;
30117   __Pyx_RefNannySetupContext("PyDataType_SHAPE", 0);
30118 
30119   /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":837
30120  *
30121  * cdef inline tuple PyDataType_SHAPE(dtype d):
30122  *     if PyDataType_HASSUBARRAY(d):             # <<<<<<<<<<<<<<
30123  *         return <tuple>d.subarray.shape
30124  *     else:
30125  */
30126   __pyx_t_1 = (PyDataType_HASSUBARRAY(__pyx_v_d) != 0);
30127   if (__pyx_t_1) {
30128 
30129     /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":838
30130  * cdef inline tuple PyDataType_SHAPE(dtype d):
30131  *     if PyDataType_HASSUBARRAY(d):
30132  *         return <tuple>d.subarray.shape             # <<<<<<<<<<<<<<
30133  *     else:
30134  *         return ()
30135  */
30136     __Pyx_XDECREF(__pyx_r);
30137     __Pyx_INCREF(((PyObject*)__pyx_v_d->subarray->shape));
30138     __pyx_r = ((PyObject*)__pyx_v_d->subarray->shape);
30139     goto __pyx_L0;
30140 
30141     /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":837
30142  *
30143  * cdef inline tuple PyDataType_SHAPE(dtype d):
30144  *     if PyDataType_HASSUBARRAY(d):             # <<<<<<<<<<<<<<
30145  *         return <tuple>d.subarray.shape
30146  *     else:
30147  */
30148   }
30149 
30150   /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":840
30151  *         return <tuple>d.subarray.shape
30152  *     else:
30153  *         return ()             # <<<<<<<<<<<<<<
30154  *
30155  * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL:
30156  */
30157   /*else*/ {
30158     __Pyx_XDECREF(__pyx_r);
30159     __Pyx_INCREF(__pyx_empty_tuple);
30160     __pyx_r = __pyx_empty_tuple;
30161     goto __pyx_L0;
30162   }
30163 
30164   /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":836
30165  *     return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)
30166  *
30167  * cdef inline tuple PyDataType_SHAPE(dtype d):             # <<<<<<<<<<<<<<
30168  *     if PyDataType_HASSUBARRAY(d):
30169  *         return <tuple>d.subarray.shape
30170  */
30171 
30172   /* function exit code */
30173   __pyx_L0:;
30174   __Pyx_XGIVEREF(__pyx_r);
30175   __Pyx_RefNannyFinishContext();
30176   return __pyx_r;
30177 }
30178 
30179 /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":842
30180  *         return ()
30181  *
30182  * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL:             # <<<<<<<<<<<<<<
30183  *     # Recursive utility function used in __getbuffer__ to get format
30184  *     # string. The new location in the format string is returned.
30185  */
30186 
__pyx_f_5numpy__util_dtypestring(PyArray_Descr * __pyx_v_descr,char * __pyx_v_f,char * __pyx_v_end,int * __pyx_v_offset)30187 static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx_v_descr, char *__pyx_v_f, char *__pyx_v_end, int *__pyx_v_offset) {
30188   PyArray_Descr *__pyx_v_child = 0;
30189   int __pyx_v_endian_detector;
30190   int __pyx_v_little_endian;
30191   PyObject *__pyx_v_fields = 0;
30192   PyObject *__pyx_v_childname = NULL;
30193   PyObject *__pyx_v_new_offset = NULL;
30194   PyObject *__pyx_v_t = NULL;
30195   char *__pyx_r;
30196   __Pyx_RefNannyDeclarations
30197   PyObject *__pyx_t_1 = NULL;
30198   Py_ssize_t __pyx_t_2;
30199   PyObject *__pyx_t_3 = NULL;
30200   PyObject *__pyx_t_4 = NULL;
30201   int __pyx_t_5;
30202   int __pyx_t_6;
30203   int __pyx_t_7;
30204   long __pyx_t_8;
30205   char *__pyx_t_9;
30206   __Pyx_RefNannySetupContext("_util_dtypestring", 0);
30207 
30208   /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":847
30209  *
30210  *     cdef dtype child
30211  *     cdef int endian_detector = 1             # <<<<<<<<<<<<<<
30212  *     cdef bint little_endian = ((<char*>&endian_detector)[0] != 0)
30213  *     cdef tuple fields
30214  */
30215   __pyx_v_endian_detector = 1;
30216 
30217   /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":848
30218  *     cdef dtype child
30219  *     cdef int endian_detector = 1
30220  *     cdef bint little_endian = ((<char*>&endian_detector)[0] != 0)             # <<<<<<<<<<<<<<
30221  *     cdef tuple fields
30222  *
30223  */
30224   __pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0);
30225 
30226   /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":851
30227  *     cdef tuple fields
30228  *
30229  *     for childname in descr.names:             # <<<<<<<<<<<<<<
30230  *         fields = descr.fields[childname]
30231  *         child, new_offset = fields
30232  */
30233   if (unlikely(__pyx_v_descr->names == Py_None)) {
30234     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
30235     __PYX_ERR(2, 851, __pyx_L1_error)
30236   }
30237   __pyx_t_1 = __pyx_v_descr->names; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
30238   for (;;) {
30239     if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
30240     #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
30241     __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(2, 851, __pyx_L1_error)
30242     #else
30243     __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 851, __pyx_L1_error)
30244     __Pyx_GOTREF(__pyx_t_3);
30245     #endif
30246     __Pyx_XDECREF_SET(__pyx_v_childname, __pyx_t_3);
30247     __pyx_t_3 = 0;
30248 
30249     /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":852
30250  *
30251  *     for childname in descr.names:
30252  *         fields = descr.fields[childname]             # <<<<<<<<<<<<<<
30253  *         child, new_offset = fields
30254  *
30255  */
30256     if (unlikely(__pyx_v_descr->fields == Py_None)) {
30257       PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
30258       __PYX_ERR(2, 852, __pyx_L1_error)
30259     }
30260     __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_descr->fields, __pyx_v_childname); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 852, __pyx_L1_error)
30261     __Pyx_GOTREF(__pyx_t_3);
30262     if (!(likely(PyTuple_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_3)->tp_name), 0))) __PYX_ERR(2, 852, __pyx_L1_error)
30263     __Pyx_XDECREF_SET(__pyx_v_fields, ((PyObject*)__pyx_t_3));
30264     __pyx_t_3 = 0;
30265 
30266     /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":853
30267  *     for childname in descr.names:
30268  *         fields = descr.fields[childname]
30269  *         child, new_offset = fields             # <<<<<<<<<<<<<<
30270  *
30271  *         if (end - f) - <int>(new_offset - offset[0]) < 15:
30272  */
30273     if (likely(__pyx_v_fields != Py_None)) {
30274       PyObject* sequence = __pyx_v_fields;
30275       Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
30276       if (unlikely(size != 2)) {
30277         if (size > 2) __Pyx_RaiseTooManyValuesError(2);
30278         else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
30279         __PYX_ERR(2, 853, __pyx_L1_error)
30280       }
30281       #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
30282       __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0);
30283       __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1);
30284       __Pyx_INCREF(__pyx_t_3);
30285       __Pyx_INCREF(__pyx_t_4);
30286       #else
30287       __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 853, __pyx_L1_error)
30288       __Pyx_GOTREF(__pyx_t_3);
30289       __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 853, __pyx_L1_error)
30290       __Pyx_GOTREF(__pyx_t_4);
30291       #endif
30292     } else {
30293       __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(2, 853, __pyx_L1_error)
30294     }
30295     if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_dtype))))) __PYX_ERR(2, 853, __pyx_L1_error)
30296     __Pyx_XDECREF_SET(__pyx_v_child, ((PyArray_Descr *)__pyx_t_3));
30297     __pyx_t_3 = 0;
30298     __Pyx_XDECREF_SET(__pyx_v_new_offset, __pyx_t_4);
30299     __pyx_t_4 = 0;
30300 
30301     /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":855
30302  *         child, new_offset = fields
30303  *
30304  *         if (end - f) - <int>(new_offset - offset[0]) < 15:             # <<<<<<<<<<<<<<
30305  *             raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd")
30306  *
30307  */
30308     __pyx_t_4 = __Pyx_PyInt_From_int((__pyx_v_offset[0])); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 855, __pyx_L1_error)
30309     __Pyx_GOTREF(__pyx_t_4);
30310     __pyx_t_3 = PyNumber_Subtract(__pyx_v_new_offset, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 855, __pyx_L1_error)
30311     __Pyx_GOTREF(__pyx_t_3);
30312     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
30313     __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 855, __pyx_L1_error)
30314     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
30315     __pyx_t_6 = ((((__pyx_v_end - __pyx_v_f) - ((int)__pyx_t_5)) < 15) != 0);
30316     if (unlikely(__pyx_t_6)) {
30317 
30318       /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":856
30319  *
30320  *         if (end - f) - <int>(new_offset - offset[0]) < 15:
30321  *             raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd")             # <<<<<<<<<<<<<<
30322  *
30323  *         if ((child.byteorder == c'>' and little_endian) or
30324  */
30325       __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__25, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 856, __pyx_L1_error)
30326       __Pyx_GOTREF(__pyx_t_3);
30327       __Pyx_Raise(__pyx_t_3, 0, 0, 0);
30328       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
30329       __PYX_ERR(2, 856, __pyx_L1_error)
30330 
30331       /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":855
30332  *         child, new_offset = fields
30333  *
30334  *         if (end - f) - <int>(new_offset - offset[0]) < 15:             # <<<<<<<<<<<<<<
30335  *             raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd")
30336  *
30337  */
30338     }
30339 
30340     /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":858
30341  *             raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd")
30342  *
30343  *         if ((child.byteorder == c'>' and little_endian) or             # <<<<<<<<<<<<<<
30344  *             (child.byteorder == c'<' and not little_endian)):
30345  *             raise ValueError(u"Non-native byte order not supported")
30346  */
30347     __pyx_t_7 = ((__pyx_v_child->byteorder == '>') != 0);
30348     if (!__pyx_t_7) {
30349       goto __pyx_L8_next_or;
30350     } else {
30351     }
30352     __pyx_t_7 = (__pyx_v_little_endian != 0);
30353     if (!__pyx_t_7) {
30354     } else {
30355       __pyx_t_6 = __pyx_t_7;
30356       goto __pyx_L7_bool_binop_done;
30357     }
30358     __pyx_L8_next_or:;
30359 
30360     /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":859
30361  *
30362  *         if ((child.byteorder == c'>' and little_endian) or
30363  *             (child.byteorder == c'<' and not little_endian)):             # <<<<<<<<<<<<<<
30364  *             raise ValueError(u"Non-native byte order not supported")
30365  *             # One could encode it in the format string and have Cython
30366  */
30367     __pyx_t_7 = ((__pyx_v_child->byteorder == '<') != 0);
30368     if (__pyx_t_7) {
30369     } else {
30370       __pyx_t_6 = __pyx_t_7;
30371       goto __pyx_L7_bool_binop_done;
30372     }
30373     __pyx_t_7 = ((!(__pyx_v_little_endian != 0)) != 0);
30374     __pyx_t_6 = __pyx_t_7;
30375     __pyx_L7_bool_binop_done:;
30376 
30377     /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":858
30378  *             raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd")
30379  *
30380  *         if ((child.byteorder == c'>' and little_endian) or             # <<<<<<<<<<<<<<
30381  *             (child.byteorder == c'<' and not little_endian)):
30382  *             raise ValueError(u"Non-native byte order not supported")
30383  */
30384     if (unlikely(__pyx_t_6)) {
30385 
30386       /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":860
30387  *         if ((child.byteorder == c'>' and little_endian) or
30388  *             (child.byteorder == c'<' and not little_endian)):
30389  *             raise ValueError(u"Non-native byte order not supported")             # <<<<<<<<<<<<<<
30390  *             # One could encode it in the format string and have Cython
30391  *             # complain instead, BUT: < and > in format strings also imply
30392  */
30393       __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__24, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 860, __pyx_L1_error)
30394       __Pyx_GOTREF(__pyx_t_3);
30395       __Pyx_Raise(__pyx_t_3, 0, 0, 0);
30396       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
30397       __PYX_ERR(2, 860, __pyx_L1_error)
30398 
30399       /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":858
30400  *             raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd")
30401  *
30402  *         if ((child.byteorder == c'>' and little_endian) or             # <<<<<<<<<<<<<<
30403  *             (child.byteorder == c'<' and not little_endian)):
30404  *             raise ValueError(u"Non-native byte order not supported")
30405  */
30406     }
30407 
30408     /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":870
30409  *
30410  *         # Output padding bytes
30411  *         while offset[0] < new_offset:             # <<<<<<<<<<<<<<
30412  *             f[0] = 120 # "x"; pad byte
30413  *             f += 1
30414  */
30415     while (1) {
30416       __pyx_t_3 = __Pyx_PyInt_From_int((__pyx_v_offset[0])); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 870, __pyx_L1_error)
30417       __Pyx_GOTREF(__pyx_t_3);
30418       __pyx_t_4 = PyObject_RichCompare(__pyx_t_3, __pyx_v_new_offset, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 870, __pyx_L1_error)
30419       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
30420       __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 870, __pyx_L1_error)
30421       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
30422       if (!__pyx_t_6) break;
30423 
30424       /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":871
30425  *         # Output padding bytes
30426  *         while offset[0] < new_offset:
30427  *             f[0] = 120 # "x"; pad byte             # <<<<<<<<<<<<<<
30428  *             f += 1
30429  *             offset[0] += 1
30430  */
30431       (__pyx_v_f[0]) = 0x78;
30432 
30433       /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":872
30434  *         while offset[0] < new_offset:
30435  *             f[0] = 120 # "x"; pad byte
30436  *             f += 1             # <<<<<<<<<<<<<<
30437  *             offset[0] += 1
30438  *
30439  */
30440       __pyx_v_f = (__pyx_v_f + 1);
30441 
30442       /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":873
30443  *             f[0] = 120 # "x"; pad byte
30444  *             f += 1
30445  *             offset[0] += 1             # <<<<<<<<<<<<<<
30446  *
30447  *         offset[0] += child.itemsize
30448  */
30449       __pyx_t_8 = 0;
30450       (__pyx_v_offset[__pyx_t_8]) = ((__pyx_v_offset[__pyx_t_8]) + 1);
30451     }
30452 
30453     /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":875
30454  *             offset[0] += 1
30455  *
30456  *         offset[0] += child.itemsize             # <<<<<<<<<<<<<<
30457  *
30458  *         if not PyDataType_HASFIELDS(child):
30459  */
30460     __pyx_t_8 = 0;
30461     (__pyx_v_offset[__pyx_t_8]) = ((__pyx_v_offset[__pyx_t_8]) + __pyx_v_child->elsize);
30462 
30463     /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":877
30464  *         offset[0] += child.itemsize
30465  *
30466  *         if not PyDataType_HASFIELDS(child):             # <<<<<<<<<<<<<<
30467  *             t = child.type_num
30468  *             if end - f < 5:
30469  */
30470     __pyx_t_6 = ((!(PyDataType_HASFIELDS(__pyx_v_child) != 0)) != 0);
30471     if (__pyx_t_6) {
30472 
30473       /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":878
30474  *
30475  *         if not PyDataType_HASFIELDS(child):
30476  *             t = child.type_num             # <<<<<<<<<<<<<<
30477  *             if end - f < 5:
30478  *                 raise RuntimeError(u"Format string allocated too short.")
30479  */
30480       __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_child->type_num); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 878, __pyx_L1_error)
30481       __Pyx_GOTREF(__pyx_t_4);
30482       __Pyx_XDECREF_SET(__pyx_v_t, __pyx_t_4);
30483       __pyx_t_4 = 0;
30484 
30485       /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":879
30486  *         if not PyDataType_HASFIELDS(child):
30487  *             t = child.type_num
30488  *             if end - f < 5:             # <<<<<<<<<<<<<<
30489  *                 raise RuntimeError(u"Format string allocated too short.")
30490  *
30491  */
30492       __pyx_t_6 = (((__pyx_v_end - __pyx_v_f) < 5) != 0);
30493       if (unlikely(__pyx_t_6)) {
30494 
30495         /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":880
30496  *             t = child.type_num
30497  *             if end - f < 5:
30498  *                 raise RuntimeError(u"Format string allocated too short.")             # <<<<<<<<<<<<<<
30499  *
30500  *             # Until ticket #99 is fixed, use integers to avoid warnings
30501  */
30502         __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__26, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 880, __pyx_L1_error)
30503         __Pyx_GOTREF(__pyx_t_4);
30504         __Pyx_Raise(__pyx_t_4, 0, 0, 0);
30505         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
30506         __PYX_ERR(2, 880, __pyx_L1_error)
30507 
30508         /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":879
30509  *         if not PyDataType_HASFIELDS(child):
30510  *             t = child.type_num
30511  *             if end - f < 5:             # <<<<<<<<<<<<<<
30512  *                 raise RuntimeError(u"Format string allocated too short.")
30513  *
30514  */
30515       }
30516 
30517       /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":883
30518  *
30519  *             # Until ticket #99 is fixed, use integers to avoid warnings
30520  *             if   t == NPY_BYTE:        f[0] =  98 #"b"             # <<<<<<<<<<<<<<
30521  *             elif t == NPY_UBYTE:       f[0] =  66 #"B"
30522  *             elif t == NPY_SHORT:       f[0] = 104 #"h"
30523  */
30524       __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_BYTE); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 883, __pyx_L1_error)
30525       __Pyx_GOTREF(__pyx_t_4);
30526       __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 883, __pyx_L1_error)
30527       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
30528       __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 883, __pyx_L1_error)
30529       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
30530       if (__pyx_t_6) {
30531         (__pyx_v_f[0]) = 98;
30532         goto __pyx_L15;
30533       }
30534 
30535       /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":884
30536  *             # Until ticket #99 is fixed, use integers to avoid warnings
30537  *             if   t == NPY_BYTE:        f[0] =  98 #"b"
30538  *             elif t == NPY_UBYTE:       f[0] =  66 #"B"             # <<<<<<<<<<<<<<
30539  *             elif t == NPY_SHORT:       f[0] = 104 #"h"
30540  *             elif t == NPY_USHORT:      f[0] =  72 #"H"
30541  */
30542       __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_UBYTE); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 884, __pyx_L1_error)
30543       __Pyx_GOTREF(__pyx_t_3);
30544       __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 884, __pyx_L1_error)
30545       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
30546       __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 884, __pyx_L1_error)
30547       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
30548       if (__pyx_t_6) {
30549         (__pyx_v_f[0]) = 66;
30550         goto __pyx_L15;
30551       }
30552 
30553       /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":885
30554  *             if   t == NPY_BYTE:        f[0] =  98 #"b"
30555  *             elif t == NPY_UBYTE:       f[0] =  66 #"B"
30556  *             elif t == NPY_SHORT:       f[0] = 104 #"h"             # <<<<<<<<<<<<<<
30557  *             elif t == NPY_USHORT:      f[0] =  72 #"H"
30558  *             elif t == NPY_INT:         f[0] = 105 #"i"
30559  */
30560       __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_SHORT); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 885, __pyx_L1_error)
30561       __Pyx_GOTREF(__pyx_t_4);
30562       __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 885, __pyx_L1_error)
30563       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
30564       __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 885, __pyx_L1_error)
30565       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
30566       if (__pyx_t_6) {
30567         (__pyx_v_f[0]) = 0x68;
30568         goto __pyx_L15;
30569       }
30570 
30571       /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":886
30572  *             elif t == NPY_UBYTE:       f[0] =  66 #"B"
30573  *             elif t == NPY_SHORT:       f[0] = 104 #"h"
30574  *             elif t == NPY_USHORT:      f[0] =  72 #"H"             # <<<<<<<<<<<<<<
30575  *             elif t == NPY_INT:         f[0] = 105 #"i"
30576  *             elif t == NPY_UINT:        f[0] =  73 #"I"
30577  */
30578       __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_USHORT); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 886, __pyx_L1_error)
30579       __Pyx_GOTREF(__pyx_t_3);
30580       __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 886, __pyx_L1_error)
30581       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
30582       __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 886, __pyx_L1_error)
30583       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
30584       if (__pyx_t_6) {
30585         (__pyx_v_f[0]) = 72;
30586         goto __pyx_L15;
30587       }
30588 
30589       /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":887
30590  *             elif t == NPY_SHORT:       f[0] = 104 #"h"
30591  *             elif t == NPY_USHORT:      f[0] =  72 #"H"
30592  *             elif t == NPY_INT:         f[0] = 105 #"i"             # <<<<<<<<<<<<<<
30593  *             elif t == NPY_UINT:        f[0] =  73 #"I"
30594  *             elif t == NPY_LONG:        f[0] = 108 #"l"
30595  */
30596       __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_INT); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 887, __pyx_L1_error)
30597       __Pyx_GOTREF(__pyx_t_4);
30598       __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 887, __pyx_L1_error)
30599       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
30600       __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 887, __pyx_L1_error)
30601       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
30602       if (__pyx_t_6) {
30603         (__pyx_v_f[0]) = 0x69;
30604         goto __pyx_L15;
30605       }
30606 
30607       /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":888
30608  *             elif t == NPY_USHORT:      f[0] =  72 #"H"
30609  *             elif t == NPY_INT:         f[0] = 105 #"i"
30610  *             elif t == NPY_UINT:        f[0] =  73 #"I"             # <<<<<<<<<<<<<<
30611  *             elif t == NPY_LONG:        f[0] = 108 #"l"
30612  *             elif t == NPY_ULONG:       f[0] = 76  #"L"
30613  */
30614       __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_UINT); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 888, __pyx_L1_error)
30615       __Pyx_GOTREF(__pyx_t_3);
30616       __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 888, __pyx_L1_error)
30617       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
30618       __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 888, __pyx_L1_error)
30619       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
30620       if (__pyx_t_6) {
30621         (__pyx_v_f[0]) = 73;
30622         goto __pyx_L15;
30623       }
30624 
30625       /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":889
30626  *             elif t == NPY_INT:         f[0] = 105 #"i"
30627  *             elif t == NPY_UINT:        f[0] =  73 #"I"
30628  *             elif t == NPY_LONG:        f[0] = 108 #"l"             # <<<<<<<<<<<<<<
30629  *             elif t == NPY_ULONG:       f[0] = 76  #"L"
30630  *             elif t == NPY_LONGLONG:    f[0] = 113 #"q"
30631  */
30632       __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONG); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 889, __pyx_L1_error)
30633       __Pyx_GOTREF(__pyx_t_4);
30634       __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 889, __pyx_L1_error)
30635       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
30636       __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 889, __pyx_L1_error)
30637       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
30638       if (__pyx_t_6) {
30639         (__pyx_v_f[0]) = 0x6C;
30640         goto __pyx_L15;
30641       }
30642 
30643       /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":890
30644  *             elif t == NPY_UINT:        f[0] =  73 #"I"
30645  *             elif t == NPY_LONG:        f[0] = 108 #"l"
30646  *             elif t == NPY_ULONG:       f[0] = 76  #"L"             # <<<<<<<<<<<<<<
30647  *             elif t == NPY_LONGLONG:    f[0] = 113 #"q"
30648  *             elif t == NPY_ULONGLONG:   f[0] = 81  #"Q"
30649  */
30650       __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_ULONG); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 890, __pyx_L1_error)
30651       __Pyx_GOTREF(__pyx_t_3);
30652       __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 890, __pyx_L1_error)
30653       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
30654       __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 890, __pyx_L1_error)
30655       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
30656       if (__pyx_t_6) {
30657         (__pyx_v_f[0]) = 76;
30658         goto __pyx_L15;
30659       }
30660 
30661       /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":891
30662  *             elif t == NPY_LONG:        f[0] = 108 #"l"
30663  *             elif t == NPY_ULONG:       f[0] = 76  #"L"
30664  *             elif t == NPY_LONGLONG:    f[0] = 113 #"q"             # <<<<<<<<<<<<<<
30665  *             elif t == NPY_ULONGLONG:   f[0] = 81  #"Q"
30666  *             elif t == NPY_FLOAT:       f[0] = 102 #"f"
30667  */
30668       __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONGLONG); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 891, __pyx_L1_error)
30669       __Pyx_GOTREF(__pyx_t_4);
30670       __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 891, __pyx_L1_error)
30671       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
30672       __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 891, __pyx_L1_error)
30673       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
30674       if (__pyx_t_6) {
30675         (__pyx_v_f[0]) = 0x71;
30676         goto __pyx_L15;
30677       }
30678 
30679       /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":892
30680  *             elif t == NPY_ULONG:       f[0] = 76  #"L"
30681  *             elif t == NPY_LONGLONG:    f[0] = 113 #"q"
30682  *             elif t == NPY_ULONGLONG:   f[0] = 81  #"Q"             # <<<<<<<<<<<<<<
30683  *             elif t == NPY_FLOAT:       f[0] = 102 #"f"
30684  *             elif t == NPY_DOUBLE:      f[0] = 100 #"d"
30685  */
30686       __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_ULONGLONG); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 892, __pyx_L1_error)
30687       __Pyx_GOTREF(__pyx_t_3);
30688       __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 892, __pyx_L1_error)
30689       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
30690       __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 892, __pyx_L1_error)
30691       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
30692       if (__pyx_t_6) {
30693         (__pyx_v_f[0]) = 81;
30694         goto __pyx_L15;
30695       }
30696 
30697       /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":893
30698  *             elif t == NPY_LONGLONG:    f[0] = 113 #"q"
30699  *             elif t == NPY_ULONGLONG:   f[0] = 81  #"Q"
30700  *             elif t == NPY_FLOAT:       f[0] = 102 #"f"             # <<<<<<<<<<<<<<
30701  *             elif t == NPY_DOUBLE:      f[0] = 100 #"d"
30702  *             elif t == NPY_LONGDOUBLE:  f[0] = 103 #"g"
30703  */
30704       __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_FLOAT); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 893, __pyx_L1_error)
30705       __Pyx_GOTREF(__pyx_t_4);
30706       __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 893, __pyx_L1_error)
30707       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
30708       __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 893, __pyx_L1_error)
30709       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
30710       if (__pyx_t_6) {
30711         (__pyx_v_f[0]) = 0x66;
30712         goto __pyx_L15;
30713       }
30714 
30715       /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":894
30716  *             elif t == NPY_ULONGLONG:   f[0] = 81  #"Q"
30717  *             elif t == NPY_FLOAT:       f[0] = 102 #"f"
30718  *             elif t == NPY_DOUBLE:      f[0] = 100 #"d"             # <<<<<<<<<<<<<<
30719  *             elif t == NPY_LONGDOUBLE:  f[0] = 103 #"g"
30720  *             elif t == NPY_CFLOAT:      f[0] = 90; f[1] = 102; f += 1 # Zf
30721  */
30722       __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_DOUBLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 894, __pyx_L1_error)
30723       __Pyx_GOTREF(__pyx_t_3);
30724       __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 894, __pyx_L1_error)
30725       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
30726       __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 894, __pyx_L1_error)
30727       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
30728       if (__pyx_t_6) {
30729         (__pyx_v_f[0]) = 0x64;
30730         goto __pyx_L15;
30731       }
30732 
30733       /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":895
30734  *             elif t == NPY_FLOAT:       f[0] = 102 #"f"
30735  *             elif t == NPY_DOUBLE:      f[0] = 100 #"d"
30736  *             elif t == NPY_LONGDOUBLE:  f[0] = 103 #"g"             # <<<<<<<<<<<<<<
30737  *             elif t == NPY_CFLOAT:      f[0] = 90; f[1] = 102; f += 1 # Zf
30738  *             elif t == NPY_CDOUBLE:     f[0] = 90; f[1] = 100; f += 1 # Zd
30739  */
30740       __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_LONGDOUBLE); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 895, __pyx_L1_error)
30741       __Pyx_GOTREF(__pyx_t_4);
30742       __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 895, __pyx_L1_error)
30743       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
30744       __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 895, __pyx_L1_error)
30745       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
30746       if (__pyx_t_6) {
30747         (__pyx_v_f[0]) = 0x67;
30748         goto __pyx_L15;
30749       }
30750 
30751       /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":896
30752  *             elif t == NPY_DOUBLE:      f[0] = 100 #"d"
30753  *             elif t == NPY_LONGDOUBLE:  f[0] = 103 #"g"
30754  *             elif t == NPY_CFLOAT:      f[0] = 90; f[1] = 102; f += 1 # Zf             # <<<<<<<<<<<<<<
30755  *             elif t == NPY_CDOUBLE:     f[0] = 90; f[1] = 100; f += 1 # Zd
30756  *             elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg
30757  */
30758       __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CFLOAT); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 896, __pyx_L1_error)
30759       __Pyx_GOTREF(__pyx_t_3);
30760       __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 896, __pyx_L1_error)
30761       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
30762       __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 896, __pyx_L1_error)
30763       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
30764       if (__pyx_t_6) {
30765         (__pyx_v_f[0]) = 90;
30766         (__pyx_v_f[1]) = 0x66;
30767         __pyx_v_f = (__pyx_v_f + 1);
30768         goto __pyx_L15;
30769       }
30770 
30771       /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":897
30772  *             elif t == NPY_LONGDOUBLE:  f[0] = 103 #"g"
30773  *             elif t == NPY_CFLOAT:      f[0] = 90; f[1] = 102; f += 1 # Zf
30774  *             elif t == NPY_CDOUBLE:     f[0] = 90; f[1] = 100; f += 1 # Zd             # <<<<<<<<<<<<<<
30775  *             elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg
30776  *             elif t == NPY_OBJECT:      f[0] = 79 #"O"
30777  */
30778       __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CDOUBLE); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 897, __pyx_L1_error)
30779       __Pyx_GOTREF(__pyx_t_4);
30780       __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 897, __pyx_L1_error)
30781       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
30782       __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 897, __pyx_L1_error)
30783       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
30784       if (__pyx_t_6) {
30785         (__pyx_v_f[0]) = 90;
30786         (__pyx_v_f[1]) = 0x64;
30787         __pyx_v_f = (__pyx_v_f + 1);
30788         goto __pyx_L15;
30789       }
30790 
30791       /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":898
30792  *             elif t == NPY_CFLOAT:      f[0] = 90; f[1] = 102; f += 1 # Zf
30793  *             elif t == NPY_CDOUBLE:     f[0] = 90; f[1] = 100; f += 1 # Zd
30794  *             elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg             # <<<<<<<<<<<<<<
30795  *             elif t == NPY_OBJECT:      f[0] = 79 #"O"
30796  *             else:
30797  */
30798       __pyx_t_3 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_CLONGDOUBLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 898, __pyx_L1_error)
30799       __Pyx_GOTREF(__pyx_t_3);
30800       __pyx_t_4 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 898, __pyx_L1_error)
30801       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
30802       __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 898, __pyx_L1_error)
30803       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
30804       if (__pyx_t_6) {
30805         (__pyx_v_f[0]) = 90;
30806         (__pyx_v_f[1]) = 0x67;
30807         __pyx_v_f = (__pyx_v_f + 1);
30808         goto __pyx_L15;
30809       }
30810 
30811       /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":899
30812  *             elif t == NPY_CDOUBLE:     f[0] = 90; f[1] = 100; f += 1 # Zd
30813  *             elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg
30814  *             elif t == NPY_OBJECT:      f[0] = 79 #"O"             # <<<<<<<<<<<<<<
30815  *             else:
30816  *                 raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)
30817  */
30818       __pyx_t_4 = __Pyx_PyInt_From_enum__NPY_TYPES(NPY_OBJECT); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 899, __pyx_L1_error)
30819       __Pyx_GOTREF(__pyx_t_4);
30820       __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 899, __pyx_L1_error)
30821       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
30822       __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(2, 899, __pyx_L1_error)
30823       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
30824       if (likely(__pyx_t_6)) {
30825         (__pyx_v_f[0]) = 79;
30826         goto __pyx_L15;
30827       }
30828 
30829       /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":901
30830  *             elif t == NPY_OBJECT:      f[0] = 79 #"O"
30831  *             else:
30832  *                 raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)             # <<<<<<<<<<<<<<
30833  *             f += 1
30834  *         else:
30835  */
30836       /*else*/ {
30837         __pyx_t_3 = __Pyx_PyUnicode_FormatSafe(__pyx_kp_u_unknown_dtype_code_in_numpy_pxd, __pyx_v_t); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 901, __pyx_L1_error)
30838         __Pyx_GOTREF(__pyx_t_3);
30839         __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 901, __pyx_L1_error)
30840         __Pyx_GOTREF(__pyx_t_4);
30841         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
30842         __Pyx_Raise(__pyx_t_4, 0, 0, 0);
30843         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
30844         __PYX_ERR(2, 901, __pyx_L1_error)
30845       }
30846       __pyx_L15:;
30847 
30848       /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":902
30849  *             else:
30850  *                 raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)
30851  *             f += 1             # <<<<<<<<<<<<<<
30852  *         else:
30853  *             # Cython ignores struct boundary information ("T{...}"),
30854  */
30855       __pyx_v_f = (__pyx_v_f + 1);
30856 
30857       /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":877
30858  *         offset[0] += child.itemsize
30859  *
30860  *         if not PyDataType_HASFIELDS(child):             # <<<<<<<<<<<<<<
30861  *             t = child.type_num
30862  *             if end - f < 5:
30863  */
30864       goto __pyx_L13;
30865     }
30866 
30867     /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":906
30868  *             # Cython ignores struct boundary information ("T{...}"),
30869  *             # so don't output it
30870  *             f = _util_dtypestring(child, f, end, offset)             # <<<<<<<<<<<<<<
30871  *     return f
30872  *
30873  */
30874     /*else*/ {
30875       __pyx_t_9 = __pyx_f_5numpy__util_dtypestring(__pyx_v_child, __pyx_v_f, __pyx_v_end, __pyx_v_offset); if (unlikely(__pyx_t_9 == ((char *)NULL))) __PYX_ERR(2, 906, __pyx_L1_error)
30876       __pyx_v_f = __pyx_t_9;
30877     }
30878     __pyx_L13:;
30879 
30880     /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":851
30881  *     cdef tuple fields
30882  *
30883  *     for childname in descr.names:             # <<<<<<<<<<<<<<
30884  *         fields = descr.fields[childname]
30885  *         child, new_offset = fields
30886  */
30887   }
30888   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
30889 
30890   /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":907
30891  *             # so don't output it
30892  *             f = _util_dtypestring(child, f, end, offset)
30893  *     return f             # <<<<<<<<<<<<<<
30894  *
30895  *
30896  */
30897   __pyx_r = __pyx_v_f;
30898   goto __pyx_L0;
30899 
30900   /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":842
30901  *         return ()
30902  *
30903  * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL:             # <<<<<<<<<<<<<<
30904  *     # Recursive utility function used in __getbuffer__ to get format
30905  *     # string. The new location in the format string is returned.
30906  */
30907 
30908   /* function exit code */
30909   __pyx_L1_error:;
30910   __Pyx_XDECREF(__pyx_t_1);
30911   __Pyx_XDECREF(__pyx_t_3);
30912   __Pyx_XDECREF(__pyx_t_4);
30913   __Pyx_AddTraceback("numpy._util_dtypestring", __pyx_clineno, __pyx_lineno, __pyx_filename);
30914   __pyx_r = NULL;
30915   __pyx_L0:;
30916   __Pyx_XDECREF((PyObject *)__pyx_v_child);
30917   __Pyx_XDECREF(__pyx_v_fields);
30918   __Pyx_XDECREF(__pyx_v_childname);
30919   __Pyx_XDECREF(__pyx_v_new_offset);
30920   __Pyx_XDECREF(__pyx_v_t);
30921   __Pyx_RefNannyFinishContext();
30922   return __pyx_r;
30923 }
30924 
30925 /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":1022
30926  *     int _import_umath() except -1
30927  *
30928  * cdef inline void set_array_base(ndarray arr, object base):             # <<<<<<<<<<<<<<
30929  *     Py_INCREF(base) # important to do this before stealing the reference below!
30930  *     PyArray_SetBaseObject(arr, base)
30931  */
30932 
__pyx_f_5numpy_set_array_base(PyArrayObject * __pyx_v_arr,PyObject * __pyx_v_base)30933 static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_arr, PyObject *__pyx_v_base) {
30934   __Pyx_RefNannyDeclarations
30935   __Pyx_RefNannySetupContext("set_array_base", 0);
30936 
30937   /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":1023
30938  *
30939  * cdef inline void set_array_base(ndarray arr, object base):
30940  *     Py_INCREF(base) # important to do this before stealing the reference below!             # <<<<<<<<<<<<<<
30941  *     PyArray_SetBaseObject(arr, base)
30942  *
30943  */
30944   Py_INCREF(__pyx_v_base);
30945 
30946   /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":1024
30947  * cdef inline void set_array_base(ndarray arr, object base):
30948  *     Py_INCREF(base) # important to do this before stealing the reference below!
30949  *     PyArray_SetBaseObject(arr, base)             # <<<<<<<<<<<<<<
30950  *
30951  * cdef inline object get_array_base(ndarray arr):
30952  */
30953   (void)(PyArray_SetBaseObject(__pyx_v_arr, __pyx_v_base));
30954 
30955   /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":1022
30956  *     int _import_umath() except -1
30957  *
30958  * cdef inline void set_array_base(ndarray arr, object base):             # <<<<<<<<<<<<<<
30959  *     Py_INCREF(base) # important to do this before stealing the reference below!
30960  *     PyArray_SetBaseObject(arr, base)
30961  */
30962 
30963   /* function exit code */
30964   __Pyx_RefNannyFinishContext();
30965 }
30966 
30967 /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":1026
30968  *     PyArray_SetBaseObject(arr, base)
30969  *
30970  * cdef inline object get_array_base(ndarray arr):             # <<<<<<<<<<<<<<
30971  *     base = PyArray_BASE(arr)
30972  *     if base is NULL:
30973  */
30974 
__pyx_f_5numpy_get_array_base(PyArrayObject * __pyx_v_arr)30975 static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__pyx_v_arr) {
30976   PyObject *__pyx_v_base;
30977   PyObject *__pyx_r = NULL;
30978   __Pyx_RefNannyDeclarations
30979   int __pyx_t_1;
30980   __Pyx_RefNannySetupContext("get_array_base", 0);
30981 
30982   /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":1027
30983  *
30984  * cdef inline object get_array_base(ndarray arr):
30985  *     base = PyArray_BASE(arr)             # <<<<<<<<<<<<<<
30986  *     if base is NULL:
30987  *         return None
30988  */
30989   __pyx_v_base = PyArray_BASE(__pyx_v_arr);
30990 
30991   /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":1028
30992  * cdef inline object get_array_base(ndarray arr):
30993  *     base = PyArray_BASE(arr)
30994  *     if base is NULL:             # <<<<<<<<<<<<<<
30995  *         return None
30996  *     return <object>base
30997  */
30998   __pyx_t_1 = ((__pyx_v_base == NULL) != 0);
30999   if (__pyx_t_1) {
31000 
31001     /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":1029
31002  *     base = PyArray_BASE(arr)
31003  *     if base is NULL:
31004  *         return None             # <<<<<<<<<<<<<<
31005  *     return <object>base
31006  *
31007  */
31008     __Pyx_XDECREF(__pyx_r);
31009     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
31010     goto __pyx_L0;
31011 
31012     /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":1028
31013  * cdef inline object get_array_base(ndarray arr):
31014  *     base = PyArray_BASE(arr)
31015  *     if base is NULL:             # <<<<<<<<<<<<<<
31016  *         return None
31017  *     return <object>base
31018  */
31019   }
31020 
31021   /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":1030
31022  *     if base is NULL:
31023  *         return None
31024  *     return <object>base             # <<<<<<<<<<<<<<
31025  *
31026  * # Versions of the import_* functions which are more suitable for
31027  */
31028   __Pyx_XDECREF(__pyx_r);
31029   __Pyx_INCREF(((PyObject *)__pyx_v_base));
31030   __pyx_r = ((PyObject *)__pyx_v_base);
31031   goto __pyx_L0;
31032 
31033   /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":1026
31034  *     PyArray_SetBaseObject(arr, base)
31035  *
31036  * cdef inline object get_array_base(ndarray arr):             # <<<<<<<<<<<<<<
31037  *     base = PyArray_BASE(arr)
31038  *     if base is NULL:
31039  */
31040 
31041   /* function exit code */
31042   __pyx_L0:;
31043   __Pyx_XGIVEREF(__pyx_r);
31044   __Pyx_RefNannyFinishContext();
31045   return __pyx_r;
31046 }
31047 
31048 /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":1034
31049  * # Versions of the import_* functions which are more suitable for
31050  * # Cython code.
31051  * cdef inline int import_array() except -1:             # <<<<<<<<<<<<<<
31052  *     try:
31053  *         _import_array()
31054  */
31055 
__pyx_f_5numpy_import_array(void)31056 static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) {
31057   int __pyx_r;
31058   __Pyx_RefNannyDeclarations
31059   PyObject *__pyx_t_1 = NULL;
31060   PyObject *__pyx_t_2 = NULL;
31061   PyObject *__pyx_t_3 = NULL;
31062   int __pyx_t_4;
31063   PyObject *__pyx_t_5 = NULL;
31064   PyObject *__pyx_t_6 = NULL;
31065   PyObject *__pyx_t_7 = NULL;
31066   PyObject *__pyx_t_8 = NULL;
31067   __Pyx_RefNannySetupContext("import_array", 0);
31068 
31069   /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":1035
31070  * # Cython code.
31071  * cdef inline int import_array() except -1:
31072  *     try:             # <<<<<<<<<<<<<<
31073  *         _import_array()
31074  *     except Exception:
31075  */
31076   {
31077     __Pyx_PyThreadState_declare
31078     __Pyx_PyThreadState_assign
31079     __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
31080     __Pyx_XGOTREF(__pyx_t_1);
31081     __Pyx_XGOTREF(__pyx_t_2);
31082     __Pyx_XGOTREF(__pyx_t_3);
31083     /*try:*/ {
31084 
31085       /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":1036
31086  * cdef inline int import_array() except -1:
31087  *     try:
31088  *         _import_array()             # <<<<<<<<<<<<<<
31089  *     except Exception:
31090  *         raise ImportError("numpy.core.multiarray failed to import")
31091  */
31092       __pyx_t_4 = _import_array(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1036, __pyx_L3_error)
31093 
31094       /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":1035
31095  * # Cython code.
31096  * cdef inline int import_array() except -1:
31097  *     try:             # <<<<<<<<<<<<<<
31098  *         _import_array()
31099  *     except Exception:
31100  */
31101     }
31102     __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
31103     __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
31104     __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
31105     goto __pyx_L8_try_end;
31106     __pyx_L3_error:;
31107 
31108     /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":1037
31109  *     try:
31110  *         _import_array()
31111  *     except Exception:             # <<<<<<<<<<<<<<
31112  *         raise ImportError("numpy.core.multiarray failed to import")
31113  *
31114  */
31115     __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])));
31116     if (__pyx_t_4) {
31117       __Pyx_AddTraceback("numpy.import_array", __pyx_clineno, __pyx_lineno, __pyx_filename);
31118       if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(2, 1037, __pyx_L5_except_error)
31119       __Pyx_GOTREF(__pyx_t_5);
31120       __Pyx_GOTREF(__pyx_t_6);
31121       __Pyx_GOTREF(__pyx_t_7);
31122 
31123       /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":1038
31124  *         _import_array()
31125  *     except Exception:
31126  *         raise ImportError("numpy.core.multiarray failed to import")             # <<<<<<<<<<<<<<
31127  *
31128  * cdef inline int import_umath() except -1:
31129  */
31130       __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__27, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 1038, __pyx_L5_except_error)
31131       __Pyx_GOTREF(__pyx_t_8);
31132       __Pyx_Raise(__pyx_t_8, 0, 0, 0);
31133       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
31134       __PYX_ERR(2, 1038, __pyx_L5_except_error)
31135     }
31136     goto __pyx_L5_except_error;
31137     __pyx_L5_except_error:;
31138 
31139     /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":1035
31140  * # Cython code.
31141  * cdef inline int import_array() except -1:
31142  *     try:             # <<<<<<<<<<<<<<
31143  *         _import_array()
31144  *     except Exception:
31145  */
31146     __Pyx_XGIVEREF(__pyx_t_1);
31147     __Pyx_XGIVEREF(__pyx_t_2);
31148     __Pyx_XGIVEREF(__pyx_t_3);
31149     __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
31150     goto __pyx_L1_error;
31151     __pyx_L8_try_end:;
31152   }
31153 
31154   /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":1034
31155  * # Versions of the import_* functions which are more suitable for
31156  * # Cython code.
31157  * cdef inline int import_array() except -1:             # <<<<<<<<<<<<<<
31158  *     try:
31159  *         _import_array()
31160  */
31161 
31162   /* function exit code */
31163   __pyx_r = 0;
31164   goto __pyx_L0;
31165   __pyx_L1_error:;
31166   __Pyx_XDECREF(__pyx_t_5);
31167   __Pyx_XDECREF(__pyx_t_6);
31168   __Pyx_XDECREF(__pyx_t_7);
31169   __Pyx_XDECREF(__pyx_t_8);
31170   __Pyx_AddTraceback("numpy.import_array", __pyx_clineno, __pyx_lineno, __pyx_filename);
31171   __pyx_r = -1;
31172   __pyx_L0:;
31173   __Pyx_RefNannyFinishContext();
31174   return __pyx_r;
31175 }
31176 
31177 /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":1040
31178  *         raise ImportError("numpy.core.multiarray failed to import")
31179  *
31180  * cdef inline int import_umath() except -1:             # <<<<<<<<<<<<<<
31181  *     try:
31182  *         _import_umath()
31183  */
31184 
__pyx_f_5numpy_import_umath(void)31185 static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) {
31186   int __pyx_r;
31187   __Pyx_RefNannyDeclarations
31188   PyObject *__pyx_t_1 = NULL;
31189   PyObject *__pyx_t_2 = NULL;
31190   PyObject *__pyx_t_3 = NULL;
31191   int __pyx_t_4;
31192   PyObject *__pyx_t_5 = NULL;
31193   PyObject *__pyx_t_6 = NULL;
31194   PyObject *__pyx_t_7 = NULL;
31195   PyObject *__pyx_t_8 = NULL;
31196   __Pyx_RefNannySetupContext("import_umath", 0);
31197 
31198   /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":1041
31199  *
31200  * cdef inline int import_umath() except -1:
31201  *     try:             # <<<<<<<<<<<<<<
31202  *         _import_umath()
31203  *     except Exception:
31204  */
31205   {
31206     __Pyx_PyThreadState_declare
31207     __Pyx_PyThreadState_assign
31208     __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
31209     __Pyx_XGOTREF(__pyx_t_1);
31210     __Pyx_XGOTREF(__pyx_t_2);
31211     __Pyx_XGOTREF(__pyx_t_3);
31212     /*try:*/ {
31213 
31214       /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":1042
31215  * cdef inline int import_umath() except -1:
31216  *     try:
31217  *         _import_umath()             # <<<<<<<<<<<<<<
31218  *     except Exception:
31219  *         raise ImportError("numpy.core.umath failed to import")
31220  */
31221       __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1042, __pyx_L3_error)
31222 
31223       /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":1041
31224  *
31225  * cdef inline int import_umath() except -1:
31226  *     try:             # <<<<<<<<<<<<<<
31227  *         _import_umath()
31228  *     except Exception:
31229  */
31230     }
31231     __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
31232     __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
31233     __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
31234     goto __pyx_L8_try_end;
31235     __pyx_L3_error:;
31236 
31237     /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":1043
31238  *     try:
31239  *         _import_umath()
31240  *     except Exception:             # <<<<<<<<<<<<<<
31241  *         raise ImportError("numpy.core.umath failed to import")
31242  *
31243  */
31244     __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])));
31245     if (__pyx_t_4) {
31246       __Pyx_AddTraceback("numpy.import_umath", __pyx_clineno, __pyx_lineno, __pyx_filename);
31247       if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(2, 1043, __pyx_L5_except_error)
31248       __Pyx_GOTREF(__pyx_t_5);
31249       __Pyx_GOTREF(__pyx_t_6);
31250       __Pyx_GOTREF(__pyx_t_7);
31251 
31252       /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":1044
31253  *         _import_umath()
31254  *     except Exception:
31255  *         raise ImportError("numpy.core.umath failed to import")             # <<<<<<<<<<<<<<
31256  *
31257  * cdef inline int import_ufunc() except -1:
31258  */
31259       __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__28, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 1044, __pyx_L5_except_error)
31260       __Pyx_GOTREF(__pyx_t_8);
31261       __Pyx_Raise(__pyx_t_8, 0, 0, 0);
31262       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
31263       __PYX_ERR(2, 1044, __pyx_L5_except_error)
31264     }
31265     goto __pyx_L5_except_error;
31266     __pyx_L5_except_error:;
31267 
31268     /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":1041
31269  *
31270  * cdef inline int import_umath() except -1:
31271  *     try:             # <<<<<<<<<<<<<<
31272  *         _import_umath()
31273  *     except Exception:
31274  */
31275     __Pyx_XGIVEREF(__pyx_t_1);
31276     __Pyx_XGIVEREF(__pyx_t_2);
31277     __Pyx_XGIVEREF(__pyx_t_3);
31278     __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
31279     goto __pyx_L1_error;
31280     __pyx_L8_try_end:;
31281   }
31282 
31283   /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":1040
31284  *         raise ImportError("numpy.core.multiarray failed to import")
31285  *
31286  * cdef inline int import_umath() except -1:             # <<<<<<<<<<<<<<
31287  *     try:
31288  *         _import_umath()
31289  */
31290 
31291   /* function exit code */
31292   __pyx_r = 0;
31293   goto __pyx_L0;
31294   __pyx_L1_error:;
31295   __Pyx_XDECREF(__pyx_t_5);
31296   __Pyx_XDECREF(__pyx_t_6);
31297   __Pyx_XDECREF(__pyx_t_7);
31298   __Pyx_XDECREF(__pyx_t_8);
31299   __Pyx_AddTraceback("numpy.import_umath", __pyx_clineno, __pyx_lineno, __pyx_filename);
31300   __pyx_r = -1;
31301   __pyx_L0:;
31302   __Pyx_RefNannyFinishContext();
31303   return __pyx_r;
31304 }
31305 
31306 /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":1046
31307  *         raise ImportError("numpy.core.umath failed to import")
31308  *
31309  * cdef inline int import_ufunc() except -1:             # <<<<<<<<<<<<<<
31310  *     try:
31311  *         _import_umath()
31312  */
31313 
__pyx_f_5numpy_import_ufunc(void)31314 static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) {
31315   int __pyx_r;
31316   __Pyx_RefNannyDeclarations
31317   PyObject *__pyx_t_1 = NULL;
31318   PyObject *__pyx_t_2 = NULL;
31319   PyObject *__pyx_t_3 = NULL;
31320   int __pyx_t_4;
31321   PyObject *__pyx_t_5 = NULL;
31322   PyObject *__pyx_t_6 = NULL;
31323   PyObject *__pyx_t_7 = NULL;
31324   PyObject *__pyx_t_8 = NULL;
31325   __Pyx_RefNannySetupContext("import_ufunc", 0);
31326 
31327   /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":1047
31328  *
31329  * cdef inline int import_ufunc() except -1:
31330  *     try:             # <<<<<<<<<<<<<<
31331  *         _import_umath()
31332  *     except Exception:
31333  */
31334   {
31335     __Pyx_PyThreadState_declare
31336     __Pyx_PyThreadState_assign
31337     __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
31338     __Pyx_XGOTREF(__pyx_t_1);
31339     __Pyx_XGOTREF(__pyx_t_2);
31340     __Pyx_XGOTREF(__pyx_t_3);
31341     /*try:*/ {
31342 
31343       /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":1048
31344  * cdef inline int import_ufunc() except -1:
31345  *     try:
31346  *         _import_umath()             # <<<<<<<<<<<<<<
31347  *     except Exception:
31348  *         raise ImportError("numpy.core.umath failed to import")
31349  */
31350       __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1048, __pyx_L3_error)
31351 
31352       /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":1047
31353  *
31354  * cdef inline int import_ufunc() except -1:
31355  *     try:             # <<<<<<<<<<<<<<
31356  *         _import_umath()
31357  *     except Exception:
31358  */
31359     }
31360     __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
31361     __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
31362     __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
31363     goto __pyx_L8_try_end;
31364     __pyx_L3_error:;
31365 
31366     /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":1049
31367  *     try:
31368  *         _import_umath()
31369  *     except Exception:             # <<<<<<<<<<<<<<
31370  *         raise ImportError("numpy.core.umath failed to import")
31371  */
31372     __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])));
31373     if (__pyx_t_4) {
31374       __Pyx_AddTraceback("numpy.import_ufunc", __pyx_clineno, __pyx_lineno, __pyx_filename);
31375       if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(2, 1049, __pyx_L5_except_error)
31376       __Pyx_GOTREF(__pyx_t_5);
31377       __Pyx_GOTREF(__pyx_t_6);
31378       __Pyx_GOTREF(__pyx_t_7);
31379 
31380       /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":1050
31381  *         _import_umath()
31382  *     except Exception:
31383  *         raise ImportError("numpy.core.umath failed to import")             # <<<<<<<<<<<<<<
31384  */
31385       __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__28, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 1050, __pyx_L5_except_error)
31386       __Pyx_GOTREF(__pyx_t_8);
31387       __Pyx_Raise(__pyx_t_8, 0, 0, 0);
31388       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
31389       __PYX_ERR(2, 1050, __pyx_L5_except_error)
31390     }
31391     goto __pyx_L5_except_error;
31392     __pyx_L5_except_error:;
31393 
31394     /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":1047
31395  *
31396  * cdef inline int import_ufunc() except -1:
31397  *     try:             # <<<<<<<<<<<<<<
31398  *         _import_umath()
31399  *     except Exception:
31400  */
31401     __Pyx_XGIVEREF(__pyx_t_1);
31402     __Pyx_XGIVEREF(__pyx_t_2);
31403     __Pyx_XGIVEREF(__pyx_t_3);
31404     __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
31405     goto __pyx_L1_error;
31406     __pyx_L8_try_end:;
31407   }
31408 
31409   /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":1046
31410  *         raise ImportError("numpy.core.umath failed to import")
31411  *
31412  * cdef inline int import_ufunc() except -1:             # <<<<<<<<<<<<<<
31413  *     try:
31414  *         _import_umath()
31415  */
31416 
31417   /* function exit code */
31418   __pyx_r = 0;
31419   goto __pyx_L0;
31420   __pyx_L1_error:;
31421   __Pyx_XDECREF(__pyx_t_5);
31422   __Pyx_XDECREF(__pyx_t_6);
31423   __Pyx_XDECREF(__pyx_t_7);
31424   __Pyx_XDECREF(__pyx_t_8);
31425   __Pyx_AddTraceback("numpy.import_ufunc", __pyx_clineno, __pyx_lineno, __pyx_filename);
31426   __pyx_r = -1;
31427   __pyx_L0:;
31428   __Pyx_RefNannyFinishContext();
31429   return __pyx_r;
31430 }
31431 
__pyx_tp_new_6tables_13hdf5extension_Node(PyTypeObject * t,CYTHON_UNUSED PyObject * a,CYTHON_UNUSED PyObject * k)31432 static PyObject *__pyx_tp_new_6tables_13hdf5extension_Node(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
31433   struct __pyx_obj_6tables_13hdf5extension_Node *p;
31434   PyObject *o;
31435   if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
31436     o = (*t->tp_alloc)(t, 0);
31437   } else {
31438     o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
31439   }
31440   if (unlikely(!o)) return 0;
31441   p = ((struct __pyx_obj_6tables_13hdf5extension_Node *)o);
31442   p->name = Py_None; Py_INCREF(Py_None);
31443   return o;
31444 }
31445 
__pyx_tp_dealloc_6tables_13hdf5extension_Node(PyObject * o)31446 static void __pyx_tp_dealloc_6tables_13hdf5extension_Node(PyObject *o) {
31447   struct __pyx_obj_6tables_13hdf5extension_Node *p = (struct __pyx_obj_6tables_13hdf5extension_Node *)o;
31448   #if CYTHON_USE_TP_FINALIZE
31449   if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
31450     if (PyObject_CallFinalizerFromDealloc(o)) return;
31451   }
31452   #endif
31453   PyObject_GC_UnTrack(o);
31454   {
31455     PyObject *etype, *eval, *etb;
31456     PyErr_Fetch(&etype, &eval, &etb);
31457     ++Py_REFCNT(o);
31458     __pyx_pw_6tables_13hdf5extension_4Node_5__dealloc__(o);
31459     --Py_REFCNT(o);
31460     PyErr_Restore(etype, eval, etb);
31461   }
31462   Py_CLEAR(p->name);
31463   (*Py_TYPE(o)->tp_free)(o);
31464 }
31465 
__pyx_tp_traverse_6tables_13hdf5extension_Node(PyObject * o,visitproc v,void * a)31466 static int __pyx_tp_traverse_6tables_13hdf5extension_Node(PyObject *o, visitproc v, void *a) {
31467   int e;
31468   struct __pyx_obj_6tables_13hdf5extension_Node *p = (struct __pyx_obj_6tables_13hdf5extension_Node *)o;
31469   if (p->name) {
31470     e = (*v)(p->name, a); if (e) return e;
31471   }
31472   return 0;
31473 }
31474 
__pyx_tp_clear_6tables_13hdf5extension_Node(PyObject * o)31475 static int __pyx_tp_clear_6tables_13hdf5extension_Node(PyObject *o) {
31476   PyObject* tmp;
31477   struct __pyx_obj_6tables_13hdf5extension_Node *p = (struct __pyx_obj_6tables_13hdf5extension_Node *)o;
31478   tmp = ((PyObject*)p->name);
31479   p->name = Py_None; Py_INCREF(Py_None);
31480   Py_XDECREF(tmp);
31481   return 0;
31482 }
31483 
31484 static PyMethodDef __pyx_methods_6tables_13hdf5extension_Node[] = {
31485   {"_g_new", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_6tables_13hdf5extension_4Node_1_g_new, METH_VARARGS|METH_KEYWORDS, 0},
31486   {"_g_delete", (PyCFunction)__pyx_pw_6tables_13hdf5extension_4Node_3_g_delete, METH_O, 0},
31487   {"_get_obj_info", (PyCFunction)__pyx_pw_6tables_13hdf5extension_4Node_7_get_obj_info, METH_NOARGS, 0},
31488   {"_get_obj_timestamps", (PyCFunction)__pyx_pw_6tables_13hdf5extension_4Node_9_get_obj_timestamps, METH_NOARGS, 0},
31489   {"__reduce_cython__", (PyCFunction)__pyx_pw_6tables_13hdf5extension_4Node_11__reduce_cython__, METH_NOARGS, 0},
31490   {"__setstate_cython__", (PyCFunction)__pyx_pw_6tables_13hdf5extension_4Node_13__setstate_cython__, METH_O, 0},
31491   {0, 0, 0, 0}
31492 };
31493 
31494 static PyTypeObject __pyx_type_6tables_13hdf5extension_Node = {
31495   PyVarObject_HEAD_INIT(0, 0)
31496   "tables.hdf5extension.Node", /*tp_name*/
31497   sizeof(struct __pyx_obj_6tables_13hdf5extension_Node), /*tp_basicsize*/
31498   0, /*tp_itemsize*/
31499   __pyx_tp_dealloc_6tables_13hdf5extension_Node, /*tp_dealloc*/
31500   0, /*tp_print*/
31501   0, /*tp_getattr*/
31502   0, /*tp_setattr*/
31503   #if PY_MAJOR_VERSION < 3
31504   0, /*tp_compare*/
31505   #endif
31506   #if PY_MAJOR_VERSION >= 3
31507   0, /*tp_as_async*/
31508   #endif
31509   0, /*tp_repr*/
31510   0, /*tp_as_number*/
31511   0, /*tp_as_sequence*/
31512   0, /*tp_as_mapping*/
31513   0, /*tp_hash*/
31514   0, /*tp_call*/
31515   0, /*tp_str*/
31516   0, /*tp_getattro*/
31517   0, /*tp_setattro*/
31518   0, /*tp_as_buffer*/
31519   Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
31520   0, /*tp_doc*/
31521   __pyx_tp_traverse_6tables_13hdf5extension_Node, /*tp_traverse*/
31522   __pyx_tp_clear_6tables_13hdf5extension_Node, /*tp_clear*/
31523   0, /*tp_richcompare*/
31524   0, /*tp_weaklistoffset*/
31525   0, /*tp_iter*/
31526   0, /*tp_iternext*/
31527   __pyx_methods_6tables_13hdf5extension_Node, /*tp_methods*/
31528   0, /*tp_members*/
31529   0, /*tp_getset*/
31530   0, /*tp_base*/
31531   0, /*tp_dict*/
31532   0, /*tp_descr_get*/
31533   0, /*tp_descr_set*/
31534   0, /*tp_dictoffset*/
31535   0, /*tp_init*/
31536   0, /*tp_alloc*/
31537   __pyx_tp_new_6tables_13hdf5extension_Node, /*tp_new*/
31538   0, /*tp_free*/
31539   0, /*tp_is_gc*/
31540   0, /*tp_bases*/
31541   0, /*tp_mro*/
31542   0, /*tp_cache*/
31543   0, /*tp_subclasses*/
31544   0, /*tp_weaklist*/
31545   0, /*tp_del*/
31546   0, /*tp_version_tag*/
31547   #if PY_VERSION_HEX >= 0x030400a1
31548   0, /*tp_finalize*/
31549   #endif
31550   #if PY_VERSION_HEX >= 0x030800b1
31551   0, /*tp_vectorcall*/
31552   #endif
31553 };
31554 static struct __pyx_vtabstruct_6tables_13hdf5extension_Leaf __pyx_vtable_6tables_13hdf5extension_Leaf;
31555 
__pyx_tp_new_6tables_13hdf5extension_Leaf(PyTypeObject * t,PyObject * a,PyObject * k)31556 static PyObject *__pyx_tp_new_6tables_13hdf5extension_Leaf(PyTypeObject *t, PyObject *a, PyObject *k) {
31557   struct __pyx_obj_6tables_13hdf5extension_Leaf *p;
31558   PyObject *o = __pyx_tp_new_6tables_13hdf5extension_Node(t, a, k);
31559   if (unlikely(!o)) return 0;
31560   p = ((struct __pyx_obj_6tables_13hdf5extension_Leaf *)o);
31561   p->__pyx_vtab = __pyx_vtabptr_6tables_13hdf5extension_Leaf;
31562   return o;
31563 }
31564 
31565 static PyMethodDef __pyx_methods_6tables_13hdf5extension_Leaf[] = {
31566   {"_get_storage_size", (PyCFunction)__pyx_pw_6tables_13hdf5extension_4Leaf_1_get_storage_size, METH_NOARGS, 0},
31567   {"_get_obj_track_times", (PyCFunction)__pyx_pw_6tables_13hdf5extension_4Leaf_3_get_obj_track_times, METH_NOARGS, __pyx_doc_6tables_13hdf5extension_4Leaf_2_get_obj_track_times},
31568   {"_g_new", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_6tables_13hdf5extension_4Leaf_5_g_new, METH_VARARGS|METH_KEYWORDS, 0},
31569   {"_g_truncate", (PyCFunction)__pyx_pw_6tables_13hdf5extension_4Leaf_7_g_truncate, METH_O, __pyx_doc_6tables_13hdf5extension_4Leaf_6_g_truncate},
31570   {"_g_flush", (PyCFunction)__pyx_pw_6tables_13hdf5extension_4Leaf_9_g_flush, METH_NOARGS, 0},
31571   {"_g_close", (PyCFunction)__pyx_pw_6tables_13hdf5extension_4Leaf_11_g_close, METH_NOARGS, 0},
31572   {"__reduce_cython__", (PyCFunction)__pyx_pw_6tables_13hdf5extension_4Leaf_13__reduce_cython__, METH_NOARGS, 0},
31573   {"__setstate_cython__", (PyCFunction)__pyx_pw_6tables_13hdf5extension_4Leaf_15__setstate_cython__, METH_O, 0},
31574   {0, 0, 0, 0}
31575 };
31576 
31577 static PyTypeObject __pyx_type_6tables_13hdf5extension_Leaf = {
31578   PyVarObject_HEAD_INIT(0, 0)
31579   "tables.hdf5extension.Leaf", /*tp_name*/
31580   sizeof(struct __pyx_obj_6tables_13hdf5extension_Leaf), /*tp_basicsize*/
31581   0, /*tp_itemsize*/
31582   __pyx_tp_dealloc_6tables_13hdf5extension_Node, /*tp_dealloc*/
31583   0, /*tp_print*/
31584   0, /*tp_getattr*/
31585   0, /*tp_setattr*/
31586   #if PY_MAJOR_VERSION < 3
31587   0, /*tp_compare*/
31588   #endif
31589   #if PY_MAJOR_VERSION >= 3
31590   0, /*tp_as_async*/
31591   #endif
31592   0, /*tp_repr*/
31593   0, /*tp_as_number*/
31594   0, /*tp_as_sequence*/
31595   0, /*tp_as_mapping*/
31596   0, /*tp_hash*/
31597   0, /*tp_call*/
31598   0, /*tp_str*/
31599   0, /*tp_getattro*/
31600   0, /*tp_setattro*/
31601   0, /*tp_as_buffer*/
31602   Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
31603   0, /*tp_doc*/
31604   __pyx_tp_traverse_6tables_13hdf5extension_Node, /*tp_traverse*/
31605   __pyx_tp_clear_6tables_13hdf5extension_Node, /*tp_clear*/
31606   0, /*tp_richcompare*/
31607   0, /*tp_weaklistoffset*/
31608   0, /*tp_iter*/
31609   0, /*tp_iternext*/
31610   __pyx_methods_6tables_13hdf5extension_Leaf, /*tp_methods*/
31611   0, /*tp_members*/
31612   0, /*tp_getset*/
31613   0, /*tp_base*/
31614   0, /*tp_dict*/
31615   0, /*tp_descr_get*/
31616   0, /*tp_descr_set*/
31617   0, /*tp_dictoffset*/
31618   0, /*tp_init*/
31619   0, /*tp_alloc*/
31620   __pyx_tp_new_6tables_13hdf5extension_Leaf, /*tp_new*/
31621   0, /*tp_free*/
31622   0, /*tp_is_gc*/
31623   0, /*tp_bases*/
31624   0, /*tp_mro*/
31625   0, /*tp_cache*/
31626   0, /*tp_subclasses*/
31627   0, /*tp_weaklist*/
31628   0, /*tp_del*/
31629   0, /*tp_version_tag*/
31630   #if PY_VERSION_HEX >= 0x030400a1
31631   0, /*tp_finalize*/
31632   #endif
31633   #if PY_VERSION_HEX >= 0x030800b1
31634   0, /*tp_vectorcall*/
31635   #endif
31636 };
31637 static struct __pyx_vtabstruct_6tables_13hdf5extension_Array __pyx_vtable_6tables_13hdf5extension_Array;
31638 
__pyx_tp_new_6tables_13hdf5extension_Array(PyTypeObject * t,PyObject * a,PyObject * k)31639 static PyObject *__pyx_tp_new_6tables_13hdf5extension_Array(PyTypeObject *t, PyObject *a, PyObject *k) {
31640   struct __pyx_obj_6tables_13hdf5extension_Array *p;
31641   PyObject *o = __pyx_tp_new_6tables_13hdf5extension_Leaf(t, a, k);
31642   if (unlikely(!o)) return 0;
31643   p = ((struct __pyx_obj_6tables_13hdf5extension_Array *)o);
31644   p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_6tables_13hdf5extension_Leaf*)__pyx_vtabptr_6tables_13hdf5extension_Array;
31645   return o;
31646 }
31647 
__pyx_tp_dealloc_6tables_13hdf5extension_Array(PyObject * o)31648 static void __pyx_tp_dealloc_6tables_13hdf5extension_Array(PyObject *o) {
31649   #if CYTHON_USE_TP_FINALIZE
31650   if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
31651     if (PyObject_CallFinalizerFromDealloc(o)) return;
31652   }
31653   #endif
31654   PyObject_GC_UnTrack(o);
31655   {
31656     PyObject *etype, *eval, *etb;
31657     PyErr_Fetch(&etype, &eval, &etb);
31658     ++Py_REFCNT(o);
31659     __pyx_pw_6tables_13hdf5extension_5Array_25__dealloc__(o);
31660     --Py_REFCNT(o);
31661     PyErr_Restore(etype, eval, etb);
31662   }
31663   PyObject_GC_Track(o);
31664   __pyx_tp_dealloc_6tables_13hdf5extension_Node(o);
31665 }
31666 
31667 static PyMethodDef __pyx_methods_6tables_13hdf5extension_Array[] = {
31668   {"_create_array", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_6tables_13hdf5extension_5Array_1_create_array, METH_VARARGS|METH_KEYWORDS, 0},
31669   {"_create_carray", (PyCFunction)__pyx_pw_6tables_13hdf5extension_5Array_3_create_carray, METH_O, 0},
31670   {"_open_array", (PyCFunction)__pyx_pw_6tables_13hdf5extension_5Array_5_open_array, METH_NOARGS, 0},
31671   {"_append", (PyCFunction)__pyx_pw_6tables_13hdf5extension_5Array_7_append, METH_O, 0},
31672   {"_read_array", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_6tables_13hdf5extension_5Array_9_read_array, METH_VARARGS|METH_KEYWORDS, 0},
31673   {"_g_read_slice", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_6tables_13hdf5extension_5Array_11_g_read_slice, METH_VARARGS|METH_KEYWORDS, 0},
31674   {"_g_read_coords", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_6tables_13hdf5extension_5Array_13_g_read_coords, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6tables_13hdf5extension_5Array_12_g_read_coords},
31675   {"perform_selection", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_6tables_13hdf5extension_5Array_15perform_selection, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6tables_13hdf5extension_5Array_14perform_selection},
31676   {"_g_read_selection", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_6tables_13hdf5extension_5Array_17_g_read_selection, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6tables_13hdf5extension_5Array_16_g_read_selection},
31677   {"_g_write_slice", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_6tables_13hdf5extension_5Array_19_g_write_slice, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6tables_13hdf5extension_5Array_18_g_write_slice},
31678   {"_g_write_coords", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_6tables_13hdf5extension_5Array_21_g_write_coords, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6tables_13hdf5extension_5Array_20_g_write_coords},
31679   {"_g_write_selection", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_6tables_13hdf5extension_5Array_23_g_write_selection, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6tables_13hdf5extension_5Array_22_g_write_selection},
31680   {"__reduce_cython__", (PyCFunction)__pyx_pw_6tables_13hdf5extension_5Array_27__reduce_cython__, METH_NOARGS, 0},
31681   {"__setstate_cython__", (PyCFunction)__pyx_pw_6tables_13hdf5extension_5Array_29__setstate_cython__, METH_O, 0},
31682   {0, 0, 0, 0}
31683 };
31684 
31685 static PyTypeObject __pyx_type_6tables_13hdf5extension_Array = {
31686   PyVarObject_HEAD_INIT(0, 0)
31687   "tables.hdf5extension.Array", /*tp_name*/
31688   sizeof(struct __pyx_obj_6tables_13hdf5extension_Array), /*tp_basicsize*/
31689   0, /*tp_itemsize*/
31690   __pyx_tp_dealloc_6tables_13hdf5extension_Array, /*tp_dealloc*/
31691   0, /*tp_print*/
31692   0, /*tp_getattr*/
31693   0, /*tp_setattr*/
31694   #if PY_MAJOR_VERSION < 3
31695   0, /*tp_compare*/
31696   #endif
31697   #if PY_MAJOR_VERSION >= 3
31698   0, /*tp_as_async*/
31699   #endif
31700   0, /*tp_repr*/
31701   0, /*tp_as_number*/
31702   0, /*tp_as_sequence*/
31703   0, /*tp_as_mapping*/
31704   0, /*tp_hash*/
31705   0, /*tp_call*/
31706   0, /*tp_str*/
31707   0, /*tp_getattro*/
31708   0, /*tp_setattro*/
31709   0, /*tp_as_buffer*/
31710   Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
31711   0, /*tp_doc*/
31712   __pyx_tp_traverse_6tables_13hdf5extension_Node, /*tp_traverse*/
31713   __pyx_tp_clear_6tables_13hdf5extension_Node, /*tp_clear*/
31714   0, /*tp_richcompare*/
31715   0, /*tp_weaklistoffset*/
31716   0, /*tp_iter*/
31717   0, /*tp_iternext*/
31718   __pyx_methods_6tables_13hdf5extension_Array, /*tp_methods*/
31719   0, /*tp_members*/
31720   0, /*tp_getset*/
31721   0, /*tp_base*/
31722   0, /*tp_dict*/
31723   0, /*tp_descr_get*/
31724   0, /*tp_descr_set*/
31725   0, /*tp_dictoffset*/
31726   0, /*tp_init*/
31727   0, /*tp_alloc*/
31728   __pyx_tp_new_6tables_13hdf5extension_Array, /*tp_new*/
31729   0, /*tp_free*/
31730   0, /*tp_is_gc*/
31731   0, /*tp_bases*/
31732   0, /*tp_mro*/
31733   0, /*tp_cache*/
31734   0, /*tp_subclasses*/
31735   0, /*tp_weaklist*/
31736   0, /*tp_del*/
31737   0, /*tp_version_tag*/
31738   #if PY_VERSION_HEX >= 0x030400a1
31739   0, /*tp_finalize*/
31740   #endif
31741   #if PY_VERSION_HEX >= 0x030800b1
31742   0, /*tp_vectorcall*/
31743   #endif
31744 };
31745 
__pyx_tp_new_6tables_13hdf5extension_File(PyTypeObject * t,CYTHON_UNUSED PyObject * a,CYTHON_UNUSED PyObject * k)31746 static PyObject *__pyx_tp_new_6tables_13hdf5extension_File(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
31747   struct __pyx_obj_6tables_13hdf5extension_File *p;
31748   PyObject *o;
31749   if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
31750     o = (*t->tp_alloc)(t, 0);
31751   } else {
31752     o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
31753   }
31754   if (unlikely(!o)) return 0;
31755   p = ((struct __pyx_obj_6tables_13hdf5extension_File *)o);
31756   p->name = Py_None; Py_INCREF(Py_None);
31757   return o;
31758 }
31759 
__pyx_tp_dealloc_6tables_13hdf5extension_File(PyObject * o)31760 static void __pyx_tp_dealloc_6tables_13hdf5extension_File(PyObject *o) {
31761   struct __pyx_obj_6tables_13hdf5extension_File *p = (struct __pyx_obj_6tables_13hdf5extension_File *)o;
31762   #if CYTHON_USE_TP_FINALIZE
31763   if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
31764     if (PyObject_CallFinalizerFromDealloc(o)) return;
31765   }
31766   #endif
31767   PyObject_GC_UnTrack(o);
31768   {
31769     PyObject *etype, *eval, *etb;
31770     PyErr_Fetch(&etype, &eval, &etb);
31771     ++Py_REFCNT(o);
31772     __pyx_pw_6tables_13hdf5extension_4File_17__dealloc__(o);
31773     --Py_REFCNT(o);
31774     PyErr_Restore(etype, eval, etb);
31775   }
31776   Py_CLEAR(p->name);
31777   (*Py_TYPE(o)->tp_free)(o);
31778 }
31779 
__pyx_tp_traverse_6tables_13hdf5extension_File(PyObject * o,visitproc v,void * a)31780 static int __pyx_tp_traverse_6tables_13hdf5extension_File(PyObject *o, visitproc v, void *a) {
31781   int e;
31782   struct __pyx_obj_6tables_13hdf5extension_File *p = (struct __pyx_obj_6tables_13hdf5extension_File *)o;
31783   if (p->name) {
31784     e = (*v)(p->name, a); if (e) return e;
31785   }
31786   return 0;
31787 }
31788 
__pyx_tp_clear_6tables_13hdf5extension_File(PyObject * o)31789 static int __pyx_tp_clear_6tables_13hdf5extension_File(PyObject *o) {
31790   PyObject* tmp;
31791   struct __pyx_obj_6tables_13hdf5extension_File *p = (struct __pyx_obj_6tables_13hdf5extension_File *)o;
31792   tmp = ((PyObject*)p->name);
31793   p->name = Py_None; Py_INCREF(Py_None);
31794   Py_XDECREF(tmp);
31795   return 0;
31796 }
31797 
31798 static PyMethodDef __pyx_methods_6tables_13hdf5extension_File[] = {
31799   {"_g_new", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_6tables_13hdf5extension_4File_1_g_new, METH_VARARGS|METH_KEYWORDS, 0},
31800   {"get_file_image", (PyCFunction)__pyx_pw_6tables_13hdf5extension_4File_3get_file_image, METH_NOARGS, __pyx_doc_6tables_13hdf5extension_4File_2get_file_image},
31801   {"get_filesize", (PyCFunction)__pyx_pw_6tables_13hdf5extension_4File_5get_filesize, METH_NOARGS, __pyx_doc_6tables_13hdf5extension_4File_4get_filesize},
31802   {"get_userblock_size", (PyCFunction)__pyx_pw_6tables_13hdf5extension_4File_7get_userblock_size, METH_NOARGS, __pyx_doc_6tables_13hdf5extension_4File_6get_userblock_size},
31803   {"_get_file_id", (PyCFunction)__pyx_pw_6tables_13hdf5extension_4File_9_get_file_id, METH_NOARGS, 0},
31804   {"fileno", (PyCFunction)__pyx_pw_6tables_13hdf5extension_4File_11fileno, METH_NOARGS, __pyx_doc_6tables_13hdf5extension_4File_10fileno},
31805   {"_flush_file", (PyCFunction)__pyx_pw_6tables_13hdf5extension_4File_13_flush_file, METH_O, 0},
31806   {"_close_file", (PyCFunction)__pyx_pw_6tables_13hdf5extension_4File_15_close_file, METH_NOARGS, 0},
31807   {"__reduce_cython__", (PyCFunction)__pyx_pw_6tables_13hdf5extension_4File_19__reduce_cython__, METH_NOARGS, 0},
31808   {"__setstate_cython__", (PyCFunction)__pyx_pw_6tables_13hdf5extension_4File_21__setstate_cython__, METH_O, 0},
31809   {0, 0, 0, 0}
31810 };
31811 
31812 static PyTypeObject __pyx_type_6tables_13hdf5extension_File = {
31813   PyVarObject_HEAD_INIT(0, 0)
31814   "tables.hdf5extension.File", /*tp_name*/
31815   sizeof(struct __pyx_obj_6tables_13hdf5extension_File), /*tp_basicsize*/
31816   0, /*tp_itemsize*/
31817   __pyx_tp_dealloc_6tables_13hdf5extension_File, /*tp_dealloc*/
31818   0, /*tp_print*/
31819   0, /*tp_getattr*/
31820   0, /*tp_setattr*/
31821   #if PY_MAJOR_VERSION < 3
31822   0, /*tp_compare*/
31823   #endif
31824   #if PY_MAJOR_VERSION >= 3
31825   0, /*tp_as_async*/
31826   #endif
31827   0, /*tp_repr*/
31828   0, /*tp_as_number*/
31829   0, /*tp_as_sequence*/
31830   0, /*tp_as_mapping*/
31831   0, /*tp_hash*/
31832   0, /*tp_call*/
31833   0, /*tp_str*/
31834   0, /*tp_getattro*/
31835   0, /*tp_setattro*/
31836   0, /*tp_as_buffer*/
31837   Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
31838   0, /*tp_doc*/
31839   __pyx_tp_traverse_6tables_13hdf5extension_File, /*tp_traverse*/
31840   __pyx_tp_clear_6tables_13hdf5extension_File, /*tp_clear*/
31841   0, /*tp_richcompare*/
31842   0, /*tp_weaklistoffset*/
31843   0, /*tp_iter*/
31844   0, /*tp_iternext*/
31845   __pyx_methods_6tables_13hdf5extension_File, /*tp_methods*/
31846   0, /*tp_members*/
31847   0, /*tp_getset*/
31848   0, /*tp_base*/
31849   0, /*tp_dict*/
31850   0, /*tp_descr_get*/
31851   0, /*tp_descr_set*/
31852   0, /*tp_dictoffset*/
31853   0, /*tp_init*/
31854   0, /*tp_alloc*/
31855   __pyx_tp_new_6tables_13hdf5extension_File, /*tp_new*/
31856   0, /*tp_free*/
31857   0, /*tp_is_gc*/
31858   0, /*tp_bases*/
31859   0, /*tp_mro*/
31860   0, /*tp_cache*/
31861   0, /*tp_subclasses*/
31862   0, /*tp_weaklist*/
31863   0, /*tp_del*/
31864   0, /*tp_version_tag*/
31865   #if PY_VERSION_HEX >= 0x030400a1
31866   0, /*tp_finalize*/
31867   #endif
31868   #if PY_VERSION_HEX >= 0x030800b1
31869   0, /*tp_vectorcall*/
31870   #endif
31871 };
31872 
__pyx_tp_new_6tables_13hdf5extension_AttributeSet(PyTypeObject * t,CYTHON_UNUSED PyObject * a,CYTHON_UNUSED PyObject * k)31873 static PyObject *__pyx_tp_new_6tables_13hdf5extension_AttributeSet(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
31874   struct __pyx_obj_6tables_13hdf5extension_AttributeSet *p;
31875   PyObject *o;
31876   if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
31877     o = (*t->tp_alloc)(t, 0);
31878   } else {
31879     o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
31880   }
31881   if (unlikely(!o)) return 0;
31882   p = ((struct __pyx_obj_6tables_13hdf5extension_AttributeSet *)o);
31883   p->name = Py_None; Py_INCREF(Py_None);
31884   return o;
31885 }
31886 
__pyx_tp_dealloc_6tables_13hdf5extension_AttributeSet(PyObject * o)31887 static void __pyx_tp_dealloc_6tables_13hdf5extension_AttributeSet(PyObject *o) {
31888   struct __pyx_obj_6tables_13hdf5extension_AttributeSet *p = (struct __pyx_obj_6tables_13hdf5extension_AttributeSet *)o;
31889   #if CYTHON_USE_TP_FINALIZE
31890   if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
31891     if (PyObject_CallFinalizerFromDealloc(o)) return;
31892   }
31893   #endif
31894   PyObject_GC_UnTrack(o);
31895   Py_CLEAR(p->name);
31896   (*Py_TYPE(o)->tp_free)(o);
31897 }
31898 
__pyx_tp_traverse_6tables_13hdf5extension_AttributeSet(PyObject * o,visitproc v,void * a)31899 static int __pyx_tp_traverse_6tables_13hdf5extension_AttributeSet(PyObject *o, visitproc v, void *a) {
31900   int e;
31901   struct __pyx_obj_6tables_13hdf5extension_AttributeSet *p = (struct __pyx_obj_6tables_13hdf5extension_AttributeSet *)o;
31902   if (p->name) {
31903     e = (*v)(p->name, a); if (e) return e;
31904   }
31905   return 0;
31906 }
31907 
__pyx_tp_clear_6tables_13hdf5extension_AttributeSet(PyObject * o)31908 static int __pyx_tp_clear_6tables_13hdf5extension_AttributeSet(PyObject *o) {
31909   PyObject* tmp;
31910   struct __pyx_obj_6tables_13hdf5extension_AttributeSet *p = (struct __pyx_obj_6tables_13hdf5extension_AttributeSet *)o;
31911   tmp = ((PyObject*)p->name);
31912   p->name = Py_None; Py_INCREF(Py_None);
31913   Py_XDECREF(tmp);
31914   return 0;
31915 }
31916 
31917 static PyMethodDef __pyx_methods_6tables_13hdf5extension_AttributeSet[] = {
31918   {"_g_new", (PyCFunction)__pyx_pw_6tables_13hdf5extension_12AttributeSet_1_g_new, METH_O, 0},
31919   {"_g_list_attr", (PyCFunction)__pyx_pw_6tables_13hdf5extension_12AttributeSet_3_g_list_attr, METH_O, __pyx_doc_6tables_13hdf5extension_12AttributeSet_2_g_list_attr},
31920   {"_g_setattr", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_6tables_13hdf5extension_12AttributeSet_5_g_setattr, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6tables_13hdf5extension_12AttributeSet_4_g_setattr},
31921   {"_g_getattr", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_6tables_13hdf5extension_12AttributeSet_7_g_getattr, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6tables_13hdf5extension_12AttributeSet_6_g_getattr},
31922   {"_g_remove", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_6tables_13hdf5extension_12AttributeSet_9_g_remove, METH_VARARGS|METH_KEYWORDS, 0},
31923   {"__reduce_cython__", (PyCFunction)__pyx_pw_6tables_13hdf5extension_12AttributeSet_11__reduce_cython__, METH_NOARGS, 0},
31924   {"__setstate_cython__", (PyCFunction)__pyx_pw_6tables_13hdf5extension_12AttributeSet_13__setstate_cython__, METH_O, 0},
31925   {0, 0, 0, 0}
31926 };
31927 
31928 static PyTypeObject __pyx_type_6tables_13hdf5extension_AttributeSet = {
31929   PyVarObject_HEAD_INIT(0, 0)
31930   "tables.hdf5extension.AttributeSet", /*tp_name*/
31931   sizeof(struct __pyx_obj_6tables_13hdf5extension_AttributeSet), /*tp_basicsize*/
31932   0, /*tp_itemsize*/
31933   __pyx_tp_dealloc_6tables_13hdf5extension_AttributeSet, /*tp_dealloc*/
31934   0, /*tp_print*/
31935   0, /*tp_getattr*/
31936   0, /*tp_setattr*/
31937   #if PY_MAJOR_VERSION < 3
31938   0, /*tp_compare*/
31939   #endif
31940   #if PY_MAJOR_VERSION >= 3
31941   0, /*tp_as_async*/
31942   #endif
31943   0, /*tp_repr*/
31944   0, /*tp_as_number*/
31945   0, /*tp_as_sequence*/
31946   0, /*tp_as_mapping*/
31947   0, /*tp_hash*/
31948   0, /*tp_call*/
31949   0, /*tp_str*/
31950   0, /*tp_getattro*/
31951   0, /*tp_setattro*/
31952   0, /*tp_as_buffer*/
31953   Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
31954   0, /*tp_doc*/
31955   __pyx_tp_traverse_6tables_13hdf5extension_AttributeSet, /*tp_traverse*/
31956   __pyx_tp_clear_6tables_13hdf5extension_AttributeSet, /*tp_clear*/
31957   0, /*tp_richcompare*/
31958   0, /*tp_weaklistoffset*/
31959   0, /*tp_iter*/
31960   0, /*tp_iternext*/
31961   __pyx_methods_6tables_13hdf5extension_AttributeSet, /*tp_methods*/
31962   0, /*tp_members*/
31963   0, /*tp_getset*/
31964   0, /*tp_base*/
31965   0, /*tp_dict*/
31966   0, /*tp_descr_get*/
31967   0, /*tp_descr_set*/
31968   0, /*tp_dictoffset*/
31969   0, /*tp_init*/
31970   0, /*tp_alloc*/
31971   __pyx_tp_new_6tables_13hdf5extension_AttributeSet, /*tp_new*/
31972   0, /*tp_free*/
31973   0, /*tp_is_gc*/
31974   0, /*tp_bases*/
31975   0, /*tp_mro*/
31976   0, /*tp_cache*/
31977   0, /*tp_subclasses*/
31978   0, /*tp_weaklist*/
31979   0, /*tp_del*/
31980   0, /*tp_version_tag*/
31981   #if PY_VERSION_HEX >= 0x030400a1
31982   0, /*tp_finalize*/
31983   #endif
31984   #if PY_VERSION_HEX >= 0x030800b1
31985   0, /*tp_vectorcall*/
31986   #endif
31987 };
31988 
__pyx_tp_new_6tables_13hdf5extension_Group(PyTypeObject * t,PyObject * a,PyObject * k)31989 static PyObject *__pyx_tp_new_6tables_13hdf5extension_Group(PyTypeObject *t, PyObject *a, PyObject *k) {
31990   PyObject *o = __pyx_tp_new_6tables_13hdf5extension_Node(t, a, k);
31991   if (unlikely(!o)) return 0;
31992   return o;
31993 }
31994 
31995 static PyMethodDef __pyx_methods_6tables_13hdf5extension_Group[] = {
31996   {"_g_create", (PyCFunction)__pyx_pw_6tables_13hdf5extension_5Group_1_g_create, METH_NOARGS, 0},
31997   {"_g_open", (PyCFunction)__pyx_pw_6tables_13hdf5extension_5Group_3_g_open, METH_NOARGS, 0},
31998   {"_g_get_objinfo", (PyCFunction)__pyx_pw_6tables_13hdf5extension_5Group_5_g_get_objinfo, METH_O, __pyx_doc_6tables_13hdf5extension_5Group_4_g_get_objinfo},
31999   {"_g_list_group", (PyCFunction)__pyx_pw_6tables_13hdf5extension_5Group_7_g_list_group, METH_O, __pyx_doc_6tables_13hdf5extension_5Group_6_g_list_group},
32000   {"_g_get_gchild_attr", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_6tables_13hdf5extension_5Group_9_g_get_gchild_attr, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6tables_13hdf5extension_5Group_8_g_get_gchild_attr},
32001   {"_g_get_lchild_attr", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_6tables_13hdf5extension_5Group_11_g_get_lchild_attr, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6tables_13hdf5extension_5Group_10_g_get_lchild_attr},
32002   {"_g_flush_group", (PyCFunction)__pyx_pw_6tables_13hdf5extension_5Group_13_g_flush_group, METH_NOARGS, 0},
32003   {"_g_close_group", (PyCFunction)__pyx_pw_6tables_13hdf5extension_5Group_15_g_close_group, METH_NOARGS, 0},
32004   {"_g_move_node", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_6tables_13hdf5extension_5Group_17_g_move_node, METH_VARARGS|METH_KEYWORDS, 0},
32005   {"__reduce_cython__", (PyCFunction)__pyx_pw_6tables_13hdf5extension_5Group_19__reduce_cython__, METH_NOARGS, 0},
32006   {"__setstate_cython__", (PyCFunction)__pyx_pw_6tables_13hdf5extension_5Group_21__setstate_cython__, METH_O, 0},
32007   {0, 0, 0, 0}
32008 };
32009 
32010 static PyTypeObject __pyx_type_6tables_13hdf5extension_Group = {
32011   PyVarObject_HEAD_INIT(0, 0)
32012   "tables.hdf5extension.Group", /*tp_name*/
32013   sizeof(struct __pyx_obj_6tables_13hdf5extension_Group), /*tp_basicsize*/
32014   0, /*tp_itemsize*/
32015   __pyx_tp_dealloc_6tables_13hdf5extension_Node, /*tp_dealloc*/
32016   0, /*tp_print*/
32017   0, /*tp_getattr*/
32018   0, /*tp_setattr*/
32019   #if PY_MAJOR_VERSION < 3
32020   0, /*tp_compare*/
32021   #endif
32022   #if PY_MAJOR_VERSION >= 3
32023   0, /*tp_as_async*/
32024   #endif
32025   0, /*tp_repr*/
32026   0, /*tp_as_number*/
32027   0, /*tp_as_sequence*/
32028   0, /*tp_as_mapping*/
32029   0, /*tp_hash*/
32030   0, /*tp_call*/
32031   0, /*tp_str*/
32032   0, /*tp_getattro*/
32033   0, /*tp_setattro*/
32034   0, /*tp_as_buffer*/
32035   Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
32036   0, /*tp_doc*/
32037   __pyx_tp_traverse_6tables_13hdf5extension_Node, /*tp_traverse*/
32038   __pyx_tp_clear_6tables_13hdf5extension_Node, /*tp_clear*/
32039   0, /*tp_richcompare*/
32040   0, /*tp_weaklistoffset*/
32041   0, /*tp_iter*/
32042   0, /*tp_iternext*/
32043   __pyx_methods_6tables_13hdf5extension_Group, /*tp_methods*/
32044   0, /*tp_members*/
32045   0, /*tp_getset*/
32046   0, /*tp_base*/
32047   0, /*tp_dict*/
32048   0, /*tp_descr_get*/
32049   0, /*tp_descr_set*/
32050   0, /*tp_dictoffset*/
32051   0, /*tp_init*/
32052   0, /*tp_alloc*/
32053   __pyx_tp_new_6tables_13hdf5extension_Group, /*tp_new*/
32054   0, /*tp_free*/
32055   0, /*tp_is_gc*/
32056   0, /*tp_bases*/
32057   0, /*tp_mro*/
32058   0, /*tp_cache*/
32059   0, /*tp_subclasses*/
32060   0, /*tp_weaklist*/
32061   0, /*tp_del*/
32062   0, /*tp_version_tag*/
32063   #if PY_VERSION_HEX >= 0x030400a1
32064   0, /*tp_finalize*/
32065   #endif
32066   #if PY_VERSION_HEX >= 0x030800b1
32067   0, /*tp_vectorcall*/
32068   #endif
32069 };
32070 static struct __pyx_vtabstruct_6tables_13hdf5extension_VLArray __pyx_vtable_6tables_13hdf5extension_VLArray;
32071 
__pyx_tp_new_6tables_13hdf5extension_VLArray(PyTypeObject * t,PyObject * a,PyObject * k)32072 static PyObject *__pyx_tp_new_6tables_13hdf5extension_VLArray(PyTypeObject *t, PyObject *a, PyObject *k) {
32073   struct __pyx_obj_6tables_13hdf5extension_VLArray *p;
32074   PyObject *o = __pyx_tp_new_6tables_13hdf5extension_Leaf(t, a, k);
32075   if (unlikely(!o)) return 0;
32076   p = ((struct __pyx_obj_6tables_13hdf5extension_VLArray *)o);
32077   p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_6tables_13hdf5extension_Leaf*)__pyx_vtabptr_6tables_13hdf5extension_VLArray;
32078   return o;
32079 }
32080 
32081 static PyMethodDef __pyx_methods_6tables_13hdf5extension_VLArray[] = {
32082   {"_create_array", (PyCFunction)__pyx_pw_6tables_13hdf5extension_7VLArray_1_create_array, METH_O, 0},
32083   {"_open_array", (PyCFunction)__pyx_pw_6tables_13hdf5extension_7VLArray_3_open_array, METH_NOARGS, 0},
32084   {"_append", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_6tables_13hdf5extension_7VLArray_5_append, METH_VARARGS|METH_KEYWORDS, 0},
32085   {"_modify", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_6tables_13hdf5extension_7VLArray_7_modify, METH_VARARGS|METH_KEYWORDS, 0},
32086   {"_get_memory_size", (PyCFunction)__pyx_pw_6tables_13hdf5extension_7VLArray_9_get_memory_size, METH_NOARGS, 0},
32087   {"_read_array", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_6tables_13hdf5extension_7VLArray_11_read_array, METH_VARARGS|METH_KEYWORDS, 0},
32088   {"get_row_size", (PyCFunction)__pyx_pw_6tables_13hdf5extension_7VLArray_13get_row_size, METH_O, __pyx_doc_6tables_13hdf5extension_7VLArray_12get_row_size},
32089   {"__reduce_cython__", (PyCFunction)__pyx_pw_6tables_13hdf5extension_7VLArray_15__reduce_cython__, METH_NOARGS, 0},
32090   {"__setstate_cython__", (PyCFunction)__pyx_pw_6tables_13hdf5extension_7VLArray_17__setstate_cython__, METH_O, 0},
32091   {0, 0, 0, 0}
32092 };
32093 
32094 static PyTypeObject __pyx_type_6tables_13hdf5extension_VLArray = {
32095   PyVarObject_HEAD_INIT(0, 0)
32096   "tables.hdf5extension.VLArray", /*tp_name*/
32097   sizeof(struct __pyx_obj_6tables_13hdf5extension_VLArray), /*tp_basicsize*/
32098   0, /*tp_itemsize*/
32099   __pyx_tp_dealloc_6tables_13hdf5extension_Node, /*tp_dealloc*/
32100   0, /*tp_print*/
32101   0, /*tp_getattr*/
32102   0, /*tp_setattr*/
32103   #if PY_MAJOR_VERSION < 3
32104   0, /*tp_compare*/
32105   #endif
32106   #if PY_MAJOR_VERSION >= 3
32107   0, /*tp_as_async*/
32108   #endif
32109   0, /*tp_repr*/
32110   0, /*tp_as_number*/
32111   0, /*tp_as_sequence*/
32112   0, /*tp_as_mapping*/
32113   0, /*tp_hash*/
32114   0, /*tp_call*/
32115   0, /*tp_str*/
32116   0, /*tp_getattro*/
32117   0, /*tp_setattro*/
32118   0, /*tp_as_buffer*/
32119   Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
32120   0, /*tp_doc*/
32121   __pyx_tp_traverse_6tables_13hdf5extension_Node, /*tp_traverse*/
32122   __pyx_tp_clear_6tables_13hdf5extension_Node, /*tp_clear*/
32123   0, /*tp_richcompare*/
32124   0, /*tp_weaklistoffset*/
32125   0, /*tp_iter*/
32126   0, /*tp_iternext*/
32127   __pyx_methods_6tables_13hdf5extension_VLArray, /*tp_methods*/
32128   0, /*tp_members*/
32129   0, /*tp_getset*/
32130   0, /*tp_base*/
32131   0, /*tp_dict*/
32132   0, /*tp_descr_get*/
32133   0, /*tp_descr_set*/
32134   0, /*tp_dictoffset*/
32135   0, /*tp_init*/
32136   0, /*tp_alloc*/
32137   __pyx_tp_new_6tables_13hdf5extension_VLArray, /*tp_new*/
32138   0, /*tp_free*/
32139   0, /*tp_is_gc*/
32140   0, /*tp_bases*/
32141   0, /*tp_mro*/
32142   0, /*tp_cache*/
32143   0, /*tp_subclasses*/
32144   0, /*tp_weaklist*/
32145   0, /*tp_del*/
32146   0, /*tp_version_tag*/
32147   #if PY_VERSION_HEX >= 0x030400a1
32148   0, /*tp_finalize*/
32149   #endif
32150   #if PY_VERSION_HEX >= 0x030800b1
32151   0, /*tp_vectorcall*/
32152   #endif
32153 };
32154 static struct __pyx_vtabstruct_6tables_13hdf5extension_UnImplemented __pyx_vtable_6tables_13hdf5extension_UnImplemented;
32155 
__pyx_tp_new_6tables_13hdf5extension_UnImplemented(PyTypeObject * t,PyObject * a,PyObject * k)32156 static PyObject *__pyx_tp_new_6tables_13hdf5extension_UnImplemented(PyTypeObject *t, PyObject *a, PyObject *k) {
32157   struct __pyx_obj_6tables_13hdf5extension_UnImplemented *p;
32158   PyObject *o = __pyx_tp_new_6tables_13hdf5extension_Leaf(t, a, k);
32159   if (unlikely(!o)) return 0;
32160   p = ((struct __pyx_obj_6tables_13hdf5extension_UnImplemented *)o);
32161   p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_6tables_13hdf5extension_Leaf*)__pyx_vtabptr_6tables_13hdf5extension_UnImplemented;
32162   return o;
32163 }
32164 
32165 static PyMethodDef __pyx_methods_6tables_13hdf5extension_UnImplemented[] = {
32166   {"_open_unimplemented", (PyCFunction)__pyx_pw_6tables_13hdf5extension_13UnImplemented_1_open_unimplemented, METH_NOARGS, 0},
32167   {"_g_close", (PyCFunction)__pyx_pw_6tables_13hdf5extension_13UnImplemented_3_g_close, METH_NOARGS, 0},
32168   {"__reduce_cython__", (PyCFunction)__pyx_pw_6tables_13hdf5extension_13UnImplemented_5__reduce_cython__, METH_NOARGS, 0},
32169   {"__setstate_cython__", (PyCFunction)__pyx_pw_6tables_13hdf5extension_13UnImplemented_7__setstate_cython__, METH_O, 0},
32170   {0, 0, 0, 0}
32171 };
32172 
32173 static PyTypeObject __pyx_type_6tables_13hdf5extension_UnImplemented = {
32174   PyVarObject_HEAD_INIT(0, 0)
32175   "tables.hdf5extension.UnImplemented", /*tp_name*/
32176   sizeof(struct __pyx_obj_6tables_13hdf5extension_UnImplemented), /*tp_basicsize*/
32177   0, /*tp_itemsize*/
32178   __pyx_tp_dealloc_6tables_13hdf5extension_Node, /*tp_dealloc*/
32179   0, /*tp_print*/
32180   0, /*tp_getattr*/
32181   0, /*tp_setattr*/
32182   #if PY_MAJOR_VERSION < 3
32183   0, /*tp_compare*/
32184   #endif
32185   #if PY_MAJOR_VERSION >= 3
32186   0, /*tp_as_async*/
32187   #endif
32188   0, /*tp_repr*/
32189   0, /*tp_as_number*/
32190   0, /*tp_as_sequence*/
32191   0, /*tp_as_mapping*/
32192   0, /*tp_hash*/
32193   0, /*tp_call*/
32194   0, /*tp_str*/
32195   0, /*tp_getattro*/
32196   0, /*tp_setattro*/
32197   0, /*tp_as_buffer*/
32198   Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
32199   0, /*tp_doc*/
32200   __pyx_tp_traverse_6tables_13hdf5extension_Node, /*tp_traverse*/
32201   __pyx_tp_clear_6tables_13hdf5extension_Node, /*tp_clear*/
32202   0, /*tp_richcompare*/
32203   0, /*tp_weaklistoffset*/
32204   0, /*tp_iter*/
32205   0, /*tp_iternext*/
32206   __pyx_methods_6tables_13hdf5extension_UnImplemented, /*tp_methods*/
32207   0, /*tp_members*/
32208   0, /*tp_getset*/
32209   0, /*tp_base*/
32210   0, /*tp_dict*/
32211   0, /*tp_descr_get*/
32212   0, /*tp_descr_set*/
32213   0, /*tp_dictoffset*/
32214   0, /*tp_init*/
32215   0, /*tp_alloc*/
32216   __pyx_tp_new_6tables_13hdf5extension_UnImplemented, /*tp_new*/
32217   0, /*tp_free*/
32218   0, /*tp_is_gc*/
32219   0, /*tp_bases*/
32220   0, /*tp_mro*/
32221   0, /*tp_cache*/
32222   0, /*tp_subclasses*/
32223   0, /*tp_weaklist*/
32224   0, /*tp_del*/
32225   0, /*tp_version_tag*/
32226   #if PY_VERSION_HEX >= 0x030400a1
32227   0, /*tp_finalize*/
32228   #endif
32229   #if PY_VERSION_HEX >= 0x030800b1
32230   0, /*tp_vectorcall*/
32231   #endif
32232 };
32233 
32234 static PyMethodDef __pyx_methods[] = {
32235   {0, 0, 0, 0}
32236 };
32237 
32238 #if PY_MAJOR_VERSION >= 3
32239 #if CYTHON_PEP489_MULTI_PHASE_INIT
32240 static PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def); /*proto*/
32241 static int __pyx_pymod_exec_hdf5extension(PyObject* module); /*proto*/
32242 static PyModuleDef_Slot __pyx_moduledef_slots[] = {
32243   {Py_mod_create, (void*)__pyx_pymod_create},
32244   {Py_mod_exec, (void*)__pyx_pymod_exec_hdf5extension},
32245   {0, NULL}
32246 };
32247 #endif
32248 
32249 static struct PyModuleDef __pyx_moduledef = {
32250     PyModuleDef_HEAD_INIT,
32251     "hdf5extension",
32252     __pyx_k_Cython_interface_between_several, /* m_doc */
32253   #if CYTHON_PEP489_MULTI_PHASE_INIT
32254     0, /* m_size */
32255   #else
32256     -1, /* m_size */
32257   #endif
32258     __pyx_methods /* m_methods */,
32259   #if CYTHON_PEP489_MULTI_PHASE_INIT
32260     __pyx_moduledef_slots, /* m_slots */
32261   #else
32262     NULL, /* m_reload */
32263   #endif
32264     NULL, /* m_traverse */
32265     NULL, /* m_clear */
32266     NULL /* m_free */
32267 };
32268 #endif
32269 #ifndef CYTHON_SMALL_CODE
32270 #if defined(__clang__)
32271     #define CYTHON_SMALL_CODE
32272 #elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3))
32273     #define CYTHON_SMALL_CODE __attribute__((cold))
32274 #else
32275     #define CYTHON_SMALL_CODE
32276 #endif
32277 #endif
32278 
32279 static __Pyx_StringTabEntry __pyx_string_tab[] = {
32280   {&__pyx_kp_b_, __pyx_k_, sizeof(__pyx_k_), 0, 0, 0, 0},
32281   {&__pyx_kp_s_, __pyx_k_, sizeof(__pyx_k_), 0, 0, 1, 0},
32282   {&__pyx_kp_u_, __pyx_k_, sizeof(__pyx_k_), 0, 1, 0, 0},
32283   {&__pyx_n_s_AND, __pyx_k_AND, sizeof(__pyx_k_AND), 0, 0, 1, 1},
32284   {&__pyx_n_s_Array, __pyx_k_Array, sizeof(__pyx_k_Array), 0, 0, 1, 1},
32285   {&__pyx_kp_s_Asking_for_a_range_of_rows_excee, __pyx_k_Asking_for_a_range_of_rows_excee, sizeof(__pyx_k_Asking_for_a_range_of_rows_excee), 0, 0, 1, 0},
32286   {&__pyx_n_s_Atom, __pyx_k_Atom, sizeof(__pyx_k_Atom), 0, 0, 1, 1},
32287   {&__pyx_n_s_AttributeSet, __pyx_k_AttributeSet, sizeof(__pyx_k_AttributeSet), 0, 0, 1, 1},
32288   {&__pyx_kp_s_Attribute_s_exists_in_node_s_but, __pyx_k_Attribute_s_exists_in_node_s_but, sizeof(__pyx_k_Attribute_s_exists_in_node_s_but), 0, 0, 1, 0},
32289   {&__pyx_kp_s_Attribute_s_exists_in_node_s_but_2, __pyx_k_Attribute_s_exists_in_node_s_but_2, sizeof(__pyx_k_Attribute_s_exists_in_node_s_but_2), 0, 0, 1, 0},
32290   {&__pyx_n_s_CArray, __pyx_k_CArray, sizeof(__pyx_k_CArray), 0, 0, 1, 1},
32291   {&__pyx_n_s_CHUNK_CACHE_NELMTS, __pyx_k_CHUNK_CACHE_NELMTS, sizeof(__pyx_k_CHUNK_CACHE_NELMTS), 0, 0, 1, 1},
32292   {&__pyx_n_s_CHUNK_CACHE_PREEMPT, __pyx_k_CHUNK_CACHE_PREEMPT, sizeof(__pyx_k_CHUNK_CACHE_PREEMPT), 0, 0, 1, 1},
32293   {&__pyx_n_s_CHUNK_CACHE_SIZE, __pyx_k_CHUNK_CACHE_SIZE, sizeof(__pyx_k_CHUNK_CACHE_SIZE), 0, 0, 1, 1},
32294   {&__pyx_kp_s_Can_t_create_the_group_s, __pyx_k_Can_t_create_the_group_s, sizeof(__pyx_k_Can_t_create_the_group_s), 0, 0, 1, 0},
32295   {&__pyx_kp_s_Can_t_get_dims_info_on_attribute, __pyx_k_Can_t_get_dims_info_on_attribute, sizeof(__pyx_k_Can_t_get_dims_info_on_attribute), 0, 0, 1, 0},
32296   {&__pyx_kp_s_Can_t_get_type_info_on_attribute, __pyx_k_Can_t_get_type_info_on_attribute, sizeof(__pyx_k_Can_t_get_type_info_on_attribute), 0, 0, 1, 0},
32297   {&__pyx_kp_s_Can_t_open_the_group_s, __pyx_k_Can_t_open_the_group_s, sizeof(__pyx_k_Can_t_open_the_group_s), 0, 0, 1, 0},
32298   {&__pyx_kp_s_Can_t_read_attribute_s_in_node_s, __pyx_k_Can_t_read_attribute_s_in_node_s, sizeof(__pyx_k_Can_t_read_attribute_s_in_node_s), 0, 0, 1, 0},
32299   {&__pyx_kp_s_Can_t_set_attribute_s_in_node_s, __pyx_k_Can_t_set_attribute_s_in_node_s, sizeof(__pyx_k_Can_t_set_attribute_s_in_node_s), 0, 0, 1, 0},
32300   {&__pyx_kp_s_Cannot_append_to_the_reference_t, __pyx_k_Cannot_append_to_the_reference_t, sizeof(__pyx_k_Cannot_append_to_the_reference_t), 0, 0, 1, 0},
32301   {&__pyx_kp_s_Cannot_write_reference_types_yet, __pyx_k_Cannot_write_reference_types_yet, sizeof(__pyx_k_Cannot_write_reference_types_yet), 0, 0, 1, 0},
32302   {&__pyx_kp_s_Could_not_get_dataset_creation_p, __pyx_k_Could_not_get_dataset_creation_p, sizeof(__pyx_k_Could_not_get_dataset_creation_p), 0, 0, 1, 0},
32303   {&__pyx_kp_s_Could_not_get_dataset_track_time, __pyx_k_Could_not_get_dataset_track_time, sizeof(__pyx_k_Could_not_get_dataset_track_time), 0, 0, 1, 0},
32304   {&__pyx_n_s_DRIVER, __pyx_k_DRIVER, sizeof(__pyx_k_DRIVER), 0, 0, 1, 1},
32305   {&__pyx_n_s_DRIVER_CORE_BACKING_STORE, __pyx_k_DRIVER_CORE_BACKING_STORE, sizeof(__pyx_k_DRIVER_CORE_BACKING_STORE), 0, 0, 1, 1},
32306   {&__pyx_n_s_DRIVER_CORE_IMAGE, __pyx_k_DRIVER_CORE_IMAGE, sizeof(__pyx_k_DRIVER_CORE_IMAGE), 0, 0, 1, 1},
32307   {&__pyx_n_s_DRIVER_CORE_INCREMENT, __pyx_k_DRIVER_CORE_INCREMENT, sizeof(__pyx_k_DRIVER_CORE_INCREMENT), 0, 0, 1, 1},
32308   {&__pyx_n_s_DRIVER_DIRECT_ALIGNMENT, __pyx_k_DRIVER_DIRECT_ALIGNMENT, sizeof(__pyx_k_DRIVER_DIRECT_ALIGNMENT), 0, 0, 1, 1},
32309   {&__pyx_n_s_DRIVER_DIRECT_BLOCK_SIZE, __pyx_k_DRIVER_DIRECT_BLOCK_SIZE, sizeof(__pyx_k_DRIVER_DIRECT_BLOCK_SIZE), 0, 0, 1, 1},
32310   {&__pyx_n_s_DRIVER_DIRECT_CBUF_SIZE, __pyx_k_DRIVER_DIRECT_CBUF_SIZE, sizeof(__pyx_k_DRIVER_DIRECT_CBUF_SIZE), 0, 0, 1, 1},
32311   {&__pyx_n_s_DRIVER_SPLIT_META_EXT, __pyx_k_DRIVER_SPLIT_META_EXT, sizeof(__pyx_k_DRIVER_SPLIT_META_EXT), 0, 0, 1, 1},
32312   {&__pyx_n_s_DRIVER_SPLIT_RAW_EXT, __pyx_k_DRIVER_SPLIT_RAW_EXT, sizeof(__pyx_k_DRIVER_SPLIT_RAW_EXT), 0, 0, 1, 1},
32313   {&__pyx_n_s_DataTypeWarning, __pyx_k_DataTypeWarning, sizeof(__pyx_k_DataTypeWarning), 0, 0, 1, 1},
32314   {&__pyx_n_s_EArray, __pyx_k_EArray, sizeof(__pyx_k_EArray), 0, 0, 1, 1},
32315   {&__pyx_n_s_ExternalLink, __pyx_k_ExternalLink, sizeof(__pyx_k_ExternalLink), 0, 0, 1, 1},
32316   {&__pyx_n_s_File, __pyx_k_File, sizeof(__pyx_k_File), 0, 0, 1, 1},
32317   {&__pyx_kp_u_Format_string_allocated_too_shor, __pyx_k_Format_string_allocated_too_shor, sizeof(__pyx_k_Format_string_allocated_too_shor), 0, 1, 0, 0},
32318   {&__pyx_kp_u_Format_string_allocated_too_shor_2, __pyx_k_Format_string_allocated_too_shor_2, sizeof(__pyx_k_Format_string_allocated_too_shor_2), 0, 1, 0, 0},
32319   {&__pyx_n_s_Group, __pyx_k_Group, sizeof(__pyx_k_Group), 0, 0, 1, 1},
32320   {&__pyx_n_s_H5FD_CORE, __pyx_k_H5FD_CORE, sizeof(__pyx_k_H5FD_CORE), 0, 0, 1, 1},
32321   {&__pyx_n_s_H5FD_DIRECT, __pyx_k_H5FD_DIRECT, sizeof(__pyx_k_H5FD_DIRECT), 0, 0, 1, 1},
32322   {&__pyx_n_s_H5FD_SEC2, __pyx_k_H5FD_SEC2, sizeof(__pyx_k_H5FD_SEC2), 0, 0, 1, 1},
32323   {&__pyx_n_s_H5FD_SPLIT, __pyx_k_H5FD_SPLIT, sizeof(__pyx_k_H5FD_SPLIT), 0, 0, 1, 1},
32324   {&__pyx_n_s_H5FD_STDIO, __pyx_k_H5FD_STDIO, sizeof(__pyx_k_H5FD_STDIO), 0, 0, 1, 1},
32325   {&__pyx_n_s_H5FD_WINDOWS, __pyx_k_H5FD_WINDOWS, sizeof(__pyx_k_H5FD_WINDOWS), 0, 0, 1, 1},
32326   {&__pyx_n_s_HAVE_DIRECT_DRIVER, __pyx_k_HAVE_DIRECT_DRIVER, sizeof(__pyx_k_HAVE_DIRECT_DRIVER), 0, 0, 1, 1},
32327   {&__pyx_n_s_HAVE_WINDOWS_DRIVER, __pyx_k_HAVE_WINDOWS_DRIVER, sizeof(__pyx_k_HAVE_WINDOWS_DRIVER), 0, 0, 1, 1},
32328   {&__pyx_n_s_HDF5ExtError, __pyx_k_HDF5ExtError, sizeof(__pyx_k_HDF5ExtError), 0, 0, 1, 1},
32329   {&__pyx_n_s_ImportError, __pyx_k_ImportError, sizeof(__pyx_k_ImportError), 0, 0, 1, 1},
32330   {&__pyx_kp_s_Incompatible_checksums_s_vs_0x13, __pyx_k_Incompatible_checksums_s_vs_0x13, sizeof(__pyx_k_Incompatible_checksums_s_vs_0x13), 0, 0, 1, 0},
32331   {&__pyx_kp_s_Incompatible_checksums_s_vs_0x38, __pyx_k_Incompatible_checksums_s_vs_0x38, sizeof(__pyx_k_Incompatible_checksums_s_vs_0x38), 0, 0, 1, 0},
32332   {&__pyx_kp_s_Incompatible_checksums_s_vs_0xb0, __pyx_k_Incompatible_checksums_s_vs_0xb0, sizeof(__pyx_k_Incompatible_checksums_s_vs_0xb0), 0, 0, 1, 0},
32333   {&__pyx_kp_s_Incompatible_checksums_s_vs_0xfb, __pyx_k_Incompatible_checksums_s_vs_0xfb, sizeof(__pyx_k_Incompatible_checksums_s_vs_0xfb), 0, 0, 1, 0},
32334   {&__pyx_kp_s_Internal_error_modifying_the_ele, __pyx_k_Internal_error_modifying_the_ele, sizeof(__pyx_k_Internal_error_modifying_the_ele), 0, 0, 1, 0},
32335   {&__pyx_kp_s_Invalid_dataset_id_s, __pyx_k_Invalid_dataset_id_s, sizeof(__pyx_k_Invalid_dataset_id_s), 0, 0, 1, 0},
32336   {&__pyx_kp_s_Invalid_or_not_supported_driver, __pyx_k_Invalid_or_not_supported_driver, sizeof(__pyx_k_Invalid_or_not_supported_driver), 0, 0, 1, 0},
32337   {&__pyx_n_s_Leaf, __pyx_k_Leaf, sizeof(__pyx_k_Leaf), 0, 0, 1, 1},
32338   {&__pyx_n_s_MAX_BLOSC_THREADS, __pyx_k_MAX_BLOSC_THREADS, sizeof(__pyx_k_MAX_BLOSC_THREADS), 0, 0, 1, 1},
32339   {&__pyx_n_s_METADATA_CACHE_SIZE, __pyx_k_METADATA_CACHE_SIZE, sizeof(__pyx_k_METADATA_CACHE_SIZE), 0, 0, 1, 1},
32340   {&__pyx_n_s_NOTB, __pyx_k_NOTB, sizeof(__pyx_k_NOTB), 0, 0, 1, 1},
32341   {&__pyx_n_s_NamedType, __pyx_k_NamedType, sizeof(__pyx_k_NamedType), 0, 0, 1, 1},
32342   {&__pyx_n_s_NoSuchNode, __pyx_k_NoSuchNode, sizeof(__pyx_k_NoSuchNode), 0, 0, 1, 1},
32343   {&__pyx_n_s_Node, __pyx_k_Node, sizeof(__pyx_k_Node), 0, 0, 1, 1},
32344   {&__pyx_kp_s_Non_existing_node_s_under_s, __pyx_k_Non_existing_node_s_under_s, sizeof(__pyx_k_Non_existing_node_s_under_s), 0, 0, 1, 0},
32345   {&__pyx_kp_u_Non_native_byte_order_not_suppor, __pyx_k_Non_native_byte_order_not_suppor, sizeof(__pyx_k_Non_native_byte_order_not_suppor), 0, 1, 0, 0},
32346   {&__pyx_n_s_O8, __pyx_k_O8, sizeof(__pyx_k_O8), 0, 0, 1, 1},
32347   {&__pyx_n_s_ObjInfo, __pyx_k_ObjInfo, sizeof(__pyx_k_ObjInfo), 0, 0, 1, 1},
32348   {&__pyx_n_s_ObjTimestamps, __pyx_k_ObjTimestamps, sizeof(__pyx_k_ObjTimestamps), 0, 0, 1, 1},
32349   {&__pyx_n_s_PYTABLES_SYS_ATTRS, __pyx_k_PYTABLES_SYS_ATTRS, sizeof(__pyx_k_PYTABLES_SYS_ATTRS), 0, 0, 1, 1},
32350   {&__pyx_n_s_PickleError, __pyx_k_PickleError, sizeof(__pyx_k_PickleError), 0, 0, 1, 1},
32351   {&__pyx_kp_s_Problems_appending_the_elements, __pyx_k_Problems_appending_the_elements, sizeof(__pyx_k_Problems_appending_the_elements), 0, 0, 1, 0},
32352   {&__pyx_kp_s_Problems_appending_the_records, __pyx_k_Problems_appending_the_records, sizeof(__pyx_k_Problems_appending_the_records), 0, 0, 1, 0},
32353   {&__pyx_kp_s_Problems_closing_the_Group_s, __pyx_k_Problems_closing_the_Group_s, sizeof(__pyx_k_Problems_closing_the_Group_s), 0, 0, 1, 0},
32354   {&__pyx_kp_s_Problems_closing_the_file_s, __pyx_k_Problems_closing_the_file_s, sizeof(__pyx_k_Problems_closing_the_file_s), 0, 0, 1, 0},
32355   {&__pyx_kp_s_Problems_creating_the_VLArray, __pyx_k_Problems_creating_the_VLArray, sizeof(__pyx_k_Problems_creating_the_VLArray), 0, 0, 1, 0},
32356   {&__pyx_kp_s_Problems_creating_the_s, __pyx_k_Problems_creating_the_s, sizeof(__pyx_k_Problems_creating_the_s), 0, 0, 1, 0},
32357   {&__pyx_kp_s_Problems_creating_the_s_invalid, __pyx_k_Problems_creating_the_s_invalid, sizeof(__pyx_k_Problems_creating_the_s_invalid), 0, 0, 1, 0},
32358   {&__pyx_kp_s_Problems_creating_the_s_invalid_2, __pyx_k_Problems_creating_the_s_invalid_2, sizeof(__pyx_k_Problems_creating_the_s_invalid_2), 0, 0, 1, 0},
32359   {&__pyx_kp_s_Problems_getting_file_descriptor, __pyx_k_Problems_getting_file_descriptor, sizeof(__pyx_k_Problems_getting_file_descriptor), 0, 0, 1, 0},
32360   {&__pyx_kp_s_Problems_getting_ndims, __pyx_k_Problems_getting_ndims, sizeof(__pyx_k_Problems_getting_ndims), 0, 0, 1, 0},
32361   {&__pyx_kp_s_Problems_modifying_the_record, __pyx_k_Problems_modifying_the_record, sizeof(__pyx_k_Problems_modifying_the_record), 0, 0, 1, 0},
32362   {&__pyx_kp_s_Problems_moving_the_node_s_to_s, __pyx_k_Problems_moving_the_node_s_to_s, sizeof(__pyx_k_Problems_moving_the_node_s_to_s), 0, 0, 1, 0},
32363   {&__pyx_kp_s_Problems_reading_the_array_data, __pyx_k_Problems_reading_the_array_data, sizeof(__pyx_k_Problems_reading_the_array_data), 0, 0, 1, 0},
32364   {&__pyx_kp_s_Problems_truncating_the_leaf_s, __pyx_k_Problems_truncating_the_leaf_s, sizeof(__pyx_k_Problems_truncating_the_leaf_s), 0, 0, 1, 0},
32365   {&__pyx_kp_s_Problems_writing_the_array_data, __pyx_k_Problems_writing_the_array_data, sizeof(__pyx_k_Problems_writing_the_array_data), 0, 0, 1, 0},
32366   {&__pyx_n_s_RuntimeError, __pyx_k_RuntimeError, sizeof(__pyx_k_RuntimeError), 0, 0, 1, 1},
32367   {&__pyx_n_s_S, __pyx_k_S, sizeof(__pyx_k_S), 0, 0, 1, 1},
32368   {&__pyx_kp_s_S_s, __pyx_k_S_s, sizeof(__pyx_k_S_s), 0, 0, 1, 0},
32369   {&__pyx_n_s_SizeType, __pyx_k_SizeType, sizeof(__pyx_k_SizeType), 0, 0, 1, 1},
32370   {&__pyx_n_s_SoftLink, __pyx_k_SoftLink, sizeof(__pyx_k_SoftLink), 0, 0, 1, 1},
32371   {&__pyx_kp_s_Support_for_image_files_is_only, __pyx_k_Support_for_image_files_is_only, sizeof(__pyx_k_Support_for_image_files_is_only), 0, 0, 1, 0},
32372   {&__pyx_n_s_Table, __pyx_k_Table, sizeof(__pyx_k_Table), 0, 0, 1, 1},
32373   {&__pyx_kp_s_The_DRIVER_CORE_IMAGE_must_be_a, __pyx_k_The_DRIVER_CORE_IMAGE_must_be_a, sizeof(__pyx_k_The_DRIVER_CORE_IMAGE_must_be_a), 0, 0, 1, 0},
32374   {&__pyx_kp_s_The_DRIVER_CORE_IMAGE_parameter, __pyx_k_The_DRIVER_CORE_IMAGE_parameter, sizeof(__pyx_k_The_DRIVER_CORE_IMAGE_parameter), 0, 0, 1, 0},
32375   {&__pyx_kp_s_The_H5FD_DIRECT_driver_is_not_av, __pyx_k_The_H5FD_DIRECT_driver_is_not_av, sizeof(__pyx_k_The_H5FD_DIRECT_driver_is_not_av), 0, 0, 1, 0},
32376   {&__pyx_kp_s_The_H5FD_WINDOWS_driver_is_not_a, __pyx_k_The_H5FD_WINDOWS_driver_is_not_a, sizeof(__pyx_k_The_H5FD_WINDOWS_driver_is_not_a), 0, 0, 1, 0},
32377   {&__pyx_kp_s_The_HDF5_file_already_esists_the, __pyx_k_The_HDF5_file_already_esists_the, sizeof(__pyx_k_The_HDF5_file_already_esists_the), 0, 0, 1, 0},
32378   {&__pyx_kp_s_The_USER_BLOCK_SIZE_must_be_a_po, __pyx_k_The_USER_BLOCK_SIZE_must_be_a_po, sizeof(__pyx_k_The_USER_BLOCK_SIZE_must_be_a_po), 0, 0, 1, 0},
32379   {&__pyx_n_s_TypeError, __pyx_k_TypeError, sizeof(__pyx_k_TypeError), 0, 0, 1, 1},
32380   {&__pyx_n_s_U, __pyx_k_U, sizeof(__pyx_k_U), 0, 0, 1, 1},
32381   {&__pyx_n_s_USER_BLOCK_SIZE, __pyx_k_USER_BLOCK_SIZE, sizeof(__pyx_k_USER_BLOCK_SIZE), 0, 0, 1, 1},
32382   {&__pyx_n_s_UnImplemented, __pyx_k_UnImplemented, sizeof(__pyx_k_UnImplemented), 0, 0, 1, 1},
32383   {&__pyx_kp_s_Unable_to_allecote_meomory_fir_t, __pyx_k_Unable_to_allecote_meomory_fir_t, sizeof(__pyx_k_Unable_to_allecote_meomory_fir_t), 0, 0, 1, 0},
32384   {&__pyx_kp_s_Unable_to_get_array_info, __pyx_k_Unable_to_get_array_info, sizeof(__pyx_k_Unable_to_get_array_info), 0, 0, 1, 0},
32385   {&__pyx_kp_s_Unable_to_get_object_info_for_s, __pyx_k_Unable_to_get_object_info_for_s, sizeof(__pyx_k_Unable_to_get_object_info_for_s), 0, 0, 1, 0},
32386   {&__pyx_kp_s_Unable_to_get_the_creation_prope, __pyx_k_Unable_to_get_the_creation_prope, sizeof(__pyx_k_Unable_to_get_the_creation_prope), 0, 0, 1, 0},
32387   {&__pyx_kp_s_Unable_to_open_create_file_s, __pyx_k_Unable_to_open_create_file_s, sizeof(__pyx_k_Unable_to_open_create_file_s), 0, 0, 1, 0},
32388   {&__pyx_kp_s_Unable_to_retrieve_the_HDF5_file, __pyx_k_Unable_to_retrieve_the_HDF5_file, sizeof(__pyx_k_Unable_to_retrieve_the_HDF5_file), 0, 0, 1, 0},
32389   {&__pyx_kp_s_Unable_to_retrieve_the_file_imag, __pyx_k_Unable_to_retrieve_the_file_imag, sizeof(__pyx_k_Unable_to_retrieve_the_file_imag), 0, 0, 1, 0},
32390   {&__pyx_kp_s_Unable_to_retrieve_the_size_of_t, __pyx_k_Unable_to_retrieve_the_size_of_t, sizeof(__pyx_k_Unable_to_retrieve_the_size_of_t), 0, 0, 1, 0},
32391   {&__pyx_kp_s_Unable_to_set_the_file_access_pr, __pyx_k_Unable_to_set_the_file_access_pr, sizeof(__pyx_k_Unable_to_set_the_file_access_pr), 0, 0, 1, 0},
32392   {&__pyx_kp_s_Unable_to_set_the_file_image, __pyx_k_Unable_to_set_the_file_image, sizeof(__pyx_k_Unable_to_set_the_file_image), 0, 0, 1, 0},
32393   {&__pyx_kp_s_Unable_to_set_the_user_block_siz, __pyx_k_Unable_to_set_the_user_block_siz, sizeof(__pyx_k_Unable_to_set_the_user_block_siz), 0, 0, 1, 0},
32394   {&__pyx_kp_s_Unexpected_classname_s, __pyx_k_Unexpected_classname_s, sizeof(__pyx_k_Unexpected_classname_s), 0, 0, 1, 0},
32395   {&__pyx_n_s_Unknown, __pyx_k_Unknown, sizeof(__pyx_k_Unknown), 0, 0, 1, 1},
32396   {&__pyx_kp_s_Unsupported_type_for_attribute_s, __pyx_k_Unsupported_type_for_attribute_s, sizeof(__pyx_k_Unsupported_type_for_attribute_s), 0, 0, 1, 0},
32397   {&__pyx_n_s_V, __pyx_k_V, sizeof(__pyx_k_V), 0, 0, 1, 1},
32398   {&__pyx_n_s_VLArray, __pyx_k_VLArray, sizeof(__pyx_k_VLArray), 0, 0, 1, 1},
32399   {&__pyx_kp_s_VLArray__read_array_Problems_rea, __pyx_k_VLArray__read_array_Problems_rea, sizeof(__pyx_k_VLArray__read_array_Problems_rea), 0, 0, 1, 0},
32400   {&__pyx_kp_s_VLArray__read_array_error_freein, __pyx_k_VLArray__read_array_error_freein, sizeof(__pyx_k_VLArray__read_array_error_freein), 0, 0, 1, 0},
32401   {&__pyx_n_s_ValueError, __pyx_k_ValueError, sizeof(__pyx_k_ValueError), 0, 0, 1, 1},
32402   {&__pyx_kp_b__2, __pyx_k__2, sizeof(__pyx_k__2), 0, 0, 0, 0},
32403   {&__pyx_n_s_a, __pyx_k_a, sizeof(__pyx_k_a), 0, 0, 1, 1},
32404   {&__pyx_n_s_addr, __pyx_k_addr, sizeof(__pyx_k_addr), 0, 0, 1, 1},
32405   {&__pyx_kp_s_an_invalid_mode_string_s_passed, __pyx_k_an_invalid_mode_string_s_passed, sizeof(__pyx_k_an_invalid_mode_string_s_passed), 0, 0, 1, 0},
32406   {&__pyx_n_s_append, __pyx_k_append, sizeof(__pyx_k_append), 0, 0, 1, 1},
32407   {&__pyx_n_s_array, __pyx_k_array, sizeof(__pyx_k_array), 0, 0, 1, 1},
32408   {&__pyx_n_s_astype, __pyx_k_astype, sizeof(__pyx_k_astype), 0, 0, 1, 1},
32409   {&__pyx_n_s_atime, __pyx_k_atime, sizeof(__pyx_k_atime), 0, 0, 1, 1},
32410   {&__pyx_n_s_atom, __pyx_k_atom, sizeof(__pyx_k_atom), 0, 0, 1, 1},
32411   {&__pyx_n_s_atom_from_hdf5_type, __pyx_k_atom_from_hdf5_type, sizeof(__pyx_k_atom_from_hdf5_type), 0, 0, 1, 1},
32412   {&__pyx_n_s_atom_to_hdf5_type, __pyx_k_atom_to_hdf5_type, sizeof(__pyx_k_atom_to_hdf5_type), 0, 0, 1, 1},
32413   {&__pyx_n_s_atomicdtype, __pyx_k_atomicdtype, sizeof(__pyx_k_atomicdtype), 0, 0, 1, 1},
32414   {&__pyx_n_s_atomicshape, __pyx_k_atomicshape, sizeof(__pyx_k_atomicshape), 0, 0, 1, 1},
32415   {&__pyx_n_s_atomicsize, __pyx_k_atomicsize, sizeof(__pyx_k_atomicsize), 0, 0, 1, 1},
32416   {&__pyx_n_s_atomictype, __pyx_k_atomictype, sizeof(__pyx_k_atomictype), 0, 0, 1, 1},
32417   {&__pyx_n_s_attr_name, __pyx_k_attr_name, sizeof(__pyx_k_attr_name), 0, 0, 1, 1},
32418   {&__pyx_n_s_attrname, __pyx_k_attrname, sizeof(__pyx_k_attrname), 0, 0, 1, 1},
32419   {&__pyx_n_s_b, __pyx_k_b, sizeof(__pyx_k_b), 0, 0, 1, 1},
32420   {&__pyx_n_s_b1, __pyx_k_b1, sizeof(__pyx_k_b1), 0, 0, 1, 1},
32421   {&__pyx_n_s_base, __pyx_k_base, sizeof(__pyx_k_base), 0, 0, 1, 1},
32422   {&__pyx_n_s_btime, __pyx_k_btime, sizeof(__pyx_k_btime), 0, 0, 1, 1},
32423   {&__pyx_n_s_buffer, __pyx_k_buffer, sizeof(__pyx_k_buffer), 0, 0, 1, 1},
32424   {&__pyx_n_s_byteorder, __pyx_k_byteorder, sizeof(__pyx_k_byteorder), 0, 0, 1, 1},
32425   {&__pyx_n_s_byteorders, __pyx_k_byteorders, sizeof(__pyx_k_byteorders), 0, 0, 1, 1},
32426   {&__pyx_n_s_bytes, __pyx_k_bytes, sizeof(__pyx_k_bytes), 0, 0, 1, 1},
32427   {&__pyx_n_s_byteswap, __pyx_k_byteswap, sizeof(__pyx_k_byteswap), 0, 0, 1, 1},
32428   {&__pyx_n_s_c, __pyx_k_c, sizeof(__pyx_k_c), 0, 0, 1, 1},
32429   {&__pyx_n_s_cPickle, __pyx_k_cPickle, sizeof(__pyx_k_cPickle), 0, 0, 1, 1},
32430   {&__pyx_n_s_c_classid, __pyx_k_c_classid, sizeof(__pyx_k_c_classid), 0, 0, 1, 1},
32431   {&__pyx_n_s_check_file_access, __pyx_k_check_file_access, sizeof(__pyx_k_check_file_access), 0, 0, 1, 1},
32432   {&__pyx_n_s_chunkshape, __pyx_k_chunkshape, sizeof(__pyx_k_chunkshape), 0, 0, 1, 1},
32433   {&__pyx_n_s_class, __pyx_k_class, sizeof(__pyx_k_class), 0, 0, 1, 1},
32434   {&__pyx_n_s_cline_in_traceback, __pyx_k_cline_in_traceback, sizeof(__pyx_k_cline_in_traceback), 0, 0, 1, 1},
32435   {&__pyx_n_s_collections, __pyx_k_collections, sizeof(__pyx_k_collections), 0, 0, 1, 1},
32436   {&__pyx_n_s_complevel, __pyx_k_complevel, sizeof(__pyx_k_complevel), 0, 0, 1, 1},
32437   {&__pyx_n_s_complib, __pyx_k_complib, sizeof(__pyx_k_complib), 0, 0, 1, 1},
32438   {&__pyx_n_s_coords, __pyx_k_coords, sizeof(__pyx_k_coords), 0, 0, 1, 1},
32439   {&__pyx_n_s_copy, __pyx_k_copy, sizeof(__pyx_k_copy), 0, 0, 1, 1},
32440   {&__pyx_n_s_correct_byteorder, __pyx_k_correct_byteorder, sizeof(__pyx_k_correct_byteorder), 0, 0, 1, 1},
32441   {&__pyx_n_s_count, __pyx_k_count, sizeof(__pyx_k_count), 0, 0, 1, 1},
32442   {&__pyx_n_s_countl, __pyx_k_countl, sizeof(__pyx_k_countl), 0, 0, 1, 1},
32443   {&__pyx_n_s_create_nested_type, __pyx_k_create_nested_type, sizeof(__pyx_k_create_nested_type), 0, 0, 1, 1},
32444   {&__pyx_n_s_ctime, __pyx_k_ctime, sizeof(__pyx_k_ctime), 0, 0, 1, 1},
32445   {&__pyx_n_s_descr_from_dtype, __pyx_k_descr_from_dtype, sizeof(__pyx_k_descr_from_dtype), 0, 0, 1, 1},
32446   {&__pyx_n_s_dflt, __pyx_k_dflt, sizeof(__pyx_k_dflt), 0, 0, 1, 1},
32447   {&__pyx_n_s_dict, __pyx_k_dict, sizeof(__pyx_k_dict), 0, 0, 1, 1},
32448   {&__pyx_n_s_dtype, __pyx_k_dtype, sizeof(__pyx_k_dtype), 0, 0, 1, 1},
32449   {&__pyx_n_s_dumps, __pyx_k_dumps, sizeof(__pyx_k_dumps), 0, 0, 1, 1},
32450   {&__pyx_n_s_empty, __pyx_k_empty, sizeof(__pyx_k_empty), 0, 0, 1, 1},
32451   {&__pyx_n_s_encode, __pyx_k_encode, sizeof(__pyx_k_encode), 0, 0, 1, 1},
32452   {&__pyx_n_s_encode_filename, __pyx_k_encode_filename, sizeof(__pyx_k_encode_filename), 0, 0, 1, 1},
32453   {&__pyx_n_s_enumerate, __pyx_k_enumerate, sizeof(__pyx_k_enumerate), 0, 0, 1, 1},
32454   {&__pyx_n_s_exists, __pyx_k_exists, sizeof(__pyx_k_exists), 0, 0, 1, 1},
32455   {&__pyx_n_s_extdim, __pyx_k_extdim, sizeof(__pyx_k_extdim), 0, 0, 1, 1},
32456   {&__pyx_n_s_f, __pyx_k_f, sizeof(__pyx_k_f), 0, 0, 1, 1},
32457   {&__pyx_kp_s_f_s, __pyx_k_f_s, sizeof(__pyx_k_f_s), 0, 0, 1, 0},
32458   {&__pyx_n_s_filters, __pyx_k_filters, sizeof(__pyx_k_filters), 0, 0, 1, 1},
32459   {&__pyx_n_s_flags, __pyx_k_flags, sizeof(__pyx_k_flags), 0, 0, 1, 1},
32460   {&__pyx_n_s_fletcher32, __pyx_k_fletcher32, sizeof(__pyx_k_fletcher32), 0, 0, 1, 1},
32461   {&__pyx_n_s_flush, __pyx_k_flush, sizeof(__pyx_k_flush), 0, 0, 1, 1},
32462   {&__pyx_n_s_from_dtype, __pyx_k_from_dtype, sizeof(__pyx_k_from_dtype), 0, 0, 1, 1},
32463   {&__pyx_n_s_g_new, __pyx_k_g_new, sizeof(__pyx_k_g_new), 0, 0, 1, 1},
32464   {&__pyx_n_s_generic, __pyx_k_generic, sizeof(__pyx_k_generic), 0, 0, 1, 1},
32465   {&__pyx_n_s_get, __pyx_k_get, sizeof(__pyx_k_get), 0, 0, 1, 1},
32466   {&__pyx_n_s_getstate, __pyx_k_getstate, sizeof(__pyx_k_getstate), 0, 0, 1, 1},
32467   {&__pyx_n_s_group_name, __pyx_k_group_name, sizeof(__pyx_k_group_name), 0, 0, 1, 1},
32468   {&__pyx_n_s_h5bt, __pyx_k_h5bt, sizeof(__pyx_k_h5bt), 0, 0, 1, 1},
32469   {&__pyx_n_s_hdf5_class_to_string, __pyx_k_hdf5_class_to_string, sizeof(__pyx_k_hdf5_class_to_string), 0, 0, 1, 1},
32470   {&__pyx_n_s_hdf5_to_np_ext_type, __pyx_k_hdf5_to_np_ext_type, sizeof(__pyx_k_hdf5_to_np_ext_type), 0, 0, 1, 1},
32471   {&__pyx_n_s_i, __pyx_k_i, sizeof(__pyx_k_i), 0, 0, 1, 1},
32472   {&__pyx_n_s_i8, __pyx_k_i8, sizeof(__pyx_k_i8), 0, 0, 1, 1},
32473   {&__pyx_kp_s_i_s, __pyx_k_i_s, sizeof(__pyx_k_i_s), 0, 0, 1, 0},
32474   {&__pyx_n_s_idx, __pyx_k_idx, sizeof(__pyx_k_idx), 0, 0, 1, 1},
32475   {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1},
32476   {&__pyx_n_s_init, __pyx_k_init, sizeof(__pyx_k_init), 0, 0, 1, 1},
32477   {&__pyx_n_s_insert, __pyx_k_insert, sizeof(__pyx_k_insert), 0, 0, 1, 1},
32478   {&__pyx_n_s_int32, __pyx_k_int32, sizeof(__pyx_k_int32), 0, 0, 1, 1},
32479   {&__pyx_n_s_intp, __pyx_k_intp, sizeof(__pyx_k_intp), 0, 0, 1, 1},
32480   {&__pyx_n_s_isPTFile, __pyx_k_isPTFile, sizeof(__pyx_k_isPTFile), 0, 0, 1, 1},
32481   {&__pyx_n_s_kind, __pyx_k_kind, sizeof(__pyx_k_kind), 0, 0, 1, 1},
32482   {&__pyx_n_s_leaf_name, __pyx_k_leaf_name, sizeof(__pyx_k_leaf_name), 0, 0, 1, 1},
32483   {&__pyx_kp_s_m_h5, __pyx_k_m_h5, sizeof(__pyx_k_m_h5), 0, 0, 1, 0},
32484   {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1},
32485   {&__pyx_n_s_maindim, __pyx_k_maindim, sizeof(__pyx_k_maindim), 0, 0, 1, 1},
32486   {&__pyx_n_s_map, __pyx_k_map, sizeof(__pyx_k_map), 0, 0, 1, 1},
32487   {&__pyx_n_s_mode, __pyx_k_mode, sizeof(__pyx_k_mode), 0, 0, 1, 1},
32488   {&__pyx_n_s_mtime, __pyx_k_mtime, sizeof(__pyx_k_mtime), 0, 0, 1, 1},
32489   {&__pyx_n_s_name, __pyx_k_name, sizeof(__pyx_k_name), 0, 0, 1, 1},
32490   {&__pyx_n_s_name_2, __pyx_k_name_2, sizeof(__pyx_k_name_2), 0, 0, 1, 1},
32491   {&__pyx_n_s_namedtuple, __pyx_k_namedtuple, sizeof(__pyx_k_namedtuple), 0, 0, 1, 1},
32492   {&__pyx_n_s_ndarray, __pyx_k_ndarray, sizeof(__pyx_k_ndarray), 0, 0, 1, 1},
32493   {&__pyx_kp_u_ndarray_is_not_C_contiguous, __pyx_k_ndarray_is_not_C_contiguous, sizeof(__pyx_k_ndarray_is_not_C_contiguous), 0, 1, 0, 0},
32494   {&__pyx_kp_u_ndarray_is_not_Fortran_contiguou, __pyx_k_ndarray_is_not_Fortran_contiguou, sizeof(__pyx_k_ndarray_is_not_Fortran_contiguou), 0, 1, 0, 0},
32495   {&__pyx_n_s_new, __pyx_k_new, sizeof(__pyx_k_new), 0, 0, 1, 1},
32496   {&__pyx_n_s_newname, __pyx_k_newname, sizeof(__pyx_k_newname), 0, 0, 1, 1},
32497   {&__pyx_n_s_newparent, __pyx_k_newparent, sizeof(__pyx_k_newparent), 0, 0, 1, 1},
32498   {&__pyx_n_s_newpathname, __pyx_k_newpathname, sizeof(__pyx_k_newpathname), 0, 0, 1, 1},
32499   {&__pyx_n_s_nobjects, __pyx_k_nobjects, sizeof(__pyx_k_nobjects), 0, 0, 1, 1},
32500   {&__pyx_n_s_node, __pyx_k_node, sizeof(__pyx_k_node), 0, 0, 1, 1},
32501   {&__pyx_n_s_nparr, __pyx_k_nparr, sizeof(__pyx_k_nparr), 0, 0, 1, 1},
32502   {&__pyx_n_s_npext_prefixes_to_ptkinds, __pyx_k_npext_prefixes_to_ptkinds, sizeof(__pyx_k_npext_prefixes_to_ptkinds), 0, 0, 1, 1},
32503   {&__pyx_n_s_nrow, __pyx_k_nrow, sizeof(__pyx_k_nrow), 0, 0, 1, 1},
32504   {&__pyx_n_s_nrows, __pyx_k_nrows, sizeof(__pyx_k_nrows), 0, 0, 1, 1},
32505   {&__pyx_n_s_numpy, __pyx_k_numpy, sizeof(__pyx_k_numpy), 0, 0, 1, 1},
32506   {&__pyx_kp_s_numpy_core_multiarray_failed_to, __pyx_k_numpy_core_multiarray_failed_to, sizeof(__pyx_k_numpy_core_multiarray_failed_to), 0, 0, 1, 0},
32507   {&__pyx_kp_s_numpy_core_umath_failed_to_impor, __pyx_k_numpy_core_umath_failed_to_impor, sizeof(__pyx_k_numpy_core_umath_failed_to_impor), 0, 0, 1, 0},
32508   {&__pyx_n_s_object, __pyx_k_object, sizeof(__pyx_k_object), 0, 0, 1, 1},
32509   {&__pyx_n_s_oldname, __pyx_k_oldname, sizeof(__pyx_k_oldname), 0, 0, 1, 1},
32510   {&__pyx_n_s_oldparent, __pyx_k_oldparent, sizeof(__pyx_k_oldparent), 0, 0, 1, 1},
32511   {&__pyx_n_s_oldpathname, __pyx_k_oldpathname, sizeof(__pyx_k_oldpathname), 0, 0, 1, 1},
32512   {&__pyx_n_s_os, __pyx_k_os, sizeof(__pyx_k_os), 0, 0, 1, 1},
32513   {&__pyx_n_s_params, __pyx_k_params, sizeof(__pyx_k_params), 0, 0, 1, 1},
32514   {&__pyx_n_s_path, __pyx_k_path, sizeof(__pyx_k_path), 0, 0, 1, 1},
32515   {&__pyx_n_s_perform_selection, __pyx_k_perform_selection, sizeof(__pyx_k_perform_selection), 0, 0, 1, 1},
32516   {&__pyx_n_s_pickle, __pyx_k_pickle, sizeof(__pyx_k_pickle), 0, 0, 1, 1},
32517   {&__pyx_n_s_platform_byteorder, __pyx_k_platform_byteorder, sizeof(__pyx_k_platform_byteorder), 0, 0, 1, 1},
32518   {&__pyx_kp_s_problems_deleting_the_node_s, __pyx_k_problems_deleting_the_node_s, sizeof(__pyx_k_problems_deleting_the_node_s), 0, 0, 1, 0},
32519   {&__pyx_n_s_pt_special_kinds, __pyx_k_pt_special_kinds, sizeof(__pyx_k_pt_special_kinds), 0, 0, 1, 1},
32520   {&__pyx_n_s_ptparams, __pyx_k_ptparams, sizeof(__pyx_k_ptparams), 0, 0, 1, 1},
32521   {&__pyx_n_s_pttype_to_hdf5, __pyx_k_pttype_to_hdf5, sizeof(__pyx_k_pttype_to_hdf5), 0, 0, 1, 1},
32522   {&__pyx_n_s_pure_numpy_types, __pyx_k_pure_numpy_types, sizeof(__pyx_k_pure_numpy_types), 0, 0, 1, 1},
32523   {&__pyx_n_s_pymode, __pyx_k_pymode, sizeof(__pyx_k_pymode), 0, 0, 1, 1},
32524   {&__pyx_n_s_pyx_PickleError, __pyx_k_pyx_PickleError, sizeof(__pyx_k_pyx_PickleError), 0, 0, 1, 1},
32525   {&__pyx_n_s_pyx_checksum, __pyx_k_pyx_checksum, sizeof(__pyx_k_pyx_checksum), 0, 0, 1, 1},
32526   {&__pyx_n_s_pyx_result, __pyx_k_pyx_result, sizeof(__pyx_k_pyx_result), 0, 0, 1, 1},
32527   {&__pyx_n_s_pyx_state, __pyx_k_pyx_state, sizeof(__pyx_k_pyx_state), 0, 0, 1, 1},
32528   {&__pyx_n_s_pyx_type, __pyx_k_pyx_type, sizeof(__pyx_k_pyx_type), 0, 0, 1, 1},
32529   {&__pyx_n_s_pyx_unpickle_AttributeSet, __pyx_k_pyx_unpickle_AttributeSet, sizeof(__pyx_k_pyx_unpickle_AttributeSet), 0, 0, 1, 1},
32530   {&__pyx_n_s_pyx_unpickle_File, __pyx_k_pyx_unpickle_File, sizeof(__pyx_k_pyx_unpickle_File), 0, 0, 1, 1},
32531   {&__pyx_n_s_pyx_unpickle_Group, __pyx_k_pyx_unpickle_Group, sizeof(__pyx_k_pyx_unpickle_Group), 0, 0, 1, 1},
32532   {&__pyx_n_s_pyx_unpickle_Node, __pyx_k_pyx_unpickle_Node, sizeof(__pyx_k_pyx_unpickle_Node), 0, 0, 1, 1},
32533   {&__pyx_n_s_pyx_vtable, __pyx_k_pyx_vtable, sizeof(__pyx_k_pyx_vtable), 0, 0, 1, 1},
32534   {&__pyx_n_s_r, __pyx_k_r, sizeof(__pyx_k_r), 0, 0, 1, 1},
32535   {&__pyx_kp_s_r_2, __pyx_k_r_2, sizeof(__pyx_k_r_2), 0, 0, 1, 0},
32536   {&__pyx_kp_s_r_h5, __pyx_k_r_h5, sizeof(__pyx_k_r_h5), 0, 0, 1, 0},
32537   {&__pyx_n_s_range, __pyx_k_range, sizeof(__pyx_k_range), 0, 0, 1, 1},
32538   {&__pyx_n_s_rc, __pyx_k_rc, sizeof(__pyx_k_rc), 0, 0, 1, 1},
32539   {&__pyx_n_s_reduce, __pyx_k_reduce, sizeof(__pyx_k_reduce), 0, 0, 1, 1},
32540   {&__pyx_n_s_reduce_cython, __pyx_k_reduce_cython, sizeof(__pyx_k_reduce_cython), 0, 0, 1, 1},
32541   {&__pyx_n_s_reduce_ex, __pyx_k_reduce_ex, sizeof(__pyx_k_reduce_ex), 0, 0, 1, 1},
32542   {&__pyx_n_s_reference, __pyx_k_reference, sizeof(__pyx_k_reference), 0, 0, 1, 1},
32543   {&__pyx_n_s_rstrip, __pyx_k_rstrip, sizeof(__pyx_k_rstrip), 0, 0, 1, 1},
32544   {&__pyx_kp_s_s, __pyx_k_s, sizeof(__pyx_k_s), 0, 0, 1, 0},
32545   {&__pyx_n_s_selection, __pyx_k_selection, sizeof(__pyx_k_selection), 0, 0, 1, 1},
32546   {&__pyx_kp_s_self_dims_cannot_be_converted_to, __pyx_k_self_dims_cannot_be_converted_to, sizeof(__pyx_k_self_dims_cannot_be_converted_to), 0, 0, 1, 0},
32547   {&__pyx_kp_s_self_dims_self_dims_chunk_self_m, __pyx_k_self_dims_self_dims_chunk_self_m, sizeof(__pyx_k_self_dims_self_dims_chunk_self_m), 0, 0, 1, 0},
32548   {&__pyx_n_s_set_blosc_max_threads, __pyx_k_set_blosc_max_threads, sizeof(__pyx_k_set_blosc_max_threads), 0, 0, 1, 1},
32549   {&__pyx_n_s_setstate, __pyx_k_setstate, sizeof(__pyx_k_setstate), 0, 0, 1, 1},
32550   {&__pyx_n_s_setstate_cython, __pyx_k_setstate_cython, sizeof(__pyx_k_setstate_cython), 0, 0, 1, 1},
32551   {&__pyx_n_s_shape, __pyx_k_shape, sizeof(__pyx_k_shape), 0, 0, 1, 1},
32552   {&__pyx_n_s_shuffle_bitshuffle, __pyx_k_shuffle_bitshuffle, sizeof(__pyx_k_shuffle_bitshuffle), 0, 0, 1, 1},
32553   {&__pyx_n_s_size, __pyx_k_size, sizeof(__pyx_k_size), 0, 0, 1, 1},
32554   {&__pyx_n_s_space_id, __pyx_k_space_id, sizeof(__pyx_k_space_id), 0, 0, 1, 1},
32555   {&__pyx_n_s_start, __pyx_k_start, sizeof(__pyx_k_start), 0, 0, 1, 1},
32556   {&__pyx_n_s_startl, __pyx_k_startl, sizeof(__pyx_k_startl), 0, 0, 1, 1},
32557   {&__pyx_n_s_step, __pyx_k_step, sizeof(__pyx_k_step), 0, 0, 1, 1},
32558   {&__pyx_n_s_stepl, __pyx_k_stepl, sizeof(__pyx_k_stepl), 0, 0, 1, 1},
32559   {&__pyx_n_s_stop, __pyx_k_stop, sizeof(__pyx_k_stop), 0, 0, 1, 1},
32560   {&__pyx_n_s_stopl, __pyx_k_stopl, sizeof(__pyx_k_stopl), 0, 0, 1, 1},
32561   {&__pyx_n_s_strides, __pyx_k_strides, sizeof(__pyx_k_strides), 0, 0, 1, 1},
32562   {&__pyx_kp_s_stringsource, __pyx_k_stringsource, sizeof(__pyx_k_stringsource), 0, 0, 1, 0},
32563   {&__pyx_n_s_sum, __pyx_k_sum, sizeof(__pyx_k_sum), 0, 0, 1, 1},
32564   {&__pyx_n_s_super, __pyx_k_super, sizeof(__pyx_k_super), 0, 0, 1, 1},
32565   {&__pyx_n_s_supported_drivers, __pyx_k_supported_drivers, sizeof(__pyx_k_supported_drivers), 0, 0, 1, 1},
32566   {&__pyx_n_s_tables_atom, __pyx_k_tables_atom, sizeof(__pyx_k_tables_atom), 0, 0, 1, 1},
32567   {&__pyx_n_s_tables_description, __pyx_k_tables_description, sizeof(__pyx_k_tables_description), 0, 0, 1, 1},
32568   {&__pyx_n_s_tables_exceptions, __pyx_k_tables_exceptions, sizeof(__pyx_k_tables_exceptions), 0, 0, 1, 1},
32569   {&__pyx_n_s_tables_hdf5extension, __pyx_k_tables_hdf5extension, sizeof(__pyx_k_tables_hdf5extension), 0, 0, 1, 1},
32570   {&__pyx_n_s_tables_utils, __pyx_k_tables_utils, sizeof(__pyx_k_tables_utils), 0, 0, 1, 1},
32571   {&__pyx_n_s_tables_utilsextension, __pyx_k_tables_utilsextension, sizeof(__pyx_k_tables_utilsextension), 0, 0, 1, 1},
32572   {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1},
32573   {&__pyx_n_s_time, __pyx_k_time, sizeof(__pyx_k_time), 0, 0, 1, 1},
32574   {&__pyx_n_s_time64, __pyx_k_time64, sizeof(__pyx_k_time64), 0, 0, 1, 1},
32575   {&__pyx_n_s_title, __pyx_k_title, sizeof(__pyx_k_title), 0, 0, 1, 1},
32576   {&__pyx_n_s_type, __pyx_k_type, sizeof(__pyx_k_type), 0, 0, 1, 1},
32577   {&__pyx_n_s_u, __pyx_k_u, sizeof(__pyx_k_u), 0, 0, 1, 1},
32578   {&__pyx_kp_s_u_s, __pyx_k_u_s, sizeof(__pyx_k_u_s), 0, 0, 1, 0},
32579   {&__pyx_kp_s_unable_to_retrieve_the_user_bloc, __pyx_k_unable_to_retrieve_the_user_bloc, sizeof(__pyx_k_unable_to_retrieve_the_user_bloc), 0, 0, 1, 0},
32580   {&__pyx_n_s_unicode, __pyx_k_unicode, sizeof(__pyx_k_unicode), 0, 0, 1, 1},
32581   {&__pyx_kp_u_unknown_dtype_code_in_numpy_pxd, __pyx_k_unknown_dtype_code_in_numpy_pxd, sizeof(__pyx_k_unknown_dtype_code_in_numpy_pxd), 0, 1, 0, 0},
32582   {&__pyx_n_s_update, __pyx_k_update, sizeof(__pyx_k_update), 0, 0, 1, 1},
32583   {&__pyx_kp_s_utf_8, __pyx_k_utf_8, sizeof(__pyx_k_utf_8), 0, 0, 1, 0},
32584   {&__pyx_n_s_v_dtype, __pyx_k_v_dtype, sizeof(__pyx_k_v_dtype), 0, 0, 1, 1},
32585   {&__pyx_n_s_v_file, __pyx_k_v_file, sizeof(__pyx_k_v_file), 0, 0, 1, 1},
32586   {&__pyx_n_s_v_name, __pyx_k_v_name, sizeof(__pyx_k_v_name), 0, 0, 1, 1},
32587   {&__pyx_n_s_v_new, __pyx_k_v_new, sizeof(__pyx_k_v_new), 0, 0, 1, 1},
32588   {&__pyx_n_s_v_node, __pyx_k_v_node, sizeof(__pyx_k_v_node), 0, 0, 1, 1},
32589   {&__pyx_n_s_v_objectid, __pyx_k_v_objectid, sizeof(__pyx_k_v_objectid), 0, 0, 1, 1},
32590   {&__pyx_n_s_v_parent, __pyx_k_v_parent, sizeof(__pyx_k_v_parent), 0, 0, 1, 1},
32591   {&__pyx_n_s_v_pathname, __pyx_k_v_pathname, sizeof(__pyx_k_v_pathname), 0, 0, 1, 1},
32592   {&__pyx_n_s_v_unimplemented, __pyx_k_v_unimplemented, sizeof(__pyx_k_v_unimplemented), 0, 0, 1, 1},
32593   {&__pyx_n_s_v_version, __pyx_k_v_version, sizeof(__pyx_k_v_version), 0, 0, 1, 1},
32594   {&__pyx_n_s_value, __pyx_k_value, sizeof(__pyx_k_value), 0, 0, 1, 1},
32595   {&__pyx_kp_s_variable_length_strings_are_not, __pyx_k_variable_length_strings_are_not, sizeof(__pyx_k_variable_length_strings_are_not), 0, 0, 1, 0},
32596   {&__pyx_n_s_w, __pyx_k_w, sizeof(__pyx_k_w), 0, 0, 1, 1},
32597   {&__pyx_n_s_want_track_times, __pyx_k_want_track_times, sizeof(__pyx_k_want_track_times), 0, 0, 1, 1},
32598   {&__pyx_n_s_warn, __pyx_k_warn, sizeof(__pyx_k_warn), 0, 0, 1, 1},
32599   {&__pyx_n_s_warnings, __pyx_k_warnings, sizeof(__pyx_k_warnings), 0, 0, 1, 1},
32600   {&__pyx_n_s_where, __pyx_k_where, sizeof(__pyx_k_where), 0, 0, 1, 1},
32601   {&__pyx_n_s_writeable, __pyx_k_writeable, sizeof(__pyx_k_writeable), 0, 0, 1, 1},
32602   {&__pyx_n_s_zeros, __pyx_k_zeros, sizeof(__pyx_k_zeros), 0, 0, 1, 1},
32603   {0, 0, 0, 0, 0, 0, 0}
32604 };
__Pyx_InitCachedBuiltins(void)32605 static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(void) {
32606   __pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s_TypeError); if (!__pyx_builtin_TypeError) __PYX_ERR(0, 280, __pyx_L1_error)
32607   __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) __PYX_ERR(0, 329, __pyx_L1_error)
32608   __pyx_builtin_RuntimeError = __Pyx_GetBuiltinName(__pyx_n_s_RuntimeError); if (!__pyx_builtin_RuntimeError) __PYX_ERR(0, 363, __pyx_L1_error)
32609   __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) __PYX_ERR(0, 836, __pyx_L1_error)
32610   __pyx_builtin_super = __Pyx_GetBuiltinName(__pyx_n_s_super); if (!__pyx_builtin_super) __PYX_ERR(0, 1157, __pyx_L1_error)
32611   __pyx_builtin_sum = __Pyx_GetBuiltinName(__pyx_n_s_sum); if (!__pyx_builtin_sum) __PYX_ERR(0, 1280, __pyx_L1_error)
32612   __pyx_builtin_enumerate = __Pyx_GetBuiltinName(__pyx_n_s_enumerate); if (!__pyx_builtin_enumerate) __PYX_ERR(0, 1688, __pyx_L1_error)
32613   __pyx_builtin_map = __Pyx_GetBuiltinName(__pyx_n_s_map); if (!__pyx_builtin_map) __PYX_ERR(0, 2228, __pyx_L1_error)
32614   __pyx_builtin_ImportError = __Pyx_GetBuiltinName(__pyx_n_s_ImportError); if (!__pyx_builtin_ImportError) __PYX_ERR(2, 1038, __pyx_L1_error)
32615   return 0;
32616   __pyx_L1_error:;
32617   return -1;
32618 }
32619 
__Pyx_InitCachedConstants(void)32620 static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) {
32621   __Pyx_RefNannyDeclarations
32622   __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0);
32623 
32624   /* "tables/hdf5extension.pyx":280
32625  *   elif class_id ==  H5T_STRING:
32626  *     if H5Tis_variable_str(type_id):
32627  *       raise TypeError("variable length strings are not supported yet")             # <<<<<<<<<<<<<<
32628  *     stype = "S%s" % (itemsize)
32629  *
32630  */
32631   __pyx_tuple__3 = PyTuple_Pack(1, __pyx_kp_s_variable_length_strings_are_not); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 280, __pyx_L1_error)
32632   __Pyx_GOTREF(__pyx_tuple__3);
32633   __Pyx_GIVEREF(__pyx_tuple__3);
32634 
32635   /* "tables/hdf5extension.pyx":361
32636  *                       "the '%s' driver" % driver)
32637  *       elif not PyBytes_Check(image):
32638  *         raise TypeError("The DRIVER_CORE_IMAGE must be a string of bytes")             # <<<<<<<<<<<<<<
32639  *       elif not H5_HAVE_IMAGE_FILE:
32640  *         raise RuntimeError("Support for image files is only available in "
32641  */
32642   __pyx_tuple__4 = PyTuple_Pack(1, __pyx_kp_s_The_DRIVER_CORE_IMAGE_must_be_a); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(0, 361, __pyx_L1_error)
32643   __Pyx_GOTREF(__pyx_tuple__4);
32644   __Pyx_GIVEREF(__pyx_tuple__4);
32645 
32646   /* "tables/hdf5extension.pyx":363
32647  *         raise TypeError("The DRIVER_CORE_IMAGE must be a string of bytes")
32648  *       elif not H5_HAVE_IMAGE_FILE:
32649  *         raise RuntimeError("Support for image files is only available in "             # <<<<<<<<<<<<<<
32650  *                            "HDF5 >= 1.8.9")
32651  *
32652  */
32653   __pyx_tuple__5 = PyTuple_Pack(1, __pyx_kp_s_Support_for_image_files_is_only); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 363, __pyx_L1_error)
32654   __Pyx_GOTREF(__pyx_tuple__5);
32655   __Pyx_GIVEREF(__pyx_tuple__5);
32656 
32657   /* "tables/hdf5extension.pyx":393
32658  *       is_pow_of_2 = ((user_block_size & (user_block_size - 1)) == 0)
32659  *       if user_block_size < 512 or not is_pow_of_2:
32660  *         raise ValueError("The USER_BLOCK_SIZE must be a power od 2 greather "             # <<<<<<<<<<<<<<
32661  *                          "than 512 or zero")
32662  *
32663  */
32664   __pyx_tuple__6 = PyTuple_Pack(1, __pyx_kp_s_The_USER_BLOCK_SIZE_must_be_a_po); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(0, 393, __pyx_L1_error)
32665   __Pyx_GOTREF(__pyx_tuple__6);
32666   __Pyx_GIVEREF(__pyx_tuple__6);
32667 
32668   /* "tables/hdf5extension.pyx":419
32669  *         H5Pclose(create_plist)
32670  *         H5Pclose(access_plist)
32671  *         raise RuntimeError("The H5FD_DIRECT driver is not available")             # <<<<<<<<<<<<<<
32672  *       err = pt_H5Pset_fapl_direct(access_plist,
32673  *                                   params["DRIVER_DIRECT_ALIGNMENT"],
32674  */
32675   __pyx_tuple__7 = PyTuple_Pack(1, __pyx_kp_s_The_H5FD_DIRECT_driver_is_not_av); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(0, 419, __pyx_L1_error)
32676   __Pyx_GOTREF(__pyx_tuple__7);
32677   __Pyx_GIVEREF(__pyx_tuple__7);
32678 
32679   /* "tables/hdf5extension.pyx":438
32680  *         H5Pclose(access_plist)
32681  *         H5Pclose(create_plist)
32682  *         raise RuntimeError("The H5FD_WINDOWS driver is not available")             # <<<<<<<<<<<<<<
32683  *       err = pt_H5Pset_fapl_windows(access_plist)
32684  *     elif driver == "H5FD_STDIO":
32685  */
32686   __pyx_tuple__8 = PyTuple_Pack(1, __pyx_kp_s_The_H5FD_WINDOWS_driver_is_not_a); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(0, 438, __pyx_L1_error)
32687   __Pyx_GOTREF(__pyx_tuple__8);
32688   __Pyx_GIVEREF(__pyx_tuple__8);
32689 
32690   /* "tables/hdf5extension.pyx":530
32691  *     image = PyBytes_FromStringAndSize(NULL, size)
32692  *     if not image:
32693  *       raise RuntimeError("Unable to allecote meomory fir the file image")             # <<<<<<<<<<<<<<
32694  *
32695  *     cimage = image
32696  */
32697   __pyx_tuple__9 = PyTuple_Pack(1, __pyx_kp_s_Unable_to_allecote_meomory_fir_t); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(0, 530, __pyx_L1_error)
32698   __Pyx_GOTREF(__pyx_tuple__9);
32699   __Pyx_GIVEREF(__pyx_tuple__9);
32700 
32701   /* "(tree fragment)":2
32702  * def __reduce_cython__(self):
32703  *     raise TypeError("self.dims cannot be converted to a Python object for pickling")             # <<<<<<<<<<<<<<
32704  * def __setstate_cython__(self, __pyx_state):
32705  *     raise TypeError("self.dims cannot be converted to a Python object for pickling")
32706  */
32707   __pyx_tuple__10 = PyTuple_Pack(1, __pyx_kp_s_self_dims_cannot_be_converted_to); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(1, 2, __pyx_L1_error)
32708   __Pyx_GOTREF(__pyx_tuple__10);
32709   __Pyx_GIVEREF(__pyx_tuple__10);
32710 
32711   /* "(tree fragment)":4
32712  *     raise TypeError("self.dims cannot be converted to a Python object for pickling")
32713  * def __setstate_cython__(self, __pyx_state):
32714  *     raise TypeError("self.dims cannot be converted to a Python object for pickling")             # <<<<<<<<<<<<<<
32715  */
32716   __pyx_tuple__11 = PyTuple_Pack(1, __pyx_kp_s_self_dims_cannot_be_converted_to); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(1, 4, __pyx_L1_error)
32717   __Pyx_GOTREF(__pyx_tuple__11);
32718   __Pyx_GIVEREF(__pyx_tuple__11);
32719 
32720   /* "tables/hdf5extension.pyx":1350
32721  *       fill_data = dflts.data
32722  *     else:
32723  *       dflts = numpy.zeros((), dtype=atom.dtype)             # <<<<<<<<<<<<<<
32724  *       fill_data = NULL
32725  *     if atom.shape == ():
32726  */
32727   __pyx_tuple__12 = PyTuple_Pack(1, __pyx_empty_tuple); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(0, 1350, __pyx_L1_error)
32728   __Pyx_GOTREF(__pyx_tuple__12);
32729   __Pyx_GIVEREF(__pyx_tuple__12);
32730 
32731   /* "tables/hdf5extension.pyx":1479
32732  *
32733  *     if self.atom.kind == "reference":
32734  *       raise ValueError("Cannot append to the reference types")             # <<<<<<<<<<<<<<
32735  *
32736  *     # Allocate space for the dimension axis info
32737  */
32738   __pyx_tuple__13 = PyTuple_Pack(1, __pyx_kp_s_Cannot_append_to_the_reference_t); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(0, 1479, __pyx_L1_error)
32739   __Pyx_GOTREF(__pyx_tuple__13);
32740   __Pyx_GIVEREF(__pyx_tuple__13);
32741 
32742   /* "tables/hdf5extension.pyx":1791
32743  *
32744  *     if self.atom.kind == "reference":
32745  *       raise ValueError("Cannot write reference types yet")             # <<<<<<<<<<<<<<
32746  *     # Get the pointer to the buffer data area
32747  *     rbuf = nparr.data
32748  */
32749   __pyx_tuple__14 = PyTuple_Pack(1, __pyx_kp_s_Cannot_write_reference_types_yet); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(0, 1791, __pyx_L1_error)
32750   __Pyx_GOTREF(__pyx_tuple__14);
32751   __Pyx_GIVEREF(__pyx_tuple__14);
32752 
32753   /* "(tree fragment)":2
32754  * def __reduce_cython__(self):
32755  *     raise TypeError("self.dims,self.dims_chunk,self.maxdims cannot be converted to a Python object for pickling")             # <<<<<<<<<<<<<<
32756  * def __setstate_cython__(self, __pyx_state):
32757  *     raise TypeError("self.dims,self.dims_chunk,self.maxdims cannot be converted to a Python object for pickling")
32758  */
32759   __pyx_tuple__15 = PyTuple_Pack(1, __pyx_kp_s_self_dims_self_dims_chunk_self_m); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(1, 2, __pyx_L1_error)
32760   __Pyx_GOTREF(__pyx_tuple__15);
32761   __Pyx_GIVEREF(__pyx_tuple__15);
32762 
32763   /* "(tree fragment)":4
32764  *     raise TypeError("self.dims,self.dims_chunk,self.maxdims cannot be converted to a Python object for pickling")
32765  * def __setstate_cython__(self, __pyx_state):
32766  *     raise TypeError("self.dims,self.dims_chunk,self.maxdims cannot be converted to a Python object for pickling")             # <<<<<<<<<<<<<<
32767  */
32768   __pyx_tuple__16 = PyTuple_Pack(1, __pyx_kp_s_self_dims_self_dims_chunk_self_m); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(1, 4, __pyx_L1_error)
32769   __Pyx_GOTREF(__pyx_tuple__16);
32770   __Pyx_GIVEREF(__pyx_tuple__16);
32771 
32772   /* "tables/hdf5extension.pyx":2112
32773  *     nrows = get_len_of_range(start, stop, step)
32774  *     if start + nrows > self.nrows:
32775  *       raise HDF5ExtError(             # <<<<<<<<<<<<<<
32776  *         "Asking for a range of rows exceeding the available ones!.",
32777  *         h5bt=False)
32778  */
32779   __pyx_tuple__17 = PyTuple_Pack(1, __pyx_kp_s_Asking_for_a_range_of_rows_excee); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(0, 2112, __pyx_L1_error)
32780   __Pyx_GOTREF(__pyx_tuple__17);
32781   __Pyx_GIVEREF(__pyx_tuple__17);
32782 
32783   /* "(tree fragment)":2
32784  * def __reduce_cython__(self):
32785  *     raise TypeError("self.dims cannot be converted to a Python object for pickling")             # <<<<<<<<<<<<<<
32786  * def __setstate_cython__(self, __pyx_state):
32787  *     raise TypeError("self.dims cannot be converted to a Python object for pickling")
32788  */
32789   __pyx_tuple__18 = PyTuple_Pack(1, __pyx_kp_s_self_dims_cannot_be_converted_to); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(1, 2, __pyx_L1_error)
32790   __Pyx_GOTREF(__pyx_tuple__18);
32791   __Pyx_GIVEREF(__pyx_tuple__18);
32792 
32793   /* "(tree fragment)":4
32794  *     raise TypeError("self.dims cannot be converted to a Python object for pickling")
32795  * def __setstate_cython__(self, __pyx_state):
32796  *     raise TypeError("self.dims cannot be converted to a Python object for pickling")             # <<<<<<<<<<<<<<
32797  */
32798   __pyx_tuple__19 = PyTuple_Pack(1, __pyx_kp_s_self_dims_cannot_be_converted_to); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(1, 4, __pyx_L1_error)
32799   __Pyx_GOTREF(__pyx_tuple__19);
32800   __Pyx_GIVEREF(__pyx_tuple__19);
32801 
32802   /* "(tree fragment)":2
32803  * def __reduce_cython__(self):
32804  *     raise TypeError("self.dims cannot be converted to a Python object for pickling")             # <<<<<<<<<<<<<<
32805  * def __setstate_cython__(self, __pyx_state):
32806  *     raise TypeError("self.dims cannot be converted to a Python object for pickling")
32807  */
32808   __pyx_tuple__20 = PyTuple_Pack(1, __pyx_kp_s_self_dims_cannot_be_converted_to); if (unlikely(!__pyx_tuple__20)) __PYX_ERR(1, 2, __pyx_L1_error)
32809   __Pyx_GOTREF(__pyx_tuple__20);
32810   __Pyx_GIVEREF(__pyx_tuple__20);
32811 
32812   /* "(tree fragment)":4
32813  *     raise TypeError("self.dims cannot be converted to a Python object for pickling")
32814  * def __setstate_cython__(self, __pyx_state):
32815  *     raise TypeError("self.dims cannot be converted to a Python object for pickling")             # <<<<<<<<<<<<<<
32816  */
32817   __pyx_tuple__21 = PyTuple_Pack(1, __pyx_kp_s_self_dims_cannot_be_converted_to); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(1, 4, __pyx_L1_error)
32818   __Pyx_GOTREF(__pyx_tuple__21);
32819   __Pyx_GIVEREF(__pyx_tuple__21);
32820 
32821   /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":272
32822  *             if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS)
32823  *                 and not PyArray_CHKFLAGS(self, NPY_ARRAY_C_CONTIGUOUS)):
32824  *                 raise ValueError(u"ndarray is not C contiguous")             # <<<<<<<<<<<<<<
32825  *
32826  *             if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)
32827  */
32828   __pyx_tuple__22 = PyTuple_Pack(1, __pyx_kp_u_ndarray_is_not_C_contiguous); if (unlikely(!__pyx_tuple__22)) __PYX_ERR(2, 272, __pyx_L1_error)
32829   __Pyx_GOTREF(__pyx_tuple__22);
32830   __Pyx_GIVEREF(__pyx_tuple__22);
32831 
32832   /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":276
32833  *             if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)
32834  *                 and not PyArray_CHKFLAGS(self, NPY_ARRAY_F_CONTIGUOUS)):
32835  *                 raise ValueError(u"ndarray is not Fortran contiguous")             # <<<<<<<<<<<<<<
32836  *
32837  *             info.buf = PyArray_DATA(self)
32838  */
32839   __pyx_tuple__23 = PyTuple_Pack(1, __pyx_kp_u_ndarray_is_not_Fortran_contiguou); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(2, 276, __pyx_L1_error)
32840   __Pyx_GOTREF(__pyx_tuple__23);
32841   __Pyx_GIVEREF(__pyx_tuple__23);
32842 
32843   /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":306
32844  *                 if ((descr.byteorder == c'>' and little_endian) or
32845  *                     (descr.byteorder == c'<' and not little_endian)):
32846  *                     raise ValueError(u"Non-native byte order not supported")             # <<<<<<<<<<<<<<
32847  *                 if   t == NPY_BYTE:        f = "b"
32848  *                 elif t == NPY_UBYTE:       f = "B"
32849  */
32850   __pyx_tuple__24 = PyTuple_Pack(1, __pyx_kp_u_Non_native_byte_order_not_suppor); if (unlikely(!__pyx_tuple__24)) __PYX_ERR(2, 306, __pyx_L1_error)
32851   __Pyx_GOTREF(__pyx_tuple__24);
32852   __Pyx_GIVEREF(__pyx_tuple__24);
32853 
32854   /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":856
32855  *
32856  *         if (end - f) - <int>(new_offset - offset[0]) < 15:
32857  *             raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd")             # <<<<<<<<<<<<<<
32858  *
32859  *         if ((child.byteorder == c'>' and little_endian) or
32860  */
32861   __pyx_tuple__25 = PyTuple_Pack(1, __pyx_kp_u_Format_string_allocated_too_shor); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(2, 856, __pyx_L1_error)
32862   __Pyx_GOTREF(__pyx_tuple__25);
32863   __Pyx_GIVEREF(__pyx_tuple__25);
32864 
32865   /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":880
32866  *             t = child.type_num
32867  *             if end - f < 5:
32868  *                 raise RuntimeError(u"Format string allocated too short.")             # <<<<<<<<<<<<<<
32869  *
32870  *             # Until ticket #99 is fixed, use integers to avoid warnings
32871  */
32872   __pyx_tuple__26 = PyTuple_Pack(1, __pyx_kp_u_Format_string_allocated_too_shor_2); if (unlikely(!__pyx_tuple__26)) __PYX_ERR(2, 880, __pyx_L1_error)
32873   __Pyx_GOTREF(__pyx_tuple__26);
32874   __Pyx_GIVEREF(__pyx_tuple__26);
32875 
32876   /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":1038
32877  *         _import_array()
32878  *     except Exception:
32879  *         raise ImportError("numpy.core.multiarray failed to import")             # <<<<<<<<<<<<<<
32880  *
32881  * cdef inline int import_umath() except -1:
32882  */
32883   __pyx_tuple__27 = PyTuple_Pack(1, __pyx_kp_s_numpy_core_multiarray_failed_to); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(2, 1038, __pyx_L1_error)
32884   __Pyx_GOTREF(__pyx_tuple__27);
32885   __Pyx_GIVEREF(__pyx_tuple__27);
32886 
32887   /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":1044
32888  *         _import_umath()
32889  *     except Exception:
32890  *         raise ImportError("numpy.core.umath failed to import")             # <<<<<<<<<<<<<<
32891  *
32892  * cdef inline int import_ufunc() except -1:
32893  */
32894   __pyx_tuple__28 = PyTuple_Pack(1, __pyx_kp_s_numpy_core_umath_failed_to_impor); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(2, 1044, __pyx_L1_error)
32895   __Pyx_GOTREF(__pyx_tuple__28);
32896   __Pyx_GIVEREF(__pyx_tuple__28);
32897 
32898   /* "tables/hdf5extension.pyx":292
32899  *
32900  * _supported_drivers = (
32901  *     "H5FD_SEC2",             # <<<<<<<<<<<<<<
32902  *     "H5FD_DIRECT",
32903  *     #"H5FD_LOG",
32904  */
32905   __pyx_tuple__29 = PyTuple_Pack(6, __pyx_n_s_H5FD_SEC2, __pyx_n_s_H5FD_DIRECT, __pyx_n_s_H5FD_WINDOWS, __pyx_n_s_H5FD_STDIO, __pyx_n_s_H5FD_CORE, __pyx_n_s_H5FD_SPLIT); if (unlikely(!__pyx_tuple__29)) __PYX_ERR(0, 292, __pyx_L1_error)
32906   __Pyx_GOTREF(__pyx_tuple__29);
32907   __Pyx_GIVEREF(__pyx_tuple__29);
32908 
32909   /* "(tree fragment)":1
32910  * def __pyx_unpickle_File(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
32911  *     cdef object __pyx_PickleError
32912  *     cdef object __pyx_result
32913  */
32914   __pyx_tuple__30 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(1, 1, __pyx_L1_error)
32915   __Pyx_GOTREF(__pyx_tuple__30);
32916   __Pyx_GIVEREF(__pyx_tuple__30);
32917   __pyx_codeobj__31 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__30, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_File, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__31)) __PYX_ERR(1, 1, __pyx_L1_error)
32918   __pyx_tuple__32 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__32)) __PYX_ERR(1, 1, __pyx_L1_error)
32919   __Pyx_GOTREF(__pyx_tuple__32);
32920   __Pyx_GIVEREF(__pyx_tuple__32);
32921   __pyx_codeobj__33 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__32, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_AttributeSet, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__33)) __PYX_ERR(1, 1, __pyx_L1_error)
32922   __pyx_tuple__34 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__34)) __PYX_ERR(1, 1, __pyx_L1_error)
32923   __Pyx_GOTREF(__pyx_tuple__34);
32924   __Pyx_GIVEREF(__pyx_tuple__34);
32925   __pyx_codeobj__35 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__34, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_Node, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__35)) __PYX_ERR(1, 1, __pyx_L1_error)
32926   __pyx_tuple__36 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__36)) __PYX_ERR(1, 1, __pyx_L1_error)
32927   __Pyx_GOTREF(__pyx_tuple__36);
32928   __Pyx_GIVEREF(__pyx_tuple__36);
32929   __pyx_codeobj__37 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__36, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_Group, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__37)) __PYX_ERR(1, 1, __pyx_L1_error)
32930   __Pyx_RefNannyFinishContext();
32931   return 0;
32932   __pyx_L1_error:;
32933   __Pyx_RefNannyFinishContext();
32934   return -1;
32935 }
32936 
__Pyx_InitGlobals(void)32937 static CYTHON_SMALL_CODE int __Pyx_InitGlobals(void) {
32938   __pyx_umethod_PyDict_Type_get.type = (PyObject*)&PyDict_Type;
32939   if (__Pyx_InitStrings(__pyx_string_tab) < 0) __PYX_ERR(0, 1, __pyx_L1_error);
32940   __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) __PYX_ERR(0, 1, __pyx_L1_error)
32941   __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) __PYX_ERR(0, 1, __pyx_L1_error)
32942   __pyx_int_20319231 = PyInt_FromLong(20319231L); if (unlikely(!__pyx_int_20319231)) __PYX_ERR(0, 1, __pyx_L1_error)
32943   __pyx_int_58832569 = PyInt_FromLong(58832569L); if (unlikely(!__pyx_int_58832569)) __PYX_ERR(0, 1, __pyx_L1_error)
32944   __pyx_int_184977713 = PyInt_FromLong(184977713L); if (unlikely(!__pyx_int_184977713)) __PYX_ERR(0, 1, __pyx_L1_error)
32945   __pyx_int_263862829 = PyInt_FromLong(263862829L); if (unlikely(!__pyx_int_263862829)) __PYX_ERR(0, 1, __pyx_L1_error)
32946   __pyx_int_neg_1 = PyInt_FromLong(-1); if (unlikely(!__pyx_int_neg_1)) __PYX_ERR(0, 1, __pyx_L1_error)
32947   return 0;
32948   __pyx_L1_error:;
32949   return -1;
32950 }
32951 
32952 static CYTHON_SMALL_CODE int __Pyx_modinit_global_init_code(void); /*proto*/
32953 static CYTHON_SMALL_CODE int __Pyx_modinit_variable_export_code(void); /*proto*/
32954 static CYTHON_SMALL_CODE int __Pyx_modinit_function_export_code(void); /*proto*/
32955 static CYTHON_SMALL_CODE int __Pyx_modinit_type_init_code(void); /*proto*/
32956 static CYTHON_SMALL_CODE int __Pyx_modinit_type_import_code(void); /*proto*/
32957 static CYTHON_SMALL_CODE int __Pyx_modinit_variable_import_code(void); /*proto*/
32958 static CYTHON_SMALL_CODE int __Pyx_modinit_function_import_code(void); /*proto*/
32959 
__Pyx_modinit_global_init_code(void)32960 static int __Pyx_modinit_global_init_code(void) {
32961   __Pyx_RefNannyDeclarations
32962   __Pyx_RefNannySetupContext("__Pyx_modinit_global_init_code", 0);
32963   /*--- Global init code ---*/
32964   __Pyx_RefNannyFinishContext();
32965   return 0;
32966 }
32967 
__Pyx_modinit_variable_export_code(void)32968 static int __Pyx_modinit_variable_export_code(void) {
32969   __Pyx_RefNannyDeclarations
32970   __Pyx_RefNannySetupContext("__Pyx_modinit_variable_export_code", 0);
32971   /*--- Variable export code ---*/
32972   __Pyx_RefNannyFinishContext();
32973   return 0;
32974 }
32975 
__Pyx_modinit_function_export_code(void)32976 static int __Pyx_modinit_function_export_code(void) {
32977   __Pyx_RefNannyDeclarations
32978   __Pyx_RefNannySetupContext("__Pyx_modinit_function_export_code", 0);
32979   /*--- Function export code ---*/
32980   __Pyx_RefNannyFinishContext();
32981   return 0;
32982 }
32983 
__Pyx_modinit_type_init_code(void)32984 static int __Pyx_modinit_type_init_code(void) {
32985   __Pyx_RefNannyDeclarations
32986   __Pyx_RefNannySetupContext("__Pyx_modinit_type_init_code", 0);
32987   /*--- Type init code ---*/
32988   if (PyType_Ready(&__pyx_type_6tables_13hdf5extension_Node) < 0) __PYX_ERR(0, 899, __pyx_L1_error)
32989   #if PY_VERSION_HEX < 0x030800B1
32990   __pyx_type_6tables_13hdf5extension_Node.tp_print = 0;
32991   #endif
32992   if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_6tables_13hdf5extension_Node.tp_dictoffset && __pyx_type_6tables_13hdf5extension_Node.tp_getattro == PyObject_GenericGetAttr)) {
32993     __pyx_type_6tables_13hdf5extension_Node.tp_getattro = __Pyx_PyObject_GenericGetAttr;
32994   }
32995   if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Node, (PyObject *)&__pyx_type_6tables_13hdf5extension_Node) < 0) __PYX_ERR(0, 899, __pyx_L1_error)
32996   if (__Pyx_setup_reduce((PyObject*)&__pyx_type_6tables_13hdf5extension_Node) < 0) __PYX_ERR(0, 899, __pyx_L1_error)
32997   __pyx_ptype_6tables_13hdf5extension_Node = &__pyx_type_6tables_13hdf5extension_Node;
32998   __pyx_vtabptr_6tables_13hdf5extension_Leaf = &__pyx_vtable_6tables_13hdf5extension_Leaf;
32999   __pyx_vtable_6tables_13hdf5extension_Leaf._get_type_ids = (PyObject *(*)(struct __pyx_obj_6tables_13hdf5extension_Leaf *))__pyx_f_6tables_13hdf5extension_4Leaf__get_type_ids;
33000   __pyx_vtable_6tables_13hdf5extension_Leaf._convert_time64 = (PyObject *(*)(struct __pyx_obj_6tables_13hdf5extension_Leaf *, PyArrayObject *, int))__pyx_f_6tables_13hdf5extension_4Leaf__convert_time64;
33001   __pyx_type_6tables_13hdf5extension_Leaf.tp_base = __pyx_ptype_6tables_13hdf5extension_Node;
33002   if (PyType_Ready(&__pyx_type_6tables_13hdf5extension_Leaf) < 0) __PYX_ERR(0, 1111, __pyx_L1_error)
33003   #if PY_VERSION_HEX < 0x030800B1
33004   __pyx_type_6tables_13hdf5extension_Leaf.tp_print = 0;
33005   #endif
33006   if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_6tables_13hdf5extension_Leaf.tp_dictoffset && __pyx_type_6tables_13hdf5extension_Leaf.tp_getattro == PyObject_GenericGetAttr)) {
33007     __pyx_type_6tables_13hdf5extension_Leaf.tp_getattro = __Pyx_PyObject_GenericGetAttr;
33008   }
33009   if (__Pyx_SetVtable(__pyx_type_6tables_13hdf5extension_Leaf.tp_dict, __pyx_vtabptr_6tables_13hdf5extension_Leaf) < 0) __PYX_ERR(0, 1111, __pyx_L1_error)
33010   if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Leaf, (PyObject *)&__pyx_type_6tables_13hdf5extension_Leaf) < 0) __PYX_ERR(0, 1111, __pyx_L1_error)
33011   if (__Pyx_setup_reduce((PyObject*)&__pyx_type_6tables_13hdf5extension_Leaf) < 0) __PYX_ERR(0, 1111, __pyx_L1_error)
33012   __pyx_ptype_6tables_13hdf5extension_Leaf = &__pyx_type_6tables_13hdf5extension_Leaf;
33013   __pyx_vtabptr_6tables_13hdf5extension_Array = &__pyx_vtable_6tables_13hdf5extension_Array;
33014   __pyx_vtable_6tables_13hdf5extension_Array.__pyx_base = *__pyx_vtabptr_6tables_13hdf5extension_Leaf;
33015   __pyx_type_6tables_13hdf5extension_Array.tp_base = __pyx_ptype_6tables_13hdf5extension_Leaf;
33016   if (PyType_Ready(&__pyx_type_6tables_13hdf5extension_Array) < 0) __PYX_ERR(0, 1242, __pyx_L1_error)
33017   #if PY_VERSION_HEX < 0x030800B1
33018   __pyx_type_6tables_13hdf5extension_Array.tp_print = 0;
33019   #endif
33020   if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_6tables_13hdf5extension_Array.tp_dictoffset && __pyx_type_6tables_13hdf5extension_Array.tp_getattro == PyObject_GenericGetAttr)) {
33021     __pyx_type_6tables_13hdf5extension_Array.tp_getattro = __Pyx_PyObject_GenericGetAttr;
33022   }
33023   if (__Pyx_SetVtable(__pyx_type_6tables_13hdf5extension_Array.tp_dict, __pyx_vtabptr_6tables_13hdf5extension_Array) < 0) __PYX_ERR(0, 1242, __pyx_L1_error)
33024   if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Array, (PyObject *)&__pyx_type_6tables_13hdf5extension_Array) < 0) __PYX_ERR(0, 1242, __pyx_L1_error)
33025   if (__Pyx_setup_reduce((PyObject*)&__pyx_type_6tables_13hdf5extension_Array) < 0) __PYX_ERR(0, 1242, __pyx_L1_error)
33026   __pyx_ptype_6tables_13hdf5extension_Array = &__pyx_type_6tables_13hdf5extension_Array;
33027   if (PyType_Ready(&__pyx_type_6tables_13hdf5extension_File) < 0) __PYX_ERR(0, 312, __pyx_L1_error)
33028   #if PY_VERSION_HEX < 0x030800B1
33029   __pyx_type_6tables_13hdf5extension_File.tp_print = 0;
33030   #endif
33031   if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_6tables_13hdf5extension_File.tp_dictoffset && __pyx_type_6tables_13hdf5extension_File.tp_getattro == PyObject_GenericGetAttr)) {
33032     __pyx_type_6tables_13hdf5extension_File.tp_getattro = __Pyx_PyObject_GenericGetAttr;
33033   }
33034   if (PyObject_SetAttr(__pyx_m, __pyx_n_s_File, (PyObject *)&__pyx_type_6tables_13hdf5extension_File) < 0) __PYX_ERR(0, 312, __pyx_L1_error)
33035   if (__Pyx_setup_reduce((PyObject*)&__pyx_type_6tables_13hdf5extension_File) < 0) __PYX_ERR(0, 312, __pyx_L1_error)
33036   __pyx_ptype_6tables_13hdf5extension_File = &__pyx_type_6tables_13hdf5extension_File;
33037   if (PyType_Ready(&__pyx_type_6tables_13hdf5extension_AttributeSet) < 0) __PYX_ERR(0, 633, __pyx_L1_error)
33038   #if PY_VERSION_HEX < 0x030800B1
33039   __pyx_type_6tables_13hdf5extension_AttributeSet.tp_print = 0;
33040   #endif
33041   if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_6tables_13hdf5extension_AttributeSet.tp_dictoffset && __pyx_type_6tables_13hdf5extension_AttributeSet.tp_getattro == PyObject_GenericGetAttr)) {
33042     __pyx_type_6tables_13hdf5extension_AttributeSet.tp_getattro = __Pyx_PyObject_GenericGetAttr;
33043   }
33044   if (PyObject_SetAttr(__pyx_m, __pyx_n_s_AttributeSet, (PyObject *)&__pyx_type_6tables_13hdf5extension_AttributeSet) < 0) __PYX_ERR(0, 633, __pyx_L1_error)
33045   if (__Pyx_setup_reduce((PyObject*)&__pyx_type_6tables_13hdf5extension_AttributeSet) < 0) __PYX_ERR(0, 633, __pyx_L1_error)
33046   __pyx_ptype_6tables_13hdf5extension_AttributeSet = &__pyx_type_6tables_13hdf5extension_AttributeSet;
33047   __pyx_type_6tables_13hdf5extension_Group.tp_base = __pyx_ptype_6tables_13hdf5extension_Node;
33048   if (PyType_Ready(&__pyx_type_6tables_13hdf5extension_Group) < 0) __PYX_ERR(0, 947, __pyx_L1_error)
33049   #if PY_VERSION_HEX < 0x030800B1
33050   __pyx_type_6tables_13hdf5extension_Group.tp_print = 0;
33051   #endif
33052   if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_6tables_13hdf5extension_Group.tp_dictoffset && __pyx_type_6tables_13hdf5extension_Group.tp_getattro == PyObject_GenericGetAttr)) {
33053     __pyx_type_6tables_13hdf5extension_Group.tp_getattro = __Pyx_PyObject_GenericGetAttr;
33054   }
33055   if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Group, (PyObject *)&__pyx_type_6tables_13hdf5extension_Group) < 0) __PYX_ERR(0, 947, __pyx_L1_error)
33056   if (__Pyx_setup_reduce((PyObject*)&__pyx_type_6tables_13hdf5extension_Group) < 0) __PYX_ERR(0, 947, __pyx_L1_error)
33057   __pyx_ptype_6tables_13hdf5extension_Group = &__pyx_type_6tables_13hdf5extension_Group;
33058   __pyx_vtabptr_6tables_13hdf5extension_VLArray = &__pyx_vtable_6tables_13hdf5extension_VLArray;
33059   __pyx_vtable_6tables_13hdf5extension_VLArray.__pyx_base = *__pyx_vtabptr_6tables_13hdf5extension_Leaf;
33060   __pyx_type_6tables_13hdf5extension_VLArray.tp_base = __pyx_ptype_6tables_13hdf5extension_Leaf;
33061   if (PyType_Ready(&__pyx_type_6tables_13hdf5extension_VLArray) < 0) __PYX_ERR(0, 1917, __pyx_L1_error)
33062   #if PY_VERSION_HEX < 0x030800B1
33063   __pyx_type_6tables_13hdf5extension_VLArray.tp_print = 0;
33064   #endif
33065   if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_6tables_13hdf5extension_VLArray.tp_dictoffset && __pyx_type_6tables_13hdf5extension_VLArray.tp_getattro == PyObject_GenericGetAttr)) {
33066     __pyx_type_6tables_13hdf5extension_VLArray.tp_getattro = __Pyx_PyObject_GenericGetAttr;
33067   }
33068   if (__Pyx_SetVtable(__pyx_type_6tables_13hdf5extension_VLArray.tp_dict, __pyx_vtabptr_6tables_13hdf5extension_VLArray) < 0) __PYX_ERR(0, 1917, __pyx_L1_error)
33069   if (PyObject_SetAttr(__pyx_m, __pyx_n_s_VLArray, (PyObject *)&__pyx_type_6tables_13hdf5extension_VLArray) < 0) __PYX_ERR(0, 1917, __pyx_L1_error)
33070   if (__Pyx_setup_reduce((PyObject*)&__pyx_type_6tables_13hdf5extension_VLArray) < 0) __PYX_ERR(0, 1917, __pyx_L1_error)
33071   __pyx_ptype_6tables_13hdf5extension_VLArray = &__pyx_type_6tables_13hdf5extension_VLArray;
33072   __pyx_vtabptr_6tables_13hdf5extension_UnImplemented = &__pyx_vtable_6tables_13hdf5extension_UnImplemented;
33073   __pyx_vtable_6tables_13hdf5extension_UnImplemented.__pyx_base = *__pyx_vtabptr_6tables_13hdf5extension_Leaf;
33074   __pyx_type_6tables_13hdf5extension_UnImplemented.tp_base = __pyx_ptype_6tables_13hdf5extension_Leaf;
33075   if (PyType_Ready(&__pyx_type_6tables_13hdf5extension_UnImplemented) < 0) __PYX_ERR(0, 2216, __pyx_L1_error)
33076   #if PY_VERSION_HEX < 0x030800B1
33077   __pyx_type_6tables_13hdf5extension_UnImplemented.tp_print = 0;
33078   #endif
33079   if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_6tables_13hdf5extension_UnImplemented.tp_dictoffset && __pyx_type_6tables_13hdf5extension_UnImplemented.tp_getattro == PyObject_GenericGetAttr)) {
33080     __pyx_type_6tables_13hdf5extension_UnImplemented.tp_getattro = __Pyx_PyObject_GenericGetAttr;
33081   }
33082   if (__Pyx_SetVtable(__pyx_type_6tables_13hdf5extension_UnImplemented.tp_dict, __pyx_vtabptr_6tables_13hdf5extension_UnImplemented) < 0) __PYX_ERR(0, 2216, __pyx_L1_error)
33083   if (PyObject_SetAttr(__pyx_m, __pyx_n_s_UnImplemented, (PyObject *)&__pyx_type_6tables_13hdf5extension_UnImplemented) < 0) __PYX_ERR(0, 2216, __pyx_L1_error)
33084   if (__Pyx_setup_reduce((PyObject*)&__pyx_type_6tables_13hdf5extension_UnImplemented) < 0) __PYX_ERR(0, 2216, __pyx_L1_error)
33085   __pyx_ptype_6tables_13hdf5extension_UnImplemented = &__pyx_type_6tables_13hdf5extension_UnImplemented;
33086   __Pyx_RefNannyFinishContext();
33087   return 0;
33088   __pyx_L1_error:;
33089   __Pyx_RefNannyFinishContext();
33090   return -1;
33091 }
33092 
__Pyx_modinit_type_import_code(void)33093 static int __Pyx_modinit_type_import_code(void) {
33094   __Pyx_RefNannyDeclarations
33095   PyObject *__pyx_t_1 = NULL;
33096   __Pyx_RefNannySetupContext("__Pyx_modinit_type_import_code", 0);
33097   /*--- Type import code ---*/
33098   __pyx_t_1 = PyImport_ImportModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 9, __pyx_L1_error)
33099   __Pyx_GOTREF(__pyx_t_1);
33100   __pyx_ptype_7cpython_4type_type = __Pyx_ImportType(__pyx_t_1, __Pyx_BUILTIN_MODULE_NAME, "type",
33101   #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
33102   sizeof(PyTypeObject),
33103   #else
33104   sizeof(PyHeapTypeObject),
33105   #endif
33106   __Pyx_ImportType_CheckSize_Warn);
33107    if (!__pyx_ptype_7cpython_4type_type) __PYX_ERR(3, 9, __pyx_L1_error)
33108   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
33109   __pyx_t_1 = PyImport_ImportModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 8, __pyx_L1_error)
33110   __Pyx_GOTREF(__pyx_t_1);
33111   __pyx_ptype_7cpython_4bool_bool = __Pyx_ImportType(__pyx_t_1, __Pyx_BUILTIN_MODULE_NAME, "bool", sizeof(PyBoolObject), __Pyx_ImportType_CheckSize_Warn);
33112    if (!__pyx_ptype_7cpython_4bool_bool) __PYX_ERR(4, 8, __pyx_L1_error)
33113   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
33114   __pyx_t_1 = PyImport_ImportModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 15, __pyx_L1_error)
33115   __Pyx_GOTREF(__pyx_t_1);
33116   __pyx_ptype_7cpython_7complex_complex = __Pyx_ImportType(__pyx_t_1, __Pyx_BUILTIN_MODULE_NAME, "complex", sizeof(PyComplexObject), __Pyx_ImportType_CheckSize_Warn);
33117    if (!__pyx_ptype_7cpython_7complex_complex) __PYX_ERR(5, 15, __pyx_L1_error)
33118   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
33119   __pyx_t_1 = PyImport_ImportModule("numpy"); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 206, __pyx_L1_error)
33120   __Pyx_GOTREF(__pyx_t_1);
33121   __pyx_ptype_5numpy_dtype = __Pyx_ImportType(__pyx_t_1, "numpy", "dtype", sizeof(PyArray_Descr), __Pyx_ImportType_CheckSize_Ignore);
33122    if (!__pyx_ptype_5numpy_dtype) __PYX_ERR(2, 206, __pyx_L1_error)
33123   __pyx_ptype_5numpy_flatiter = __Pyx_ImportType(__pyx_t_1, "numpy", "flatiter", sizeof(PyArrayIterObject), __Pyx_ImportType_CheckSize_Warn);
33124    if (!__pyx_ptype_5numpy_flatiter) __PYX_ERR(2, 229, __pyx_L1_error)
33125   __pyx_ptype_5numpy_broadcast = __Pyx_ImportType(__pyx_t_1, "numpy", "broadcast", sizeof(PyArrayMultiIterObject), __Pyx_ImportType_CheckSize_Warn);
33126    if (!__pyx_ptype_5numpy_broadcast) __PYX_ERR(2, 233, __pyx_L1_error)
33127   __pyx_ptype_5numpy_ndarray = __Pyx_ImportType(__pyx_t_1, "numpy", "ndarray", sizeof(PyArrayObject), __Pyx_ImportType_CheckSize_Ignore);
33128    if (!__pyx_ptype_5numpy_ndarray) __PYX_ERR(2, 242, __pyx_L1_error)
33129   __pyx_ptype_5numpy_ufunc = __Pyx_ImportType(__pyx_t_1, "numpy", "ufunc", sizeof(PyUFuncObject), __Pyx_ImportType_CheckSize_Warn);
33130    if (!__pyx_ptype_5numpy_ufunc) __PYX_ERR(2, 918, __pyx_L1_error)
33131   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
33132   __Pyx_RefNannyFinishContext();
33133   return 0;
33134   __pyx_L1_error:;
33135   __Pyx_XDECREF(__pyx_t_1);
33136   __Pyx_RefNannyFinishContext();
33137   return -1;
33138 }
33139 
__Pyx_modinit_variable_import_code(void)33140 static int __Pyx_modinit_variable_import_code(void) {
33141   __Pyx_RefNannyDeclarations
33142   __Pyx_RefNannySetupContext("__Pyx_modinit_variable_import_code", 0);
33143   /*--- Variable import code ---*/
33144   __Pyx_RefNannyFinishContext();
33145   return 0;
33146 }
33147 
__Pyx_modinit_function_import_code(void)33148 static int __Pyx_modinit_function_import_code(void) {
33149   __Pyx_RefNannyDeclarations
33150   PyObject *__pyx_t_1 = NULL;
33151   __Pyx_RefNannySetupContext("__Pyx_modinit_function_import_code", 0);
33152   /*--- Function import code ---*/
33153   __pyx_t_1 = PyImport_ImportModule("tables.utilsextension"); if (!__pyx_t_1) __PYX_ERR(0, 1, __pyx_L1_error)
33154   if (__Pyx_ImportFunction(__pyx_t_1, "malloc_dims", (void (**)(void))&__pyx_f_6tables_14utilsextension_malloc_dims, "hsize_t *(PyObject *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33155   if (__Pyx_ImportFunction(__pyx_t_1, "get_native_type", (void (**)(void))&__pyx_f_6tables_14utilsextension_get_native_type, "hid_t (hid_t)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33156   if (__Pyx_ImportFunction(__pyx_t_1, "cstr_to_pystr", (void (**)(void))&__pyx_f_6tables_14utilsextension_cstr_to_pystr, "PyObject *(char const *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33157   if (__Pyx_ImportFunction(__pyx_t_1, "load_reference", (void (**)(void))&__pyx_f_6tables_14utilsextension_load_reference, "int (hid_t, hobj_ref_t *, size_t, PyArrayObject *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33158   Py_DECREF(__pyx_t_1); __pyx_t_1 = 0;
33159   __Pyx_RefNannyFinishContext();
33160   return 0;
33161   __pyx_L1_error:;
33162   __Pyx_XDECREF(__pyx_t_1);
33163   __Pyx_RefNannyFinishContext();
33164   return -1;
33165 }
33166 
33167 
33168 #if PY_MAJOR_VERSION < 3
33169 #ifdef CYTHON_NO_PYINIT_EXPORT
33170 #define __Pyx_PyMODINIT_FUNC void
33171 #else
33172 #define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC
33173 #endif
33174 #else
33175 #ifdef CYTHON_NO_PYINIT_EXPORT
33176 #define __Pyx_PyMODINIT_FUNC PyObject *
33177 #else
33178 #define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC
33179 #endif
33180 #endif
33181 
33182 
33183 #if PY_MAJOR_VERSION < 3
33184 __Pyx_PyMODINIT_FUNC inithdf5extension(void) CYTHON_SMALL_CODE; /*proto*/
inithdf5extension(void)33185 __Pyx_PyMODINIT_FUNC inithdf5extension(void)
33186 #else
33187 __Pyx_PyMODINIT_FUNC PyInit_hdf5extension(void) CYTHON_SMALL_CODE; /*proto*/
33188 __Pyx_PyMODINIT_FUNC PyInit_hdf5extension(void)
33189 #if CYTHON_PEP489_MULTI_PHASE_INIT
33190 {
33191   return PyModuleDef_Init(&__pyx_moduledef);
33192 }
33193 static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) {
33194     #if PY_VERSION_HEX >= 0x030700A1
33195     static PY_INT64_T main_interpreter_id = -1;
33196     PY_INT64_T current_id = PyInterpreterState_GetID(PyThreadState_Get()->interp);
33197     if (main_interpreter_id == -1) {
33198         main_interpreter_id = current_id;
33199         return (unlikely(current_id == -1)) ? -1 : 0;
33200     } else if (unlikely(main_interpreter_id != current_id))
33201     #else
33202     static PyInterpreterState *main_interpreter = NULL;
33203     PyInterpreterState *current_interpreter = PyThreadState_Get()->interp;
33204     if (!main_interpreter) {
33205         main_interpreter = current_interpreter;
33206     } else if (unlikely(main_interpreter != current_interpreter))
33207     #endif
33208     {
33209         PyErr_SetString(
33210             PyExc_ImportError,
33211             "Interpreter change detected - this module can only be loaded into one interpreter per process.");
33212         return -1;
33213     }
33214     return 0;
33215 }
33216 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) {
33217     PyObject *value = PyObject_GetAttrString(spec, from_name);
33218     int result = 0;
33219     if (likely(value)) {
33220         if (allow_none || value != Py_None) {
33221             result = PyDict_SetItemString(moddict, to_name, value);
33222         }
33223         Py_DECREF(value);
33224     } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) {
33225         PyErr_Clear();
33226     } else {
33227         result = -1;
33228     }
33229     return result;
33230 }
33231 static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNUSED PyModuleDef *def) {
33232     PyObject *module = NULL, *moddict, *modname;
33233     if (__Pyx_check_single_interpreter())
33234         return NULL;
33235     if (__pyx_m)
33236         return __Pyx_NewRef(__pyx_m);
33237     modname = PyObject_GetAttrString(spec, "name");
33238     if (unlikely(!modname)) goto bad;
33239     module = PyModule_NewObject(modname);
33240     Py_DECREF(modname);
33241     if (unlikely(!module)) goto bad;
33242     moddict = PyModule_GetDict(module);
33243     if (unlikely(!moddict)) goto bad;
33244     if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__", 1) < 0)) goto bad;
33245     if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__", 1) < 0)) goto bad;
33246     if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__", 1) < 0)) goto bad;
33247     if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__", 0) < 0)) goto bad;
33248     return module;
33249 bad:
33250     Py_XDECREF(module);
33251     return NULL;
33252 }
33253 
33254 
33255 static CYTHON_SMALL_CODE int __pyx_pymod_exec_hdf5extension(PyObject *__pyx_pyinit_module)
33256 #endif
33257 #endif
33258 {
33259   PyObject *__pyx_t_1 = NULL;
33260   PyObject *__pyx_t_2 = NULL;
33261   PyObject *__pyx_t_3 = NULL;
33262   int __pyx_t_4;
33263   int __pyx_t_5;
33264   __Pyx_RefNannyDeclarations
33265   #if CYTHON_PEP489_MULTI_PHASE_INIT
33266   if (__pyx_m) {
33267     if (__pyx_m == __pyx_pyinit_module) return 0;
33268     PyErr_SetString(PyExc_RuntimeError, "Module 'hdf5extension' has already been imported. Re-initialisation is not supported.");
33269     return -1;
33270   }
33271   #elif PY_MAJOR_VERSION >= 3
33272   if (__pyx_m) return __Pyx_NewRef(__pyx_m);
33273   #endif
33274   #if CYTHON_REFNANNY
33275 __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny");
33276 if (!__Pyx_RefNanny) {
33277   PyErr_Clear();
33278   __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny");
33279   if (!__Pyx_RefNanny)
33280       Py_FatalError("failed to import 'refnanny' module");
33281 }
33282 #endif
33283   __Pyx_RefNannySetupContext("__Pyx_PyMODINIT_FUNC PyInit_hdf5extension(void)", 0);
33284   if (__Pyx_check_binary_version() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33285   #ifdef __Pxy_PyFrame_Initialize_Offsets
33286   __Pxy_PyFrame_Initialize_Offsets();
33287   #endif
33288   __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error)
33289   __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error)
33290   __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error)
33291   #ifdef __Pyx_CyFunction_USED
33292   if (__pyx_CyFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33293   #endif
33294   #ifdef __Pyx_FusedFunction_USED
33295   if (__pyx_FusedFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33296   #endif
33297   #ifdef __Pyx_Coroutine_USED
33298   if (__pyx_Coroutine_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33299   #endif
33300   #ifdef __Pyx_Generator_USED
33301   if (__pyx_Generator_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33302   #endif
33303   #ifdef __Pyx_AsyncGen_USED
33304   if (__pyx_AsyncGen_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33305   #endif
33306   #ifdef __Pyx_StopAsyncIteration_USED
33307   if (__pyx_StopAsyncIteration_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33308   #endif
33309   /*--- Library function declarations ---*/
33310   /*--- Threads initialization code ---*/
33311   #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS
33312   #ifdef WITH_THREAD /* Python build with threading support? */
33313   PyEval_InitThreads();
33314   #endif
33315   #endif
33316   /*--- Module creation code ---*/
33317   #if CYTHON_PEP489_MULTI_PHASE_INIT
33318   __pyx_m = __pyx_pyinit_module;
33319   Py_INCREF(__pyx_m);
33320   #else
33321   #if PY_MAJOR_VERSION < 3
33322   __pyx_m = Py_InitModule4("hdf5extension", __pyx_methods, __pyx_k_Cython_interface_between_several, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m);
33323   #else
33324   __pyx_m = PyModule_Create(&__pyx_moduledef);
33325   #endif
33326   if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error)
33327   #endif
33328   __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(0, 1, __pyx_L1_error)
33329   Py_INCREF(__pyx_d);
33330   __pyx_b = PyImport_AddModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(0, 1, __pyx_L1_error)
33331   Py_INCREF(__pyx_b);
33332   __pyx_cython_runtime = PyImport_AddModule((char *) "cython_runtime"); if (unlikely(!__pyx_cython_runtime)) __PYX_ERR(0, 1, __pyx_L1_error)
33333   Py_INCREF(__pyx_cython_runtime);
33334   if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error);
33335   /*--- Initialize various global constants etc. ---*/
33336   if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33337   #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT)
33338   if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33339   #endif
33340   if (__pyx_module_is_main_tables__hdf5extension) {
33341     if (PyObject_SetAttr(__pyx_m, __pyx_n_s_name_2, __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33342   }
33343   #if PY_MAJOR_VERSION >= 3
33344   {
33345     PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error)
33346     if (!PyDict_GetItemString(modules, "tables.hdf5extension")) {
33347       if (unlikely(PyDict_SetItemString(modules, "tables.hdf5extension", __pyx_m) < 0)) __PYX_ERR(0, 1, __pyx_L1_error)
33348     }
33349   }
33350   #endif
33351   /*--- Builtin init code ---*/
33352   if (__Pyx_InitCachedBuiltins() < 0) goto __pyx_L1_error;
33353   /*--- Constants init code ---*/
33354   if (__Pyx_InitCachedConstants() < 0) goto __pyx_L1_error;
33355   /*--- Global type/function init code ---*/
33356   (void)__Pyx_modinit_global_init_code();
33357   (void)__Pyx_modinit_variable_export_code();
33358   (void)__Pyx_modinit_function_export_code();
33359   if (unlikely(__Pyx_modinit_type_init_code() != 0)) goto __pyx_L1_error;
33360   if (unlikely(__Pyx_modinit_type_import_code() != 0)) goto __pyx_L1_error;
33361   (void)__Pyx_modinit_variable_import_code();
33362   if (unlikely(__Pyx_modinit_function_import_code() != 0)) goto __pyx_L1_error;
33363   /*--- Execution code ---*/
33364   #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED)
33365   if (__Pyx_patch_abc() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33366   #endif
33367 
33368   /* "tables/hdf5extension.pyx":32
33369  * """
33370  *
33371  * import os             # <<<<<<<<<<<<<<
33372  * import warnings
33373  * from collections import namedtuple
33374  */
33375   __pyx_t_1 = __Pyx_Import(__pyx_n_s_os, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 32, __pyx_L1_error)
33376   __Pyx_GOTREF(__pyx_t_1);
33377   if (PyDict_SetItem(__pyx_d, __pyx_n_s_os, __pyx_t_1) < 0) __PYX_ERR(0, 32, __pyx_L1_error)
33378   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
33379 
33380   /* "tables/hdf5extension.pyx":33
33381  *
33382  * import os
33383  * import warnings             # <<<<<<<<<<<<<<
33384  * from collections import namedtuple
33385  *
33386  */
33387   __pyx_t_1 = __Pyx_Import(__pyx_n_s_warnings, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 33, __pyx_L1_error)
33388   __Pyx_GOTREF(__pyx_t_1);
33389   if (PyDict_SetItem(__pyx_d, __pyx_n_s_warnings, __pyx_t_1) < 0) __PYX_ERR(0, 33, __pyx_L1_error)
33390   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
33391 
33392   /* "tables/hdf5extension.pyx":34
33393  * import os
33394  * import warnings
33395  * from collections import namedtuple             # <<<<<<<<<<<<<<
33396  *
33397  * ObjInfo = namedtuple('ObjInfo', ['addr', 'rc'])
33398  */
33399   __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 34, __pyx_L1_error)
33400   __Pyx_GOTREF(__pyx_t_1);
33401   __Pyx_INCREF(__pyx_n_s_namedtuple);
33402   __Pyx_GIVEREF(__pyx_n_s_namedtuple);
33403   PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_namedtuple);
33404   __pyx_t_2 = __Pyx_Import(__pyx_n_s_collections, __pyx_t_1, -1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 34, __pyx_L1_error)
33405   __Pyx_GOTREF(__pyx_t_2);
33406   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
33407   __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_namedtuple); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 34, __pyx_L1_error)
33408   __Pyx_GOTREF(__pyx_t_1);
33409   if (PyDict_SetItem(__pyx_d, __pyx_n_s_namedtuple, __pyx_t_1) < 0) __PYX_ERR(0, 34, __pyx_L1_error)
33410   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
33411   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
33412 
33413   /* "tables/hdf5extension.pyx":36
33414  * from collections import namedtuple
33415  *
33416  * ObjInfo = namedtuple('ObjInfo', ['addr', 'rc'])             # <<<<<<<<<<<<<<
33417  * ObjTimestamps = namedtuple('ObjTimestamps', ['atime', 'mtime',
33418  *                                              'ctime', 'btime'])
33419  */
33420   __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_namedtuple); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 36, __pyx_L1_error)
33421   __Pyx_GOTREF(__pyx_t_2);
33422   __pyx_t_1 = PyList_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 36, __pyx_L1_error)
33423   __Pyx_GOTREF(__pyx_t_1);
33424   __Pyx_INCREF(__pyx_n_s_addr);
33425   __Pyx_GIVEREF(__pyx_n_s_addr);
33426   PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_addr);
33427   __Pyx_INCREF(__pyx_n_s_rc);
33428   __Pyx_GIVEREF(__pyx_n_s_rc);
33429   PyList_SET_ITEM(__pyx_t_1, 1, __pyx_n_s_rc);
33430   __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 36, __pyx_L1_error)
33431   __Pyx_GOTREF(__pyx_t_3);
33432   __Pyx_INCREF(__pyx_n_s_ObjInfo);
33433   __Pyx_GIVEREF(__pyx_n_s_ObjInfo);
33434   PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_ObjInfo);
33435   __Pyx_GIVEREF(__pyx_t_1);
33436   PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1);
33437   __pyx_t_1 = 0;
33438   __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 36, __pyx_L1_error)
33439   __Pyx_GOTREF(__pyx_t_1);
33440   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
33441   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
33442   if (PyDict_SetItem(__pyx_d, __pyx_n_s_ObjInfo, __pyx_t_1) < 0) __PYX_ERR(0, 36, __pyx_L1_error)
33443   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
33444 
33445   /* "tables/hdf5extension.pyx":37
33446  *
33447  * ObjInfo = namedtuple('ObjInfo', ['addr', 'rc'])
33448  * ObjTimestamps = namedtuple('ObjTimestamps', ['atime', 'mtime',             # <<<<<<<<<<<<<<
33449  *                                              'ctime', 'btime'])
33450  *
33451  */
33452   __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_namedtuple); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 37, __pyx_L1_error)
33453   __Pyx_GOTREF(__pyx_t_1);
33454   __pyx_t_3 = PyList_New(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 37, __pyx_L1_error)
33455   __Pyx_GOTREF(__pyx_t_3);
33456   __Pyx_INCREF(__pyx_n_s_atime);
33457   __Pyx_GIVEREF(__pyx_n_s_atime);
33458   PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_atime);
33459   __Pyx_INCREF(__pyx_n_s_mtime);
33460   __Pyx_GIVEREF(__pyx_n_s_mtime);
33461   PyList_SET_ITEM(__pyx_t_3, 1, __pyx_n_s_mtime);
33462   __Pyx_INCREF(__pyx_n_s_ctime);
33463   __Pyx_GIVEREF(__pyx_n_s_ctime);
33464   PyList_SET_ITEM(__pyx_t_3, 2, __pyx_n_s_ctime);
33465   __Pyx_INCREF(__pyx_n_s_btime);
33466   __Pyx_GIVEREF(__pyx_n_s_btime);
33467   PyList_SET_ITEM(__pyx_t_3, 3, __pyx_n_s_btime);
33468   __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 37, __pyx_L1_error)
33469   __Pyx_GOTREF(__pyx_t_2);
33470   __Pyx_INCREF(__pyx_n_s_ObjTimestamps);
33471   __Pyx_GIVEREF(__pyx_n_s_ObjTimestamps);
33472   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_ObjTimestamps);
33473   __Pyx_GIVEREF(__pyx_t_3);
33474   PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_3);
33475   __pyx_t_3 = 0;
33476   __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 37, __pyx_L1_error)
33477   __Pyx_GOTREF(__pyx_t_3);
33478   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
33479   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
33480   if (PyDict_SetItem(__pyx_d, __pyx_n_s_ObjTimestamps, __pyx_t_3) < 0) __PYX_ERR(0, 37, __pyx_L1_error)
33481   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
33482 
33483   /* "tables/hdf5extension.pyx":42
33484  *
33485  * from cpython cimport PY_MAJOR_VERSION
33486  * if PY_MAJOR_VERSION < 3:             # <<<<<<<<<<<<<<
33487  *     import cPickle as pickle
33488  * else:
33489  */
33490   __pyx_t_4 = ((PY_MAJOR_VERSION < 3) != 0);
33491   if (__pyx_t_4) {
33492 
33493     /* "tables/hdf5extension.pyx":43
33494  * from cpython cimport PY_MAJOR_VERSION
33495  * if PY_MAJOR_VERSION < 3:
33496  *     import cPickle as pickle             # <<<<<<<<<<<<<<
33497  * else:
33498  *     import pickle
33499  */
33500     __pyx_t_3 = __Pyx_Import(__pyx_n_s_cPickle, 0, -1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 43, __pyx_L1_error)
33501     __Pyx_GOTREF(__pyx_t_3);
33502     if (PyDict_SetItem(__pyx_d, __pyx_n_s_pickle, __pyx_t_3) < 0) __PYX_ERR(0, 43, __pyx_L1_error)
33503     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
33504 
33505     /* "tables/hdf5extension.pyx":42
33506  *
33507  * from cpython cimport PY_MAJOR_VERSION
33508  * if PY_MAJOR_VERSION < 3:             # <<<<<<<<<<<<<<
33509  *     import cPickle as pickle
33510  * else:
33511  */
33512     goto __pyx_L2;
33513   }
33514 
33515   /* "tables/hdf5extension.pyx":45
33516  *     import cPickle as pickle
33517  * else:
33518  *     import pickle             # <<<<<<<<<<<<<<
33519  *
33520  * import numpy
33521  */
33522   /*else*/ {
33523     __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, 0, -1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 45, __pyx_L1_error)
33524     __Pyx_GOTREF(__pyx_t_3);
33525     if (PyDict_SetItem(__pyx_d, __pyx_n_s_pickle, __pyx_t_3) < 0) __PYX_ERR(0, 45, __pyx_L1_error)
33526     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
33527   }
33528   __pyx_L2:;
33529 
33530   /* "tables/hdf5extension.pyx":47
33531  *     import pickle
33532  *
33533  * import numpy             # <<<<<<<<<<<<<<
33534  *
33535  * from tables.exceptions import HDF5ExtError, DataTypeWarning
33536  */
33537   __pyx_t_3 = __Pyx_Import(__pyx_n_s_numpy, 0, -1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 47, __pyx_L1_error)
33538   __Pyx_GOTREF(__pyx_t_3);
33539   if (PyDict_SetItem(__pyx_d, __pyx_n_s_numpy, __pyx_t_3) < 0) __PYX_ERR(0, 47, __pyx_L1_error)
33540   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
33541 
33542   /* "tables/hdf5extension.pyx":49
33543  * import numpy
33544  *
33545  * from tables.exceptions import HDF5ExtError, DataTypeWarning             # <<<<<<<<<<<<<<
33546  *
33547  * from tables.utils import (check_file_access, byteorders, correct_byteorder,
33548  */
33549   __pyx_t_3 = PyList_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 49, __pyx_L1_error)
33550   __Pyx_GOTREF(__pyx_t_3);
33551   __Pyx_INCREF(__pyx_n_s_HDF5ExtError);
33552   __Pyx_GIVEREF(__pyx_n_s_HDF5ExtError);
33553   PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_HDF5ExtError);
33554   __Pyx_INCREF(__pyx_n_s_DataTypeWarning);
33555   __Pyx_GIVEREF(__pyx_n_s_DataTypeWarning);
33556   PyList_SET_ITEM(__pyx_t_3, 1, __pyx_n_s_DataTypeWarning);
33557   __pyx_t_2 = __Pyx_Import(__pyx_n_s_tables_exceptions, __pyx_t_3, -1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 49, __pyx_L1_error)
33558   __Pyx_GOTREF(__pyx_t_2);
33559   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
33560   __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_HDF5ExtError); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 49, __pyx_L1_error)
33561   __Pyx_GOTREF(__pyx_t_3);
33562   if (PyDict_SetItem(__pyx_d, __pyx_n_s_HDF5ExtError, __pyx_t_3) < 0) __PYX_ERR(0, 49, __pyx_L1_error)
33563   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
33564   __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_DataTypeWarning); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 49, __pyx_L1_error)
33565   __Pyx_GOTREF(__pyx_t_3);
33566   if (PyDict_SetItem(__pyx_d, __pyx_n_s_DataTypeWarning, __pyx_t_3) < 0) __PYX_ERR(0, 49, __pyx_L1_error)
33567   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
33568   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
33569 
33570   /* "tables/hdf5extension.pyx":51
33571  * from tables.exceptions import HDF5ExtError, DataTypeWarning
33572  *
33573  * from tables.utils import (check_file_access, byteorders, correct_byteorder,             # <<<<<<<<<<<<<<
33574  *   SizeType)
33575  *
33576  */
33577   __pyx_t_2 = PyList_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 51, __pyx_L1_error)
33578   __Pyx_GOTREF(__pyx_t_2);
33579   __Pyx_INCREF(__pyx_n_s_check_file_access);
33580   __Pyx_GIVEREF(__pyx_n_s_check_file_access);
33581   PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_check_file_access);
33582   __Pyx_INCREF(__pyx_n_s_byteorders);
33583   __Pyx_GIVEREF(__pyx_n_s_byteorders);
33584   PyList_SET_ITEM(__pyx_t_2, 1, __pyx_n_s_byteorders);
33585   __Pyx_INCREF(__pyx_n_s_correct_byteorder);
33586   __Pyx_GIVEREF(__pyx_n_s_correct_byteorder);
33587   PyList_SET_ITEM(__pyx_t_2, 2, __pyx_n_s_correct_byteorder);
33588   __Pyx_INCREF(__pyx_n_s_SizeType);
33589   __Pyx_GIVEREF(__pyx_n_s_SizeType);
33590   PyList_SET_ITEM(__pyx_t_2, 3, __pyx_n_s_SizeType);
33591   __pyx_t_3 = __Pyx_Import(__pyx_n_s_tables_utils, __pyx_t_2, -1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 51, __pyx_L1_error)
33592   __Pyx_GOTREF(__pyx_t_3);
33593   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
33594   __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_check_file_access); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 51, __pyx_L1_error)
33595   __Pyx_GOTREF(__pyx_t_2);
33596   if (PyDict_SetItem(__pyx_d, __pyx_n_s_check_file_access, __pyx_t_2) < 0) __PYX_ERR(0, 51, __pyx_L1_error)
33597   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
33598   __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_byteorders); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 51, __pyx_L1_error)
33599   __Pyx_GOTREF(__pyx_t_2);
33600   if (PyDict_SetItem(__pyx_d, __pyx_n_s_byteorders, __pyx_t_2) < 0) __PYX_ERR(0, 51, __pyx_L1_error)
33601   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
33602   __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_correct_byteorder); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 51, __pyx_L1_error)
33603   __Pyx_GOTREF(__pyx_t_2);
33604   if (PyDict_SetItem(__pyx_d, __pyx_n_s_correct_byteorder, __pyx_t_2) < 0) __PYX_ERR(0, 51, __pyx_L1_error)
33605   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
33606   __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_SizeType); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 51, __pyx_L1_error)
33607   __Pyx_GOTREF(__pyx_t_2);
33608   if (PyDict_SetItem(__pyx_d, __pyx_n_s_SizeType, __pyx_t_2) < 0) __PYX_ERR(0, 52, __pyx_L1_error)
33609   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
33610   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
33611 
33612   /* "tables/hdf5extension.pyx":54
33613  *   SizeType)
33614  *
33615  * from tables.atom import Atom             # <<<<<<<<<<<<<<
33616  *
33617  * from tables.description import descr_from_dtype
33618  */
33619   __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 54, __pyx_L1_error)
33620   __Pyx_GOTREF(__pyx_t_3);
33621   __Pyx_INCREF(__pyx_n_s_Atom);
33622   __Pyx_GIVEREF(__pyx_n_s_Atom);
33623   PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_Atom);
33624   __pyx_t_2 = __Pyx_Import(__pyx_n_s_tables_atom, __pyx_t_3, -1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 54, __pyx_L1_error)
33625   __Pyx_GOTREF(__pyx_t_2);
33626   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
33627   __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_Atom); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 54, __pyx_L1_error)
33628   __Pyx_GOTREF(__pyx_t_3);
33629   if (PyDict_SetItem(__pyx_d, __pyx_n_s_Atom, __pyx_t_3) < 0) __PYX_ERR(0, 54, __pyx_L1_error)
33630   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
33631   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
33632 
33633   /* "tables/hdf5extension.pyx":56
33634  * from tables.atom import Atom
33635  *
33636  * from tables.description import descr_from_dtype             # <<<<<<<<<<<<<<
33637  *
33638  * from tables.utilsextension import (encode_filename, set_blosc_max_threads,
33639  */
33640   __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 56, __pyx_L1_error)
33641   __Pyx_GOTREF(__pyx_t_2);
33642   __Pyx_INCREF(__pyx_n_s_descr_from_dtype);
33643   __Pyx_GIVEREF(__pyx_n_s_descr_from_dtype);
33644   PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_descr_from_dtype);
33645   __pyx_t_3 = __Pyx_Import(__pyx_n_s_tables_description, __pyx_t_2, -1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 56, __pyx_L1_error)
33646   __Pyx_GOTREF(__pyx_t_3);
33647   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
33648   __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_descr_from_dtype); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 56, __pyx_L1_error)
33649   __Pyx_GOTREF(__pyx_t_2);
33650   if (PyDict_SetItem(__pyx_d, __pyx_n_s_descr_from_dtype, __pyx_t_2) < 0) __PYX_ERR(0, 56, __pyx_L1_error)
33651   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
33652   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
33653 
33654   /* "tables/hdf5extension.pyx":58
33655  * from tables.description import descr_from_dtype
33656  *
33657  * from tables.utilsextension import (encode_filename, set_blosc_max_threads,             # <<<<<<<<<<<<<<
33658  *   atom_to_hdf5_type, atom_from_hdf5_type, hdf5_to_np_ext_type, create_nested_type,
33659  *   pttype_to_hdf5, pt_special_kinds, npext_prefixes_to_ptkinds, hdf5_class_to_string,
33660  */
33661   __pyx_t_3 = PyList_New(11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 58, __pyx_L1_error)
33662   __Pyx_GOTREF(__pyx_t_3);
33663   __Pyx_INCREF(__pyx_n_s_encode_filename);
33664   __Pyx_GIVEREF(__pyx_n_s_encode_filename);
33665   PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_encode_filename);
33666   __Pyx_INCREF(__pyx_n_s_set_blosc_max_threads);
33667   __Pyx_GIVEREF(__pyx_n_s_set_blosc_max_threads);
33668   PyList_SET_ITEM(__pyx_t_3, 1, __pyx_n_s_set_blosc_max_threads);
33669   __Pyx_INCREF(__pyx_n_s_atom_to_hdf5_type);
33670   __Pyx_GIVEREF(__pyx_n_s_atom_to_hdf5_type);
33671   PyList_SET_ITEM(__pyx_t_3, 2, __pyx_n_s_atom_to_hdf5_type);
33672   __Pyx_INCREF(__pyx_n_s_atom_from_hdf5_type);
33673   __Pyx_GIVEREF(__pyx_n_s_atom_from_hdf5_type);
33674   PyList_SET_ITEM(__pyx_t_3, 3, __pyx_n_s_atom_from_hdf5_type);
33675   __Pyx_INCREF(__pyx_n_s_hdf5_to_np_ext_type);
33676   __Pyx_GIVEREF(__pyx_n_s_hdf5_to_np_ext_type);
33677   PyList_SET_ITEM(__pyx_t_3, 4, __pyx_n_s_hdf5_to_np_ext_type);
33678   __Pyx_INCREF(__pyx_n_s_create_nested_type);
33679   __Pyx_GIVEREF(__pyx_n_s_create_nested_type);
33680   PyList_SET_ITEM(__pyx_t_3, 5, __pyx_n_s_create_nested_type);
33681   __Pyx_INCREF(__pyx_n_s_pttype_to_hdf5);
33682   __Pyx_GIVEREF(__pyx_n_s_pttype_to_hdf5);
33683   PyList_SET_ITEM(__pyx_t_3, 6, __pyx_n_s_pttype_to_hdf5);
33684   __Pyx_INCREF(__pyx_n_s_pt_special_kinds);
33685   __Pyx_GIVEREF(__pyx_n_s_pt_special_kinds);
33686   PyList_SET_ITEM(__pyx_t_3, 7, __pyx_n_s_pt_special_kinds);
33687   __Pyx_INCREF(__pyx_n_s_npext_prefixes_to_ptkinds);
33688   __Pyx_GIVEREF(__pyx_n_s_npext_prefixes_to_ptkinds);
33689   PyList_SET_ITEM(__pyx_t_3, 8, __pyx_n_s_npext_prefixes_to_ptkinds);
33690   __Pyx_INCREF(__pyx_n_s_hdf5_class_to_string);
33691   __Pyx_GIVEREF(__pyx_n_s_hdf5_class_to_string);
33692   PyList_SET_ITEM(__pyx_t_3, 9, __pyx_n_s_hdf5_class_to_string);
33693   __Pyx_INCREF(__pyx_n_s_platform_byteorder);
33694   __Pyx_GIVEREF(__pyx_n_s_platform_byteorder);
33695   PyList_SET_ITEM(__pyx_t_3, 10, __pyx_n_s_platform_byteorder);
33696   __pyx_t_2 = __Pyx_Import(__pyx_n_s_tables_utilsextension, __pyx_t_3, -1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 58, __pyx_L1_error)
33697   __Pyx_GOTREF(__pyx_t_2);
33698   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
33699   __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_encode_filename); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 58, __pyx_L1_error)
33700   __Pyx_GOTREF(__pyx_t_3);
33701   if (PyDict_SetItem(__pyx_d, __pyx_n_s_encode_filename, __pyx_t_3) < 0) __PYX_ERR(0, 58, __pyx_L1_error)
33702   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
33703   __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_set_blosc_max_threads); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 58, __pyx_L1_error)
33704   __Pyx_GOTREF(__pyx_t_3);
33705   if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_blosc_max_threads, __pyx_t_3) < 0) __PYX_ERR(0, 58, __pyx_L1_error)
33706   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
33707   __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_atom_to_hdf5_type); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 58, __pyx_L1_error)
33708   __Pyx_GOTREF(__pyx_t_3);
33709   if (PyDict_SetItem(__pyx_d, __pyx_n_s_atom_to_hdf5_type, __pyx_t_3) < 0) __PYX_ERR(0, 59, __pyx_L1_error)
33710   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
33711   __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_atom_from_hdf5_type); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 58, __pyx_L1_error)
33712   __Pyx_GOTREF(__pyx_t_3);
33713   if (PyDict_SetItem(__pyx_d, __pyx_n_s_atom_from_hdf5_type, __pyx_t_3) < 0) __PYX_ERR(0, 59, __pyx_L1_error)
33714   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
33715   __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_hdf5_to_np_ext_type); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 58, __pyx_L1_error)
33716   __Pyx_GOTREF(__pyx_t_3);
33717   if (PyDict_SetItem(__pyx_d, __pyx_n_s_hdf5_to_np_ext_type, __pyx_t_3) < 0) __PYX_ERR(0, 59, __pyx_L1_error)
33718   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
33719   __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_create_nested_type); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 58, __pyx_L1_error)
33720   __Pyx_GOTREF(__pyx_t_3);
33721   if (PyDict_SetItem(__pyx_d, __pyx_n_s_create_nested_type, __pyx_t_3) < 0) __PYX_ERR(0, 59, __pyx_L1_error)
33722   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
33723   __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_pttype_to_hdf5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 58, __pyx_L1_error)
33724   __Pyx_GOTREF(__pyx_t_3);
33725   if (PyDict_SetItem(__pyx_d, __pyx_n_s_pttype_to_hdf5, __pyx_t_3) < 0) __PYX_ERR(0, 60, __pyx_L1_error)
33726   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
33727   __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_pt_special_kinds); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 58, __pyx_L1_error)
33728   __Pyx_GOTREF(__pyx_t_3);
33729   if (PyDict_SetItem(__pyx_d, __pyx_n_s_pt_special_kinds, __pyx_t_3) < 0) __PYX_ERR(0, 60, __pyx_L1_error)
33730   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
33731   __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_npext_prefixes_to_ptkinds); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 58, __pyx_L1_error)
33732   __Pyx_GOTREF(__pyx_t_3);
33733   if (PyDict_SetItem(__pyx_d, __pyx_n_s_npext_prefixes_to_ptkinds, __pyx_t_3) < 0) __PYX_ERR(0, 60, __pyx_L1_error)
33734   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
33735   __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_hdf5_class_to_string); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 58, __pyx_L1_error)
33736   __Pyx_GOTREF(__pyx_t_3);
33737   if (PyDict_SetItem(__pyx_d, __pyx_n_s_hdf5_class_to_string, __pyx_t_3) < 0) __PYX_ERR(0, 60, __pyx_L1_error)
33738   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
33739   __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_platform_byteorder); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 58, __pyx_L1_error)
33740   __Pyx_GOTREF(__pyx_t_3);
33741   if (PyDict_SetItem(__pyx_d, __pyx_n_s_platform_byteorder, __pyx_t_3) < 0) __PYX_ERR(0, 61, __pyx_L1_error)
33742   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
33743   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
33744 
33745   /* "tables/hdf5extension.pyx":107
33746  *   H5Tget_size, hobj_ref_t)
33747  *
33748  * cdef int H5T_CSET_DEFAULT = 16             # <<<<<<<<<<<<<<
33749  *
33750  * from utilsextension cimport malloc_dims, get_native_type, cstr_to_pystr, load_reference
33751  */
33752   __pyx_v_6tables_13hdf5extension_H5T_CSET_DEFAULT = 16;
33753 
33754   /* "tables/hdf5extension.pyx":180
33755  * # The numpy API requires this function to be called before
33756  * # using any numpy facilities in an extension module.
33757  * import_array()             # <<<<<<<<<<<<<<
33758  *
33759  * #---------------------------------------------------------------------------
33760  */
33761   __pyx_t_5 = __pyx_f_5numpy_import_array(); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 180, __pyx_L1_error)
33762 
33763   /* "tables/hdf5extension.pyx":292
33764  *
33765  * _supported_drivers = (
33766  *     "H5FD_SEC2",             # <<<<<<<<<<<<<<
33767  *     "H5FD_DIRECT",
33768  *     #"H5FD_LOG",
33769  */
33770   if (PyDict_SetItem(__pyx_d, __pyx_n_s_supported_drivers, __pyx_tuple__29) < 0) __PYX_ERR(0, 291, __pyx_L1_error)
33771 
33772   /* "tables/hdf5extension.pyx":306
33773  * )
33774  *
33775  * HAVE_DIRECT_DRIVER = bool(H5_HAVE_DIRECT_DRIVER)             # <<<<<<<<<<<<<<
33776  * HAVE_WINDOWS_DRIVER = bool(H5_HAVE_WINDOWS_DRIVER)
33777  *
33778  */
33779   __pyx_t_2 = __Pyx_PyInt_From_int(H5_HAVE_DIRECT_DRIVER); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 306, __pyx_L1_error)
33780   __Pyx_GOTREF(__pyx_t_2);
33781   __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 306, __pyx_L1_error)
33782   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
33783   __pyx_t_2 = __Pyx_PyBool_FromLong((!(!__pyx_t_4))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 306, __pyx_L1_error)
33784   __Pyx_GOTREF(__pyx_t_2);
33785   if (PyDict_SetItem(__pyx_d, __pyx_n_s_HAVE_DIRECT_DRIVER, __pyx_t_2) < 0) __PYX_ERR(0, 306, __pyx_L1_error)
33786   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
33787 
33788   /* "tables/hdf5extension.pyx":307
33789  *
33790  * HAVE_DIRECT_DRIVER = bool(H5_HAVE_DIRECT_DRIVER)
33791  * HAVE_WINDOWS_DRIVER = bool(H5_HAVE_WINDOWS_DRIVER)             # <<<<<<<<<<<<<<
33792  *
33793  * # Type extensions declarations (these are subclassed by PyTables
33794  */
33795   __pyx_t_2 = __Pyx_PyInt_From_int(H5_HAVE_WINDOWS_DRIVER); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 307, __pyx_L1_error)
33796   __Pyx_GOTREF(__pyx_t_2);
33797   __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 307, __pyx_L1_error)
33798   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
33799   __pyx_t_2 = __Pyx_PyBool_FromLong((!(!__pyx_t_4))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 307, __pyx_L1_error)
33800   __Pyx_GOTREF(__pyx_t_2);
33801   if (PyDict_SetItem(__pyx_d, __pyx_n_s_HAVE_WINDOWS_DRIVER, __pyx_t_2) < 0) __PYX_ERR(0, 307, __pyx_L1_error)
33802   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
33803 
33804   /* "(tree fragment)":1
33805  * def __pyx_unpickle_File(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
33806  *     cdef object __pyx_PickleError
33807  *     cdef object __pyx_result
33808  */
33809   __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_6tables_13hdf5extension_1__pyx_unpickle_File, NULL, __pyx_n_s_tables_hdf5extension); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
33810   __Pyx_GOTREF(__pyx_t_2);
33811   if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_File, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
33812   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
33813 
33814   /* "(tree fragment)":11
33815  *         __pyx_unpickle_File__set_state(<File> __pyx_result, __pyx_state)
33816  *     return __pyx_result
33817  * cdef __pyx_unpickle_File__set_state(File __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
33818  *     __pyx_result.access_plist = __pyx_state[0]; __pyx_result.file_id = __pyx_state[1]; __pyx_result.name = __pyx_state[2]
33819  *     if len(__pyx_state) > 3 and hasattr(__pyx_result, '__dict__'):
33820  */
33821   __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_6tables_13hdf5extension_3__pyx_unpickle_AttributeSet, NULL, __pyx_n_s_tables_hdf5extension); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
33822   __Pyx_GOTREF(__pyx_t_2);
33823   if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_AttributeSet, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
33824   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
33825 
33826   /* "(tree fragment)":1
33827  * def __pyx_unpickle_Node(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
33828  *     cdef object __pyx_PickleError
33829  *     cdef object __pyx_result
33830  */
33831   __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_6tables_13hdf5extension_5__pyx_unpickle_Node, NULL, __pyx_n_s_tables_hdf5extension); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
33832   __Pyx_GOTREF(__pyx_t_2);
33833   if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_Node, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
33834   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
33835 
33836   /* "(tree fragment)":11
33837  *         __pyx_unpickle_Node__set_state(<Node> __pyx_result, __pyx_state)
33838  *     return __pyx_result
33839  * cdef __pyx_unpickle_Node__set_state(Node __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
33840  *     __pyx_result.name = __pyx_state[0]; __pyx_result.parent_id = __pyx_state[1]
33841  *     if len(__pyx_state) > 2 and hasattr(__pyx_result, '__dict__'):
33842  */
33843   __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_6tables_13hdf5extension_7__pyx_unpickle_Group, NULL, __pyx_n_s_tables_hdf5extension); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
33844   __Pyx_GOTREF(__pyx_t_2);
33845   if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_Group, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
33846   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
33847 
33848   /* "tables/hdf5extension.pyx":1
33849  * # -*- coding: utf-8 -*-             # <<<<<<<<<<<<<<
33850  *
33851  * ########################################################################
33852  */
33853   __pyx_t_2 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error)
33854   __Pyx_GOTREF(__pyx_t_2);
33855   if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
33856   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
33857 
33858   /* "../../env/miniconda/envs/py37/lib/python3.7/site-packages/Cython/Includes/numpy/__init__.pxd":1046
33859  *         raise ImportError("numpy.core.umath failed to import")
33860  *
33861  * cdef inline int import_ufunc() except -1:             # <<<<<<<<<<<<<<
33862  *     try:
33863  *         _import_umath()
33864  */
33865 
33866   /*--- Wrapped vars code ---*/
33867 
33868   goto __pyx_L0;
33869   __pyx_L1_error:;
33870   __Pyx_XDECREF(__pyx_t_1);
33871   __Pyx_XDECREF(__pyx_t_2);
33872   __Pyx_XDECREF(__pyx_t_3);
33873   if (__pyx_m) {
33874     if (__pyx_d) {
33875       __Pyx_AddTraceback("init tables.hdf5extension", __pyx_clineno, __pyx_lineno, __pyx_filename);
33876     }
33877     Py_CLEAR(__pyx_m);
33878   } else if (!PyErr_Occurred()) {
33879     PyErr_SetString(PyExc_ImportError, "init tables.hdf5extension");
33880   }
33881   __pyx_L0:;
33882   __Pyx_RefNannyFinishContext();
33883   #if CYTHON_PEP489_MULTI_PHASE_INIT
33884   return (__pyx_m != NULL) ? 0 : -1;
33885   #elif PY_MAJOR_VERSION >= 3
33886   return __pyx_m;
33887   #else
33888   return;
33889   #endif
33890 }
33891 
33892 /* --- Runtime support code --- */
33893 /* Refnanny */
33894 #if CYTHON_REFNANNY
__Pyx_RefNannyImportAPI(const char * modname)33895 static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) {
33896     PyObject *m = NULL, *p = NULL;
33897     void *r = NULL;
33898     m = PyImport_ImportModule(modname);
33899     if (!m) goto end;
33900     p = PyObject_GetAttrString(m, "RefNannyAPI");
33901     if (!p) goto end;
33902     r = PyLong_AsVoidPtr(p);
33903 end:
33904     Py_XDECREF(p);
33905     Py_XDECREF(m);
33906     return (__Pyx_RefNannyAPIStruct *)r;
33907 }
33908 #endif
33909 
33910 /* PyObjectGetAttrStr */
33911 #if CYTHON_USE_TYPE_SLOTS
__Pyx_PyObject_GetAttrStr(PyObject * obj,PyObject * attr_name)33912 static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) {
33913     PyTypeObject* tp = Py_TYPE(obj);
33914     if (likely(tp->tp_getattro))
33915         return tp->tp_getattro(obj, attr_name);
33916 #if PY_MAJOR_VERSION < 3
33917     if (likely(tp->tp_getattr))
33918         return tp->tp_getattr(obj, PyString_AS_STRING(attr_name));
33919 #endif
33920     return PyObject_GetAttr(obj, attr_name);
33921 }
33922 #endif
33923 
33924 /* GetBuiltinName */
__Pyx_GetBuiltinName(PyObject * name)33925 static PyObject *__Pyx_GetBuiltinName(PyObject *name) {
33926     PyObject* result = __Pyx_PyObject_GetAttrStr(__pyx_b, name);
33927     if (unlikely(!result)) {
33928         PyErr_Format(PyExc_NameError,
33929 #if PY_MAJOR_VERSION >= 3
33930             "name '%U' is not defined", name);
33931 #else
33932             "name '%.200s' is not defined", PyString_AS_STRING(name));
33933 #endif
33934     }
33935     return result;
33936 }
33937 
33938 /* PyCFunctionFastCall */
33939 #if CYTHON_FAST_PYCCALL
__Pyx_PyCFunction_FastCall(PyObject * func_obj,PyObject ** args,Py_ssize_t nargs)33940 static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, PyObject **args, Py_ssize_t nargs) {
33941     PyCFunctionObject *func = (PyCFunctionObject*)func_obj;
33942     PyCFunction meth = PyCFunction_GET_FUNCTION(func);
33943     PyObject *self = PyCFunction_GET_SELF(func);
33944     int flags = PyCFunction_GET_FLAGS(func);
33945     assert(PyCFunction_Check(func));
33946     assert(METH_FASTCALL == (flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS | METH_STACKLESS)));
33947     assert(nargs >= 0);
33948     assert(nargs == 0 || args != NULL);
33949     /* _PyCFunction_FastCallDict() must not be called with an exception set,
33950        because it may clear it (directly or indirectly) and so the
33951        caller loses its exception */
33952     assert(!PyErr_Occurred());
33953     if ((PY_VERSION_HEX < 0x030700A0) || unlikely(flags & METH_KEYWORDS)) {
33954         return (*((__Pyx_PyCFunctionFastWithKeywords)(void*)meth)) (self, args, nargs, NULL);
33955     } else {
33956         return (*((__Pyx_PyCFunctionFast)(void*)meth)) (self, args, nargs);
33957     }
33958 }
33959 #endif
33960 
33961 /* PyFunctionFastCall */
33962 #if CYTHON_FAST_PYCALL
__Pyx_PyFunction_FastCallNoKw(PyCodeObject * co,PyObject ** args,Py_ssize_t na,PyObject * globals)33963 static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na,
33964                                                PyObject *globals) {
33965     PyFrameObject *f;
33966     PyThreadState *tstate = __Pyx_PyThreadState_Current;
33967     PyObject **fastlocals;
33968     Py_ssize_t i;
33969     PyObject *result;
33970     assert(globals != NULL);
33971     /* XXX Perhaps we should create a specialized
33972        PyFrame_New() that doesn't take locals, but does
33973        take builtins without sanity checking them.
33974        */
33975     assert(tstate != NULL);
33976     f = PyFrame_New(tstate, co, globals, NULL);
33977     if (f == NULL) {
33978         return NULL;
33979     }
33980     fastlocals = __Pyx_PyFrame_GetLocalsplus(f);
33981     for (i = 0; i < na; i++) {
33982         Py_INCREF(*args);
33983         fastlocals[i] = *args++;
33984     }
33985     result = PyEval_EvalFrameEx(f,0);
33986     ++tstate->recursion_depth;
33987     Py_DECREF(f);
33988     --tstate->recursion_depth;
33989     return result;
33990 }
33991 #if 1 || PY_VERSION_HEX < 0x030600B1
__Pyx_PyFunction_FastCallDict(PyObject * func,PyObject ** args,Py_ssize_t nargs,PyObject * kwargs)33992 static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs) {
33993     PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func);
33994     PyObject *globals = PyFunction_GET_GLOBALS(func);
33995     PyObject *argdefs = PyFunction_GET_DEFAULTS(func);
33996     PyObject *closure;
33997 #if PY_MAJOR_VERSION >= 3
33998     PyObject *kwdefs;
33999 #endif
34000     PyObject *kwtuple, **k;
34001     PyObject **d;
34002     Py_ssize_t nd;
34003     Py_ssize_t nk;
34004     PyObject *result;
34005     assert(kwargs == NULL || PyDict_Check(kwargs));
34006     nk = kwargs ? PyDict_Size(kwargs) : 0;
34007     if (Py_EnterRecursiveCall((char*)" while calling a Python object")) {
34008         return NULL;
34009     }
34010     if (
34011 #if PY_MAJOR_VERSION >= 3
34012             co->co_kwonlyargcount == 0 &&
34013 #endif
34014             likely(kwargs == NULL || nk == 0) &&
34015             co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) {
34016         if (argdefs == NULL && co->co_argcount == nargs) {
34017             result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals);
34018             goto done;
34019         }
34020         else if (nargs == 0 && argdefs != NULL
34021                  && co->co_argcount == Py_SIZE(argdefs)) {
34022             /* function called with no arguments, but all parameters have
34023                a default value: use default values as arguments .*/
34024             args = &PyTuple_GET_ITEM(argdefs, 0);
34025             result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals);
34026             goto done;
34027         }
34028     }
34029     if (kwargs != NULL) {
34030         Py_ssize_t pos, i;
34031         kwtuple = PyTuple_New(2 * nk);
34032         if (kwtuple == NULL) {
34033             result = NULL;
34034             goto done;
34035         }
34036         k = &PyTuple_GET_ITEM(kwtuple, 0);
34037         pos = i = 0;
34038         while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) {
34039             Py_INCREF(k[i]);
34040             Py_INCREF(k[i+1]);
34041             i += 2;
34042         }
34043         nk = i / 2;
34044     }
34045     else {
34046         kwtuple = NULL;
34047         k = NULL;
34048     }
34049     closure = PyFunction_GET_CLOSURE(func);
34050 #if PY_MAJOR_VERSION >= 3
34051     kwdefs = PyFunction_GET_KW_DEFAULTS(func);
34052 #endif
34053     if (argdefs != NULL) {
34054         d = &PyTuple_GET_ITEM(argdefs, 0);
34055         nd = Py_SIZE(argdefs);
34056     }
34057     else {
34058         d = NULL;
34059         nd = 0;
34060     }
34061 #if PY_MAJOR_VERSION >= 3
34062     result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL,
34063                                args, (int)nargs,
34064                                k, (int)nk,
34065                                d, (int)nd, kwdefs, closure);
34066 #else
34067     result = PyEval_EvalCodeEx(co, globals, (PyObject *)NULL,
34068                                args, (int)nargs,
34069                                k, (int)nk,
34070                                d, (int)nd, closure);
34071 #endif
34072     Py_XDECREF(kwtuple);
34073 done:
34074     Py_LeaveRecursiveCall();
34075     return result;
34076 }
34077 #endif
34078 #endif
34079 
34080 /* PyObjectCall */
34081 #if CYTHON_COMPILING_IN_CPYTHON
__Pyx_PyObject_Call(PyObject * func,PyObject * arg,PyObject * kw)34082 static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) {
34083     PyObject *result;
34084     ternaryfunc call = func->ob_type->tp_call;
34085     if (unlikely(!call))
34086         return PyObject_Call(func, arg, kw);
34087     if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object")))
34088         return NULL;
34089     result = (*call)(func, arg, kw);
34090     Py_LeaveRecursiveCall();
34091     if (unlikely(!result) && unlikely(!PyErr_Occurred())) {
34092         PyErr_SetString(
34093             PyExc_SystemError,
34094             "NULL result without error in PyObject_Call");
34095     }
34096     return result;
34097 }
34098 #endif
34099 
34100 /* PyObjectCall2Args */
__Pyx_PyObject_Call2Args(PyObject * function,PyObject * arg1,PyObject * arg2)34101 static CYTHON_UNUSED PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2) {
34102     PyObject *args, *result = NULL;
34103     #if CYTHON_FAST_PYCALL
34104     if (PyFunction_Check(function)) {
34105         PyObject *args[2] = {arg1, arg2};
34106         return __Pyx_PyFunction_FastCall(function, args, 2);
34107     }
34108     #endif
34109     #if CYTHON_FAST_PYCCALL
34110     if (__Pyx_PyFastCFunction_Check(function)) {
34111         PyObject *args[2] = {arg1, arg2};
34112         return __Pyx_PyCFunction_FastCall(function, args, 2);
34113     }
34114     #endif
34115     args = PyTuple_New(2);
34116     if (unlikely(!args)) goto done;
34117     Py_INCREF(arg1);
34118     PyTuple_SET_ITEM(args, 0, arg1);
34119     Py_INCREF(arg2);
34120     PyTuple_SET_ITEM(args, 1, arg2);
34121     Py_INCREF(function);
34122     result = __Pyx_PyObject_Call(function, args, NULL);
34123     Py_DECREF(args);
34124     Py_DECREF(function);
34125 done:
34126     return result;
34127 }
34128 
34129 /* PyObjectCallMethO */
34130 #if CYTHON_COMPILING_IN_CPYTHON
__Pyx_PyObject_CallMethO(PyObject * func,PyObject * arg)34131 static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) {
34132     PyObject *self, *result;
34133     PyCFunction cfunc;
34134     cfunc = PyCFunction_GET_FUNCTION(func);
34135     self = PyCFunction_GET_SELF(func);
34136     if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object")))
34137         return NULL;
34138     result = cfunc(self, arg);
34139     Py_LeaveRecursiveCall();
34140     if (unlikely(!result) && unlikely(!PyErr_Occurred())) {
34141         PyErr_SetString(
34142             PyExc_SystemError,
34143             "NULL result without error in PyObject_Call");
34144     }
34145     return result;
34146 }
34147 #endif
34148 
34149 /* PyObjectCallOneArg */
34150 #if CYTHON_COMPILING_IN_CPYTHON
__Pyx__PyObject_CallOneArg(PyObject * func,PyObject * arg)34151 static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) {
34152     PyObject *result;
34153     PyObject *args = PyTuple_New(1);
34154     if (unlikely(!args)) return NULL;
34155     Py_INCREF(arg);
34156     PyTuple_SET_ITEM(args, 0, arg);
34157     result = __Pyx_PyObject_Call(func, args, NULL);
34158     Py_DECREF(args);
34159     return result;
34160 }
__Pyx_PyObject_CallOneArg(PyObject * func,PyObject * arg)34161 static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) {
34162 #if CYTHON_FAST_PYCALL
34163     if (PyFunction_Check(func)) {
34164         return __Pyx_PyFunction_FastCall(func, &arg, 1);
34165     }
34166 #endif
34167     if (likely(PyCFunction_Check(func))) {
34168         if (likely(PyCFunction_GET_FLAGS(func) & METH_O)) {
34169             return __Pyx_PyObject_CallMethO(func, arg);
34170 #if CYTHON_FAST_PYCCALL
34171         } else if (PyCFunction_GET_FLAGS(func) & METH_FASTCALL) {
34172             return __Pyx_PyCFunction_FastCall(func, &arg, 1);
34173 #endif
34174         }
34175     }
34176     return __Pyx__PyObject_CallOneArg(func, arg);
34177 }
34178 #else
__Pyx_PyObject_CallOneArg(PyObject * func,PyObject * arg)34179 static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) {
34180     PyObject *result;
34181     PyObject *args = PyTuple_Pack(1, arg);
34182     if (unlikely(!args)) return NULL;
34183     result = __Pyx_PyObject_Call(func, args, NULL);
34184     Py_DECREF(args);
34185     return result;
34186 }
34187 #endif
34188 
34189 /* PyObjectGetMethod */
__Pyx_PyObject_GetMethod(PyObject * obj,PyObject * name,PyObject ** method)34190 static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method) {
34191     PyObject *attr;
34192 #if CYTHON_UNPACK_METHODS && CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_PYTYPE_LOOKUP
34193     PyTypeObject *tp = Py_TYPE(obj);
34194     PyObject *descr;
34195     descrgetfunc f = NULL;
34196     PyObject **dictptr, *dict;
34197     int meth_found = 0;
34198     assert (*method == NULL);
34199     if (unlikely(tp->tp_getattro != PyObject_GenericGetAttr)) {
34200         attr = __Pyx_PyObject_GetAttrStr(obj, name);
34201         goto try_unpack;
34202     }
34203     if (unlikely(tp->tp_dict == NULL) && unlikely(PyType_Ready(tp) < 0)) {
34204         return 0;
34205     }
34206     descr = _PyType_Lookup(tp, name);
34207     if (likely(descr != NULL)) {
34208         Py_INCREF(descr);
34209 #if PY_MAJOR_VERSION >= 3
34210         #ifdef __Pyx_CyFunction_USED
34211         if (likely(PyFunction_Check(descr) || (Py_TYPE(descr) == &PyMethodDescr_Type) || __Pyx_CyFunction_Check(descr)))
34212         #else
34213         if (likely(PyFunction_Check(descr) || (Py_TYPE(descr) == &PyMethodDescr_Type)))
34214         #endif
34215 #else
34216         #ifdef __Pyx_CyFunction_USED
34217         if (likely(PyFunction_Check(descr) || __Pyx_CyFunction_Check(descr)))
34218         #else
34219         if (likely(PyFunction_Check(descr)))
34220         #endif
34221 #endif
34222         {
34223             meth_found = 1;
34224         } else {
34225             f = Py_TYPE(descr)->tp_descr_get;
34226             if (f != NULL && PyDescr_IsData(descr)) {
34227                 attr = f(descr, obj, (PyObject *)Py_TYPE(obj));
34228                 Py_DECREF(descr);
34229                 goto try_unpack;
34230             }
34231         }
34232     }
34233     dictptr = _PyObject_GetDictPtr(obj);
34234     if (dictptr != NULL && (dict = *dictptr) != NULL) {
34235         Py_INCREF(dict);
34236         attr = __Pyx_PyDict_GetItemStr(dict, name);
34237         if (attr != NULL) {
34238             Py_INCREF(attr);
34239             Py_DECREF(dict);
34240             Py_XDECREF(descr);
34241             goto try_unpack;
34242         }
34243         Py_DECREF(dict);
34244     }
34245     if (meth_found) {
34246         *method = descr;
34247         return 1;
34248     }
34249     if (f != NULL) {
34250         attr = f(descr, obj, (PyObject *)Py_TYPE(obj));
34251         Py_DECREF(descr);
34252         goto try_unpack;
34253     }
34254     if (descr != NULL) {
34255         *method = descr;
34256         return 0;
34257     }
34258     PyErr_Format(PyExc_AttributeError,
34259 #if PY_MAJOR_VERSION >= 3
34260                  "'%.50s' object has no attribute '%U'",
34261                  tp->tp_name, name);
34262 #else
34263                  "'%.50s' object has no attribute '%.400s'",
34264                  tp->tp_name, PyString_AS_STRING(name));
34265 #endif
34266     return 0;
34267 #else
34268     attr = __Pyx_PyObject_GetAttrStr(obj, name);
34269     goto try_unpack;
34270 #endif
34271 try_unpack:
34272 #if CYTHON_UNPACK_METHODS
34273     if (likely(attr) && PyMethod_Check(attr) && likely(PyMethod_GET_SELF(attr) == obj)) {
34274         PyObject *function = PyMethod_GET_FUNCTION(attr);
34275         Py_INCREF(function);
34276         Py_DECREF(attr);
34277         *method = function;
34278         return 1;
34279     }
34280 #endif
34281     *method = attr;
34282     return 0;
34283 }
34284 
34285 /* PyObjectCallMethod1 */
__Pyx__PyObject_CallMethod1(PyObject * method,PyObject * arg)34286 static PyObject* __Pyx__PyObject_CallMethod1(PyObject* method, PyObject* arg) {
34287     PyObject *result = __Pyx_PyObject_CallOneArg(method, arg);
34288     Py_DECREF(method);
34289     return result;
34290 }
__Pyx_PyObject_CallMethod1(PyObject * obj,PyObject * method_name,PyObject * arg)34291 static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg) {
34292     PyObject *method = NULL, *result;
34293     int is_method = __Pyx_PyObject_GetMethod(obj, method_name, &method);
34294     if (likely(is_method)) {
34295         result = __Pyx_PyObject_Call2Args(method, obj, arg);
34296         Py_DECREF(method);
34297         return result;
34298     }
34299     if (unlikely(!method)) return NULL;
34300     return __Pyx__PyObject_CallMethod1(method, arg);
34301 }
34302 
34303 /* append */
__Pyx_PyObject_Append(PyObject * L,PyObject * x)34304 static CYTHON_INLINE int __Pyx_PyObject_Append(PyObject* L, PyObject* x) {
34305     if (likely(PyList_CheckExact(L))) {
34306         if (unlikely(__Pyx_PyList_Append(L, x) < 0)) return -1;
34307     } else {
34308         PyObject* retval = __Pyx_PyObject_CallMethod1(L, __pyx_n_s_append, x);
34309         if (unlikely(!retval))
34310             return -1;
34311         Py_DECREF(retval);
34312     }
34313     return 0;
34314 }
34315 
34316 /* PyDictVersioning */
34317 #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS
__Pyx_get_tp_dict_version(PyObject * obj)34318 static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj) {
34319     PyObject *dict = Py_TYPE(obj)->tp_dict;
34320     return likely(dict) ? __PYX_GET_DICT_VERSION(dict) : 0;
34321 }
__Pyx_get_object_dict_version(PyObject * obj)34322 static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj) {
34323     PyObject **dictptr = NULL;
34324     Py_ssize_t offset = Py_TYPE(obj)->tp_dictoffset;
34325     if (offset) {
34326 #if CYTHON_COMPILING_IN_CPYTHON
34327         dictptr = (likely(offset > 0)) ? (PyObject **) ((char *)obj + offset) : _PyObject_GetDictPtr(obj);
34328 #else
34329         dictptr = _PyObject_GetDictPtr(obj);
34330 #endif
34331     }
34332     return (dictptr && *dictptr) ? __PYX_GET_DICT_VERSION(*dictptr) : 0;
34333 }
__Pyx_object_dict_version_matches(PyObject * obj,PY_UINT64_T tp_dict_version,PY_UINT64_T obj_dict_version)34334 static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version) {
34335     PyObject *dict = Py_TYPE(obj)->tp_dict;
34336     if (unlikely(!dict) || unlikely(tp_dict_version != __PYX_GET_DICT_VERSION(dict)))
34337         return 0;
34338     return obj_dict_version == __Pyx_get_object_dict_version(obj);
34339 }
34340 #endif
34341 
34342 /* GetModuleGlobalName */
34343 #if CYTHON_USE_DICT_VERSIONS
__Pyx__GetModuleGlobalName(PyObject * name,PY_UINT64_T * dict_version,PyObject ** dict_cached_value)34344 static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value)
34345 #else
34346 static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name)
34347 #endif
34348 {
34349     PyObject *result;
34350 #if !CYTHON_AVOID_BORROWED_REFS
34351 #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1
34352     result = _PyDict_GetItem_KnownHash(__pyx_d, name, ((PyASCIIObject *) name)->hash);
34353     __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
34354     if (likely(result)) {
34355         return __Pyx_NewRef(result);
34356     } else if (unlikely(PyErr_Occurred())) {
34357         return NULL;
34358     }
34359 #else
34360     result = PyDict_GetItem(__pyx_d, name);
34361     __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
34362     if (likely(result)) {
34363         return __Pyx_NewRef(result);
34364     }
34365 #endif
34366 #else
34367     result = PyObject_GetItem(__pyx_d, name);
34368     __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
34369     if (likely(result)) {
34370         return __Pyx_NewRef(result);
34371     }
34372     PyErr_Clear();
34373 #endif
34374     return __Pyx_GetBuiltinName(name);
34375 }
34376 
34377 /* PyErrFetchRestore */
34378 #if CYTHON_FAST_THREAD_STATE
__Pyx_ErrRestoreInState(PyThreadState * tstate,PyObject * type,PyObject * value,PyObject * tb)34379 static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {
34380     PyObject *tmp_type, *tmp_value, *tmp_tb;
34381     tmp_type = tstate->curexc_type;
34382     tmp_value = tstate->curexc_value;
34383     tmp_tb = tstate->curexc_traceback;
34384     tstate->curexc_type = type;
34385     tstate->curexc_value = value;
34386     tstate->curexc_traceback = tb;
34387     Py_XDECREF(tmp_type);
34388     Py_XDECREF(tmp_value);
34389     Py_XDECREF(tmp_tb);
34390 }
__Pyx_ErrFetchInState(PyThreadState * tstate,PyObject ** type,PyObject ** value,PyObject ** tb)34391 static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
34392     *type = tstate->curexc_type;
34393     *value = tstate->curexc_value;
34394     *tb = tstate->curexc_traceback;
34395     tstate->curexc_type = 0;
34396     tstate->curexc_value = 0;
34397     tstate->curexc_traceback = 0;
34398 }
34399 #endif
34400 
34401 /* RaiseException */
34402 #if PY_MAJOR_VERSION < 3
__Pyx_Raise(PyObject * type,PyObject * value,PyObject * tb,CYTHON_UNUSED PyObject * cause)34403 static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb,
34404                         CYTHON_UNUSED PyObject *cause) {
34405     __Pyx_PyThreadState_declare
34406     Py_XINCREF(type);
34407     if (!value || value == Py_None)
34408         value = NULL;
34409     else
34410         Py_INCREF(value);
34411     if (!tb || tb == Py_None)
34412         tb = NULL;
34413     else {
34414         Py_INCREF(tb);
34415         if (!PyTraceBack_Check(tb)) {
34416             PyErr_SetString(PyExc_TypeError,
34417                 "raise: arg 3 must be a traceback or None");
34418             goto raise_error;
34419         }
34420     }
34421     if (PyType_Check(type)) {
34422 #if CYTHON_COMPILING_IN_PYPY
34423         if (!value) {
34424             Py_INCREF(Py_None);
34425             value = Py_None;
34426         }
34427 #endif
34428         PyErr_NormalizeException(&type, &value, &tb);
34429     } else {
34430         if (value) {
34431             PyErr_SetString(PyExc_TypeError,
34432                 "instance exception may not have a separate value");
34433             goto raise_error;
34434         }
34435         value = type;
34436         type = (PyObject*) Py_TYPE(type);
34437         Py_INCREF(type);
34438         if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) {
34439             PyErr_SetString(PyExc_TypeError,
34440                 "raise: exception class must be a subclass of BaseException");
34441             goto raise_error;
34442         }
34443     }
34444     __Pyx_PyThreadState_assign
34445     __Pyx_ErrRestore(type, value, tb);
34446     return;
34447 raise_error:
34448     Py_XDECREF(value);
34449     Py_XDECREF(type);
34450     Py_XDECREF(tb);
34451     return;
34452 }
34453 #else
__Pyx_Raise(PyObject * type,PyObject * value,PyObject * tb,PyObject * cause)34454 static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) {
34455     PyObject* owned_instance = NULL;
34456     if (tb == Py_None) {
34457         tb = 0;
34458     } else if (tb && !PyTraceBack_Check(tb)) {
34459         PyErr_SetString(PyExc_TypeError,
34460             "raise: arg 3 must be a traceback or None");
34461         goto bad;
34462     }
34463     if (value == Py_None)
34464         value = 0;
34465     if (PyExceptionInstance_Check(type)) {
34466         if (value) {
34467             PyErr_SetString(PyExc_TypeError,
34468                 "instance exception may not have a separate value");
34469             goto bad;
34470         }
34471         value = type;
34472         type = (PyObject*) Py_TYPE(value);
34473     } else if (PyExceptionClass_Check(type)) {
34474         PyObject *instance_class = NULL;
34475         if (value && PyExceptionInstance_Check(value)) {
34476             instance_class = (PyObject*) Py_TYPE(value);
34477             if (instance_class != type) {
34478                 int is_subclass = PyObject_IsSubclass(instance_class, type);
34479                 if (!is_subclass) {
34480                     instance_class = NULL;
34481                 } else if (unlikely(is_subclass == -1)) {
34482                     goto bad;
34483                 } else {
34484                     type = instance_class;
34485                 }
34486             }
34487         }
34488         if (!instance_class) {
34489             PyObject *args;
34490             if (!value)
34491                 args = PyTuple_New(0);
34492             else if (PyTuple_Check(value)) {
34493                 Py_INCREF(value);
34494                 args = value;
34495             } else
34496                 args = PyTuple_Pack(1, value);
34497             if (!args)
34498                 goto bad;
34499             owned_instance = PyObject_Call(type, args, NULL);
34500             Py_DECREF(args);
34501             if (!owned_instance)
34502                 goto bad;
34503             value = owned_instance;
34504             if (!PyExceptionInstance_Check(value)) {
34505                 PyErr_Format(PyExc_TypeError,
34506                              "calling %R should have returned an instance of "
34507                              "BaseException, not %R",
34508                              type, Py_TYPE(value));
34509                 goto bad;
34510             }
34511         }
34512     } else {
34513         PyErr_SetString(PyExc_TypeError,
34514             "raise: exception class must be a subclass of BaseException");
34515         goto bad;
34516     }
34517     if (cause) {
34518         PyObject *fixed_cause;
34519         if (cause == Py_None) {
34520             fixed_cause = NULL;
34521         } else if (PyExceptionClass_Check(cause)) {
34522             fixed_cause = PyObject_CallObject(cause, NULL);
34523             if (fixed_cause == NULL)
34524                 goto bad;
34525         } else if (PyExceptionInstance_Check(cause)) {
34526             fixed_cause = cause;
34527             Py_INCREF(fixed_cause);
34528         } else {
34529             PyErr_SetString(PyExc_TypeError,
34530                             "exception causes must derive from "
34531                             "BaseException");
34532             goto bad;
34533         }
34534         PyException_SetCause(value, fixed_cause);
34535     }
34536     PyErr_SetObject(type, value);
34537     if (tb) {
34538 #if CYTHON_COMPILING_IN_PYPY
34539         PyObject *tmp_type, *tmp_value, *tmp_tb;
34540         PyErr_Fetch(&tmp_type, &tmp_value, &tmp_tb);
34541         Py_INCREF(tb);
34542         PyErr_Restore(tmp_type, tmp_value, tb);
34543         Py_XDECREF(tmp_tb);
34544 #else
34545         PyThreadState *tstate = __Pyx_PyThreadState_Current;
34546         PyObject* tmp_tb = tstate->curexc_traceback;
34547         if (tb != tmp_tb) {
34548             Py_INCREF(tb);
34549             tstate->curexc_traceback = tb;
34550             Py_XDECREF(tmp_tb);
34551         }
34552 #endif
34553     }
34554 bad:
34555     Py_XDECREF(owned_instance);
34556     return;
34557 }
34558 #endif
34559 
34560 /* None */
__Pyx_RaiseUnboundLocalError(const char * varname)34561 static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname) {
34562     PyErr_Format(PyExc_UnboundLocalError, "local variable '%s' referenced before assignment", varname);
34563 }
34564 
34565 /* GetTopmostException */
34566 #if CYTHON_USE_EXC_INFO_STACK
34567 static _PyErr_StackItem *
__Pyx_PyErr_GetTopmostException(PyThreadState * tstate)34568 __Pyx_PyErr_GetTopmostException(PyThreadState *tstate)
34569 {
34570     _PyErr_StackItem *exc_info = tstate->exc_info;
34571     while ((exc_info->exc_type == NULL || exc_info->exc_type == Py_None) &&
34572            exc_info->previous_item != NULL)
34573     {
34574         exc_info = exc_info->previous_item;
34575     }
34576     return exc_info;
34577 }
34578 #endif
34579 
34580 /* SaveResetException */
34581 #if CYTHON_FAST_THREAD_STATE
__Pyx__ExceptionSave(PyThreadState * tstate,PyObject ** type,PyObject ** value,PyObject ** tb)34582 static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
34583     #if CYTHON_USE_EXC_INFO_STACK
34584     _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate);
34585     *type = exc_info->exc_type;
34586     *value = exc_info->exc_value;
34587     *tb = exc_info->exc_traceback;
34588     #else
34589     *type = tstate->exc_type;
34590     *value = tstate->exc_value;
34591     *tb = tstate->exc_traceback;
34592     #endif
34593     Py_XINCREF(*type);
34594     Py_XINCREF(*value);
34595     Py_XINCREF(*tb);
34596 }
__Pyx__ExceptionReset(PyThreadState * tstate,PyObject * type,PyObject * value,PyObject * tb)34597 static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {
34598     PyObject *tmp_type, *tmp_value, *tmp_tb;
34599     #if CYTHON_USE_EXC_INFO_STACK
34600     _PyErr_StackItem *exc_info = tstate->exc_info;
34601     tmp_type = exc_info->exc_type;
34602     tmp_value = exc_info->exc_value;
34603     tmp_tb = exc_info->exc_traceback;
34604     exc_info->exc_type = type;
34605     exc_info->exc_value = value;
34606     exc_info->exc_traceback = tb;
34607     #else
34608     tmp_type = tstate->exc_type;
34609     tmp_value = tstate->exc_value;
34610     tmp_tb = tstate->exc_traceback;
34611     tstate->exc_type = type;
34612     tstate->exc_value = value;
34613     tstate->exc_traceback = tb;
34614     #endif
34615     Py_XDECREF(tmp_type);
34616     Py_XDECREF(tmp_value);
34617     Py_XDECREF(tmp_tb);
34618 }
34619 #endif
34620 
34621 /* PyErrExceptionMatches */
34622 #if CYTHON_FAST_THREAD_STATE
__Pyx_PyErr_ExceptionMatchesTuple(PyObject * exc_type,PyObject * tuple)34623 static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) {
34624     Py_ssize_t i, n;
34625     n = PyTuple_GET_SIZE(tuple);
34626 #if PY_MAJOR_VERSION >= 3
34627     for (i=0; i<n; i++) {
34628         if (exc_type == PyTuple_GET_ITEM(tuple, i)) return 1;
34629     }
34630 #endif
34631     for (i=0; i<n; i++) {
34632         if (__Pyx_PyErr_GivenExceptionMatches(exc_type, PyTuple_GET_ITEM(tuple, i))) return 1;
34633     }
34634     return 0;
34635 }
__Pyx_PyErr_ExceptionMatchesInState(PyThreadState * tstate,PyObject * err)34636 static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err) {
34637     PyObject *exc_type = tstate->curexc_type;
34638     if (exc_type == err) return 1;
34639     if (unlikely(!exc_type)) return 0;
34640     if (unlikely(PyTuple_Check(err)))
34641         return __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err);
34642     return __Pyx_PyErr_GivenExceptionMatches(exc_type, err);
34643 }
34644 #endif
34645 
34646 /* GetException */
34647 #if CYTHON_FAST_THREAD_STATE
__Pyx__GetException(PyThreadState * tstate,PyObject ** type,PyObject ** value,PyObject ** tb)34648 static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb)
34649 #else
34650 static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb)
34651 #endif
34652 {
34653     PyObject *local_type, *local_value, *local_tb;
34654 #if CYTHON_FAST_THREAD_STATE
34655     PyObject *tmp_type, *tmp_value, *tmp_tb;
34656     local_type = tstate->curexc_type;
34657     local_value = tstate->curexc_value;
34658     local_tb = tstate->curexc_traceback;
34659     tstate->curexc_type = 0;
34660     tstate->curexc_value = 0;
34661     tstate->curexc_traceback = 0;
34662 #else
34663     PyErr_Fetch(&local_type, &local_value, &local_tb);
34664 #endif
34665     PyErr_NormalizeException(&local_type, &local_value, &local_tb);
34666 #if CYTHON_FAST_THREAD_STATE
34667     if (unlikely(tstate->curexc_type))
34668 #else
34669     if (unlikely(PyErr_Occurred()))
34670 #endif
34671         goto bad;
34672     #if PY_MAJOR_VERSION >= 3
34673     if (local_tb) {
34674         if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0))
34675             goto bad;
34676     }
34677     #endif
34678     Py_XINCREF(local_tb);
34679     Py_XINCREF(local_type);
34680     Py_XINCREF(local_value);
34681     *type = local_type;
34682     *value = local_value;
34683     *tb = local_tb;
34684 #if CYTHON_FAST_THREAD_STATE
34685     #if CYTHON_USE_EXC_INFO_STACK
34686     {
34687         _PyErr_StackItem *exc_info = tstate->exc_info;
34688         tmp_type = exc_info->exc_type;
34689         tmp_value = exc_info->exc_value;
34690         tmp_tb = exc_info->exc_traceback;
34691         exc_info->exc_type = local_type;
34692         exc_info->exc_value = local_value;
34693         exc_info->exc_traceback = local_tb;
34694     }
34695     #else
34696     tmp_type = tstate->exc_type;
34697     tmp_value = tstate->exc_value;
34698     tmp_tb = tstate->exc_traceback;
34699     tstate->exc_type = local_type;
34700     tstate->exc_value = local_value;
34701     tstate->exc_traceback = local_tb;
34702     #endif
34703     Py_XDECREF(tmp_type);
34704     Py_XDECREF(tmp_value);
34705     Py_XDECREF(tmp_tb);
34706 #else
34707     PyErr_SetExcInfo(local_type, local_value, local_tb);
34708 #endif
34709     return 0;
34710 bad:
34711     *type = 0;
34712     *value = 0;
34713     *tb = 0;
34714     Py_XDECREF(local_type);
34715     Py_XDECREF(local_value);
34716     Py_XDECREF(local_tb);
34717     return -1;
34718 }
34719 
34720 /* RaiseArgTupleInvalid */
__Pyx_RaiseArgtupleInvalid(const char * func_name,int exact,Py_ssize_t num_min,Py_ssize_t num_max,Py_ssize_t num_found)34721 static void __Pyx_RaiseArgtupleInvalid(
34722     const char* func_name,
34723     int exact,
34724     Py_ssize_t num_min,
34725     Py_ssize_t num_max,
34726     Py_ssize_t num_found)
34727 {
34728     Py_ssize_t num_expected;
34729     const char *more_or_less;
34730     if (num_found < num_min) {
34731         num_expected = num_min;
34732         more_or_less = "at least";
34733     } else {
34734         num_expected = num_max;
34735         more_or_less = "at most";
34736     }
34737     if (exact) {
34738         more_or_less = "exactly";
34739     }
34740     PyErr_Format(PyExc_TypeError,
34741                  "%.200s() takes %.8s %" CYTHON_FORMAT_SSIZE_T "d positional argument%.1s (%" CYTHON_FORMAT_SSIZE_T "d given)",
34742                  func_name, more_or_less, num_expected,
34743                  (num_expected == 1) ? "" : "s", num_found);
34744 }
34745 
34746 /* RaiseDoubleKeywords */
__Pyx_RaiseDoubleKeywordsError(const char * func_name,PyObject * kw_name)34747 static void __Pyx_RaiseDoubleKeywordsError(
34748     const char* func_name,
34749     PyObject* kw_name)
34750 {
34751     PyErr_Format(PyExc_TypeError,
34752         #if PY_MAJOR_VERSION >= 3
34753         "%s() got multiple values for keyword argument '%U'", func_name, kw_name);
34754         #else
34755         "%s() got multiple values for keyword argument '%s'", func_name,
34756         PyString_AsString(kw_name));
34757         #endif
34758 }
34759 
34760 /* ParseKeywords */
__Pyx_ParseOptionalKeywords(PyObject * kwds,PyObject ** argnames[],PyObject * kwds2,PyObject * values[],Py_ssize_t num_pos_args,const char * function_name)34761 static int __Pyx_ParseOptionalKeywords(
34762     PyObject *kwds,
34763     PyObject **argnames[],
34764     PyObject *kwds2,
34765     PyObject *values[],
34766     Py_ssize_t num_pos_args,
34767     const char* function_name)
34768 {
34769     PyObject *key = 0, *value = 0;
34770     Py_ssize_t pos = 0;
34771     PyObject*** name;
34772     PyObject*** first_kw_arg = argnames + num_pos_args;
34773     while (PyDict_Next(kwds, &pos, &key, &value)) {
34774         name = first_kw_arg;
34775         while (*name && (**name != key)) name++;
34776         if (*name) {
34777             values[name-argnames] = value;
34778             continue;
34779         }
34780         name = first_kw_arg;
34781         #if PY_MAJOR_VERSION < 3
34782         if (likely(PyString_CheckExact(key)) || likely(PyString_Check(key))) {
34783             while (*name) {
34784                 if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key))
34785                         && _PyString_Eq(**name, key)) {
34786                     values[name-argnames] = value;
34787                     break;
34788                 }
34789                 name++;
34790             }
34791             if (*name) continue;
34792             else {
34793                 PyObject*** argname = argnames;
34794                 while (argname != first_kw_arg) {
34795                     if ((**argname == key) || (
34796                             (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key))
34797                              && _PyString_Eq(**argname, key))) {
34798                         goto arg_passed_twice;
34799                     }
34800                     argname++;
34801                 }
34802             }
34803         } else
34804         #endif
34805         if (likely(PyUnicode_Check(key))) {
34806             while (*name) {
34807                 int cmp = (**name == key) ? 0 :
34808                 #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
34809                     (PyUnicode_GET_SIZE(**name) != PyUnicode_GET_SIZE(key)) ? 1 :
34810                 #endif
34811                     PyUnicode_Compare(**name, key);
34812                 if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
34813                 if (cmp == 0) {
34814                     values[name-argnames] = value;
34815                     break;
34816                 }
34817                 name++;
34818             }
34819             if (*name) continue;
34820             else {
34821                 PyObject*** argname = argnames;
34822                 while (argname != first_kw_arg) {
34823                     int cmp = (**argname == key) ? 0 :
34824                     #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
34825                         (PyUnicode_GET_SIZE(**argname) != PyUnicode_GET_SIZE(key)) ? 1 :
34826                     #endif
34827                         PyUnicode_Compare(**argname, key);
34828                     if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
34829                     if (cmp == 0) goto arg_passed_twice;
34830                     argname++;
34831                 }
34832             }
34833         } else
34834             goto invalid_keyword_type;
34835         if (kwds2) {
34836             if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad;
34837         } else {
34838             goto invalid_keyword;
34839         }
34840     }
34841     return 0;
34842 arg_passed_twice:
34843     __Pyx_RaiseDoubleKeywordsError(function_name, key);
34844     goto bad;
34845 invalid_keyword_type:
34846     PyErr_Format(PyExc_TypeError,
34847         "%.200s() keywords must be strings", function_name);
34848     goto bad;
34849 invalid_keyword:
34850     PyErr_Format(PyExc_TypeError,
34851     #if PY_MAJOR_VERSION < 3
34852         "%.200s() got an unexpected keyword argument '%.200s'",
34853         function_name, PyString_AsString(key));
34854     #else
34855         "%s() got an unexpected keyword argument '%U'",
34856         function_name, key);
34857     #endif
34858 bad:
34859     return -1;
34860 }
34861 
34862 /* DictGetItem */
34863 #if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY
__Pyx_PyDict_GetItem(PyObject * d,PyObject * key)34864 static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) {
34865     PyObject *value;
34866     value = PyDict_GetItemWithError(d, key);
34867     if (unlikely(!value)) {
34868         if (!PyErr_Occurred()) {
34869             if (unlikely(PyTuple_Check(key))) {
34870                 PyObject* args = PyTuple_Pack(1, key);
34871                 if (likely(args)) {
34872                     PyErr_SetObject(PyExc_KeyError, args);
34873                     Py_DECREF(args);
34874                 }
34875             } else {
34876                 PyErr_SetObject(PyExc_KeyError, key);
34877             }
34878         }
34879         return NULL;
34880     }
34881     Py_INCREF(value);
34882     return value;
34883 }
34884 #endif
34885 
34886 /* BytesEquals */
__Pyx_PyBytes_Equals(PyObject * s1,PyObject * s2,int equals)34887 static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) {
34888 #if CYTHON_COMPILING_IN_PYPY
34889     return PyObject_RichCompareBool(s1, s2, equals);
34890 #else
34891     if (s1 == s2) {
34892         return (equals == Py_EQ);
34893     } else if (PyBytes_CheckExact(s1) & PyBytes_CheckExact(s2)) {
34894         const char *ps1, *ps2;
34895         Py_ssize_t length = PyBytes_GET_SIZE(s1);
34896         if (length != PyBytes_GET_SIZE(s2))
34897             return (equals == Py_NE);
34898         ps1 = PyBytes_AS_STRING(s1);
34899         ps2 = PyBytes_AS_STRING(s2);
34900         if (ps1[0] != ps2[0]) {
34901             return (equals == Py_NE);
34902         } else if (length == 1) {
34903             return (equals == Py_EQ);
34904         } else {
34905             int result;
34906 #if CYTHON_USE_UNICODE_INTERNALS
34907             Py_hash_t hash1, hash2;
34908             hash1 = ((PyBytesObject*)s1)->ob_shash;
34909             hash2 = ((PyBytesObject*)s2)->ob_shash;
34910             if (hash1 != hash2 && hash1 != -1 && hash2 != -1) {
34911                 return (equals == Py_NE);
34912             }
34913 #endif
34914             result = memcmp(ps1, ps2, (size_t)length);
34915             return (equals == Py_EQ) ? (result == 0) : (result != 0);
34916         }
34917     } else if ((s1 == Py_None) & PyBytes_CheckExact(s2)) {
34918         return (equals == Py_NE);
34919     } else if ((s2 == Py_None) & PyBytes_CheckExact(s1)) {
34920         return (equals == Py_NE);
34921     } else {
34922         int result;
34923         PyObject* py_result = PyObject_RichCompare(s1, s2, equals);
34924         if (!py_result)
34925             return -1;
34926         result = __Pyx_PyObject_IsTrue(py_result);
34927         Py_DECREF(py_result);
34928         return result;
34929     }
34930 #endif
34931 }
34932 
34933 /* UnicodeEquals */
__Pyx_PyUnicode_Equals(PyObject * s1,PyObject * s2,int equals)34934 static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) {
34935 #if CYTHON_COMPILING_IN_PYPY
34936     return PyObject_RichCompareBool(s1, s2, equals);
34937 #else
34938 #if PY_MAJOR_VERSION < 3
34939     PyObject* owned_ref = NULL;
34940 #endif
34941     int s1_is_unicode, s2_is_unicode;
34942     if (s1 == s2) {
34943         goto return_eq;
34944     }
34945     s1_is_unicode = PyUnicode_CheckExact(s1);
34946     s2_is_unicode = PyUnicode_CheckExact(s2);
34947 #if PY_MAJOR_VERSION < 3
34948     if ((s1_is_unicode & (!s2_is_unicode)) && PyString_CheckExact(s2)) {
34949         owned_ref = PyUnicode_FromObject(s2);
34950         if (unlikely(!owned_ref))
34951             return -1;
34952         s2 = owned_ref;
34953         s2_is_unicode = 1;
34954     } else if ((s2_is_unicode & (!s1_is_unicode)) && PyString_CheckExact(s1)) {
34955         owned_ref = PyUnicode_FromObject(s1);
34956         if (unlikely(!owned_ref))
34957             return -1;
34958         s1 = owned_ref;
34959         s1_is_unicode = 1;
34960     } else if (((!s2_is_unicode) & (!s1_is_unicode))) {
34961         return __Pyx_PyBytes_Equals(s1, s2, equals);
34962     }
34963 #endif
34964     if (s1_is_unicode & s2_is_unicode) {
34965         Py_ssize_t length;
34966         int kind;
34967         void *data1, *data2;
34968         if (unlikely(__Pyx_PyUnicode_READY(s1) < 0) || unlikely(__Pyx_PyUnicode_READY(s2) < 0))
34969             return -1;
34970         length = __Pyx_PyUnicode_GET_LENGTH(s1);
34971         if (length != __Pyx_PyUnicode_GET_LENGTH(s2)) {
34972             goto return_ne;
34973         }
34974 #if CYTHON_USE_UNICODE_INTERNALS
34975         {
34976             Py_hash_t hash1, hash2;
34977         #if CYTHON_PEP393_ENABLED
34978             hash1 = ((PyASCIIObject*)s1)->hash;
34979             hash2 = ((PyASCIIObject*)s2)->hash;
34980         #else
34981             hash1 = ((PyUnicodeObject*)s1)->hash;
34982             hash2 = ((PyUnicodeObject*)s2)->hash;
34983         #endif
34984             if (hash1 != hash2 && hash1 != -1 && hash2 != -1) {
34985                 goto return_ne;
34986             }
34987         }
34988 #endif
34989         kind = __Pyx_PyUnicode_KIND(s1);
34990         if (kind != __Pyx_PyUnicode_KIND(s2)) {
34991             goto return_ne;
34992         }
34993         data1 = __Pyx_PyUnicode_DATA(s1);
34994         data2 = __Pyx_PyUnicode_DATA(s2);
34995         if (__Pyx_PyUnicode_READ(kind, data1, 0) != __Pyx_PyUnicode_READ(kind, data2, 0)) {
34996             goto return_ne;
34997         } else if (length == 1) {
34998             goto return_eq;
34999         } else {
35000             int result = memcmp(data1, data2, (size_t)(length * kind));
35001             #if PY_MAJOR_VERSION < 3
35002             Py_XDECREF(owned_ref);
35003             #endif
35004             return (equals == Py_EQ) ? (result == 0) : (result != 0);
35005         }
35006     } else if ((s1 == Py_None) & s2_is_unicode) {
35007         goto return_ne;
35008     } else if ((s2 == Py_None) & s1_is_unicode) {
35009         goto return_ne;
35010     } else {
35011         int result;
35012         PyObject* py_result = PyObject_RichCompare(s1, s2, equals);
35013         #if PY_MAJOR_VERSION < 3
35014         Py_XDECREF(owned_ref);
35015         #endif
35016         if (!py_result)
35017             return -1;
35018         result = __Pyx_PyObject_IsTrue(py_result);
35019         Py_DECREF(py_result);
35020         return result;
35021     }
35022 return_eq:
35023     #if PY_MAJOR_VERSION < 3
35024     Py_XDECREF(owned_ref);
35025     #endif
35026     return (equals == Py_EQ);
35027 return_ne:
35028     #if PY_MAJOR_VERSION < 3
35029     Py_XDECREF(owned_ref);
35030     #endif
35031     return (equals == Py_NE);
35032 #endif
35033 }
35034 
35035 /* UnpackUnboundCMethod */
__Pyx_TryUnpackUnboundCMethod(__Pyx_CachedCFunction * target)35036 static int __Pyx_TryUnpackUnboundCMethod(__Pyx_CachedCFunction* target) {
35037     PyObject *method;
35038     method = __Pyx_PyObject_GetAttrStr(target->type, *target->method_name);
35039     if (unlikely(!method))
35040         return -1;
35041     target->method = method;
35042 #if CYTHON_COMPILING_IN_CPYTHON
35043     #if PY_MAJOR_VERSION >= 3
35044     if (likely(__Pyx_TypeCheck(method, &PyMethodDescr_Type)))
35045     #endif
35046     {
35047         PyMethodDescrObject *descr = (PyMethodDescrObject*) method;
35048         target->func = descr->d_method->ml_meth;
35049         target->flag = descr->d_method->ml_flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_STACKLESS);
35050     }
35051 #endif
35052     return 0;
35053 }
35054 
35055 /* CallUnboundCMethod1 */
35056 #if CYTHON_COMPILING_IN_CPYTHON
__Pyx_CallUnboundCMethod1(__Pyx_CachedCFunction * cfunc,PyObject * self,PyObject * arg)35057 static CYTHON_INLINE PyObject* __Pyx_CallUnboundCMethod1(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg) {
35058     if (likely(cfunc->func)) {
35059         int flag = cfunc->flag;
35060         if (flag == METH_O) {
35061             return (*(cfunc->func))(self, arg);
35062         } else if (PY_VERSION_HEX >= 0x030600B1 && flag == METH_FASTCALL) {
35063             if (PY_VERSION_HEX >= 0x030700A0) {
35064                 return (*(__Pyx_PyCFunctionFast)(void*)(PyCFunction)cfunc->func)(self, &arg, 1);
35065             } else {
35066                 return (*(__Pyx_PyCFunctionFastWithKeywords)(void*)(PyCFunction)cfunc->func)(self, &arg, 1, NULL);
35067             }
35068         } else if (PY_VERSION_HEX >= 0x030700A0 && flag == (METH_FASTCALL | METH_KEYWORDS)) {
35069             return (*(__Pyx_PyCFunctionFastWithKeywords)(void*)(PyCFunction)cfunc->func)(self, &arg, 1, NULL);
35070         }
35071     }
35072     return __Pyx__CallUnboundCMethod1(cfunc, self, arg);
35073 }
35074 #endif
__Pyx__CallUnboundCMethod1(__Pyx_CachedCFunction * cfunc,PyObject * self,PyObject * arg)35075 static PyObject* __Pyx__CallUnboundCMethod1(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg){
35076     PyObject *args, *result = NULL;
35077     if (unlikely(!cfunc->func && !cfunc->method) && unlikely(__Pyx_TryUnpackUnboundCMethod(cfunc) < 0)) return NULL;
35078 #if CYTHON_COMPILING_IN_CPYTHON
35079     if (cfunc->func && (cfunc->flag & METH_VARARGS)) {
35080         args = PyTuple_New(1);
35081         if (unlikely(!args)) goto bad;
35082         Py_INCREF(arg);
35083         PyTuple_SET_ITEM(args, 0, arg);
35084         if (cfunc->flag & METH_KEYWORDS)
35085             result = (*(PyCFunctionWithKeywords)(void*)(PyCFunction)cfunc->func)(self, args, NULL);
35086         else
35087             result = (*cfunc->func)(self, args);
35088     } else {
35089         args = PyTuple_New(2);
35090         if (unlikely(!args)) goto bad;
35091         Py_INCREF(self);
35092         PyTuple_SET_ITEM(args, 0, self);
35093         Py_INCREF(arg);
35094         PyTuple_SET_ITEM(args, 1, arg);
35095         result = __Pyx_PyObject_Call(cfunc->method, args, NULL);
35096     }
35097 #else
35098     args = PyTuple_Pack(2, self, arg);
35099     if (unlikely(!args)) goto bad;
35100     result = __Pyx_PyObject_Call(cfunc->method, args, NULL);
35101 #endif
35102 bad:
35103     Py_XDECREF(args);
35104     return result;
35105 }
35106 
35107 /* CallUnboundCMethod2 */
35108 #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030600B1
__Pyx_CallUnboundCMethod2(__Pyx_CachedCFunction * cfunc,PyObject * self,PyObject * arg1,PyObject * arg2)35109 static CYTHON_INLINE PyObject *__Pyx_CallUnboundCMethod2(__Pyx_CachedCFunction *cfunc, PyObject *self, PyObject *arg1, PyObject *arg2) {
35110     if (likely(cfunc->func)) {
35111         PyObject *args[2] = {arg1, arg2};
35112         if (cfunc->flag == METH_FASTCALL) {
35113             #if PY_VERSION_HEX >= 0x030700A0
35114             return (*(__Pyx_PyCFunctionFast)(void*)(PyCFunction)cfunc->func)(self, args, 2);
35115             #else
35116             return (*(__Pyx_PyCFunctionFastWithKeywords)(void*)(PyCFunction)cfunc->func)(self, args, 2, NULL);
35117             #endif
35118         }
35119         #if PY_VERSION_HEX >= 0x030700A0
35120         if (cfunc->flag == (METH_FASTCALL | METH_KEYWORDS))
35121             return (*(__Pyx_PyCFunctionFastWithKeywords)(void*)(PyCFunction)cfunc->func)(self, args, 2, NULL);
35122         #endif
35123     }
35124     return __Pyx__CallUnboundCMethod2(cfunc, self, arg1, arg2);
35125 }
35126 #endif
__Pyx__CallUnboundCMethod2(__Pyx_CachedCFunction * cfunc,PyObject * self,PyObject * arg1,PyObject * arg2)35127 static PyObject* __Pyx__CallUnboundCMethod2(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg1, PyObject* arg2){
35128     PyObject *args, *result = NULL;
35129     if (unlikely(!cfunc->func && !cfunc->method) && unlikely(__Pyx_TryUnpackUnboundCMethod(cfunc) < 0)) return NULL;
35130 #if CYTHON_COMPILING_IN_CPYTHON
35131     if (cfunc->func && (cfunc->flag & METH_VARARGS)) {
35132         args = PyTuple_New(2);
35133         if (unlikely(!args)) goto bad;
35134         Py_INCREF(arg1);
35135         PyTuple_SET_ITEM(args, 0, arg1);
35136         Py_INCREF(arg2);
35137         PyTuple_SET_ITEM(args, 1, arg2);
35138         if (cfunc->flag & METH_KEYWORDS)
35139             result = (*(PyCFunctionWithKeywords)(void*)(PyCFunction)cfunc->func)(self, args, NULL);
35140         else
35141             result = (*cfunc->func)(self, args);
35142     } else {
35143         args = PyTuple_New(3);
35144         if (unlikely(!args)) goto bad;
35145         Py_INCREF(self);
35146         PyTuple_SET_ITEM(args, 0, self);
35147         Py_INCREF(arg1);
35148         PyTuple_SET_ITEM(args, 1, arg1);
35149         Py_INCREF(arg2);
35150         PyTuple_SET_ITEM(args, 2, arg2);
35151         result = __Pyx_PyObject_Call(cfunc->method, args, NULL);
35152     }
35153 #else
35154     args = PyTuple_Pack(3, self, arg1, arg2);
35155     if (unlikely(!args)) goto bad;
35156     result = __Pyx_PyObject_Call(cfunc->method, args, NULL);
35157 #endif
35158 bad:
35159     Py_XDECREF(args);
35160     return result;
35161 }
35162 
35163 /* dict_getitem_default */
__Pyx_PyDict_GetItemDefault(PyObject * d,PyObject * key,PyObject * default_value)35164 static PyObject* __Pyx_PyDict_GetItemDefault(PyObject* d, PyObject* key, PyObject* default_value) {
35165     PyObject* value;
35166 #if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY
35167     value = PyDict_GetItemWithError(d, key);
35168     if (unlikely(!value)) {
35169         if (unlikely(PyErr_Occurred()))
35170             return NULL;
35171         value = default_value;
35172     }
35173     Py_INCREF(value);
35174     if ((1));
35175 #else
35176     if (PyString_CheckExact(key) || PyUnicode_CheckExact(key) || PyInt_CheckExact(key)) {
35177         value = PyDict_GetItem(d, key);
35178         if (unlikely(!value)) {
35179             value = default_value;
35180         }
35181         Py_INCREF(value);
35182     }
35183 #endif
35184     else {
35185         if (default_value == Py_None)
35186             value = __Pyx_CallUnboundCMethod1(&__pyx_umethod_PyDict_Type_get, d, key);
35187         else
35188             value = __Pyx_CallUnboundCMethod2(&__pyx_umethod_PyDict_Type_get, d, key, default_value);
35189     }
35190     return value;
35191 }
35192 
35193 /* PyObjectSetAttrStr */
35194 #if CYTHON_USE_TYPE_SLOTS
__Pyx_PyObject_SetAttrStr(PyObject * obj,PyObject * attr_name,PyObject * value)35195 static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value) {
35196     PyTypeObject* tp = Py_TYPE(obj);
35197     if (likely(tp->tp_setattro))
35198         return tp->tp_setattro(obj, attr_name, value);
35199 #if PY_MAJOR_VERSION < 3
35200     if (likely(tp->tp_setattr))
35201         return tp->tp_setattr(obj, PyString_AS_STRING(attr_name), value);
35202 #endif
35203     return PyObject_SetAttr(obj, attr_name, value);
35204 }
35205 #endif
35206 
35207 /* PyObjectCallNoArg */
35208 #if CYTHON_COMPILING_IN_CPYTHON
__Pyx_PyObject_CallNoArg(PyObject * func)35209 static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) {
35210 #if CYTHON_FAST_PYCALL
35211     if (PyFunction_Check(func)) {
35212         return __Pyx_PyFunction_FastCall(func, NULL, 0);
35213     }
35214 #endif
35215 #ifdef __Pyx_CyFunction_USED
35216     if (likely(PyCFunction_Check(func) || __Pyx_CyFunction_Check(func)))
35217 #else
35218     if (likely(PyCFunction_Check(func)))
35219 #endif
35220     {
35221         if (likely(PyCFunction_GET_FLAGS(func) & METH_NOARGS)) {
35222             return __Pyx_PyObject_CallMethO(func, NULL);
35223         }
35224     }
35225     return __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL);
35226 }
35227 #endif
35228 
35229 /* WriteUnraisableException */
__Pyx_WriteUnraisable(const char * name,CYTHON_UNUSED int clineno,CYTHON_UNUSED int lineno,CYTHON_UNUSED const char * filename,int full_traceback,CYTHON_UNUSED int nogil)35230 static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno,
35231                                   CYTHON_UNUSED int lineno, CYTHON_UNUSED const char *filename,
35232                                   int full_traceback, CYTHON_UNUSED int nogil) {
35233     PyObject *old_exc, *old_val, *old_tb;
35234     PyObject *ctx;
35235     __Pyx_PyThreadState_declare
35236 #ifdef WITH_THREAD
35237     PyGILState_STATE state;
35238     if (nogil)
35239         state = PyGILState_Ensure();
35240 #ifdef _MSC_VER
35241     else state = (PyGILState_STATE)-1;
35242 #endif
35243 #endif
35244     __Pyx_PyThreadState_assign
35245     __Pyx_ErrFetch(&old_exc, &old_val, &old_tb);
35246     if (full_traceback) {
35247         Py_XINCREF(old_exc);
35248         Py_XINCREF(old_val);
35249         Py_XINCREF(old_tb);
35250         __Pyx_ErrRestore(old_exc, old_val, old_tb);
35251         PyErr_PrintEx(1);
35252     }
35253     #if PY_MAJOR_VERSION < 3
35254     ctx = PyString_FromString(name);
35255     #else
35256     ctx = PyUnicode_FromString(name);
35257     #endif
35258     __Pyx_ErrRestore(old_exc, old_val, old_tb);
35259     if (!ctx) {
35260         PyErr_WriteUnraisable(Py_None);
35261     } else {
35262         PyErr_WriteUnraisable(ctx);
35263         Py_DECREF(ctx);
35264     }
35265 #ifdef WITH_THREAD
35266     if (nogil)
35267         PyGILState_Release(state);
35268 #endif
35269 }
35270 
35271 /* GetAttr */
__Pyx_GetAttr(PyObject * o,PyObject * n)35272 static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *o, PyObject *n) {
35273 #if CYTHON_USE_TYPE_SLOTS
35274 #if PY_MAJOR_VERSION >= 3
35275     if (likely(PyUnicode_Check(n)))
35276 #else
35277     if (likely(PyString_Check(n)))
35278 #endif
35279         return __Pyx_PyObject_GetAttrStr(o, n);
35280 #endif
35281     return PyObject_GetAttr(o, n);
35282 }
35283 
35284 /* GetAttr3 */
__Pyx_GetAttr3Default(PyObject * d)35285 static PyObject *__Pyx_GetAttr3Default(PyObject *d) {
35286     __Pyx_PyThreadState_declare
35287     __Pyx_PyThreadState_assign
35288     if (unlikely(!__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError)))
35289         return NULL;
35290     __Pyx_PyErr_Clear();
35291     Py_INCREF(d);
35292     return d;
35293 }
__Pyx_GetAttr3(PyObject * o,PyObject * n,PyObject * d)35294 static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *o, PyObject *n, PyObject *d) {
35295     PyObject *r = __Pyx_GetAttr(o, n);
35296     return (likely(r)) ? r : __Pyx_GetAttr3Default(d);
35297 }
35298 
35299 /* RaiseTooManyValuesToUnpack */
__Pyx_RaiseTooManyValuesError(Py_ssize_t expected)35300 static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) {
35301     PyErr_Format(PyExc_ValueError,
35302                  "too many values to unpack (expected %" CYTHON_FORMAT_SSIZE_T "d)", expected);
35303 }
35304 
35305 /* RaiseNeedMoreValuesToUnpack */
__Pyx_RaiseNeedMoreValuesError(Py_ssize_t index)35306 static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) {
35307     PyErr_Format(PyExc_ValueError,
35308                  "need more than %" CYTHON_FORMAT_SSIZE_T "d value%.1s to unpack",
35309                  index, (index == 1) ? "" : "s");
35310 }
35311 
35312 /* IterFinish */
__Pyx_IterFinish(void)35313 static CYTHON_INLINE int __Pyx_IterFinish(void) {
35314 #if CYTHON_FAST_THREAD_STATE
35315     PyThreadState *tstate = __Pyx_PyThreadState_Current;
35316     PyObject* exc_type = tstate->curexc_type;
35317     if (unlikely(exc_type)) {
35318         if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) {
35319             PyObject *exc_value, *exc_tb;
35320             exc_value = tstate->curexc_value;
35321             exc_tb = tstate->curexc_traceback;
35322             tstate->curexc_type = 0;
35323             tstate->curexc_value = 0;
35324             tstate->curexc_traceback = 0;
35325             Py_DECREF(exc_type);
35326             Py_XDECREF(exc_value);
35327             Py_XDECREF(exc_tb);
35328             return 0;
35329         } else {
35330             return -1;
35331         }
35332     }
35333     return 0;
35334 #else
35335     if (unlikely(PyErr_Occurred())) {
35336         if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) {
35337             PyErr_Clear();
35338             return 0;
35339         } else {
35340             return -1;
35341         }
35342     }
35343     return 0;
35344 #endif
35345 }
35346 
35347 /* UnpackItemEndCheck */
__Pyx_IternextUnpackEndCheck(PyObject * retval,Py_ssize_t expected)35348 static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) {
35349     if (unlikely(retval)) {
35350         Py_DECREF(retval);
35351         __Pyx_RaiseTooManyValuesError(expected);
35352         return -1;
35353     } else {
35354         return __Pyx_IterFinish();
35355     }
35356     return 0;
35357 }
35358 
35359 /* GetItemInt */
__Pyx_GetItemInt_Generic(PyObject * o,PyObject * j)35360 static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) {
35361     PyObject *r;
35362     if (!j) return NULL;
35363     r = PyObject_GetItem(o, j);
35364     Py_DECREF(j);
35365     return r;
35366 }
__Pyx_GetItemInt_List_Fast(PyObject * o,Py_ssize_t i,CYTHON_NCP_UNUSED int wraparound,CYTHON_NCP_UNUSED int boundscheck)35367 static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i,
35368                                                               CYTHON_NCP_UNUSED int wraparound,
35369                                                               CYTHON_NCP_UNUSED int boundscheck) {
35370 #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
35371     Py_ssize_t wrapped_i = i;
35372     if (wraparound & unlikely(i < 0)) {
35373         wrapped_i += PyList_GET_SIZE(o);
35374     }
35375     if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyList_GET_SIZE(o)))) {
35376         PyObject *r = PyList_GET_ITEM(o, wrapped_i);
35377         Py_INCREF(r);
35378         return r;
35379     }
35380     return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
35381 #else
35382     return PySequence_GetItem(o, i);
35383 #endif
35384 }
__Pyx_GetItemInt_Tuple_Fast(PyObject * o,Py_ssize_t i,CYTHON_NCP_UNUSED int wraparound,CYTHON_NCP_UNUSED int boundscheck)35385 static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i,
35386                                                               CYTHON_NCP_UNUSED int wraparound,
35387                                                               CYTHON_NCP_UNUSED int boundscheck) {
35388 #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
35389     Py_ssize_t wrapped_i = i;
35390     if (wraparound & unlikely(i < 0)) {
35391         wrapped_i += PyTuple_GET_SIZE(o);
35392     }
35393     if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyTuple_GET_SIZE(o)))) {
35394         PyObject *r = PyTuple_GET_ITEM(o, wrapped_i);
35395         Py_INCREF(r);
35396         return r;
35397     }
35398     return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
35399 #else
35400     return PySequence_GetItem(o, i);
35401 #endif
35402 }
__Pyx_GetItemInt_Fast(PyObject * o,Py_ssize_t i,int is_list,CYTHON_NCP_UNUSED int wraparound,CYTHON_NCP_UNUSED int boundscheck)35403 static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list,
35404                                                      CYTHON_NCP_UNUSED int wraparound,
35405                                                      CYTHON_NCP_UNUSED int boundscheck) {
35406 #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS
35407     if (is_list || PyList_CheckExact(o)) {
35408         Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o);
35409         if ((!boundscheck) || (likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o))))) {
35410             PyObject *r = PyList_GET_ITEM(o, n);
35411             Py_INCREF(r);
35412             return r;
35413         }
35414     }
35415     else if (PyTuple_CheckExact(o)) {
35416         Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o);
35417         if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyTuple_GET_SIZE(o)))) {
35418             PyObject *r = PyTuple_GET_ITEM(o, n);
35419             Py_INCREF(r);
35420             return r;
35421         }
35422     } else {
35423         PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence;
35424         if (likely(m && m->sq_item)) {
35425             if (wraparound && unlikely(i < 0) && likely(m->sq_length)) {
35426                 Py_ssize_t l = m->sq_length(o);
35427                 if (likely(l >= 0)) {
35428                     i += l;
35429                 } else {
35430                     if (!PyErr_ExceptionMatches(PyExc_OverflowError))
35431                         return NULL;
35432                     PyErr_Clear();
35433                 }
35434             }
35435             return m->sq_item(o, i);
35436         }
35437     }
35438 #else
35439     if (is_list || PySequence_Check(o)) {
35440         return PySequence_GetItem(o, i);
35441     }
35442 #endif
35443     return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
35444 }
35445 
35446 /* ObjectGetItem */
35447 #if CYTHON_USE_TYPE_SLOTS
__Pyx_PyObject_GetIndex(PyObject * obj,PyObject * index)35448 static PyObject *__Pyx_PyObject_GetIndex(PyObject *obj, PyObject* index) {
35449     PyObject *runerr;
35450     Py_ssize_t key_value;
35451     PySequenceMethods *m = Py_TYPE(obj)->tp_as_sequence;
35452     if (unlikely(!(m && m->sq_item))) {
35453         PyErr_Format(PyExc_TypeError, "'%.200s' object is not subscriptable", Py_TYPE(obj)->tp_name);
35454         return NULL;
35455     }
35456     key_value = __Pyx_PyIndex_AsSsize_t(index);
35457     if (likely(key_value != -1 || !(runerr = PyErr_Occurred()))) {
35458         return __Pyx_GetItemInt_Fast(obj, key_value, 0, 1, 1);
35459     }
35460     if (PyErr_GivenExceptionMatches(runerr, PyExc_OverflowError)) {
35461         PyErr_Clear();
35462         PyErr_Format(PyExc_IndexError, "cannot fit '%.200s' into an index-sized integer", Py_TYPE(index)->tp_name);
35463     }
35464     return NULL;
35465 }
__Pyx_PyObject_GetItem(PyObject * obj,PyObject * key)35466 static PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject* key) {
35467     PyMappingMethods *m = Py_TYPE(obj)->tp_as_mapping;
35468     if (likely(m && m->mp_subscript)) {
35469         return m->mp_subscript(obj, key);
35470     }
35471     return __Pyx_PyObject_GetIndex(obj, key);
35472 }
35473 #endif
35474 
35475 /* ExtTypeTest */
__Pyx_TypeTest(PyObject * obj,PyTypeObject * type)35476 static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) {
35477     if (unlikely(!type)) {
35478         PyErr_SetString(PyExc_SystemError, "Missing type object");
35479         return 0;
35480     }
35481     if (likely(__Pyx_TypeCheck(obj, type)))
35482         return 1;
35483     PyErr_Format(PyExc_TypeError, "Cannot convert %.200s to %.200s",
35484                  Py_TYPE(obj)->tp_name, type->tp_name);
35485     return 0;
35486 }
35487 
35488 /* SwapException */
35489 #if CYTHON_FAST_THREAD_STATE
__Pyx__ExceptionSwap(PyThreadState * tstate,PyObject ** type,PyObject ** value,PyObject ** tb)35490 static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
35491     PyObject *tmp_type, *tmp_value, *tmp_tb;
35492     #if CYTHON_USE_EXC_INFO_STACK
35493     _PyErr_StackItem *exc_info = tstate->exc_info;
35494     tmp_type = exc_info->exc_type;
35495     tmp_value = exc_info->exc_value;
35496     tmp_tb = exc_info->exc_traceback;
35497     exc_info->exc_type = *type;
35498     exc_info->exc_value = *value;
35499     exc_info->exc_traceback = *tb;
35500     #else
35501     tmp_type = tstate->exc_type;
35502     tmp_value = tstate->exc_value;
35503     tmp_tb = tstate->exc_traceback;
35504     tstate->exc_type = *type;
35505     tstate->exc_value = *value;
35506     tstate->exc_traceback = *tb;
35507     #endif
35508     *type = tmp_type;
35509     *value = tmp_value;
35510     *tb = tmp_tb;
35511 }
35512 #else
__Pyx_ExceptionSwap(PyObject ** type,PyObject ** value,PyObject ** tb)35513 static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb) {
35514     PyObject *tmp_type, *tmp_value, *tmp_tb;
35515     PyErr_GetExcInfo(&tmp_type, &tmp_value, &tmp_tb);
35516     PyErr_SetExcInfo(*type, *value, *tb);
35517     *type = tmp_type;
35518     *value = tmp_value;
35519     *tb = tmp_tb;
35520 }
35521 #endif
35522 
35523 /* ArgTypeTest */
__Pyx__ArgTypeTest(PyObject * obj,PyTypeObject * type,const char * name,int exact)35524 static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact)
35525 {
35526     if (unlikely(!type)) {
35527         PyErr_SetString(PyExc_SystemError, "Missing type object");
35528         return 0;
35529     }
35530     else if (exact) {
35531         #if PY_MAJOR_VERSION == 2
35532         if ((type == &PyBaseString_Type) && likely(__Pyx_PyBaseString_CheckExact(obj))) return 1;
35533         #endif
35534     }
35535     else {
35536         if (likely(__Pyx_TypeCheck(obj, type))) return 1;
35537     }
35538     PyErr_Format(PyExc_TypeError,
35539         "Argument '%.200s' has incorrect type (expected %.200s, got %.200s)",
35540         name, type->tp_name, Py_TYPE(obj)->tp_name);
35541     return 0;
35542 }
35543 
35544 /* SliceObject */
__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)35545 static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice(PyObject* obj,
35546         Py_ssize_t cstart, Py_ssize_t cstop,
35547         PyObject** _py_start, PyObject** _py_stop, PyObject** _py_slice,
35548         int has_cstart, int has_cstop, CYTHON_UNUSED int wraparound) {
35549 #if CYTHON_USE_TYPE_SLOTS
35550     PyMappingMethods* mp;
35551 #if PY_MAJOR_VERSION < 3
35552     PySequenceMethods* ms = Py_TYPE(obj)->tp_as_sequence;
35553     if (likely(ms && ms->sq_slice)) {
35554         if (!has_cstart) {
35555             if (_py_start && (*_py_start != Py_None)) {
35556                 cstart = __Pyx_PyIndex_AsSsize_t(*_py_start);
35557                 if ((cstart == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad;
35558             } else
35559                 cstart = 0;
35560         }
35561         if (!has_cstop) {
35562             if (_py_stop && (*_py_stop != Py_None)) {
35563                 cstop = __Pyx_PyIndex_AsSsize_t(*_py_stop);
35564                 if ((cstop == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad;
35565             } else
35566                 cstop = PY_SSIZE_T_MAX;
35567         }
35568         if (wraparound && unlikely((cstart < 0) | (cstop < 0)) && likely(ms->sq_length)) {
35569             Py_ssize_t l = ms->sq_length(obj);
35570             if (likely(l >= 0)) {
35571                 if (cstop < 0) {
35572                     cstop += l;
35573                     if (cstop < 0) cstop = 0;
35574                 }
35575                 if (cstart < 0) {
35576                     cstart += l;
35577                     if (cstart < 0) cstart = 0;
35578                 }
35579             } else {
35580                 if (!PyErr_ExceptionMatches(PyExc_OverflowError))
35581                     goto bad;
35582                 PyErr_Clear();
35583             }
35584         }
35585         return ms->sq_slice(obj, cstart, cstop);
35586     }
35587 #endif
35588     mp = Py_TYPE(obj)->tp_as_mapping;
35589     if (likely(mp && mp->mp_subscript))
35590 #endif
35591     {
35592         PyObject* result;
35593         PyObject *py_slice, *py_start, *py_stop;
35594         if (_py_slice) {
35595             py_slice = *_py_slice;
35596         } else {
35597             PyObject* owned_start = NULL;
35598             PyObject* owned_stop = NULL;
35599             if (_py_start) {
35600                 py_start = *_py_start;
35601             } else {
35602                 if (has_cstart) {
35603                     owned_start = py_start = PyInt_FromSsize_t(cstart);
35604                     if (unlikely(!py_start)) goto bad;
35605                 } else
35606                     py_start = Py_None;
35607             }
35608             if (_py_stop) {
35609                 py_stop = *_py_stop;
35610             } else {
35611                 if (has_cstop) {
35612                     owned_stop = py_stop = PyInt_FromSsize_t(cstop);
35613                     if (unlikely(!py_stop)) {
35614                         Py_XDECREF(owned_start);
35615                         goto bad;
35616                     }
35617                 } else
35618                     py_stop = Py_None;
35619             }
35620             py_slice = PySlice_New(py_start, py_stop, Py_None);
35621             Py_XDECREF(owned_start);
35622             Py_XDECREF(owned_stop);
35623             if (unlikely(!py_slice)) goto bad;
35624         }
35625 #if CYTHON_USE_TYPE_SLOTS
35626         result = mp->mp_subscript(obj, py_slice);
35627 #else
35628         result = PyObject_GetItem(obj, py_slice);
35629 #endif
35630         if (!_py_slice) {
35631             Py_DECREF(py_slice);
35632         }
35633         return result;
35634     }
35635     PyErr_Format(PyExc_TypeError,
35636         "'%.200s' object is unsliceable", Py_TYPE(obj)->tp_name);
35637 bad:
35638     return NULL;
35639 }
35640 
35641 /* PyIntCompare */
__Pyx_PyInt_EqObjC(PyObject * op1,PyObject * op2,CYTHON_UNUSED long intval,CYTHON_UNUSED long inplace)35642 static CYTHON_INLINE PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED long inplace) {
35643     if (op1 == op2) {
35644         Py_RETURN_TRUE;
35645     }
35646     #if PY_MAJOR_VERSION < 3
35647     if (likely(PyInt_CheckExact(op1))) {
35648         const long b = intval;
35649         long a = PyInt_AS_LONG(op1);
35650         if (a == b) Py_RETURN_TRUE; else Py_RETURN_FALSE;
35651     }
35652     #endif
35653     #if CYTHON_USE_PYLONG_INTERNALS
35654     if (likely(PyLong_CheckExact(op1))) {
35655         int unequal;
35656         unsigned long uintval;
35657         Py_ssize_t size = Py_SIZE(op1);
35658         const digit* digits = ((PyLongObject*)op1)->ob_digit;
35659         if (intval == 0) {
35660             if (size == 0) Py_RETURN_TRUE; else Py_RETURN_FALSE;
35661         } else if (intval < 0) {
35662             if (size >= 0)
35663                 Py_RETURN_FALSE;
35664             intval = -intval;
35665             size = -size;
35666         } else {
35667             if (size <= 0)
35668                 Py_RETURN_FALSE;
35669         }
35670         uintval = (unsigned long) intval;
35671 #if PyLong_SHIFT * 4 < SIZEOF_LONG*8
35672         if (uintval >> (PyLong_SHIFT * 4)) {
35673             unequal = (size != 5) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
35674                  | (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));
35675         } else
35676 #endif
35677 #if PyLong_SHIFT * 3 < SIZEOF_LONG*8
35678         if (uintval >> (PyLong_SHIFT * 3)) {
35679             unequal = (size != 4) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
35680                  | (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));
35681         } else
35682 #endif
35683 #if PyLong_SHIFT * 2 < SIZEOF_LONG*8
35684         if (uintval >> (PyLong_SHIFT * 2)) {
35685             unequal = (size != 3) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
35686                  | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
35687         } else
35688 #endif
35689 #if PyLong_SHIFT * 1 < SIZEOF_LONG*8
35690         if (uintval >> (PyLong_SHIFT * 1)) {
35691             unequal = (size != 2) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
35692                  | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
35693         } else
35694 #endif
35695             unequal = (size != 1) || (((unsigned long) digits[0]) != (uintval & (unsigned long) PyLong_MASK));
35696         if (unequal == 0) Py_RETURN_TRUE; else Py_RETURN_FALSE;
35697     }
35698     #endif
35699     if (PyFloat_CheckExact(op1)) {
35700         const long b = intval;
35701         double a = PyFloat_AS_DOUBLE(op1);
35702         if ((double)a == (double)b) Py_RETURN_TRUE; else Py_RETURN_FALSE;
35703     }
35704     return (
35705         PyObject_RichCompare(op1, op2, Py_EQ));
35706 }
35707 
35708 /* HasAttr */
__Pyx_HasAttr(PyObject * o,PyObject * n)35709 static CYTHON_INLINE int __Pyx_HasAttr(PyObject *o, PyObject *n) {
35710     PyObject *r;
35711     if (unlikely(!__Pyx_PyBaseString_Check(n))) {
35712         PyErr_SetString(PyExc_TypeError,
35713                         "hasattr(): attribute name must be string");
35714         return -1;
35715     }
35716     r = __Pyx_GetAttr(o, n);
35717     if (unlikely(!r)) {
35718         PyErr_Clear();
35719         return 0;
35720     } else {
35721         Py_DECREF(r);
35722         return 1;
35723     }
35724 }
35725 
35726 /* PyIntBinop */
35727 #if !CYTHON_COMPILING_IN_PYPY
__Pyx_PyInt_AddObjC(PyObject * op1,PyObject * op2,CYTHON_UNUSED long intval,int inplace,int zerodivision_check)35728 static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, int inplace, int zerodivision_check) {
35729     (void)inplace;
35730     (void)zerodivision_check;
35731     #if PY_MAJOR_VERSION < 3
35732     if (likely(PyInt_CheckExact(op1))) {
35733         const long b = intval;
35734         long x;
35735         long a = PyInt_AS_LONG(op1);
35736             x = (long)((unsigned long)a + b);
35737             if (likely((x^a) >= 0 || (x^b) >= 0))
35738                 return PyInt_FromLong(x);
35739             return PyLong_Type.tp_as_number->nb_add(op1, op2);
35740     }
35741     #endif
35742     #if CYTHON_USE_PYLONG_INTERNALS
35743     if (likely(PyLong_CheckExact(op1))) {
35744         const long b = intval;
35745         long a, x;
35746 #ifdef HAVE_LONG_LONG
35747         const PY_LONG_LONG llb = intval;
35748         PY_LONG_LONG lla, llx;
35749 #endif
35750         const digit* digits = ((PyLongObject*)op1)->ob_digit;
35751         const Py_ssize_t size = Py_SIZE(op1);
35752         if (likely(__Pyx_sst_abs(size) <= 1)) {
35753             a = likely(size) ? digits[0] : 0;
35754             if (size == -1) a = -a;
35755         } else {
35756             switch (size) {
35757                 case -2:
35758                     if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
35759                         a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
35760                         break;
35761 #ifdef HAVE_LONG_LONG
35762                     } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) {
35763                         lla = -(PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
35764                         goto long_long;
35765 #endif
35766                     }
35767                     CYTHON_FALLTHROUGH;
35768                 case 2:
35769                     if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
35770                         a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
35771                         break;
35772 #ifdef HAVE_LONG_LONG
35773                     } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) {
35774                         lla = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
35775                         goto long_long;
35776 #endif
35777                     }
35778                     CYTHON_FALLTHROUGH;
35779                 case -3:
35780                     if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
35781                         a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
35782                         break;
35783 #ifdef HAVE_LONG_LONG
35784                     } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) {
35785                         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]));
35786                         goto long_long;
35787 #endif
35788                     }
35789                     CYTHON_FALLTHROUGH;
35790                 case 3:
35791                     if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
35792                         a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
35793                         break;
35794 #ifdef HAVE_LONG_LONG
35795                     } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) {
35796                         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]));
35797                         goto long_long;
35798 #endif
35799                     }
35800                     CYTHON_FALLTHROUGH;
35801                 case -4:
35802                     if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
35803                         a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
35804                         break;
35805 #ifdef HAVE_LONG_LONG
35806                     } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) {
35807                         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]));
35808                         goto long_long;
35809 #endif
35810                     }
35811                     CYTHON_FALLTHROUGH;
35812                 case 4:
35813                     if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
35814                         a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
35815                         break;
35816 #ifdef HAVE_LONG_LONG
35817                     } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) {
35818                         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]));
35819                         goto long_long;
35820 #endif
35821                     }
35822                     CYTHON_FALLTHROUGH;
35823                 default: return PyLong_Type.tp_as_number->nb_add(op1, op2);
35824             }
35825         }
35826                 x = a + b;
35827             return PyLong_FromLong(x);
35828 #ifdef HAVE_LONG_LONG
35829         long_long:
35830                 llx = lla + llb;
35831             return PyLong_FromLongLong(llx);
35832 #endif
35833 
35834 
35835     }
35836     #endif
35837     if (PyFloat_CheckExact(op1)) {
35838         const long b = intval;
35839         double a = PyFloat_AS_DOUBLE(op1);
35840             double result;
35841             PyFPE_START_PROTECT("add", return NULL)
35842             result = ((double)a) + (double)b;
35843             PyFPE_END_PROTECT(result)
35844             return PyFloat_FromDouble(result);
35845     }
35846     return (inplace ? PyNumber_InPlaceAdd : PyNumber_Add)(op1, op2);
35847 }
35848 #endif
35849 
35850 /* Import */
__Pyx_Import(PyObject * name,PyObject * from_list,int level)35851 static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) {
35852     PyObject *empty_list = 0;
35853     PyObject *module = 0;
35854     PyObject *global_dict = 0;
35855     PyObject *empty_dict = 0;
35856     PyObject *list;
35857     #if PY_MAJOR_VERSION < 3
35858     PyObject *py_import;
35859     py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s_import);
35860     if (!py_import)
35861         goto bad;
35862     #endif
35863     if (from_list)
35864         list = from_list;
35865     else {
35866         empty_list = PyList_New(0);
35867         if (!empty_list)
35868             goto bad;
35869         list = empty_list;
35870     }
35871     global_dict = PyModule_GetDict(__pyx_m);
35872     if (!global_dict)
35873         goto bad;
35874     empty_dict = PyDict_New();
35875     if (!empty_dict)
35876         goto bad;
35877     {
35878         #if PY_MAJOR_VERSION >= 3
35879         if (level == -1) {
35880             if (strchr(__Pyx_MODULE_NAME, '.')) {
35881                 module = PyImport_ImportModuleLevelObject(
35882                     name, global_dict, empty_dict, list, 1);
35883                 if (!module) {
35884                     if (!PyErr_ExceptionMatches(PyExc_ImportError))
35885                         goto bad;
35886                     PyErr_Clear();
35887                 }
35888             }
35889             level = 0;
35890         }
35891         #endif
35892         if (!module) {
35893             #if PY_MAJOR_VERSION < 3
35894             PyObject *py_level = PyInt_FromLong(level);
35895             if (!py_level)
35896                 goto bad;
35897             module = PyObject_CallFunctionObjArgs(py_import,
35898                 name, global_dict, empty_dict, list, py_level, (PyObject *)NULL);
35899             Py_DECREF(py_level);
35900             #else
35901             module = PyImport_ImportModuleLevelObject(
35902                 name, global_dict, empty_dict, list, level);
35903             #endif
35904         }
35905     }
35906 bad:
35907     #if PY_MAJOR_VERSION < 3
35908     Py_XDECREF(py_import);
35909     #endif
35910     Py_XDECREF(empty_list);
35911     Py_XDECREF(empty_dict);
35912     return module;
35913 }
35914 
35915 /* ImportFrom */
__Pyx_ImportFrom(PyObject * module,PyObject * name)35916 static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) {
35917     PyObject* value = __Pyx_PyObject_GetAttrStr(module, name);
35918     if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) {
35919         PyErr_Format(PyExc_ImportError,
35920         #if PY_MAJOR_VERSION < 3
35921             "cannot import name %.230s", PyString_AS_STRING(name));
35922         #else
35923             "cannot import name %S", name);
35924         #endif
35925     }
35926     return value;
35927 }
35928 
35929 /* RaiseNoneIterError */
__Pyx_RaiseNoneNotIterableError(void)35930 static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) {
35931     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
35932 }
35933 
35934 /* PyObject_GenericGetAttrNoDict */
35935 #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
__Pyx_RaiseGenericGetAttributeError(PyTypeObject * tp,PyObject * attr_name)35936 static PyObject *__Pyx_RaiseGenericGetAttributeError(PyTypeObject *tp, PyObject *attr_name) {
35937     PyErr_Format(PyExc_AttributeError,
35938 #if PY_MAJOR_VERSION >= 3
35939                  "'%.50s' object has no attribute '%U'",
35940                  tp->tp_name, attr_name);
35941 #else
35942                  "'%.50s' object has no attribute '%.400s'",
35943                  tp->tp_name, PyString_AS_STRING(attr_name));
35944 #endif
35945     return NULL;
35946 }
__Pyx_PyObject_GenericGetAttrNoDict(PyObject * obj,PyObject * attr_name)35947 static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name) {
35948     PyObject *descr;
35949     PyTypeObject *tp = Py_TYPE(obj);
35950     if (unlikely(!PyString_Check(attr_name))) {
35951         return PyObject_GenericGetAttr(obj, attr_name);
35952     }
35953     assert(!tp->tp_dictoffset);
35954     descr = _PyType_Lookup(tp, attr_name);
35955     if (unlikely(!descr)) {
35956         return __Pyx_RaiseGenericGetAttributeError(tp, attr_name);
35957     }
35958     Py_INCREF(descr);
35959     #if PY_MAJOR_VERSION < 3
35960     if (likely(PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_HAVE_CLASS)))
35961     #endif
35962     {
35963         descrgetfunc f = Py_TYPE(descr)->tp_descr_get;
35964         if (unlikely(f)) {
35965             PyObject *res = f(descr, obj, (PyObject *)tp);
35966             Py_DECREF(descr);
35967             return res;
35968         }
35969     }
35970     return descr;
35971 }
35972 #endif
35973 
35974 /* PyObject_GenericGetAttr */
35975 #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
__Pyx_PyObject_GenericGetAttr(PyObject * obj,PyObject * attr_name)35976 static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name) {
35977     if (unlikely(Py_TYPE(obj)->tp_dictoffset)) {
35978         return PyObject_GenericGetAttr(obj, attr_name);
35979     }
35980     return __Pyx_PyObject_GenericGetAttrNoDict(obj, attr_name);
35981 }
35982 #endif
35983 
35984 /* SetupReduce */
__Pyx_setup_reduce_is_named(PyObject * meth,PyObject * name)35985 static int __Pyx_setup_reduce_is_named(PyObject* meth, PyObject* name) {
35986   int ret;
35987   PyObject *name_attr;
35988   name_attr = __Pyx_PyObject_GetAttrStr(meth, __pyx_n_s_name_2);
35989   if (likely(name_attr)) {
35990       ret = PyObject_RichCompareBool(name_attr, name, Py_EQ);
35991   } else {
35992       ret = -1;
35993   }
35994   if (unlikely(ret < 0)) {
35995       PyErr_Clear();
35996       ret = 0;
35997   }
35998   Py_XDECREF(name_attr);
35999   return ret;
36000 }
__Pyx_setup_reduce(PyObject * type_obj)36001 static int __Pyx_setup_reduce(PyObject* type_obj) {
36002     int ret = 0;
36003     PyObject *object_reduce = NULL;
36004     PyObject *object_reduce_ex = NULL;
36005     PyObject *reduce = NULL;
36006     PyObject *reduce_ex = NULL;
36007     PyObject *reduce_cython = NULL;
36008     PyObject *setstate = NULL;
36009     PyObject *setstate_cython = NULL;
36010 #if CYTHON_USE_PYTYPE_LOOKUP
36011     if (_PyType_Lookup((PyTypeObject*)type_obj, __pyx_n_s_getstate)) goto GOOD;
36012 #else
36013     if (PyObject_HasAttr(type_obj, __pyx_n_s_getstate)) goto GOOD;
36014 #endif
36015 #if CYTHON_USE_PYTYPE_LOOKUP
36016     object_reduce_ex = _PyType_Lookup(&PyBaseObject_Type, __pyx_n_s_reduce_ex); if (!object_reduce_ex) goto BAD;
36017 #else
36018     object_reduce_ex = __Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_n_s_reduce_ex); if (!object_reduce_ex) goto BAD;
36019 #endif
36020     reduce_ex = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_reduce_ex); if (unlikely(!reduce_ex)) goto BAD;
36021     if (reduce_ex == object_reduce_ex) {
36022 #if CYTHON_USE_PYTYPE_LOOKUP
36023         object_reduce = _PyType_Lookup(&PyBaseObject_Type, __pyx_n_s_reduce); if (!object_reduce) goto BAD;
36024 #else
36025         object_reduce = __Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_n_s_reduce); if (!object_reduce) goto BAD;
36026 #endif
36027         reduce = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_reduce); if (unlikely(!reduce)) goto BAD;
36028         if (reduce == object_reduce || __Pyx_setup_reduce_is_named(reduce, __pyx_n_s_reduce_cython)) {
36029             reduce_cython = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_reduce_cython); if (unlikely(!reduce_cython)) goto BAD;
36030             ret = PyDict_SetItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_reduce, reduce_cython); if (unlikely(ret < 0)) goto BAD;
36031             ret = PyDict_DelItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_reduce_cython); if (unlikely(ret < 0)) goto BAD;
36032             setstate = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_setstate);
36033             if (!setstate) PyErr_Clear();
36034             if (!setstate || __Pyx_setup_reduce_is_named(setstate, __pyx_n_s_setstate_cython)) {
36035                 setstate_cython = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_setstate_cython); if (unlikely(!setstate_cython)) goto BAD;
36036                 ret = PyDict_SetItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_setstate, setstate_cython); if (unlikely(ret < 0)) goto BAD;
36037                 ret = PyDict_DelItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_setstate_cython); if (unlikely(ret < 0)) goto BAD;
36038             }
36039             PyType_Modified((PyTypeObject*)type_obj);
36040         }
36041     }
36042     goto GOOD;
36043 BAD:
36044     if (!PyErr_Occurred())
36045         PyErr_Format(PyExc_RuntimeError, "Unable to initialize pickling for %s", ((PyTypeObject*)type_obj)->tp_name);
36046     ret = -1;
36047 GOOD:
36048 #if !CYTHON_USE_PYTYPE_LOOKUP
36049     Py_XDECREF(object_reduce);
36050     Py_XDECREF(object_reduce_ex);
36051 #endif
36052     Py_XDECREF(reduce);
36053     Py_XDECREF(reduce_ex);
36054     Py_XDECREF(reduce_cython);
36055     Py_XDECREF(setstate);
36056     Py_XDECREF(setstate_cython);
36057     return ret;
36058 }
36059 
36060 /* SetVTable */
__Pyx_SetVtable(PyObject * dict,void * vtable)36061 static int __Pyx_SetVtable(PyObject *dict, void *vtable) {
36062 #if PY_VERSION_HEX >= 0x02070000
36063     PyObject *ob = PyCapsule_New(vtable, 0, 0);
36064 #else
36065     PyObject *ob = PyCObject_FromVoidPtr(vtable, 0);
36066 #endif
36067     if (!ob)
36068         goto bad;
36069     if (PyDict_SetItem(dict, __pyx_n_s_pyx_vtable, ob) < 0)
36070         goto bad;
36071     Py_DECREF(ob);
36072     return 0;
36073 bad:
36074     Py_XDECREF(ob);
36075     return -1;
36076 }
36077 
36078 /* TypeImport */
36079 #ifndef __PYX_HAVE_RT_ImportType
36080 #define __PYX_HAVE_RT_ImportType
__Pyx_ImportType(PyObject * module,const char * module_name,const char * class_name,size_t size,enum __Pyx_ImportType_CheckSize check_size)36081 static PyTypeObject *__Pyx_ImportType(PyObject *module, const char *module_name, const char *class_name,
36082     size_t size, enum __Pyx_ImportType_CheckSize check_size)
36083 {
36084     PyObject *result = 0;
36085     char warning[200];
36086     Py_ssize_t basicsize;
36087 #ifdef Py_LIMITED_API
36088     PyObject *py_basicsize;
36089 #endif
36090     result = PyObject_GetAttrString(module, class_name);
36091     if (!result)
36092         goto bad;
36093     if (!PyType_Check(result)) {
36094         PyErr_Format(PyExc_TypeError,
36095             "%.200s.%.200s is not a type object",
36096             module_name, class_name);
36097         goto bad;
36098     }
36099 #ifndef Py_LIMITED_API
36100     basicsize = ((PyTypeObject *)result)->tp_basicsize;
36101 #else
36102     py_basicsize = PyObject_GetAttrString(result, "__basicsize__");
36103     if (!py_basicsize)
36104         goto bad;
36105     basicsize = PyLong_AsSsize_t(py_basicsize);
36106     Py_DECREF(py_basicsize);
36107     py_basicsize = 0;
36108     if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred())
36109         goto bad;
36110 #endif
36111     if ((size_t)basicsize < size) {
36112         PyErr_Format(PyExc_ValueError,
36113             "%.200s.%.200s size changed, may indicate binary incompatibility. "
36114             "Expected %zd from C header, got %zd from PyObject",
36115             module_name, class_name, size, basicsize);
36116         goto bad;
36117     }
36118     if (check_size == __Pyx_ImportType_CheckSize_Error && (size_t)basicsize != size) {
36119         PyErr_Format(PyExc_ValueError,
36120             "%.200s.%.200s size changed, may indicate binary incompatibility. "
36121             "Expected %zd from C header, got %zd from PyObject",
36122             module_name, class_name, size, basicsize);
36123         goto bad;
36124     }
36125     else if (check_size == __Pyx_ImportType_CheckSize_Warn && (size_t)basicsize > size) {
36126         PyOS_snprintf(warning, sizeof(warning),
36127             "%s.%s size changed, may indicate binary incompatibility. "
36128             "Expected %zd from C header, got %zd from PyObject",
36129             module_name, class_name, size, basicsize);
36130         if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad;
36131     }
36132     return (PyTypeObject *)result;
36133 bad:
36134     Py_XDECREF(result);
36135     return NULL;
36136 }
36137 #endif
36138 
36139 /* CLineInTraceback */
36140 #ifndef CYTHON_CLINE_IN_TRACEBACK
__Pyx_CLineForTraceback(PyThreadState * tstate,int c_line)36141 static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line) {
36142     PyObject *use_cline;
36143     PyObject *ptype, *pvalue, *ptraceback;
36144 #if CYTHON_COMPILING_IN_CPYTHON
36145     PyObject **cython_runtime_dict;
36146 #endif
36147     if (unlikely(!__pyx_cython_runtime)) {
36148         return c_line;
36149     }
36150     __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback);
36151 #if CYTHON_COMPILING_IN_CPYTHON
36152     cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime);
36153     if (likely(cython_runtime_dict)) {
36154         __PYX_PY_DICT_LOOKUP_IF_MODIFIED(
36155             use_cline, *cython_runtime_dict,
36156             __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback))
36157     } else
36158 #endif
36159     {
36160       PyObject *use_cline_obj = __Pyx_PyObject_GetAttrStr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback);
36161       if (use_cline_obj) {
36162         use_cline = PyObject_Not(use_cline_obj) ? Py_False : Py_True;
36163         Py_DECREF(use_cline_obj);
36164       } else {
36165         PyErr_Clear();
36166         use_cline = NULL;
36167       }
36168     }
36169     if (!use_cline) {
36170         c_line = 0;
36171         PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False);
36172     }
36173     else if (use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) {
36174         c_line = 0;
36175     }
36176     __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback);
36177     return c_line;
36178 }
36179 #endif
36180 
36181 /* CodeObjectCache */
__pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry * entries,int count,int code_line)36182 static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
36183     int start = 0, mid = 0, end = count - 1;
36184     if (end >= 0 && code_line > entries[end].code_line) {
36185         return count;
36186     }
36187     while (start < end) {
36188         mid = start + (end - start) / 2;
36189         if (code_line < entries[mid].code_line) {
36190             end = mid;
36191         } else if (code_line > entries[mid].code_line) {
36192              start = mid + 1;
36193         } else {
36194             return mid;
36195         }
36196     }
36197     if (code_line <= entries[mid].code_line) {
36198         return mid;
36199     } else {
36200         return mid + 1;
36201     }
36202 }
__pyx_find_code_object(int code_line)36203 static PyCodeObject *__pyx_find_code_object(int code_line) {
36204     PyCodeObject* code_object;
36205     int pos;
36206     if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) {
36207         return NULL;
36208     }
36209     pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
36210     if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) {
36211         return NULL;
36212     }
36213     code_object = __pyx_code_cache.entries[pos].code_object;
36214     Py_INCREF(code_object);
36215     return code_object;
36216 }
__pyx_insert_code_object(int code_line,PyCodeObject * code_object)36217 static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) {
36218     int pos, i;
36219     __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries;
36220     if (unlikely(!code_line)) {
36221         return;
36222     }
36223     if (unlikely(!entries)) {
36224         entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry));
36225         if (likely(entries)) {
36226             __pyx_code_cache.entries = entries;
36227             __pyx_code_cache.max_count = 64;
36228             __pyx_code_cache.count = 1;
36229             entries[0].code_line = code_line;
36230             entries[0].code_object = code_object;
36231             Py_INCREF(code_object);
36232         }
36233         return;
36234     }
36235     pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
36236     if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) {
36237         PyCodeObject* tmp = entries[pos].code_object;
36238         entries[pos].code_object = code_object;
36239         Py_DECREF(tmp);
36240         return;
36241     }
36242     if (__pyx_code_cache.count == __pyx_code_cache.max_count) {
36243         int new_max = __pyx_code_cache.max_count + 64;
36244         entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc(
36245             __pyx_code_cache.entries, (size_t)new_max*sizeof(__Pyx_CodeObjectCacheEntry));
36246         if (unlikely(!entries)) {
36247             return;
36248         }
36249         __pyx_code_cache.entries = entries;
36250         __pyx_code_cache.max_count = new_max;
36251     }
36252     for (i=__pyx_code_cache.count; i>pos; i--) {
36253         entries[i] = entries[i-1];
36254     }
36255     entries[pos].code_line = code_line;
36256     entries[pos].code_object = code_object;
36257     __pyx_code_cache.count++;
36258     Py_INCREF(code_object);
36259 }
36260 
36261 /* AddTraceback */
36262 #include "compile.h"
36263 #include "frameobject.h"
36264 #include "traceback.h"
__Pyx_CreateCodeObjectForTraceback(const char * funcname,int c_line,int py_line,const char * filename)36265 static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
36266             const char *funcname, int c_line,
36267             int py_line, const char *filename) {
36268     PyCodeObject *py_code = 0;
36269     PyObject *py_srcfile = 0;
36270     PyObject *py_funcname = 0;
36271     #if PY_MAJOR_VERSION < 3
36272     py_srcfile = PyString_FromString(filename);
36273     #else
36274     py_srcfile = PyUnicode_FromString(filename);
36275     #endif
36276     if (!py_srcfile) goto bad;
36277     if (c_line) {
36278         #if PY_MAJOR_VERSION < 3
36279         py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
36280         #else
36281         py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
36282         #endif
36283     }
36284     else {
36285         #if PY_MAJOR_VERSION < 3
36286         py_funcname = PyString_FromString(funcname);
36287         #else
36288         py_funcname = PyUnicode_FromString(funcname);
36289         #endif
36290     }
36291     if (!py_funcname) goto bad;
36292     py_code = __Pyx_PyCode_New(
36293         0,
36294         0,
36295         0,
36296         0,
36297         0,
36298         __pyx_empty_bytes, /*PyObject *code,*/
36299         __pyx_empty_tuple, /*PyObject *consts,*/
36300         __pyx_empty_tuple, /*PyObject *names,*/
36301         __pyx_empty_tuple, /*PyObject *varnames,*/
36302         __pyx_empty_tuple, /*PyObject *freevars,*/
36303         __pyx_empty_tuple, /*PyObject *cellvars,*/
36304         py_srcfile,   /*PyObject *filename,*/
36305         py_funcname,  /*PyObject *name,*/
36306         py_line,
36307         __pyx_empty_bytes  /*PyObject *lnotab*/
36308     );
36309     Py_DECREF(py_srcfile);
36310     Py_DECREF(py_funcname);
36311     return py_code;
36312 bad:
36313     Py_XDECREF(py_srcfile);
36314     Py_XDECREF(py_funcname);
36315     return NULL;
36316 }
__Pyx_AddTraceback(const char * funcname,int c_line,int py_line,const char * filename)36317 static void __Pyx_AddTraceback(const char *funcname, int c_line,
36318                                int py_line, const char *filename) {
36319     PyCodeObject *py_code = 0;
36320     PyFrameObject *py_frame = 0;
36321     PyThreadState *tstate = __Pyx_PyThreadState_Current;
36322     if (c_line) {
36323         c_line = __Pyx_CLineForTraceback(tstate, c_line);
36324     }
36325     py_code = __pyx_find_code_object(c_line ? -c_line : py_line);
36326     if (!py_code) {
36327         py_code = __Pyx_CreateCodeObjectForTraceback(
36328             funcname, c_line, py_line, filename);
36329         if (!py_code) goto bad;
36330         __pyx_insert_code_object(c_line ? -c_line : py_line, py_code);
36331     }
36332     py_frame = PyFrame_New(
36333         tstate,            /*PyThreadState *tstate,*/
36334         py_code,           /*PyCodeObject *code,*/
36335         __pyx_d,    /*PyObject *globals,*/
36336         0                  /*PyObject *locals*/
36337     );
36338     if (!py_frame) goto bad;
36339     __Pyx_PyFrame_SetLineNumber(py_frame, py_line);
36340     PyTraceBack_Here(py_frame);
36341 bad:
36342     Py_XDECREF(py_code);
36343     Py_XDECREF(py_frame);
36344 }
36345 
36346 /* CIntToPy */
__Pyx_PyInt_From_hid_t(hid_t value)36347 static CYTHON_INLINE PyObject* __Pyx_PyInt_From_hid_t(hid_t value) {
36348     const hid_t neg_one = (hid_t) ((hid_t) 0 - (hid_t) 1), const_zero = (hid_t) 0;
36349     const int is_unsigned = neg_one > const_zero;
36350     if (is_unsigned) {
36351         if (sizeof(hid_t) < sizeof(long)) {
36352             return PyInt_FromLong((long) value);
36353         } else if (sizeof(hid_t) <= sizeof(unsigned long)) {
36354             return PyLong_FromUnsignedLong((unsigned long) value);
36355 #ifdef HAVE_LONG_LONG
36356         } else if (sizeof(hid_t) <= sizeof(unsigned PY_LONG_LONG)) {
36357             return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
36358 #endif
36359         }
36360     } else {
36361         if (sizeof(hid_t) <= sizeof(long)) {
36362             return PyInt_FromLong((long) value);
36363 #ifdef HAVE_LONG_LONG
36364         } else if (sizeof(hid_t) <= sizeof(PY_LONG_LONG)) {
36365             return PyLong_FromLongLong((PY_LONG_LONG) value);
36366 #endif
36367         }
36368     }
36369     {
36370         int one = 1; int little = (int)*(unsigned char *)&one;
36371         unsigned char *bytes = (unsigned char *)&value;
36372         return _PyLong_FromByteArray(bytes, sizeof(hid_t),
36373                                      little, !is_unsigned);
36374     }
36375 }
36376 
36377 /* CIntFromPyVerify */
36378 #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\
36379     __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0)
36380 #define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\
36381     __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1)
36382 #define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\
36383     {\
36384         func_type value = func_value;\
36385         if (sizeof(target_type) < sizeof(func_type)) {\
36386             if (unlikely(value != (func_type) (target_type) value)) {\
36387                 func_type zero = 0;\
36388                 if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\
36389                     return (target_type) -1;\
36390                 if (is_unsigned && unlikely(value < zero))\
36391                     goto raise_neg_overflow;\
36392                 else\
36393                     goto raise_overflow;\
36394             }\
36395         }\
36396         return (target_type) value;\
36397     }
36398 
36399 /* CIntToPy */
__Pyx_PyInt_From_int(int value)36400 static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) {
36401     const int neg_one = (int) ((int) 0 - (int) 1), const_zero = (int) 0;
36402     const int is_unsigned = neg_one > const_zero;
36403     if (is_unsigned) {
36404         if (sizeof(int) < sizeof(long)) {
36405             return PyInt_FromLong((long) value);
36406         } else if (sizeof(int) <= sizeof(unsigned long)) {
36407             return PyLong_FromUnsignedLong((unsigned long) value);
36408 #ifdef HAVE_LONG_LONG
36409         } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) {
36410             return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
36411 #endif
36412         }
36413     } else {
36414         if (sizeof(int) <= sizeof(long)) {
36415             return PyInt_FromLong((long) value);
36416 #ifdef HAVE_LONG_LONG
36417         } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) {
36418             return PyLong_FromLongLong((PY_LONG_LONG) value);
36419 #endif
36420         }
36421     }
36422     {
36423         int one = 1; int little = (int)*(unsigned char *)&one;
36424         unsigned char *bytes = (unsigned char *)&value;
36425         return _PyLong_FromByteArray(bytes, sizeof(int),
36426                                      little, !is_unsigned);
36427     }
36428 }
36429 
36430 /* CIntToPy */
__Pyx_PyInt_From_hsize_t(hsize_t value)36431 static CYTHON_INLINE PyObject* __Pyx_PyInt_From_hsize_t(hsize_t value) {
36432     const hsize_t neg_one = (hsize_t) ((hsize_t) 0 - (hsize_t) 1), const_zero = (hsize_t) 0;
36433     const int is_unsigned = neg_one > const_zero;
36434     if (is_unsigned) {
36435         if (sizeof(hsize_t) < sizeof(long)) {
36436             return PyInt_FromLong((long) value);
36437         } else if (sizeof(hsize_t) <= sizeof(unsigned long)) {
36438             return PyLong_FromUnsignedLong((unsigned long) value);
36439 #ifdef HAVE_LONG_LONG
36440         } else if (sizeof(hsize_t) <= sizeof(unsigned PY_LONG_LONG)) {
36441             return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
36442 #endif
36443         }
36444     } else {
36445         if (sizeof(hsize_t) <= sizeof(long)) {
36446             return PyInt_FromLong((long) value);
36447 #ifdef HAVE_LONG_LONG
36448         } else if (sizeof(hsize_t) <= sizeof(PY_LONG_LONG)) {
36449             return PyLong_FromLongLong((PY_LONG_LONG) value);
36450 #endif
36451         }
36452     }
36453     {
36454         int one = 1; int little = (int)*(unsigned char *)&one;
36455         unsigned char *bytes = (unsigned char *)&value;
36456         return _PyLong_FromByteArray(bytes, sizeof(hsize_t),
36457                                      little, !is_unsigned);
36458     }
36459 }
36460 
36461 /* CIntToPy */
__Pyx_PyInt_From_uintptr_t(uintptr_t value)36462 static CYTHON_INLINE PyObject* __Pyx_PyInt_From_uintptr_t(uintptr_t value) {
36463     const uintptr_t neg_one = (uintptr_t) ((uintptr_t) 0 - (uintptr_t) 1), const_zero = (uintptr_t) 0;
36464     const int is_unsigned = neg_one > const_zero;
36465     if (is_unsigned) {
36466         if (sizeof(uintptr_t) < sizeof(long)) {
36467             return PyInt_FromLong((long) value);
36468         } else if (sizeof(uintptr_t) <= sizeof(unsigned long)) {
36469             return PyLong_FromUnsignedLong((unsigned long) value);
36470 #ifdef HAVE_LONG_LONG
36471         } else if (sizeof(uintptr_t) <= sizeof(unsigned PY_LONG_LONG)) {
36472             return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
36473 #endif
36474         }
36475     } else {
36476         if (sizeof(uintptr_t) <= sizeof(long)) {
36477             return PyInt_FromLong((long) value);
36478 #ifdef HAVE_LONG_LONG
36479         } else if (sizeof(uintptr_t) <= sizeof(PY_LONG_LONG)) {
36480             return PyLong_FromLongLong((PY_LONG_LONG) value);
36481 #endif
36482         }
36483     }
36484     {
36485         int one = 1; int little = (int)*(unsigned char *)&one;
36486         unsigned char *bytes = (unsigned char *)&value;
36487         return _PyLong_FromByteArray(bytes, sizeof(uintptr_t),
36488                                      little, !is_unsigned);
36489     }
36490 }
36491 
36492 /* CIntToPy */
__Pyx_PyInt_From_enum__H5T_class_t(enum H5T_class_t value)36493 static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__H5T_class_t(enum H5T_class_t value) {
36494     const enum H5T_class_t neg_one = (enum H5T_class_t) ((enum H5T_class_t) 0 - (enum H5T_class_t) 1), const_zero = (enum H5T_class_t) 0;
36495     const int is_unsigned = neg_one > const_zero;
36496     if (is_unsigned) {
36497         if (sizeof(enum H5T_class_t) < sizeof(long)) {
36498             return PyInt_FromLong((long) value);
36499         } else if (sizeof(enum H5T_class_t) <= sizeof(unsigned long)) {
36500             return PyLong_FromUnsignedLong((unsigned long) value);
36501 #ifdef HAVE_LONG_LONG
36502         } else if (sizeof(enum H5T_class_t) <= sizeof(unsigned PY_LONG_LONG)) {
36503             return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
36504 #endif
36505         }
36506     } else {
36507         if (sizeof(enum H5T_class_t) <= sizeof(long)) {
36508             return PyInt_FromLong((long) value);
36509 #ifdef HAVE_LONG_LONG
36510         } else if (sizeof(enum H5T_class_t) <= sizeof(PY_LONG_LONG)) {
36511             return PyLong_FromLongLong((PY_LONG_LONG) value);
36512 #endif
36513         }
36514     }
36515     {
36516         int one = 1; int little = (int)*(unsigned char *)&one;
36517         unsigned char *bytes = (unsigned char *)&value;
36518         return _PyLong_FromByteArray(bytes, sizeof(enum H5T_class_t),
36519                                      little, !is_unsigned);
36520     }
36521 }
36522 
36523 /* CIntToPy */
__Pyx_PyInt_From_htri_t(htri_t value)36524 static CYTHON_INLINE PyObject* __Pyx_PyInt_From_htri_t(htri_t value) {
36525     const htri_t neg_one = (htri_t) ((htri_t) 0 - (htri_t) 1), const_zero = (htri_t) 0;
36526     const int is_unsigned = neg_one > const_zero;
36527     if (is_unsigned) {
36528         if (sizeof(htri_t) < sizeof(long)) {
36529             return PyInt_FromLong((long) value);
36530         } else if (sizeof(htri_t) <= sizeof(unsigned long)) {
36531             return PyLong_FromUnsignedLong((unsigned long) value);
36532 #ifdef HAVE_LONG_LONG
36533         } else if (sizeof(htri_t) <= sizeof(unsigned PY_LONG_LONG)) {
36534             return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
36535 #endif
36536         }
36537     } else {
36538         if (sizeof(htri_t) <= sizeof(long)) {
36539             return PyInt_FromLong((long) value);
36540 #ifdef HAVE_LONG_LONG
36541         } else if (sizeof(htri_t) <= sizeof(PY_LONG_LONG)) {
36542             return PyLong_FromLongLong((PY_LONG_LONG) value);
36543 #endif
36544         }
36545     }
36546     {
36547         int one = 1; int little = (int)*(unsigned char *)&one;
36548         unsigned char *bytes = (unsigned char *)&value;
36549         return _PyLong_FromByteArray(bytes, sizeof(htri_t),
36550                                      little, !is_unsigned);
36551     }
36552 }
36553 
36554 /* CIntToPy */
__Pyx_PyInt_From_haddr_t(haddr_t value)36555 static CYTHON_INLINE PyObject* __Pyx_PyInt_From_haddr_t(haddr_t value) {
36556     const haddr_t neg_one = (haddr_t) ((haddr_t) 0 - (haddr_t) 1), const_zero = (haddr_t) 0;
36557     const int is_unsigned = neg_one > const_zero;
36558     if (is_unsigned) {
36559         if (sizeof(haddr_t) < sizeof(long)) {
36560             return PyInt_FromLong((long) value);
36561         } else if (sizeof(haddr_t) <= sizeof(unsigned long)) {
36562             return PyLong_FromUnsignedLong((unsigned long) value);
36563 #ifdef HAVE_LONG_LONG
36564         } else if (sizeof(haddr_t) <= sizeof(unsigned PY_LONG_LONG)) {
36565             return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
36566 #endif
36567         }
36568     } else {
36569         if (sizeof(haddr_t) <= sizeof(long)) {
36570             return PyInt_FromLong((long) value);
36571 #ifdef HAVE_LONG_LONG
36572         } else if (sizeof(haddr_t) <= sizeof(PY_LONG_LONG)) {
36573             return PyLong_FromLongLong((PY_LONG_LONG) value);
36574 #endif
36575         }
36576     }
36577     {
36578         int one = 1; int little = (int)*(unsigned char *)&one;
36579         unsigned char *bytes = (unsigned char *)&value;
36580         return _PyLong_FromByteArray(bytes, sizeof(haddr_t),
36581                                      little, !is_unsigned);
36582     }
36583 }
36584 
36585 /* CIntToPy */
__Pyx_PyInt_From_unsigned_int(unsigned int value)36586 static CYTHON_INLINE PyObject* __Pyx_PyInt_From_unsigned_int(unsigned int value) {
36587     const unsigned int neg_one = (unsigned int) ((unsigned int) 0 - (unsigned int) 1), const_zero = (unsigned int) 0;
36588     const int is_unsigned = neg_one > const_zero;
36589     if (is_unsigned) {
36590         if (sizeof(unsigned int) < sizeof(long)) {
36591             return PyInt_FromLong((long) value);
36592         } else if (sizeof(unsigned int) <= sizeof(unsigned long)) {
36593             return PyLong_FromUnsignedLong((unsigned long) value);
36594 #ifdef HAVE_LONG_LONG
36595         } else if (sizeof(unsigned int) <= sizeof(unsigned PY_LONG_LONG)) {
36596             return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
36597 #endif
36598         }
36599     } else {
36600         if (sizeof(unsigned int) <= sizeof(long)) {
36601             return PyInt_FromLong((long) value);
36602 #ifdef HAVE_LONG_LONG
36603         } else if (sizeof(unsigned int) <= sizeof(PY_LONG_LONG)) {
36604             return PyLong_FromLongLong((PY_LONG_LONG) value);
36605 #endif
36606         }
36607     }
36608     {
36609         int one = 1; int little = (int)*(unsigned char *)&one;
36610         unsigned char *bytes = (unsigned char *)&value;
36611         return _PyLong_FromByteArray(bytes, sizeof(unsigned int),
36612                                      little, !is_unsigned);
36613     }
36614 }
36615 
36616 /* CIntToPy */
__Pyx_PyInt_From_time_t(time_t value)36617 static CYTHON_INLINE PyObject* __Pyx_PyInt_From_time_t(time_t value) {
36618     const time_t neg_one = (time_t) ((time_t) 0 - (time_t) 1), const_zero = (time_t) 0;
36619     const int is_unsigned = neg_one > const_zero;
36620     if (is_unsigned) {
36621         if (sizeof(time_t) < sizeof(long)) {
36622             return PyInt_FromLong((long) value);
36623         } else if (sizeof(time_t) <= sizeof(unsigned long)) {
36624             return PyLong_FromUnsignedLong((unsigned long) value);
36625 #ifdef HAVE_LONG_LONG
36626         } else if (sizeof(time_t) <= sizeof(unsigned PY_LONG_LONG)) {
36627             return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
36628 #endif
36629         }
36630     } else {
36631         if (sizeof(time_t) <= sizeof(long)) {
36632             return PyInt_FromLong((long) value);
36633 #ifdef HAVE_LONG_LONG
36634         } else if (sizeof(time_t) <= sizeof(PY_LONG_LONG)) {
36635             return PyLong_FromLongLong((PY_LONG_LONG) value);
36636 #endif
36637         }
36638     }
36639     {
36640         int one = 1; int little = (int)*(unsigned char *)&one;
36641         unsigned char *bytes = (unsigned char *)&value;
36642         return _PyLong_FromByteArray(bytes, sizeof(time_t),
36643                                      little, !is_unsigned);
36644     }
36645 }
36646 
36647 /* CIntToPy */
__Pyx_PyInt_From_hbool_t(hbool_t value)36648 static CYTHON_INLINE PyObject* __Pyx_PyInt_From_hbool_t(hbool_t value) {
36649     const hbool_t neg_one = (hbool_t) ((hbool_t) 0 - (hbool_t) 1), const_zero = (hbool_t) 0;
36650     const int is_unsigned = neg_one > const_zero;
36651     if (is_unsigned) {
36652         if (sizeof(hbool_t) < sizeof(long)) {
36653             return PyInt_FromLong((long) value);
36654         } else if (sizeof(hbool_t) <= sizeof(unsigned long)) {
36655             return PyLong_FromUnsignedLong((unsigned long) value);
36656 #ifdef HAVE_LONG_LONG
36657         } else if (sizeof(hbool_t) <= sizeof(unsigned PY_LONG_LONG)) {
36658             return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
36659 #endif
36660         }
36661     } else {
36662         if (sizeof(hbool_t) <= sizeof(long)) {
36663             return PyInt_FromLong((long) value);
36664 #ifdef HAVE_LONG_LONG
36665         } else if (sizeof(hbool_t) <= sizeof(PY_LONG_LONG)) {
36666             return PyLong_FromLongLong((PY_LONG_LONG) value);
36667 #endif
36668         }
36669     }
36670     {
36671         int one = 1; int little = (int)*(unsigned char *)&one;
36672         unsigned char *bytes = (unsigned char *)&value;
36673         return _PyLong_FromByteArray(bytes, sizeof(hbool_t),
36674                                      little, !is_unsigned);
36675     }
36676 }
36677 
36678 /* CIntToPy */
__Pyx_PyInt_From_enum__H5T_order_t(enum H5T_order_t value)36679 static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__H5T_order_t(enum H5T_order_t value) {
36680     const enum H5T_order_t neg_one = (enum H5T_order_t) ((enum H5T_order_t) 0 - (enum H5T_order_t) 1), const_zero = (enum H5T_order_t) 0;
36681     const int is_unsigned = neg_one > const_zero;
36682     if (is_unsigned) {
36683         if (sizeof(enum H5T_order_t) < sizeof(long)) {
36684             return PyInt_FromLong((long) value);
36685         } else if (sizeof(enum H5T_order_t) <= sizeof(unsigned long)) {
36686             return PyLong_FromUnsignedLong((unsigned long) value);
36687 #ifdef HAVE_LONG_LONG
36688         } else if (sizeof(enum H5T_order_t) <= sizeof(unsigned PY_LONG_LONG)) {
36689             return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
36690 #endif
36691         }
36692     } else {
36693         if (sizeof(enum H5T_order_t) <= sizeof(long)) {
36694             return PyInt_FromLong((long) value);
36695 #ifdef HAVE_LONG_LONG
36696         } else if (sizeof(enum H5T_order_t) <= sizeof(PY_LONG_LONG)) {
36697             return PyLong_FromLongLong((PY_LONG_LONG) value);
36698 #endif
36699         }
36700     }
36701     {
36702         int one = 1; int little = (int)*(unsigned char *)&one;
36703         unsigned char *bytes = (unsigned char *)&value;
36704         return _PyLong_FromByteArray(bytes, sizeof(enum H5T_order_t),
36705                                      little, !is_unsigned);
36706     }
36707 }
36708 
36709 /* CIntToPy */
__Pyx_PyInt_From_enum__H5S_seloper_t(enum H5S_seloper_t value)36710 static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__H5S_seloper_t(enum H5S_seloper_t value) {
36711     const enum H5S_seloper_t neg_one = (enum H5S_seloper_t) ((enum H5S_seloper_t) 0 - (enum H5S_seloper_t) 1), const_zero = (enum H5S_seloper_t) 0;
36712     const int is_unsigned = neg_one > const_zero;
36713     if (is_unsigned) {
36714         if (sizeof(enum H5S_seloper_t) < sizeof(long)) {
36715             return PyInt_FromLong((long) value);
36716         } else if (sizeof(enum H5S_seloper_t) <= sizeof(unsigned long)) {
36717             return PyLong_FromUnsignedLong((unsigned long) value);
36718 #ifdef HAVE_LONG_LONG
36719         } else if (sizeof(enum H5S_seloper_t) <= sizeof(unsigned PY_LONG_LONG)) {
36720             return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
36721 #endif
36722         }
36723     } else {
36724         if (sizeof(enum H5S_seloper_t) <= sizeof(long)) {
36725             return PyInt_FromLong((long) value);
36726 #ifdef HAVE_LONG_LONG
36727         } else if (sizeof(enum H5S_seloper_t) <= sizeof(PY_LONG_LONG)) {
36728             return PyLong_FromLongLong((PY_LONG_LONG) value);
36729 #endif
36730         }
36731     }
36732     {
36733         int one = 1; int little = (int)*(unsigned char *)&one;
36734         unsigned char *bytes = (unsigned char *)&value;
36735         return _PyLong_FromByteArray(bytes, sizeof(enum H5S_seloper_t),
36736                                      little, !is_unsigned);
36737     }
36738 }
36739 
36740 /* CIntToPy */
__Pyx_PyInt_From_long(long value)36741 static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) {
36742     const long neg_one = (long) ((long) 0 - (long) 1), const_zero = (long) 0;
36743     const int is_unsigned = neg_one > const_zero;
36744     if (is_unsigned) {
36745         if (sizeof(long) < sizeof(long)) {
36746             return PyInt_FromLong((long) value);
36747         } else if (sizeof(long) <= sizeof(unsigned long)) {
36748             return PyLong_FromUnsignedLong((unsigned long) value);
36749 #ifdef HAVE_LONG_LONG
36750         } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) {
36751             return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
36752 #endif
36753         }
36754     } else {
36755         if (sizeof(long) <= sizeof(long)) {
36756             return PyInt_FromLong((long) value);
36757 #ifdef HAVE_LONG_LONG
36758         } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) {
36759             return PyLong_FromLongLong((PY_LONG_LONG) value);
36760 #endif
36761         }
36762     }
36763     {
36764         int one = 1; int little = (int)*(unsigned char *)&one;
36765         unsigned char *bytes = (unsigned char *)&value;
36766         return _PyLong_FromByteArray(bytes, sizeof(long),
36767                                      little, !is_unsigned);
36768     }
36769 }
36770 
36771 /* Declarations */
36772 #if CYTHON_CCOMPLEX
36773   #ifdef __cplusplus
__pyx_t_float_complex_from_parts(float x,float y)36774     static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) {
36775       return ::std::complex< float >(x, y);
36776     }
36777   #else
__pyx_t_float_complex_from_parts(float x,float y)36778     static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) {
36779       return x + y*(__pyx_t_float_complex)_Complex_I;
36780     }
36781   #endif
36782 #else
__pyx_t_float_complex_from_parts(float x,float y)36783     static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) {
36784       __pyx_t_float_complex z;
36785       z.real = x;
36786       z.imag = y;
36787       return z;
36788     }
36789 #endif
36790 
36791 /* Arithmetic */
36792 #if CYTHON_CCOMPLEX
36793 #else
__Pyx_c_eq_float(__pyx_t_float_complex a,__pyx_t_float_complex b)36794     static CYTHON_INLINE int __Pyx_c_eq_float(__pyx_t_float_complex a, __pyx_t_float_complex b) {
36795        return (a.real == b.real) && (a.imag == b.imag);
36796     }
__Pyx_c_sum_float(__pyx_t_float_complex a,__pyx_t_float_complex b)36797     static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_sum_float(__pyx_t_float_complex a, __pyx_t_float_complex b) {
36798         __pyx_t_float_complex z;
36799         z.real = a.real + b.real;
36800         z.imag = a.imag + b.imag;
36801         return z;
36802     }
__Pyx_c_diff_float(__pyx_t_float_complex a,__pyx_t_float_complex b)36803     static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_diff_float(__pyx_t_float_complex a, __pyx_t_float_complex b) {
36804         __pyx_t_float_complex z;
36805         z.real = a.real - b.real;
36806         z.imag = a.imag - b.imag;
36807         return z;
36808     }
__Pyx_c_prod_float(__pyx_t_float_complex a,__pyx_t_float_complex b)36809     static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_prod_float(__pyx_t_float_complex a, __pyx_t_float_complex b) {
36810         __pyx_t_float_complex z;
36811         z.real = a.real * b.real - a.imag * b.imag;
36812         z.imag = a.real * b.imag + a.imag * b.real;
36813         return z;
36814     }
36815     #if 1
__Pyx_c_quot_float(__pyx_t_float_complex a,__pyx_t_float_complex b)36816     static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_quot_float(__pyx_t_float_complex a, __pyx_t_float_complex b) {
36817         if (b.imag == 0) {
36818             return __pyx_t_float_complex_from_parts(a.real / b.real, a.imag / b.real);
36819         } else if (fabsf(b.real) >= fabsf(b.imag)) {
36820             if (b.real == 0 && b.imag == 0) {
36821                 return __pyx_t_float_complex_from_parts(a.real / b.real, a.imag / b.imag);
36822             } else {
36823                 float r = b.imag / b.real;
36824                 float s = (float)(1.0) / (b.real + b.imag * r);
36825                 return __pyx_t_float_complex_from_parts(
36826                     (a.real + a.imag * r) * s, (a.imag - a.real * r) * s);
36827             }
36828         } else {
36829             float r = b.real / b.imag;
36830             float s = (float)(1.0) / (b.imag + b.real * r);
36831             return __pyx_t_float_complex_from_parts(
36832                 (a.real * r + a.imag) * s, (a.imag * r - a.real) * s);
36833         }
36834     }
36835     #else
__Pyx_c_quot_float(__pyx_t_float_complex a,__pyx_t_float_complex b)36836     static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_quot_float(__pyx_t_float_complex a, __pyx_t_float_complex b) {
36837         if (b.imag == 0) {
36838             return __pyx_t_float_complex_from_parts(a.real / b.real, a.imag / b.real);
36839         } else {
36840             float denom = b.real * b.real + b.imag * b.imag;
36841             return __pyx_t_float_complex_from_parts(
36842                 (a.real * b.real + a.imag * b.imag) / denom,
36843                 (a.imag * b.real - a.real * b.imag) / denom);
36844         }
36845     }
36846     #endif
__Pyx_c_neg_float(__pyx_t_float_complex a)36847     static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_neg_float(__pyx_t_float_complex a) {
36848         __pyx_t_float_complex z;
36849         z.real = -a.real;
36850         z.imag = -a.imag;
36851         return z;
36852     }
__Pyx_c_is_zero_float(__pyx_t_float_complex a)36853     static CYTHON_INLINE int __Pyx_c_is_zero_float(__pyx_t_float_complex a) {
36854        return (a.real == 0) && (a.imag == 0);
36855     }
__Pyx_c_conj_float(__pyx_t_float_complex a)36856     static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_conj_float(__pyx_t_float_complex a) {
36857         __pyx_t_float_complex z;
36858         z.real =  a.real;
36859         z.imag = -a.imag;
36860         return z;
36861     }
36862     #if 1
__Pyx_c_abs_float(__pyx_t_float_complex z)36863         static CYTHON_INLINE float __Pyx_c_abs_float(__pyx_t_float_complex z) {
36864           #if !defined(HAVE_HYPOT) || defined(_MSC_VER)
36865             return sqrtf(z.real*z.real + z.imag*z.imag);
36866           #else
36867             return hypotf(z.real, z.imag);
36868           #endif
36869         }
__Pyx_c_pow_float(__pyx_t_float_complex a,__pyx_t_float_complex b)36870         static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_pow_float(__pyx_t_float_complex a, __pyx_t_float_complex b) {
36871             __pyx_t_float_complex z;
36872             float r, lnr, theta, z_r, z_theta;
36873             if (b.imag == 0 && b.real == (int)b.real) {
36874                 if (b.real < 0) {
36875                     float denom = a.real * a.real + a.imag * a.imag;
36876                     a.real = a.real / denom;
36877                     a.imag = -a.imag / denom;
36878                     b.real = -b.real;
36879                 }
36880                 switch ((int)b.real) {
36881                     case 0:
36882                         z.real = 1;
36883                         z.imag = 0;
36884                         return z;
36885                     case 1:
36886                         return a;
36887                     case 2:
36888                         z = __Pyx_c_prod_float(a, a);
36889                         return __Pyx_c_prod_float(a, a);
36890                     case 3:
36891                         z = __Pyx_c_prod_float(a, a);
36892                         return __Pyx_c_prod_float(z, a);
36893                     case 4:
36894                         z = __Pyx_c_prod_float(a, a);
36895                         return __Pyx_c_prod_float(z, z);
36896                 }
36897             }
36898             if (a.imag == 0) {
36899                 if (a.real == 0) {
36900                     return a;
36901                 } else if (b.imag == 0) {
36902                     z.real = powf(a.real, b.real);
36903                     z.imag = 0;
36904                     return z;
36905                 } else if (a.real > 0) {
36906                     r = a.real;
36907                     theta = 0;
36908                 } else {
36909                     r = -a.real;
36910                     theta = atan2f(0.0, -1.0);
36911                 }
36912             } else {
36913                 r = __Pyx_c_abs_float(a);
36914                 theta = atan2f(a.imag, a.real);
36915             }
36916             lnr = logf(r);
36917             z_r = expf(lnr * b.real - theta * b.imag);
36918             z_theta = theta * b.real + lnr * b.imag;
36919             z.real = z_r * cosf(z_theta);
36920             z.imag = z_r * sinf(z_theta);
36921             return z;
36922         }
36923     #endif
36924 #endif
36925 
36926 /* Declarations */
36927 #if CYTHON_CCOMPLEX
36928   #ifdef __cplusplus
__pyx_t_double_complex_from_parts(double x,double y)36929     static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) {
36930       return ::std::complex< double >(x, y);
36931     }
36932   #else
__pyx_t_double_complex_from_parts(double x,double y)36933     static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) {
36934       return x + y*(__pyx_t_double_complex)_Complex_I;
36935     }
36936   #endif
36937 #else
__pyx_t_double_complex_from_parts(double x,double y)36938     static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) {
36939       __pyx_t_double_complex z;
36940       z.real = x;
36941       z.imag = y;
36942       return z;
36943     }
36944 #endif
36945 
36946 /* Arithmetic */
36947 #if CYTHON_CCOMPLEX
36948 #else
__Pyx_c_eq_double(__pyx_t_double_complex a,__pyx_t_double_complex b)36949     static CYTHON_INLINE int __Pyx_c_eq_double(__pyx_t_double_complex a, __pyx_t_double_complex b) {
36950        return (a.real == b.real) && (a.imag == b.imag);
36951     }
__Pyx_c_sum_double(__pyx_t_double_complex a,__pyx_t_double_complex b)36952     static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_sum_double(__pyx_t_double_complex a, __pyx_t_double_complex b) {
36953         __pyx_t_double_complex z;
36954         z.real = a.real + b.real;
36955         z.imag = a.imag + b.imag;
36956         return z;
36957     }
__Pyx_c_diff_double(__pyx_t_double_complex a,__pyx_t_double_complex b)36958     static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_diff_double(__pyx_t_double_complex a, __pyx_t_double_complex b) {
36959         __pyx_t_double_complex z;
36960         z.real = a.real - b.real;
36961         z.imag = a.imag - b.imag;
36962         return z;
36963     }
__Pyx_c_prod_double(__pyx_t_double_complex a,__pyx_t_double_complex b)36964     static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_prod_double(__pyx_t_double_complex a, __pyx_t_double_complex b) {
36965         __pyx_t_double_complex z;
36966         z.real = a.real * b.real - a.imag * b.imag;
36967         z.imag = a.real * b.imag + a.imag * b.real;
36968         return z;
36969     }
36970     #if 1
__Pyx_c_quot_double(__pyx_t_double_complex a,__pyx_t_double_complex b)36971     static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_quot_double(__pyx_t_double_complex a, __pyx_t_double_complex b) {
36972         if (b.imag == 0) {
36973             return __pyx_t_double_complex_from_parts(a.real / b.real, a.imag / b.real);
36974         } else if (fabs(b.real) >= fabs(b.imag)) {
36975             if (b.real == 0 && b.imag == 0) {
36976                 return __pyx_t_double_complex_from_parts(a.real / b.real, a.imag / b.imag);
36977             } else {
36978                 double r = b.imag / b.real;
36979                 double s = (double)(1.0) / (b.real + b.imag * r);
36980                 return __pyx_t_double_complex_from_parts(
36981                     (a.real + a.imag * r) * s, (a.imag - a.real * r) * s);
36982             }
36983         } else {
36984             double r = b.real / b.imag;
36985             double s = (double)(1.0) / (b.imag + b.real * r);
36986             return __pyx_t_double_complex_from_parts(
36987                 (a.real * r + a.imag) * s, (a.imag * r - a.real) * s);
36988         }
36989     }
36990     #else
__Pyx_c_quot_double(__pyx_t_double_complex a,__pyx_t_double_complex b)36991     static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_quot_double(__pyx_t_double_complex a, __pyx_t_double_complex b) {
36992         if (b.imag == 0) {
36993             return __pyx_t_double_complex_from_parts(a.real / b.real, a.imag / b.real);
36994         } else {
36995             double denom = b.real * b.real + b.imag * b.imag;
36996             return __pyx_t_double_complex_from_parts(
36997                 (a.real * b.real + a.imag * b.imag) / denom,
36998                 (a.imag * b.real - a.real * b.imag) / denom);
36999         }
37000     }
37001     #endif
__Pyx_c_neg_double(__pyx_t_double_complex a)37002     static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_neg_double(__pyx_t_double_complex a) {
37003         __pyx_t_double_complex z;
37004         z.real = -a.real;
37005         z.imag = -a.imag;
37006         return z;
37007     }
__Pyx_c_is_zero_double(__pyx_t_double_complex a)37008     static CYTHON_INLINE int __Pyx_c_is_zero_double(__pyx_t_double_complex a) {
37009        return (a.real == 0) && (a.imag == 0);
37010     }
__Pyx_c_conj_double(__pyx_t_double_complex a)37011     static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_conj_double(__pyx_t_double_complex a) {
37012         __pyx_t_double_complex z;
37013         z.real =  a.real;
37014         z.imag = -a.imag;
37015         return z;
37016     }
37017     #if 1
__Pyx_c_abs_double(__pyx_t_double_complex z)37018         static CYTHON_INLINE double __Pyx_c_abs_double(__pyx_t_double_complex z) {
37019           #if !defined(HAVE_HYPOT) || defined(_MSC_VER)
37020             return sqrt(z.real*z.real + z.imag*z.imag);
37021           #else
37022             return hypot(z.real, z.imag);
37023           #endif
37024         }
__Pyx_c_pow_double(__pyx_t_double_complex a,__pyx_t_double_complex b)37025         static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_pow_double(__pyx_t_double_complex a, __pyx_t_double_complex b) {
37026             __pyx_t_double_complex z;
37027             double r, lnr, theta, z_r, z_theta;
37028             if (b.imag == 0 && b.real == (int)b.real) {
37029                 if (b.real < 0) {
37030                     double denom = a.real * a.real + a.imag * a.imag;
37031                     a.real = a.real / denom;
37032                     a.imag = -a.imag / denom;
37033                     b.real = -b.real;
37034                 }
37035                 switch ((int)b.real) {
37036                     case 0:
37037                         z.real = 1;
37038                         z.imag = 0;
37039                         return z;
37040                     case 1:
37041                         return a;
37042                     case 2:
37043                         z = __Pyx_c_prod_double(a, a);
37044                         return __Pyx_c_prod_double(a, a);
37045                     case 3:
37046                         z = __Pyx_c_prod_double(a, a);
37047                         return __Pyx_c_prod_double(z, a);
37048                     case 4:
37049                         z = __Pyx_c_prod_double(a, a);
37050                         return __Pyx_c_prod_double(z, z);
37051                 }
37052             }
37053             if (a.imag == 0) {
37054                 if (a.real == 0) {
37055                     return a;
37056                 } else if (b.imag == 0) {
37057                     z.real = pow(a.real, b.real);
37058                     z.imag = 0;
37059                     return z;
37060                 } else if (a.real > 0) {
37061                     r = a.real;
37062                     theta = 0;
37063                 } else {
37064                     r = -a.real;
37065                     theta = atan2(0.0, -1.0);
37066                 }
37067             } else {
37068                 r = __Pyx_c_abs_double(a);
37069                 theta = atan2(a.imag, a.real);
37070             }
37071             lnr = log(r);
37072             z_r = exp(lnr * b.real - theta * b.imag);
37073             z_theta = theta * b.real + lnr * b.imag;
37074             z.real = z_r * cos(z_theta);
37075             z.imag = z_r * sin(z_theta);
37076             return z;
37077         }
37078     #endif
37079 #endif
37080 
37081 /* CIntToPy */
__Pyx_PyInt_From_enum__NPY_TYPES(enum NPY_TYPES value)37082 static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__NPY_TYPES(enum NPY_TYPES value) {
37083     const enum NPY_TYPES neg_one = (enum NPY_TYPES) ((enum NPY_TYPES) 0 - (enum NPY_TYPES) 1), const_zero = (enum NPY_TYPES) 0;
37084     const int is_unsigned = neg_one > const_zero;
37085     if (is_unsigned) {
37086         if (sizeof(enum NPY_TYPES) < sizeof(long)) {
37087             return PyInt_FromLong((long) value);
37088         } else if (sizeof(enum NPY_TYPES) <= sizeof(unsigned long)) {
37089             return PyLong_FromUnsignedLong((unsigned long) value);
37090 #ifdef HAVE_LONG_LONG
37091         } else if (sizeof(enum NPY_TYPES) <= sizeof(unsigned PY_LONG_LONG)) {
37092             return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
37093 #endif
37094         }
37095     } else {
37096         if (sizeof(enum NPY_TYPES) <= sizeof(long)) {
37097             return PyInt_FromLong((long) value);
37098 #ifdef HAVE_LONG_LONG
37099         } else if (sizeof(enum NPY_TYPES) <= sizeof(PY_LONG_LONG)) {
37100             return PyLong_FromLongLong((PY_LONG_LONG) value);
37101 #endif
37102         }
37103     }
37104     {
37105         int one = 1; int little = (int)*(unsigned char *)&one;
37106         unsigned char *bytes = (unsigned char *)&value;
37107         return _PyLong_FromByteArray(bytes, sizeof(enum NPY_TYPES),
37108                                      little, !is_unsigned);
37109     }
37110 }
37111 
37112 /* CIntFromPy */
__Pyx_PyInt_As_hid_t(PyObject * x)37113 static CYTHON_INLINE hid_t __Pyx_PyInt_As_hid_t(PyObject *x) {
37114     const hid_t neg_one = (hid_t) ((hid_t) 0 - (hid_t) 1), const_zero = (hid_t) 0;
37115     const int is_unsigned = neg_one > const_zero;
37116 #if PY_MAJOR_VERSION < 3
37117     if (likely(PyInt_Check(x))) {
37118         if (sizeof(hid_t) < sizeof(long)) {
37119             __PYX_VERIFY_RETURN_INT(hid_t, long, PyInt_AS_LONG(x))
37120         } else {
37121             long val = PyInt_AS_LONG(x);
37122             if (is_unsigned && unlikely(val < 0)) {
37123                 goto raise_neg_overflow;
37124             }
37125             return (hid_t) val;
37126         }
37127     } else
37128 #endif
37129     if (likely(PyLong_Check(x))) {
37130         if (is_unsigned) {
37131 #if CYTHON_USE_PYLONG_INTERNALS
37132             const digit* digits = ((PyLongObject*)x)->ob_digit;
37133             switch (Py_SIZE(x)) {
37134                 case  0: return (hid_t) 0;
37135                 case  1: __PYX_VERIFY_RETURN_INT(hid_t, digit, digits[0])
37136                 case 2:
37137                     if (8 * sizeof(hid_t) > 1 * PyLong_SHIFT) {
37138                         if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
37139                             __PYX_VERIFY_RETURN_INT(hid_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
37140                         } else if (8 * sizeof(hid_t) >= 2 * PyLong_SHIFT) {
37141                             return (hid_t) (((((hid_t)digits[1]) << PyLong_SHIFT) | (hid_t)digits[0]));
37142                         }
37143                     }
37144                     break;
37145                 case 3:
37146                     if (8 * sizeof(hid_t) > 2 * PyLong_SHIFT) {
37147                         if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
37148                             __PYX_VERIFY_RETURN_INT(hid_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
37149                         } else if (8 * sizeof(hid_t) >= 3 * PyLong_SHIFT) {
37150                             return (hid_t) (((((((hid_t)digits[2]) << PyLong_SHIFT) | (hid_t)digits[1]) << PyLong_SHIFT) | (hid_t)digits[0]));
37151                         }
37152                     }
37153                     break;
37154                 case 4:
37155                     if (8 * sizeof(hid_t) > 3 * PyLong_SHIFT) {
37156                         if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
37157                             __PYX_VERIFY_RETURN_INT(hid_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])))
37158                         } else if (8 * sizeof(hid_t) >= 4 * PyLong_SHIFT) {
37159                             return (hid_t) (((((((((hid_t)digits[3]) << PyLong_SHIFT) | (hid_t)digits[2]) << PyLong_SHIFT) | (hid_t)digits[1]) << PyLong_SHIFT) | (hid_t)digits[0]));
37160                         }
37161                     }
37162                     break;
37163             }
37164 #endif
37165 #if CYTHON_COMPILING_IN_CPYTHON
37166             if (unlikely(Py_SIZE(x) < 0)) {
37167                 goto raise_neg_overflow;
37168             }
37169 #else
37170             {
37171                 int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
37172                 if (unlikely(result < 0))
37173                     return (hid_t) -1;
37174                 if (unlikely(result == 1))
37175                     goto raise_neg_overflow;
37176             }
37177 #endif
37178             if (sizeof(hid_t) <= sizeof(unsigned long)) {
37179                 __PYX_VERIFY_RETURN_INT_EXC(hid_t, unsigned long, PyLong_AsUnsignedLong(x))
37180 #ifdef HAVE_LONG_LONG
37181             } else if (sizeof(hid_t) <= sizeof(unsigned PY_LONG_LONG)) {
37182                 __PYX_VERIFY_RETURN_INT_EXC(hid_t, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
37183 #endif
37184             }
37185         } else {
37186 #if CYTHON_USE_PYLONG_INTERNALS
37187             const digit* digits = ((PyLongObject*)x)->ob_digit;
37188             switch (Py_SIZE(x)) {
37189                 case  0: return (hid_t) 0;
37190                 case -1: __PYX_VERIFY_RETURN_INT(hid_t, sdigit, (sdigit) (-(sdigit)digits[0]))
37191                 case  1: __PYX_VERIFY_RETURN_INT(hid_t,  digit, +digits[0])
37192                 case -2:
37193                     if (8 * sizeof(hid_t) - 1 > 1 * PyLong_SHIFT) {
37194                         if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
37195                             __PYX_VERIFY_RETURN_INT(hid_t, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
37196                         } else if (8 * sizeof(hid_t) - 1 > 2 * PyLong_SHIFT) {
37197                             return (hid_t) (((hid_t)-1)*(((((hid_t)digits[1]) << PyLong_SHIFT) | (hid_t)digits[0])));
37198                         }
37199                     }
37200                     break;
37201                 case 2:
37202                     if (8 * sizeof(hid_t) > 1 * PyLong_SHIFT) {
37203                         if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
37204                             __PYX_VERIFY_RETURN_INT(hid_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
37205                         } else if (8 * sizeof(hid_t) - 1 > 2 * PyLong_SHIFT) {
37206                             return (hid_t) ((((((hid_t)digits[1]) << PyLong_SHIFT) | (hid_t)digits[0])));
37207                         }
37208                     }
37209                     break;
37210                 case -3:
37211                     if (8 * sizeof(hid_t) - 1 > 2 * PyLong_SHIFT) {
37212                         if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
37213                             __PYX_VERIFY_RETURN_INT(hid_t, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
37214                         } else if (8 * sizeof(hid_t) - 1 > 3 * PyLong_SHIFT) {
37215                             return (hid_t) (((hid_t)-1)*(((((((hid_t)digits[2]) << PyLong_SHIFT) | (hid_t)digits[1]) << PyLong_SHIFT) | (hid_t)digits[0])));
37216                         }
37217                     }
37218                     break;
37219                 case 3:
37220                     if (8 * sizeof(hid_t) > 2 * PyLong_SHIFT) {
37221                         if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
37222                             __PYX_VERIFY_RETURN_INT(hid_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
37223                         } else if (8 * sizeof(hid_t) - 1 > 3 * PyLong_SHIFT) {
37224                             return (hid_t) ((((((((hid_t)digits[2]) << PyLong_SHIFT) | (hid_t)digits[1]) << PyLong_SHIFT) | (hid_t)digits[0])));
37225                         }
37226                     }
37227                     break;
37228                 case -4:
37229                     if (8 * sizeof(hid_t) - 1 > 3 * PyLong_SHIFT) {
37230                         if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
37231                             __PYX_VERIFY_RETURN_INT(hid_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])))
37232                         } else if (8 * sizeof(hid_t) - 1 > 4 * PyLong_SHIFT) {
37233                             return (hid_t) (((hid_t)-1)*(((((((((hid_t)digits[3]) << PyLong_SHIFT) | (hid_t)digits[2]) << PyLong_SHIFT) | (hid_t)digits[1]) << PyLong_SHIFT) | (hid_t)digits[0])));
37234                         }
37235                     }
37236                     break;
37237                 case 4:
37238                     if (8 * sizeof(hid_t) > 3 * PyLong_SHIFT) {
37239                         if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
37240                             __PYX_VERIFY_RETURN_INT(hid_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])))
37241                         } else if (8 * sizeof(hid_t) - 1 > 4 * PyLong_SHIFT) {
37242                             return (hid_t) ((((((((((hid_t)digits[3]) << PyLong_SHIFT) | (hid_t)digits[2]) << PyLong_SHIFT) | (hid_t)digits[1]) << PyLong_SHIFT) | (hid_t)digits[0])));
37243                         }
37244                     }
37245                     break;
37246             }
37247 #endif
37248             if (sizeof(hid_t) <= sizeof(long)) {
37249                 __PYX_VERIFY_RETURN_INT_EXC(hid_t, long, PyLong_AsLong(x))
37250 #ifdef HAVE_LONG_LONG
37251             } else if (sizeof(hid_t) <= sizeof(PY_LONG_LONG)) {
37252                 __PYX_VERIFY_RETURN_INT_EXC(hid_t, PY_LONG_LONG, PyLong_AsLongLong(x))
37253 #endif
37254             }
37255         }
37256         {
37257 #if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
37258             PyErr_SetString(PyExc_RuntimeError,
37259                             "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
37260 #else
37261             hid_t val;
37262             PyObject *v = __Pyx_PyNumber_IntOrLong(x);
37263  #if PY_MAJOR_VERSION < 3
37264             if (likely(v) && !PyLong_Check(v)) {
37265                 PyObject *tmp = v;
37266                 v = PyNumber_Long(tmp);
37267                 Py_DECREF(tmp);
37268             }
37269  #endif
37270             if (likely(v)) {
37271                 int one = 1; int is_little = (int)*(unsigned char *)&one;
37272                 unsigned char *bytes = (unsigned char *)&val;
37273                 int ret = _PyLong_AsByteArray((PyLongObject *)v,
37274                                               bytes, sizeof(val),
37275                                               is_little, !is_unsigned);
37276                 Py_DECREF(v);
37277                 if (likely(!ret))
37278                     return val;
37279             }
37280 #endif
37281             return (hid_t) -1;
37282         }
37283     } else {
37284         hid_t val;
37285         PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
37286         if (!tmp) return (hid_t) -1;
37287         val = __Pyx_PyInt_As_hid_t(tmp);
37288         Py_DECREF(tmp);
37289         return val;
37290     }
37291 raise_overflow:
37292     PyErr_SetString(PyExc_OverflowError,
37293         "value too large to convert to hid_t");
37294     return (hid_t) -1;
37295 raise_neg_overflow:
37296     PyErr_SetString(PyExc_OverflowError,
37297         "can't convert negative value to hid_t");
37298     return (hid_t) -1;
37299 }
37300 
37301 /* CIntFromPy */
__Pyx_PyInt_As_hsize_t(PyObject * x)37302 static CYTHON_INLINE hsize_t __Pyx_PyInt_As_hsize_t(PyObject *x) {
37303     const hsize_t neg_one = (hsize_t) ((hsize_t) 0 - (hsize_t) 1), const_zero = (hsize_t) 0;
37304     const int is_unsigned = neg_one > const_zero;
37305 #if PY_MAJOR_VERSION < 3
37306     if (likely(PyInt_Check(x))) {
37307         if (sizeof(hsize_t) < sizeof(long)) {
37308             __PYX_VERIFY_RETURN_INT(hsize_t, long, PyInt_AS_LONG(x))
37309         } else {
37310             long val = PyInt_AS_LONG(x);
37311             if (is_unsigned && unlikely(val < 0)) {
37312                 goto raise_neg_overflow;
37313             }
37314             return (hsize_t) val;
37315         }
37316     } else
37317 #endif
37318     if (likely(PyLong_Check(x))) {
37319         if (is_unsigned) {
37320 #if CYTHON_USE_PYLONG_INTERNALS
37321             const digit* digits = ((PyLongObject*)x)->ob_digit;
37322             switch (Py_SIZE(x)) {
37323                 case  0: return (hsize_t) 0;
37324                 case  1: __PYX_VERIFY_RETURN_INT(hsize_t, digit, digits[0])
37325                 case 2:
37326                     if (8 * sizeof(hsize_t) > 1 * PyLong_SHIFT) {
37327                         if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
37328                             __PYX_VERIFY_RETURN_INT(hsize_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
37329                         } else if (8 * sizeof(hsize_t) >= 2 * PyLong_SHIFT) {
37330                             return (hsize_t) (((((hsize_t)digits[1]) << PyLong_SHIFT) | (hsize_t)digits[0]));
37331                         }
37332                     }
37333                     break;
37334                 case 3:
37335                     if (8 * sizeof(hsize_t) > 2 * PyLong_SHIFT) {
37336                         if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
37337                             __PYX_VERIFY_RETURN_INT(hsize_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
37338                         } else if (8 * sizeof(hsize_t) >= 3 * PyLong_SHIFT) {
37339                             return (hsize_t) (((((((hsize_t)digits[2]) << PyLong_SHIFT) | (hsize_t)digits[1]) << PyLong_SHIFT) | (hsize_t)digits[0]));
37340                         }
37341                     }
37342                     break;
37343                 case 4:
37344                     if (8 * sizeof(hsize_t) > 3 * PyLong_SHIFT) {
37345                         if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
37346                             __PYX_VERIFY_RETURN_INT(hsize_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])))
37347                         } else if (8 * sizeof(hsize_t) >= 4 * PyLong_SHIFT) {
37348                             return (hsize_t) (((((((((hsize_t)digits[3]) << PyLong_SHIFT) | (hsize_t)digits[2]) << PyLong_SHIFT) | (hsize_t)digits[1]) << PyLong_SHIFT) | (hsize_t)digits[0]));
37349                         }
37350                     }
37351                     break;
37352             }
37353 #endif
37354 #if CYTHON_COMPILING_IN_CPYTHON
37355             if (unlikely(Py_SIZE(x) < 0)) {
37356                 goto raise_neg_overflow;
37357             }
37358 #else
37359             {
37360                 int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
37361                 if (unlikely(result < 0))
37362                     return (hsize_t) -1;
37363                 if (unlikely(result == 1))
37364                     goto raise_neg_overflow;
37365             }
37366 #endif
37367             if (sizeof(hsize_t) <= sizeof(unsigned long)) {
37368                 __PYX_VERIFY_RETURN_INT_EXC(hsize_t, unsigned long, PyLong_AsUnsignedLong(x))
37369 #ifdef HAVE_LONG_LONG
37370             } else if (sizeof(hsize_t) <= sizeof(unsigned PY_LONG_LONG)) {
37371                 __PYX_VERIFY_RETURN_INT_EXC(hsize_t, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
37372 #endif
37373             }
37374         } else {
37375 #if CYTHON_USE_PYLONG_INTERNALS
37376             const digit* digits = ((PyLongObject*)x)->ob_digit;
37377             switch (Py_SIZE(x)) {
37378                 case  0: return (hsize_t) 0;
37379                 case -1: __PYX_VERIFY_RETURN_INT(hsize_t, sdigit, (sdigit) (-(sdigit)digits[0]))
37380                 case  1: __PYX_VERIFY_RETURN_INT(hsize_t,  digit, +digits[0])
37381                 case -2:
37382                     if (8 * sizeof(hsize_t) - 1 > 1 * PyLong_SHIFT) {
37383                         if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
37384                             __PYX_VERIFY_RETURN_INT(hsize_t, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
37385                         } else if (8 * sizeof(hsize_t) - 1 > 2 * PyLong_SHIFT) {
37386                             return (hsize_t) (((hsize_t)-1)*(((((hsize_t)digits[1]) << PyLong_SHIFT) | (hsize_t)digits[0])));
37387                         }
37388                     }
37389                     break;
37390                 case 2:
37391                     if (8 * sizeof(hsize_t) > 1 * PyLong_SHIFT) {
37392                         if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
37393                             __PYX_VERIFY_RETURN_INT(hsize_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
37394                         } else if (8 * sizeof(hsize_t) - 1 > 2 * PyLong_SHIFT) {
37395                             return (hsize_t) ((((((hsize_t)digits[1]) << PyLong_SHIFT) | (hsize_t)digits[0])));
37396                         }
37397                     }
37398                     break;
37399                 case -3:
37400                     if (8 * sizeof(hsize_t) - 1 > 2 * PyLong_SHIFT) {
37401                         if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
37402                             __PYX_VERIFY_RETURN_INT(hsize_t, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
37403                         } else if (8 * sizeof(hsize_t) - 1 > 3 * PyLong_SHIFT) {
37404                             return (hsize_t) (((hsize_t)-1)*(((((((hsize_t)digits[2]) << PyLong_SHIFT) | (hsize_t)digits[1]) << PyLong_SHIFT) | (hsize_t)digits[0])));
37405                         }
37406                     }
37407                     break;
37408                 case 3:
37409                     if (8 * sizeof(hsize_t) > 2 * PyLong_SHIFT) {
37410                         if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
37411                             __PYX_VERIFY_RETURN_INT(hsize_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
37412                         } else if (8 * sizeof(hsize_t) - 1 > 3 * PyLong_SHIFT) {
37413                             return (hsize_t) ((((((((hsize_t)digits[2]) << PyLong_SHIFT) | (hsize_t)digits[1]) << PyLong_SHIFT) | (hsize_t)digits[0])));
37414                         }
37415                     }
37416                     break;
37417                 case -4:
37418                     if (8 * sizeof(hsize_t) - 1 > 3 * PyLong_SHIFT) {
37419                         if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
37420                             __PYX_VERIFY_RETURN_INT(hsize_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])))
37421                         } else if (8 * sizeof(hsize_t) - 1 > 4 * PyLong_SHIFT) {
37422                             return (hsize_t) (((hsize_t)-1)*(((((((((hsize_t)digits[3]) << PyLong_SHIFT) | (hsize_t)digits[2]) << PyLong_SHIFT) | (hsize_t)digits[1]) << PyLong_SHIFT) | (hsize_t)digits[0])));
37423                         }
37424                     }
37425                     break;
37426                 case 4:
37427                     if (8 * sizeof(hsize_t) > 3 * PyLong_SHIFT) {
37428                         if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
37429                             __PYX_VERIFY_RETURN_INT(hsize_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])))
37430                         } else if (8 * sizeof(hsize_t) - 1 > 4 * PyLong_SHIFT) {
37431                             return (hsize_t) ((((((((((hsize_t)digits[3]) << PyLong_SHIFT) | (hsize_t)digits[2]) << PyLong_SHIFT) | (hsize_t)digits[1]) << PyLong_SHIFT) | (hsize_t)digits[0])));
37432                         }
37433                     }
37434                     break;
37435             }
37436 #endif
37437             if (sizeof(hsize_t) <= sizeof(long)) {
37438                 __PYX_VERIFY_RETURN_INT_EXC(hsize_t, long, PyLong_AsLong(x))
37439 #ifdef HAVE_LONG_LONG
37440             } else if (sizeof(hsize_t) <= sizeof(PY_LONG_LONG)) {
37441                 __PYX_VERIFY_RETURN_INT_EXC(hsize_t, PY_LONG_LONG, PyLong_AsLongLong(x))
37442 #endif
37443             }
37444         }
37445         {
37446 #if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
37447             PyErr_SetString(PyExc_RuntimeError,
37448                             "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
37449 #else
37450             hsize_t val;
37451             PyObject *v = __Pyx_PyNumber_IntOrLong(x);
37452  #if PY_MAJOR_VERSION < 3
37453             if (likely(v) && !PyLong_Check(v)) {
37454                 PyObject *tmp = v;
37455                 v = PyNumber_Long(tmp);
37456                 Py_DECREF(tmp);
37457             }
37458  #endif
37459             if (likely(v)) {
37460                 int one = 1; int is_little = (int)*(unsigned char *)&one;
37461                 unsigned char *bytes = (unsigned char *)&val;
37462                 int ret = _PyLong_AsByteArray((PyLongObject *)v,
37463                                               bytes, sizeof(val),
37464                                               is_little, !is_unsigned);
37465                 Py_DECREF(v);
37466                 if (likely(!ret))
37467                     return val;
37468             }
37469 #endif
37470             return (hsize_t) -1;
37471         }
37472     } else {
37473         hsize_t val;
37474         PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
37475         if (!tmp) return (hsize_t) -1;
37476         val = __Pyx_PyInt_As_hsize_t(tmp);
37477         Py_DECREF(tmp);
37478         return val;
37479     }
37480 raise_overflow:
37481     PyErr_SetString(PyExc_OverflowError,
37482         "value too large to convert to hsize_t");
37483     return (hsize_t) -1;
37484 raise_neg_overflow:
37485     PyErr_SetString(PyExc_OverflowError,
37486         "can't convert negative value to hsize_t");
37487     return (hsize_t) -1;
37488 }
37489 
37490 /* CIntFromPy */
__Pyx_PyInt_As_int(PyObject * x)37491 static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) {
37492     const int neg_one = (int) ((int) 0 - (int) 1), const_zero = (int) 0;
37493     const int is_unsigned = neg_one > const_zero;
37494 #if PY_MAJOR_VERSION < 3
37495     if (likely(PyInt_Check(x))) {
37496         if (sizeof(int) < sizeof(long)) {
37497             __PYX_VERIFY_RETURN_INT(int, long, PyInt_AS_LONG(x))
37498         } else {
37499             long val = PyInt_AS_LONG(x);
37500             if (is_unsigned && unlikely(val < 0)) {
37501                 goto raise_neg_overflow;
37502             }
37503             return (int) val;
37504         }
37505     } else
37506 #endif
37507     if (likely(PyLong_Check(x))) {
37508         if (is_unsigned) {
37509 #if CYTHON_USE_PYLONG_INTERNALS
37510             const digit* digits = ((PyLongObject*)x)->ob_digit;
37511             switch (Py_SIZE(x)) {
37512                 case  0: return (int) 0;
37513                 case  1: __PYX_VERIFY_RETURN_INT(int, digit, digits[0])
37514                 case 2:
37515                     if (8 * sizeof(int) > 1 * PyLong_SHIFT) {
37516                         if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
37517                             __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
37518                         } else if (8 * sizeof(int) >= 2 * PyLong_SHIFT) {
37519                             return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
37520                         }
37521                     }
37522                     break;
37523                 case 3:
37524                     if (8 * sizeof(int) > 2 * PyLong_SHIFT) {
37525                         if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
37526                             __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
37527                         } else if (8 * sizeof(int) >= 3 * PyLong_SHIFT) {
37528                             return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
37529                         }
37530                     }
37531                     break;
37532                 case 4:
37533                     if (8 * sizeof(int) > 3 * PyLong_SHIFT) {
37534                         if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
37535                             __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])))
37536                         } else if (8 * sizeof(int) >= 4 * PyLong_SHIFT) {
37537                             return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
37538                         }
37539                     }
37540                     break;
37541             }
37542 #endif
37543 #if CYTHON_COMPILING_IN_CPYTHON
37544             if (unlikely(Py_SIZE(x) < 0)) {
37545                 goto raise_neg_overflow;
37546             }
37547 #else
37548             {
37549                 int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
37550                 if (unlikely(result < 0))
37551                     return (int) -1;
37552                 if (unlikely(result == 1))
37553                     goto raise_neg_overflow;
37554             }
37555 #endif
37556             if (sizeof(int) <= sizeof(unsigned long)) {
37557                 __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x))
37558 #ifdef HAVE_LONG_LONG
37559             } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) {
37560                 __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
37561 #endif
37562             }
37563         } else {
37564 #if CYTHON_USE_PYLONG_INTERNALS
37565             const digit* digits = ((PyLongObject*)x)->ob_digit;
37566             switch (Py_SIZE(x)) {
37567                 case  0: return (int) 0;
37568                 case -1: __PYX_VERIFY_RETURN_INT(int, sdigit, (sdigit) (-(sdigit)digits[0]))
37569                 case  1: __PYX_VERIFY_RETURN_INT(int,  digit, +digits[0])
37570                 case -2:
37571                     if (8 * sizeof(int) - 1 > 1 * PyLong_SHIFT) {
37572                         if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
37573                             __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
37574                         } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) {
37575                             return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
37576                         }
37577                     }
37578                     break;
37579                 case 2:
37580                     if (8 * sizeof(int) > 1 * PyLong_SHIFT) {
37581                         if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
37582                             __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
37583                         } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) {
37584                             return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
37585                         }
37586                     }
37587                     break;
37588                 case -3:
37589                     if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) {
37590                         if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
37591                             __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
37592                         } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) {
37593                             return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
37594                         }
37595                     }
37596                     break;
37597                 case 3:
37598                     if (8 * sizeof(int) > 2 * PyLong_SHIFT) {
37599                         if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
37600                             __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
37601                         } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) {
37602                             return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
37603                         }
37604                     }
37605                     break;
37606                 case -4:
37607                     if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) {
37608                         if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
37609                             __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])))
37610                         } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) {
37611                             return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
37612                         }
37613                     }
37614                     break;
37615                 case 4:
37616                     if (8 * sizeof(int) > 3 * PyLong_SHIFT) {
37617                         if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
37618                             __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])))
37619                         } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) {
37620                             return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
37621                         }
37622                     }
37623                     break;
37624             }
37625 #endif
37626             if (sizeof(int) <= sizeof(long)) {
37627                 __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x))
37628 #ifdef HAVE_LONG_LONG
37629             } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) {
37630                 __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x))
37631 #endif
37632             }
37633         }
37634         {
37635 #if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
37636             PyErr_SetString(PyExc_RuntimeError,
37637                             "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
37638 #else
37639             int val;
37640             PyObject *v = __Pyx_PyNumber_IntOrLong(x);
37641  #if PY_MAJOR_VERSION < 3
37642             if (likely(v) && !PyLong_Check(v)) {
37643                 PyObject *tmp = v;
37644                 v = PyNumber_Long(tmp);
37645                 Py_DECREF(tmp);
37646             }
37647  #endif
37648             if (likely(v)) {
37649                 int one = 1; int is_little = (int)*(unsigned char *)&one;
37650                 unsigned char *bytes = (unsigned char *)&val;
37651                 int ret = _PyLong_AsByteArray((PyLongObject *)v,
37652                                               bytes, sizeof(val),
37653                                               is_little, !is_unsigned);
37654                 Py_DECREF(v);
37655                 if (likely(!ret))
37656                     return val;
37657             }
37658 #endif
37659             return (int) -1;
37660         }
37661     } else {
37662         int val;
37663         PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
37664         if (!tmp) return (int) -1;
37665         val = __Pyx_PyInt_As_int(tmp);
37666         Py_DECREF(tmp);
37667         return val;
37668     }
37669 raise_overflow:
37670     PyErr_SetString(PyExc_OverflowError,
37671         "value too large to convert to int");
37672     return (int) -1;
37673 raise_neg_overflow:
37674     PyErr_SetString(PyExc_OverflowError,
37675         "can't convert negative value to int");
37676     return (int) -1;
37677 }
37678 
37679 /* CIntFromPy */
__Pyx_PyInt_As_long(PyObject * x)37680 static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) {
37681     const long neg_one = (long) ((long) 0 - (long) 1), const_zero = (long) 0;
37682     const int is_unsigned = neg_one > const_zero;
37683 #if PY_MAJOR_VERSION < 3
37684     if (likely(PyInt_Check(x))) {
37685         if (sizeof(long) < sizeof(long)) {
37686             __PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG(x))
37687         } else {
37688             long val = PyInt_AS_LONG(x);
37689             if (is_unsigned && unlikely(val < 0)) {
37690                 goto raise_neg_overflow;
37691             }
37692             return (long) val;
37693         }
37694     } else
37695 #endif
37696     if (likely(PyLong_Check(x))) {
37697         if (is_unsigned) {
37698 #if CYTHON_USE_PYLONG_INTERNALS
37699             const digit* digits = ((PyLongObject*)x)->ob_digit;
37700             switch (Py_SIZE(x)) {
37701                 case  0: return (long) 0;
37702                 case  1: __PYX_VERIFY_RETURN_INT(long, digit, digits[0])
37703                 case 2:
37704                     if (8 * sizeof(long) > 1 * PyLong_SHIFT) {
37705                         if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
37706                             __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
37707                         } else if (8 * sizeof(long) >= 2 * PyLong_SHIFT) {
37708                             return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
37709                         }
37710                     }
37711                     break;
37712                 case 3:
37713                     if (8 * sizeof(long) > 2 * PyLong_SHIFT) {
37714                         if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
37715                             __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
37716                         } else if (8 * sizeof(long) >= 3 * PyLong_SHIFT) {
37717                             return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
37718                         }
37719                     }
37720                     break;
37721                 case 4:
37722                     if (8 * sizeof(long) > 3 * PyLong_SHIFT) {
37723                         if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
37724                             __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])))
37725                         } else if (8 * sizeof(long) >= 4 * PyLong_SHIFT) {
37726                             return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
37727                         }
37728                     }
37729                     break;
37730             }
37731 #endif
37732 #if CYTHON_COMPILING_IN_CPYTHON
37733             if (unlikely(Py_SIZE(x) < 0)) {
37734                 goto raise_neg_overflow;
37735             }
37736 #else
37737             {
37738                 int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
37739                 if (unlikely(result < 0))
37740                     return (long) -1;
37741                 if (unlikely(result == 1))
37742                     goto raise_neg_overflow;
37743             }
37744 #endif
37745             if (sizeof(long) <= sizeof(unsigned long)) {
37746                 __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x))
37747 #ifdef HAVE_LONG_LONG
37748             } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) {
37749                 __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
37750 #endif
37751             }
37752         } else {
37753 #if CYTHON_USE_PYLONG_INTERNALS
37754             const digit* digits = ((PyLongObject*)x)->ob_digit;
37755             switch (Py_SIZE(x)) {
37756                 case  0: return (long) 0;
37757                 case -1: __PYX_VERIFY_RETURN_INT(long, sdigit, (sdigit) (-(sdigit)digits[0]))
37758                 case  1: __PYX_VERIFY_RETURN_INT(long,  digit, +digits[0])
37759                 case -2:
37760                     if (8 * sizeof(long) - 1 > 1 * PyLong_SHIFT) {
37761                         if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
37762                             __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
37763                         } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
37764                             return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
37765                         }
37766                     }
37767                     break;
37768                 case 2:
37769                     if (8 * sizeof(long) > 1 * PyLong_SHIFT) {
37770                         if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
37771                             __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
37772                         } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
37773                             return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
37774                         }
37775                     }
37776                     break;
37777                 case -3:
37778                     if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
37779                         if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
37780                             __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
37781                         } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
37782                             return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
37783                         }
37784                     }
37785                     break;
37786                 case 3:
37787                     if (8 * sizeof(long) > 2 * PyLong_SHIFT) {
37788                         if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
37789                             __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
37790                         } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
37791                             return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
37792                         }
37793                     }
37794                     break;
37795                 case -4:
37796                     if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
37797                         if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
37798                             __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])))
37799                         } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
37800                             return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
37801                         }
37802                     }
37803                     break;
37804                 case 4:
37805                     if (8 * sizeof(long) > 3 * PyLong_SHIFT) {
37806                         if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
37807                             __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])))
37808                         } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
37809                             return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
37810                         }
37811                     }
37812                     break;
37813             }
37814 #endif
37815             if (sizeof(long) <= sizeof(long)) {
37816                 __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x))
37817 #ifdef HAVE_LONG_LONG
37818             } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) {
37819                 __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x))
37820 #endif
37821             }
37822         }
37823         {
37824 #if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
37825             PyErr_SetString(PyExc_RuntimeError,
37826                             "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
37827 #else
37828             long val;
37829             PyObject *v = __Pyx_PyNumber_IntOrLong(x);
37830  #if PY_MAJOR_VERSION < 3
37831             if (likely(v) && !PyLong_Check(v)) {
37832                 PyObject *tmp = v;
37833                 v = PyNumber_Long(tmp);
37834                 Py_DECREF(tmp);
37835             }
37836  #endif
37837             if (likely(v)) {
37838                 int one = 1; int is_little = (int)*(unsigned char *)&one;
37839                 unsigned char *bytes = (unsigned char *)&val;
37840                 int ret = _PyLong_AsByteArray((PyLongObject *)v,
37841                                               bytes, sizeof(val),
37842                                               is_little, !is_unsigned);
37843                 Py_DECREF(v);
37844                 if (likely(!ret))
37845                     return val;
37846             }
37847 #endif
37848             return (long) -1;
37849         }
37850     } else {
37851         long val;
37852         PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
37853         if (!tmp) return (long) -1;
37854         val = __Pyx_PyInt_As_long(tmp);
37855         Py_DECREF(tmp);
37856         return val;
37857     }
37858 raise_overflow:
37859     PyErr_SetString(PyExc_OverflowError,
37860         "value too large to convert to long");
37861     return (long) -1;
37862 raise_neg_overflow:
37863     PyErr_SetString(PyExc_OverflowError,
37864         "can't convert negative value to long");
37865     return (long) -1;
37866 }
37867 
37868 /* CIntFromPy */
__Pyx_PyInt_As_size_t(PyObject * x)37869 static CYTHON_INLINE size_t __Pyx_PyInt_As_size_t(PyObject *x) {
37870     const size_t neg_one = (size_t) ((size_t) 0 - (size_t) 1), const_zero = (size_t) 0;
37871     const int is_unsigned = neg_one > const_zero;
37872 #if PY_MAJOR_VERSION < 3
37873     if (likely(PyInt_Check(x))) {
37874         if (sizeof(size_t) < sizeof(long)) {
37875             __PYX_VERIFY_RETURN_INT(size_t, long, PyInt_AS_LONG(x))
37876         } else {
37877             long val = PyInt_AS_LONG(x);
37878             if (is_unsigned && unlikely(val < 0)) {
37879                 goto raise_neg_overflow;
37880             }
37881             return (size_t) val;
37882         }
37883     } else
37884 #endif
37885     if (likely(PyLong_Check(x))) {
37886         if (is_unsigned) {
37887 #if CYTHON_USE_PYLONG_INTERNALS
37888             const digit* digits = ((PyLongObject*)x)->ob_digit;
37889             switch (Py_SIZE(x)) {
37890                 case  0: return (size_t) 0;
37891                 case  1: __PYX_VERIFY_RETURN_INT(size_t, digit, digits[0])
37892                 case 2:
37893                     if (8 * sizeof(size_t) > 1 * PyLong_SHIFT) {
37894                         if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
37895                             __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
37896                         } else if (8 * sizeof(size_t) >= 2 * PyLong_SHIFT) {
37897                             return (size_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
37898                         }
37899                     }
37900                     break;
37901                 case 3:
37902                     if (8 * sizeof(size_t) > 2 * PyLong_SHIFT) {
37903                         if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
37904                             __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
37905                         } else if (8 * sizeof(size_t) >= 3 * PyLong_SHIFT) {
37906                             return (size_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
37907                         }
37908                     }
37909                     break;
37910                 case 4:
37911                     if (8 * sizeof(size_t) > 3 * PyLong_SHIFT) {
37912                         if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
37913                             __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])))
37914                         } else if (8 * sizeof(size_t) >= 4 * PyLong_SHIFT) {
37915                             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]));
37916                         }
37917                     }
37918                     break;
37919             }
37920 #endif
37921 #if CYTHON_COMPILING_IN_CPYTHON
37922             if (unlikely(Py_SIZE(x) < 0)) {
37923                 goto raise_neg_overflow;
37924             }
37925 #else
37926             {
37927                 int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
37928                 if (unlikely(result < 0))
37929                     return (size_t) -1;
37930                 if (unlikely(result == 1))
37931                     goto raise_neg_overflow;
37932             }
37933 #endif
37934             if (sizeof(size_t) <= sizeof(unsigned long)) {
37935                 __PYX_VERIFY_RETURN_INT_EXC(size_t, unsigned long, PyLong_AsUnsignedLong(x))
37936 #ifdef HAVE_LONG_LONG
37937             } else if (sizeof(size_t) <= sizeof(unsigned PY_LONG_LONG)) {
37938                 __PYX_VERIFY_RETURN_INT_EXC(size_t, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
37939 #endif
37940             }
37941         } else {
37942 #if CYTHON_USE_PYLONG_INTERNALS
37943             const digit* digits = ((PyLongObject*)x)->ob_digit;
37944             switch (Py_SIZE(x)) {
37945                 case  0: return (size_t) 0;
37946                 case -1: __PYX_VERIFY_RETURN_INT(size_t, sdigit, (sdigit) (-(sdigit)digits[0]))
37947                 case  1: __PYX_VERIFY_RETURN_INT(size_t,  digit, +digits[0])
37948                 case -2:
37949                     if (8 * sizeof(size_t) - 1 > 1 * PyLong_SHIFT) {
37950                         if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
37951                             __PYX_VERIFY_RETURN_INT(size_t, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
37952                         } else if (8 * sizeof(size_t) - 1 > 2 * PyLong_SHIFT) {
37953                             return (size_t) (((size_t)-1)*(((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])));
37954                         }
37955                     }
37956                     break;
37957                 case 2:
37958                     if (8 * sizeof(size_t) > 1 * PyLong_SHIFT) {
37959                         if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
37960                             __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
37961                         } else if (8 * sizeof(size_t) - 1 > 2 * PyLong_SHIFT) {
37962                             return (size_t) ((((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])));
37963                         }
37964                     }
37965                     break;
37966                 case -3:
37967                     if (8 * sizeof(size_t) - 1 > 2 * PyLong_SHIFT) {
37968                         if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
37969                             __PYX_VERIFY_RETURN_INT(size_t, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
37970                         } else if (8 * sizeof(size_t) - 1 > 3 * PyLong_SHIFT) {
37971                             return (size_t) (((size_t)-1)*(((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])));
37972                         }
37973                     }
37974                     break;
37975                 case 3:
37976                     if (8 * sizeof(size_t) > 2 * PyLong_SHIFT) {
37977                         if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
37978                             __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
37979                         } else if (8 * sizeof(size_t) - 1 > 3 * PyLong_SHIFT) {
37980                             return (size_t) ((((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])));
37981                         }
37982                     }
37983                     break;
37984                 case -4:
37985                     if (8 * sizeof(size_t) - 1 > 3 * PyLong_SHIFT) {
37986                         if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
37987                             __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])))
37988                         } else if (8 * sizeof(size_t) - 1 > 4 * PyLong_SHIFT) {
37989                             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])));
37990                         }
37991                     }
37992                     break;
37993                 case 4:
37994                     if (8 * sizeof(size_t) > 3 * PyLong_SHIFT) {
37995                         if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
37996                             __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])))
37997                         } else if (8 * sizeof(size_t) - 1 > 4 * PyLong_SHIFT) {
37998                             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])));
37999                         }
38000                     }
38001                     break;
38002             }
38003 #endif
38004             if (sizeof(size_t) <= sizeof(long)) {
38005                 __PYX_VERIFY_RETURN_INT_EXC(size_t, long, PyLong_AsLong(x))
38006 #ifdef HAVE_LONG_LONG
38007             } else if (sizeof(size_t) <= sizeof(PY_LONG_LONG)) {
38008                 __PYX_VERIFY_RETURN_INT_EXC(size_t, PY_LONG_LONG, PyLong_AsLongLong(x))
38009 #endif
38010             }
38011         }
38012         {
38013 #if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
38014             PyErr_SetString(PyExc_RuntimeError,
38015                             "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
38016 #else
38017             size_t val;
38018             PyObject *v = __Pyx_PyNumber_IntOrLong(x);
38019  #if PY_MAJOR_VERSION < 3
38020             if (likely(v) && !PyLong_Check(v)) {
38021                 PyObject *tmp = v;
38022                 v = PyNumber_Long(tmp);
38023                 Py_DECREF(tmp);
38024             }
38025  #endif
38026             if (likely(v)) {
38027                 int one = 1; int is_little = (int)*(unsigned char *)&one;
38028                 unsigned char *bytes = (unsigned char *)&val;
38029                 int ret = _PyLong_AsByteArray((PyLongObject *)v,
38030                                               bytes, sizeof(val),
38031                                               is_little, !is_unsigned);
38032                 Py_DECREF(v);
38033                 if (likely(!ret))
38034                     return val;
38035             }
38036 #endif
38037             return (size_t) -1;
38038         }
38039     } else {
38040         size_t val;
38041         PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
38042         if (!tmp) return (size_t) -1;
38043         val = __Pyx_PyInt_As_size_t(tmp);
38044         Py_DECREF(tmp);
38045         return val;
38046     }
38047 raise_overflow:
38048     PyErr_SetString(PyExc_OverflowError,
38049         "value too large to convert to size_t");
38050     return (size_t) -1;
38051 raise_neg_overflow:
38052     PyErr_SetString(PyExc_OverflowError,
38053         "can't convert negative value to size_t");
38054     return (size_t) -1;
38055 }
38056 
38057 /* CIntFromPy */
__Pyx_PyInt_As_hbool_t(PyObject * x)38058 static CYTHON_INLINE hbool_t __Pyx_PyInt_As_hbool_t(PyObject *x) {
38059     const hbool_t neg_one = (hbool_t) ((hbool_t) 0 - (hbool_t) 1), const_zero = (hbool_t) 0;
38060     const int is_unsigned = neg_one > const_zero;
38061 #if PY_MAJOR_VERSION < 3
38062     if (likely(PyInt_Check(x))) {
38063         if (sizeof(hbool_t) < sizeof(long)) {
38064             __PYX_VERIFY_RETURN_INT(hbool_t, long, PyInt_AS_LONG(x))
38065         } else {
38066             long val = PyInt_AS_LONG(x);
38067             if (is_unsigned && unlikely(val < 0)) {
38068                 goto raise_neg_overflow;
38069             }
38070             return (hbool_t) val;
38071         }
38072     } else
38073 #endif
38074     if (likely(PyLong_Check(x))) {
38075         if (is_unsigned) {
38076 #if CYTHON_USE_PYLONG_INTERNALS
38077             const digit* digits = ((PyLongObject*)x)->ob_digit;
38078             switch (Py_SIZE(x)) {
38079                 case  0: return (hbool_t) 0;
38080                 case  1: __PYX_VERIFY_RETURN_INT(hbool_t, digit, digits[0])
38081                 case 2:
38082                     if (8 * sizeof(hbool_t) > 1 * PyLong_SHIFT) {
38083                         if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
38084                             __PYX_VERIFY_RETURN_INT(hbool_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
38085                         } else if (8 * sizeof(hbool_t) >= 2 * PyLong_SHIFT) {
38086                             return (hbool_t) (((((hbool_t)digits[1]) << PyLong_SHIFT) | (hbool_t)digits[0]));
38087                         }
38088                     }
38089                     break;
38090                 case 3:
38091                     if (8 * sizeof(hbool_t) > 2 * PyLong_SHIFT) {
38092                         if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
38093                             __PYX_VERIFY_RETURN_INT(hbool_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
38094                         } else if (8 * sizeof(hbool_t) >= 3 * PyLong_SHIFT) {
38095                             return (hbool_t) (((((((hbool_t)digits[2]) << PyLong_SHIFT) | (hbool_t)digits[1]) << PyLong_SHIFT) | (hbool_t)digits[0]));
38096                         }
38097                     }
38098                     break;
38099                 case 4:
38100                     if (8 * sizeof(hbool_t) > 3 * PyLong_SHIFT) {
38101                         if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
38102                             __PYX_VERIFY_RETURN_INT(hbool_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])))
38103                         } else if (8 * sizeof(hbool_t) >= 4 * PyLong_SHIFT) {
38104                             return (hbool_t) (((((((((hbool_t)digits[3]) << PyLong_SHIFT) | (hbool_t)digits[2]) << PyLong_SHIFT) | (hbool_t)digits[1]) << PyLong_SHIFT) | (hbool_t)digits[0]));
38105                         }
38106                     }
38107                     break;
38108             }
38109 #endif
38110 #if CYTHON_COMPILING_IN_CPYTHON
38111             if (unlikely(Py_SIZE(x) < 0)) {
38112                 goto raise_neg_overflow;
38113             }
38114 #else
38115             {
38116                 int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
38117                 if (unlikely(result < 0))
38118                     return (hbool_t) -1;
38119                 if (unlikely(result == 1))
38120                     goto raise_neg_overflow;
38121             }
38122 #endif
38123             if (sizeof(hbool_t) <= sizeof(unsigned long)) {
38124                 __PYX_VERIFY_RETURN_INT_EXC(hbool_t, unsigned long, PyLong_AsUnsignedLong(x))
38125 #ifdef HAVE_LONG_LONG
38126             } else if (sizeof(hbool_t) <= sizeof(unsigned PY_LONG_LONG)) {
38127                 __PYX_VERIFY_RETURN_INT_EXC(hbool_t, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
38128 #endif
38129             }
38130         } else {
38131 #if CYTHON_USE_PYLONG_INTERNALS
38132             const digit* digits = ((PyLongObject*)x)->ob_digit;
38133             switch (Py_SIZE(x)) {
38134                 case  0: return (hbool_t) 0;
38135                 case -1: __PYX_VERIFY_RETURN_INT(hbool_t, sdigit, (sdigit) (-(sdigit)digits[0]))
38136                 case  1: __PYX_VERIFY_RETURN_INT(hbool_t,  digit, +digits[0])
38137                 case -2:
38138                     if (8 * sizeof(hbool_t) - 1 > 1 * PyLong_SHIFT) {
38139                         if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
38140                             __PYX_VERIFY_RETURN_INT(hbool_t, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
38141                         } else if (8 * sizeof(hbool_t) - 1 > 2 * PyLong_SHIFT) {
38142                             return (hbool_t) (((hbool_t)-1)*(((((hbool_t)digits[1]) << PyLong_SHIFT) | (hbool_t)digits[0])));
38143                         }
38144                     }
38145                     break;
38146                 case 2:
38147                     if (8 * sizeof(hbool_t) > 1 * PyLong_SHIFT) {
38148                         if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
38149                             __PYX_VERIFY_RETURN_INT(hbool_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
38150                         } else if (8 * sizeof(hbool_t) - 1 > 2 * PyLong_SHIFT) {
38151                             return (hbool_t) ((((((hbool_t)digits[1]) << PyLong_SHIFT) | (hbool_t)digits[0])));
38152                         }
38153                     }
38154                     break;
38155                 case -3:
38156                     if (8 * sizeof(hbool_t) - 1 > 2 * PyLong_SHIFT) {
38157                         if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
38158                             __PYX_VERIFY_RETURN_INT(hbool_t, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
38159                         } else if (8 * sizeof(hbool_t) - 1 > 3 * PyLong_SHIFT) {
38160                             return (hbool_t) (((hbool_t)-1)*(((((((hbool_t)digits[2]) << PyLong_SHIFT) | (hbool_t)digits[1]) << PyLong_SHIFT) | (hbool_t)digits[0])));
38161                         }
38162                     }
38163                     break;
38164                 case 3:
38165                     if (8 * sizeof(hbool_t) > 2 * PyLong_SHIFT) {
38166                         if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
38167                             __PYX_VERIFY_RETURN_INT(hbool_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
38168                         } else if (8 * sizeof(hbool_t) - 1 > 3 * PyLong_SHIFT) {
38169                             return (hbool_t) ((((((((hbool_t)digits[2]) << PyLong_SHIFT) | (hbool_t)digits[1]) << PyLong_SHIFT) | (hbool_t)digits[0])));
38170                         }
38171                     }
38172                     break;
38173                 case -4:
38174                     if (8 * sizeof(hbool_t) - 1 > 3 * PyLong_SHIFT) {
38175                         if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
38176                             __PYX_VERIFY_RETURN_INT(hbool_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])))
38177                         } else if (8 * sizeof(hbool_t) - 1 > 4 * PyLong_SHIFT) {
38178                             return (hbool_t) (((hbool_t)-1)*(((((((((hbool_t)digits[3]) << PyLong_SHIFT) | (hbool_t)digits[2]) << PyLong_SHIFT) | (hbool_t)digits[1]) << PyLong_SHIFT) | (hbool_t)digits[0])));
38179                         }
38180                     }
38181                     break;
38182                 case 4:
38183                     if (8 * sizeof(hbool_t) > 3 * PyLong_SHIFT) {
38184                         if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
38185                             __PYX_VERIFY_RETURN_INT(hbool_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])))
38186                         } else if (8 * sizeof(hbool_t) - 1 > 4 * PyLong_SHIFT) {
38187                             return (hbool_t) ((((((((((hbool_t)digits[3]) << PyLong_SHIFT) | (hbool_t)digits[2]) << PyLong_SHIFT) | (hbool_t)digits[1]) << PyLong_SHIFT) | (hbool_t)digits[0])));
38188                         }
38189                     }
38190                     break;
38191             }
38192 #endif
38193             if (sizeof(hbool_t) <= sizeof(long)) {
38194                 __PYX_VERIFY_RETURN_INT_EXC(hbool_t, long, PyLong_AsLong(x))
38195 #ifdef HAVE_LONG_LONG
38196             } else if (sizeof(hbool_t) <= sizeof(PY_LONG_LONG)) {
38197                 __PYX_VERIFY_RETURN_INT_EXC(hbool_t, PY_LONG_LONG, PyLong_AsLongLong(x))
38198 #endif
38199             }
38200         }
38201         {
38202 #if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
38203             PyErr_SetString(PyExc_RuntimeError,
38204                             "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
38205 #else
38206             hbool_t val;
38207             PyObject *v = __Pyx_PyNumber_IntOrLong(x);
38208  #if PY_MAJOR_VERSION < 3
38209             if (likely(v) && !PyLong_Check(v)) {
38210                 PyObject *tmp = v;
38211                 v = PyNumber_Long(tmp);
38212                 Py_DECREF(tmp);
38213             }
38214  #endif
38215             if (likely(v)) {
38216                 int one = 1; int is_little = (int)*(unsigned char *)&one;
38217                 unsigned char *bytes = (unsigned char *)&val;
38218                 int ret = _PyLong_AsByteArray((PyLongObject *)v,
38219                                               bytes, sizeof(val),
38220                                               is_little, !is_unsigned);
38221                 Py_DECREF(v);
38222                 if (likely(!ret))
38223                     return val;
38224             }
38225 #endif
38226             return (hbool_t) -1;
38227         }
38228     } else {
38229         hbool_t val;
38230         PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
38231         if (!tmp) return (hbool_t) -1;
38232         val = __Pyx_PyInt_As_hbool_t(tmp);
38233         Py_DECREF(tmp);
38234         return val;
38235     }
38236 raise_overflow:
38237     PyErr_SetString(PyExc_OverflowError,
38238         "value too large to convert to hbool_t");
38239     return (hbool_t) -1;
38240 raise_neg_overflow:
38241     PyErr_SetString(PyExc_OverflowError,
38242         "can't convert negative value to hbool_t");
38243     return (hbool_t) -1;
38244 }
38245 
38246 /* CIntFromPy */
__Pyx_PyInt_As_enum__H5F_scope_t(PyObject * x)38247 static CYTHON_INLINE enum H5F_scope_t __Pyx_PyInt_As_enum__H5F_scope_t(PyObject *x) {
38248     const enum H5F_scope_t neg_one = (enum H5F_scope_t) ((enum H5F_scope_t) 0 - (enum H5F_scope_t) 1), const_zero = (enum H5F_scope_t) 0;
38249     const int is_unsigned = neg_one > const_zero;
38250 #if PY_MAJOR_VERSION < 3
38251     if (likely(PyInt_Check(x))) {
38252         if (sizeof(enum H5F_scope_t) < sizeof(long)) {
38253             __PYX_VERIFY_RETURN_INT(enum H5F_scope_t, long, PyInt_AS_LONG(x))
38254         } else {
38255             long val = PyInt_AS_LONG(x);
38256             if (is_unsigned && unlikely(val < 0)) {
38257                 goto raise_neg_overflow;
38258             }
38259             return (enum H5F_scope_t) val;
38260         }
38261     } else
38262 #endif
38263     if (likely(PyLong_Check(x))) {
38264         if (is_unsigned) {
38265 #if CYTHON_USE_PYLONG_INTERNALS
38266             const digit* digits = ((PyLongObject*)x)->ob_digit;
38267             switch (Py_SIZE(x)) {
38268                 case  0: return (enum H5F_scope_t) 0;
38269                 case  1: __PYX_VERIFY_RETURN_INT(enum H5F_scope_t, digit, digits[0])
38270                 case 2:
38271                     if (8 * sizeof(enum H5F_scope_t) > 1 * PyLong_SHIFT) {
38272                         if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
38273                             __PYX_VERIFY_RETURN_INT(enum H5F_scope_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
38274                         } else if (8 * sizeof(enum H5F_scope_t) >= 2 * PyLong_SHIFT) {
38275                             return (enum H5F_scope_t) (((((enum H5F_scope_t)digits[1]) << PyLong_SHIFT) | (enum H5F_scope_t)digits[0]));
38276                         }
38277                     }
38278                     break;
38279                 case 3:
38280                     if (8 * sizeof(enum H5F_scope_t) > 2 * PyLong_SHIFT) {
38281                         if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
38282                             __PYX_VERIFY_RETURN_INT(enum H5F_scope_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
38283                         } else if (8 * sizeof(enum H5F_scope_t) >= 3 * PyLong_SHIFT) {
38284                             return (enum H5F_scope_t) (((((((enum H5F_scope_t)digits[2]) << PyLong_SHIFT) | (enum H5F_scope_t)digits[1]) << PyLong_SHIFT) | (enum H5F_scope_t)digits[0]));
38285                         }
38286                     }
38287                     break;
38288                 case 4:
38289                     if (8 * sizeof(enum H5F_scope_t) > 3 * PyLong_SHIFT) {
38290                         if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
38291                             __PYX_VERIFY_RETURN_INT(enum H5F_scope_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])))
38292                         } else if (8 * sizeof(enum H5F_scope_t) >= 4 * PyLong_SHIFT) {
38293                             return (enum H5F_scope_t) (((((((((enum H5F_scope_t)digits[3]) << PyLong_SHIFT) | (enum H5F_scope_t)digits[2]) << PyLong_SHIFT) | (enum H5F_scope_t)digits[1]) << PyLong_SHIFT) | (enum H5F_scope_t)digits[0]));
38294                         }
38295                     }
38296                     break;
38297             }
38298 #endif
38299 #if CYTHON_COMPILING_IN_CPYTHON
38300             if (unlikely(Py_SIZE(x) < 0)) {
38301                 goto raise_neg_overflow;
38302             }
38303 #else
38304             {
38305                 int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
38306                 if (unlikely(result < 0))
38307                     return (enum H5F_scope_t) -1;
38308                 if (unlikely(result == 1))
38309                     goto raise_neg_overflow;
38310             }
38311 #endif
38312             if (sizeof(enum H5F_scope_t) <= sizeof(unsigned long)) {
38313                 __PYX_VERIFY_RETURN_INT_EXC(enum H5F_scope_t, unsigned long, PyLong_AsUnsignedLong(x))
38314 #ifdef HAVE_LONG_LONG
38315             } else if (sizeof(enum H5F_scope_t) <= sizeof(unsigned PY_LONG_LONG)) {
38316                 __PYX_VERIFY_RETURN_INT_EXC(enum H5F_scope_t, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
38317 #endif
38318             }
38319         } else {
38320 #if CYTHON_USE_PYLONG_INTERNALS
38321             const digit* digits = ((PyLongObject*)x)->ob_digit;
38322             switch (Py_SIZE(x)) {
38323                 case  0: return (enum H5F_scope_t) 0;
38324                 case -1: __PYX_VERIFY_RETURN_INT(enum H5F_scope_t, sdigit, (sdigit) (-(sdigit)digits[0]))
38325                 case  1: __PYX_VERIFY_RETURN_INT(enum H5F_scope_t,  digit, +digits[0])
38326                 case -2:
38327                     if (8 * sizeof(enum H5F_scope_t) - 1 > 1 * PyLong_SHIFT) {
38328                         if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
38329                             __PYX_VERIFY_RETURN_INT(enum H5F_scope_t, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
38330                         } else if (8 * sizeof(enum H5F_scope_t) - 1 > 2 * PyLong_SHIFT) {
38331                             return (enum H5F_scope_t) (((enum H5F_scope_t)-1)*(((((enum H5F_scope_t)digits[1]) << PyLong_SHIFT) | (enum H5F_scope_t)digits[0])));
38332                         }
38333                     }
38334                     break;
38335                 case 2:
38336                     if (8 * sizeof(enum H5F_scope_t) > 1 * PyLong_SHIFT) {
38337                         if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
38338                             __PYX_VERIFY_RETURN_INT(enum H5F_scope_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
38339                         } else if (8 * sizeof(enum H5F_scope_t) - 1 > 2 * PyLong_SHIFT) {
38340                             return (enum H5F_scope_t) ((((((enum H5F_scope_t)digits[1]) << PyLong_SHIFT) | (enum H5F_scope_t)digits[0])));
38341                         }
38342                     }
38343                     break;
38344                 case -3:
38345                     if (8 * sizeof(enum H5F_scope_t) - 1 > 2 * PyLong_SHIFT) {
38346                         if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
38347                             __PYX_VERIFY_RETURN_INT(enum H5F_scope_t, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
38348                         } else if (8 * sizeof(enum H5F_scope_t) - 1 > 3 * PyLong_SHIFT) {
38349                             return (enum H5F_scope_t) (((enum H5F_scope_t)-1)*(((((((enum H5F_scope_t)digits[2]) << PyLong_SHIFT) | (enum H5F_scope_t)digits[1]) << PyLong_SHIFT) | (enum H5F_scope_t)digits[0])));
38350                         }
38351                     }
38352                     break;
38353                 case 3:
38354                     if (8 * sizeof(enum H5F_scope_t) > 2 * PyLong_SHIFT) {
38355                         if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
38356                             __PYX_VERIFY_RETURN_INT(enum H5F_scope_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
38357                         } else if (8 * sizeof(enum H5F_scope_t) - 1 > 3 * PyLong_SHIFT) {
38358                             return (enum H5F_scope_t) ((((((((enum H5F_scope_t)digits[2]) << PyLong_SHIFT) | (enum H5F_scope_t)digits[1]) << PyLong_SHIFT) | (enum H5F_scope_t)digits[0])));
38359                         }
38360                     }
38361                     break;
38362                 case -4:
38363                     if (8 * sizeof(enum H5F_scope_t) - 1 > 3 * PyLong_SHIFT) {
38364                         if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
38365                             __PYX_VERIFY_RETURN_INT(enum H5F_scope_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])))
38366                         } else if (8 * sizeof(enum H5F_scope_t) - 1 > 4 * PyLong_SHIFT) {
38367                             return (enum H5F_scope_t) (((enum H5F_scope_t)-1)*(((((((((enum H5F_scope_t)digits[3]) << PyLong_SHIFT) | (enum H5F_scope_t)digits[2]) << PyLong_SHIFT) | (enum H5F_scope_t)digits[1]) << PyLong_SHIFT) | (enum H5F_scope_t)digits[0])));
38368                         }
38369                     }
38370                     break;
38371                 case 4:
38372                     if (8 * sizeof(enum H5F_scope_t) > 3 * PyLong_SHIFT) {
38373                         if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
38374                             __PYX_VERIFY_RETURN_INT(enum H5F_scope_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])))
38375                         } else if (8 * sizeof(enum H5F_scope_t) - 1 > 4 * PyLong_SHIFT) {
38376                             return (enum H5F_scope_t) ((((((((((enum H5F_scope_t)digits[3]) << PyLong_SHIFT) | (enum H5F_scope_t)digits[2]) << PyLong_SHIFT) | (enum H5F_scope_t)digits[1]) << PyLong_SHIFT) | (enum H5F_scope_t)digits[0])));
38377                         }
38378                     }
38379                     break;
38380             }
38381 #endif
38382             if (sizeof(enum H5F_scope_t) <= sizeof(long)) {
38383                 __PYX_VERIFY_RETURN_INT_EXC(enum H5F_scope_t, long, PyLong_AsLong(x))
38384 #ifdef HAVE_LONG_LONG
38385             } else if (sizeof(enum H5F_scope_t) <= sizeof(PY_LONG_LONG)) {
38386                 __PYX_VERIFY_RETURN_INT_EXC(enum H5F_scope_t, PY_LONG_LONG, PyLong_AsLongLong(x))
38387 #endif
38388             }
38389         }
38390         {
38391 #if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
38392             PyErr_SetString(PyExc_RuntimeError,
38393                             "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
38394 #else
38395             enum H5F_scope_t val;
38396             PyObject *v = __Pyx_PyNumber_IntOrLong(x);
38397  #if PY_MAJOR_VERSION < 3
38398             if (likely(v) && !PyLong_Check(v)) {
38399                 PyObject *tmp = v;
38400                 v = PyNumber_Long(tmp);
38401                 Py_DECREF(tmp);
38402             }
38403  #endif
38404             if (likely(v)) {
38405                 int one = 1; int is_little = (int)*(unsigned char *)&one;
38406                 unsigned char *bytes = (unsigned char *)&val;
38407                 int ret = _PyLong_AsByteArray((PyLongObject *)v,
38408                                               bytes, sizeof(val),
38409                                               is_little, !is_unsigned);
38410                 Py_DECREF(v);
38411                 if (likely(!ret))
38412                     return val;
38413             }
38414 #endif
38415             return (enum H5F_scope_t) -1;
38416         }
38417     } else {
38418         enum H5F_scope_t val;
38419         PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
38420         if (!tmp) return (enum H5F_scope_t) -1;
38421         val = __Pyx_PyInt_As_enum__H5F_scope_t(tmp);
38422         Py_DECREF(tmp);
38423         return val;
38424     }
38425 raise_overflow:
38426     PyErr_SetString(PyExc_OverflowError,
38427         "value too large to convert to enum H5F_scope_t");
38428     return (enum H5F_scope_t) -1;
38429 raise_neg_overflow:
38430     PyErr_SetString(PyExc_OverflowError,
38431         "can't convert negative value to enum H5F_scope_t");
38432     return (enum H5F_scope_t) -1;
38433 }
38434 
38435 /* FastTypeChecks */
38436 #if CYTHON_COMPILING_IN_CPYTHON
__Pyx_InBases(PyTypeObject * a,PyTypeObject * b)38437 static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) {
38438     while (a) {
38439         a = a->tp_base;
38440         if (a == b)
38441             return 1;
38442     }
38443     return b == &PyBaseObject_Type;
38444 }
__Pyx_IsSubtype(PyTypeObject * a,PyTypeObject * b)38445 static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b) {
38446     PyObject *mro;
38447     if (a == b) return 1;
38448     mro = a->tp_mro;
38449     if (likely(mro)) {
38450         Py_ssize_t i, n;
38451         n = PyTuple_GET_SIZE(mro);
38452         for (i = 0; i < n; i++) {
38453             if (PyTuple_GET_ITEM(mro, i) == (PyObject *)b)
38454                 return 1;
38455         }
38456         return 0;
38457     }
38458     return __Pyx_InBases(a, b);
38459 }
38460 #if PY_MAJOR_VERSION == 2
__Pyx_inner_PyErr_GivenExceptionMatches2(PyObject * err,PyObject * exc_type1,PyObject * exc_type2)38461 static int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject* exc_type2) {
38462     PyObject *exception, *value, *tb;
38463     int res;
38464     __Pyx_PyThreadState_declare
38465     __Pyx_PyThreadState_assign
38466     __Pyx_ErrFetch(&exception, &value, &tb);
38467     res = exc_type1 ? PyObject_IsSubclass(err, exc_type1) : 0;
38468     if (unlikely(res == -1)) {
38469         PyErr_WriteUnraisable(err);
38470         res = 0;
38471     }
38472     if (!res) {
38473         res = PyObject_IsSubclass(err, exc_type2);
38474         if (unlikely(res == -1)) {
38475             PyErr_WriteUnraisable(err);
38476             res = 0;
38477         }
38478     }
38479     __Pyx_ErrRestore(exception, value, tb);
38480     return res;
38481 }
38482 #else
__Pyx_inner_PyErr_GivenExceptionMatches2(PyObject * err,PyObject * exc_type1,PyObject * exc_type2)38483 static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject *exc_type2) {
38484     int res = exc_type1 ? __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type1) : 0;
38485     if (!res) {
38486         res = __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type2);
38487     }
38488     return res;
38489 }
38490 #endif
__Pyx_PyErr_GivenExceptionMatchesTuple(PyObject * exc_type,PyObject * tuple)38491 static int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) {
38492     Py_ssize_t i, n;
38493     assert(PyExceptionClass_Check(exc_type));
38494     n = PyTuple_GET_SIZE(tuple);
38495 #if PY_MAJOR_VERSION >= 3
38496     for (i=0; i<n; i++) {
38497         if (exc_type == PyTuple_GET_ITEM(tuple, i)) return 1;
38498     }
38499 #endif
38500     for (i=0; i<n; i++) {
38501         PyObject *t = PyTuple_GET_ITEM(tuple, i);
38502         #if PY_MAJOR_VERSION < 3
38503         if (likely(exc_type == t)) return 1;
38504         #endif
38505         if (likely(PyExceptionClass_Check(t))) {
38506             if (__Pyx_inner_PyErr_GivenExceptionMatches2(exc_type, NULL, t)) return 1;
38507         } else {
38508         }
38509     }
38510     return 0;
38511 }
__Pyx_PyErr_GivenExceptionMatches(PyObject * err,PyObject * exc_type)38512 static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject* exc_type) {
38513     if (likely(err == exc_type)) return 1;
38514     if (likely(PyExceptionClass_Check(err))) {
38515         if (likely(PyExceptionClass_Check(exc_type))) {
38516             return __Pyx_inner_PyErr_GivenExceptionMatches2(err, NULL, exc_type);
38517         } else if (likely(PyTuple_Check(exc_type))) {
38518             return __Pyx_PyErr_GivenExceptionMatchesTuple(err, exc_type);
38519         } else {
38520         }
38521     }
38522     return PyErr_GivenExceptionMatches(err, exc_type);
38523 }
__Pyx_PyErr_GivenExceptionMatches2(PyObject * err,PyObject * exc_type1,PyObject * exc_type2)38524 static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *exc_type1, PyObject *exc_type2) {
38525     assert(PyExceptionClass_Check(exc_type1));
38526     assert(PyExceptionClass_Check(exc_type2));
38527     if (likely(err == exc_type1 || err == exc_type2)) return 1;
38528     if (likely(PyExceptionClass_Check(err))) {
38529         return __Pyx_inner_PyErr_GivenExceptionMatches2(err, exc_type1, exc_type2);
38530     }
38531     return (PyErr_GivenExceptionMatches(err, exc_type1) || PyErr_GivenExceptionMatches(err, exc_type2));
38532 }
38533 #endif
38534 
38535 /* CheckBinaryVersion */
__Pyx_check_binary_version(void)38536 static int __Pyx_check_binary_version(void) {
38537     char ctversion[4], rtversion[4];
38538     PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION);
38539     PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion());
38540     if (ctversion[0] != rtversion[0] || ctversion[2] != rtversion[2]) {
38541         char message[200];
38542         PyOS_snprintf(message, sizeof(message),
38543                       "compiletime version %s of module '%.100s' "
38544                       "does not match runtime version %s",
38545                       ctversion, __Pyx_MODULE_NAME, rtversion);
38546         return PyErr_WarnEx(NULL, message, 1);
38547     }
38548     return 0;
38549 }
38550 
38551 /* FunctionImport */
38552 #ifndef __PYX_HAVE_RT_ImportFunction
38553 #define __PYX_HAVE_RT_ImportFunction
__Pyx_ImportFunction(PyObject * module,const char * funcname,void (** f)(void),const char * sig)38554 static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig) {
38555     PyObject *d = 0;
38556     PyObject *cobj = 0;
38557     union {
38558         void (*fp)(void);
38559         void *p;
38560     } tmp;
38561     d = PyObject_GetAttrString(module, (char *)"__pyx_capi__");
38562     if (!d)
38563         goto bad;
38564     cobj = PyDict_GetItemString(d, funcname);
38565     if (!cobj) {
38566         PyErr_Format(PyExc_ImportError,
38567             "%.200s does not export expected C function %.200s",
38568                 PyModule_GetName(module), funcname);
38569         goto bad;
38570     }
38571 #if PY_VERSION_HEX >= 0x02070000
38572     if (!PyCapsule_IsValid(cobj, sig)) {
38573         PyErr_Format(PyExc_TypeError,
38574             "C function %.200s.%.200s has wrong signature (expected %.500s, got %.500s)",
38575              PyModule_GetName(module), funcname, sig, PyCapsule_GetName(cobj));
38576         goto bad;
38577     }
38578     tmp.p = PyCapsule_GetPointer(cobj, sig);
38579 #else
38580     {const char *desc, *s1, *s2;
38581     desc = (const char *)PyCObject_GetDesc(cobj);
38582     if (!desc)
38583         goto bad;
38584     s1 = desc; s2 = sig;
38585     while (*s1 != '\0' && *s1 == *s2) { s1++; s2++; }
38586     if (*s1 != *s2) {
38587         PyErr_Format(PyExc_TypeError,
38588             "C function %.200s.%.200s has wrong signature (expected %.500s, got %.500s)",
38589              PyModule_GetName(module), funcname, sig, desc);
38590         goto bad;
38591     }
38592     tmp.p = PyCObject_AsVoidPtr(cobj);}
38593 #endif
38594     *f = tmp.fp;
38595     if (!(*f))
38596         goto bad;
38597     Py_DECREF(d);
38598     return 0;
38599 bad:
38600     Py_XDECREF(d);
38601     return -1;
38602 }
38603 #endif
38604 
38605 /* InitStrings */
__Pyx_InitStrings(__Pyx_StringTabEntry * t)38606 static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
38607     while (t->p) {
38608         #if PY_MAJOR_VERSION < 3
38609         if (t->is_unicode) {
38610             *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL);
38611         } else if (t->intern) {
38612             *t->p = PyString_InternFromString(t->s);
38613         } else {
38614             *t->p = PyString_FromStringAndSize(t->s, t->n - 1);
38615         }
38616         #else
38617         if (t->is_unicode | t->is_str) {
38618             if (t->intern) {
38619                 *t->p = PyUnicode_InternFromString(t->s);
38620             } else if (t->encoding) {
38621                 *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL);
38622             } else {
38623                 *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1);
38624             }
38625         } else {
38626             *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1);
38627         }
38628         #endif
38629         if (!*t->p)
38630             return -1;
38631         if (PyObject_Hash(*t->p) == -1)
38632             return -1;
38633         ++t;
38634     }
38635     return 0;
38636 }
38637 
__Pyx_PyUnicode_FromString(const char * c_str)38638 static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) {
38639     return __Pyx_PyUnicode_FromStringAndSize(c_str, (Py_ssize_t)strlen(c_str));
38640 }
__Pyx_PyObject_AsString(PyObject * o)38641 static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject* o) {
38642     Py_ssize_t ignore;
38643     return __Pyx_PyObject_AsStringAndSize(o, &ignore);
38644 }
38645 #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT
38646 #if !CYTHON_PEP393_ENABLED
__Pyx_PyUnicode_AsStringAndSize(PyObject * o,Py_ssize_t * length)38647 static const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) {
38648     char* defenc_c;
38649     PyObject* defenc = _PyUnicode_AsDefaultEncodedString(o, NULL);
38650     if (!defenc) return NULL;
38651     defenc_c = PyBytes_AS_STRING(defenc);
38652 #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
38653     {
38654         char* end = defenc_c + PyBytes_GET_SIZE(defenc);
38655         char* c;
38656         for (c = defenc_c; c < end; c++) {
38657             if ((unsigned char) (*c) >= 128) {
38658                 PyUnicode_AsASCIIString(o);
38659                 return NULL;
38660             }
38661         }
38662     }
38663 #endif
38664     *length = PyBytes_GET_SIZE(defenc);
38665     return defenc_c;
38666 }
38667 #else
__Pyx_PyUnicode_AsStringAndSize(PyObject * o,Py_ssize_t * length)38668 static CYTHON_INLINE const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) {
38669     if (unlikely(__Pyx_PyUnicode_READY(o) == -1)) return NULL;
38670 #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
38671     if (likely(PyUnicode_IS_ASCII(o))) {
38672         *length = PyUnicode_GET_LENGTH(o);
38673         return PyUnicode_AsUTF8(o);
38674     } else {
38675         PyUnicode_AsASCIIString(o);
38676         return NULL;
38677     }
38678 #else
38679     return PyUnicode_AsUTF8AndSize(o, length);
38680 #endif
38681 }
38682 #endif
38683 #endif
__Pyx_PyObject_AsStringAndSize(PyObject * o,Py_ssize_t * length)38684 static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) {
38685 #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT
38686     if (
38687 #if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
38688             __Pyx_sys_getdefaultencoding_not_ascii &&
38689 #endif
38690             PyUnicode_Check(o)) {
38691         return __Pyx_PyUnicode_AsStringAndSize(o, length);
38692     } else
38693 #endif
38694 #if (!CYTHON_COMPILING_IN_PYPY) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE))
38695     if (PyByteArray_Check(o)) {
38696         *length = PyByteArray_GET_SIZE(o);
38697         return PyByteArray_AS_STRING(o);
38698     } else
38699 #endif
38700     {
38701         char* result;
38702         int r = PyBytes_AsStringAndSize(o, &result, length);
38703         if (unlikely(r < 0)) {
38704             return NULL;
38705         } else {
38706             return result;
38707         }
38708     }
38709 }
__Pyx_PyObject_IsTrue(PyObject * x)38710 static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
38711    int is_true = x == Py_True;
38712    if (is_true | (x == Py_False) | (x == Py_None)) return is_true;
38713    else return PyObject_IsTrue(x);
38714 }
__Pyx_PyObject_IsTrueAndDecref(PyObject * x)38715 static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject* x) {
38716     int retval;
38717     if (unlikely(!x)) return -1;
38718     retval = __Pyx_PyObject_IsTrue(x);
38719     Py_DECREF(x);
38720     return retval;
38721 }
__Pyx_PyNumber_IntOrLongWrongResultType(PyObject * result,const char * type_name)38722 static PyObject* __Pyx_PyNumber_IntOrLongWrongResultType(PyObject* result, const char* type_name) {
38723 #if PY_MAJOR_VERSION >= 3
38724     if (PyLong_Check(result)) {
38725         if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1,
38726                 "__int__ returned non-int (type %.200s).  "
38727                 "The ability to return an instance of a strict subclass of int "
38728                 "is deprecated, and may be removed in a future version of Python.",
38729                 Py_TYPE(result)->tp_name)) {
38730             Py_DECREF(result);
38731             return NULL;
38732         }
38733         return result;
38734     }
38735 #endif
38736     PyErr_Format(PyExc_TypeError,
38737                  "__%.4s__ returned non-%.4s (type %.200s)",
38738                  type_name, type_name, Py_TYPE(result)->tp_name);
38739     Py_DECREF(result);
38740     return NULL;
38741 }
__Pyx_PyNumber_IntOrLong(PyObject * x)38742 static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) {
38743 #if CYTHON_USE_TYPE_SLOTS
38744   PyNumberMethods *m;
38745 #endif
38746   const char *name = NULL;
38747   PyObject *res = NULL;
38748 #if PY_MAJOR_VERSION < 3
38749   if (likely(PyInt_Check(x) || PyLong_Check(x)))
38750 #else
38751   if (likely(PyLong_Check(x)))
38752 #endif
38753     return __Pyx_NewRef(x);
38754 #if CYTHON_USE_TYPE_SLOTS
38755   m = Py_TYPE(x)->tp_as_number;
38756   #if PY_MAJOR_VERSION < 3
38757   if (m && m->nb_int) {
38758     name = "int";
38759     res = m->nb_int(x);
38760   }
38761   else if (m && m->nb_long) {
38762     name = "long";
38763     res = m->nb_long(x);
38764   }
38765   #else
38766   if (likely(m && m->nb_int)) {
38767     name = "int";
38768     res = m->nb_int(x);
38769   }
38770   #endif
38771 #else
38772   if (!PyBytes_CheckExact(x) && !PyUnicode_CheckExact(x)) {
38773     res = PyNumber_Int(x);
38774   }
38775 #endif
38776   if (likely(res)) {
38777 #if PY_MAJOR_VERSION < 3
38778     if (unlikely(!PyInt_Check(res) && !PyLong_Check(res))) {
38779 #else
38780     if (unlikely(!PyLong_CheckExact(res))) {
38781 #endif
38782         return __Pyx_PyNumber_IntOrLongWrongResultType(res, name);
38783     }
38784   }
38785   else if (!PyErr_Occurred()) {
38786     PyErr_SetString(PyExc_TypeError,
38787                     "an integer is required");
38788   }
38789   return res;
38790 }
38791 static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
38792   Py_ssize_t ival;
38793   PyObject *x;
38794 #if PY_MAJOR_VERSION < 3
38795   if (likely(PyInt_CheckExact(b))) {
38796     if (sizeof(Py_ssize_t) >= sizeof(long))
38797         return PyInt_AS_LONG(b);
38798     else
38799         return PyInt_AsSsize_t(b);
38800   }
38801 #endif
38802   if (likely(PyLong_CheckExact(b))) {
38803     #if CYTHON_USE_PYLONG_INTERNALS
38804     const digit* digits = ((PyLongObject*)b)->ob_digit;
38805     const Py_ssize_t size = Py_SIZE(b);
38806     if (likely(__Pyx_sst_abs(size) <= 1)) {
38807         ival = likely(size) ? digits[0] : 0;
38808         if (size == -1) ival = -ival;
38809         return ival;
38810     } else {
38811       switch (size) {
38812          case 2:
38813            if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) {
38814              return (Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
38815            }
38816            break;
38817          case -2:
38818            if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) {
38819              return -(Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
38820            }
38821            break;
38822          case 3:
38823            if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) {
38824              return (Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
38825            }
38826            break;
38827          case -3:
38828            if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) {
38829              return -(Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
38830            }
38831            break;
38832          case 4:
38833            if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) {
38834              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]));
38835            }
38836            break;
38837          case -4:
38838            if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) {
38839              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]));
38840            }
38841            break;
38842       }
38843     }
38844     #endif
38845     return PyLong_AsSsize_t(b);
38846   }
38847   x = PyNumber_Index(b);
38848   if (!x) return -1;
38849   ival = PyInt_AsSsize_t(x);
38850   Py_DECREF(x);
38851   return ival;
38852 }
38853 static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) {
38854   return b ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False);
38855 }
38856 static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) {
38857     return PyInt_FromSize_t(ival);
38858 }
38859 
38860 
38861 #endif /* Py_PYTHON_H */
38862